From 50f3a402d5568d20392f4fd40e404709edc107e4 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Thu, 31 Dec 2020 09:19:57 -0800 Subject: [PATCH] feat(core): Nx 11 compatibility with new lib separation for xplat (#232) --- .prettierignore | 2 + package.json | 77 +- packages/angular/package.json | 2 +- .../src/app/core/core.module.ts__tmpl__ | 2 +- .../features/shared/shared.module.ts__tmpl__ | 2 +- .../home/components/home.component.ts__tmpl__ | 2 +- .../src/schematics/application/index.spec.ts | 33 +- .../src/schematics/application/index.ts | 19 +- .../__name__.base-component.ts__tmpl__ | 2 +- .../src/schematics/component/index.spec.ts | 68 +- .../angular/src/schematics/component/index.ts | 10 +- .../src/schematics/directive/index.spec.ts | 56 +- .../_builder_files/builder/index.html | 22 +- .../builder/tsconfig.elements.json | 4 +- .../src/schematics/elements/index.spec.ts | 54 +- .../angular/src/schematics/elements/index.ts | 24 +- .../base/__name__.base-component.ts__tmpl__ | 2 +- .../src/schematics/feature/index.spec.ts | 266 +- .../angular/src/schematics/feature/index.ts | 2 +- .../_files/__name__.effects.spec.ts__tmpl__ | 8 +- .../angular/src/schematics/ngrx/index.spec.ts | 43 +- .../angular/src/schematics/pipe/index.spec.ts | 35 +- .../src/schematics/service/index.spec.ts | 59 +- .../base/base-component.ts__tmpl__ | 0 .../base/index.ts__tmpl__ | 0 .../core.module.ts__tmpl__ | 2 +- .../base/environment.base.ts__tmpl__ | 8 + .../base/environment.dev.ts__tmpl__ | 7 + .../base/environment.prod.ts__tmpl__ | 8 + .../environments/base/index.ts__tmpl__ | 3 + .../environment.interface.ts__tmpl__ | 6 + .../environments/environment.ts__tmpl__ | 10 + .../_files_core/environments/index.ts__tmpl__ | 2 + .../core => _files_core}/index.ts__tmpl__ | 2 +- .../models/index.ts__tmpl__ | 0 .../models/xplat-window.interface.ts__tmpl__ | 0 .../services/index.ts__tmpl__ | 0 .../services/log.service.spec.ts__tmpl__ | 0 .../services/log.service.ts__tmpl__ | 0 .../services/tokens.ts__tmpl__ | 0 .../services/window.service.ts__tmpl__ | 2 +- .../index.ts__tmpl__ | 0 .../ui/base/header.base-component.ts__tmpl__ | 2 +- .../ui/base/index.ts__tmpl__ | 0 .../ui/index.ts__tmpl__ | 0 .../ui/pipes/date-order.pipe.ts__tmpl__ | 0 .../ui/pipes/index.ts__tmpl__ | 0 .../ui/ui.module.ts__tmpl__ | 0 .../{_scss_files => _files_scss}/_index.scss | 0 .../_variables.scss | 0 .../schematics/xplat/_files_scss/package.json | 4 + .../utils => _files_utils}/angular.ts__tmpl__ | 0 .../utils => _files_utils}/index.ts__tmpl__ | 0 .../xplat/_files_utils/objects.ts__tmpl__ | 32 + .../platform.ts__tmpl__ | 0 .../xplat/_jest_files/jest.config.js | 9 - .../environments/environment.prod.ts__tmpl__ | 3 - .../core/environments/environment.ts__tmpl__ | 3 - .../xplat/_lib_files/utils/objects.ts__tmpl__ | 7 - .../schematics/xplat/_scss_files/package.json | 4 - .../xplat/_testing_files/jest.libs.config.js | 11 - .../xplat/_testing_files/jest.xplat.config.js | 11 - .../_testing_files/test-setup.ts__tmpl__ | 1 - .../xplat/_testing_files/tsconfig.json | 7 - .../_testing_files/tsconfig.libs.spec.json | 10 - .../_testing_files/tsconfig.xplat.spec.json | 13 - .../src/schematics/xplat/index.spec.ts | 76 +- .../angular/src/schematics/xplat/index.ts | 48 +- packages/angular/src/utils/generator.ts | 52 +- packages/angular/src/utils/versions.ts | 8 +- packages/angular/src/utils/xplat.ts | 209 +- .../src/schematics/application/index.ts | 2 +- .../xplat/_files/__dot__xplatframework | 1 - .../schematics/xplat/_files/index.ts__tmpl__ | 1 - .../core.module.ts__tmpl__ | 2 +- .../core => _files_core}/index.ts__tmpl__ | 0 .../services/electron.service.ts__tmpl__ | 4 +- .../services/index.ts__tmpl__ | 0 .../src/schematics/xplat/index.spec.ts | 33 +- .../src/schematics/xplat/index.ts | 15 +- .../electron-angular/src/utils/versions.ts | 2 +- packages/focus/package.json | 4 +- packages/focus/src/utils/index.ts | 31 +- .../src/app/core/core.module.ts__tmpl__ | 2 +- .../features/shared/shared.module.ts__tmpl__ | 2 +- .../app/pages/home/home.component.ts__tmpl__ | 2 +- .../application/_files/tsconfig.json | 16 +- .../src/app/home/home.page.html | 8 +- .../_skipxplat_files/src/index.html | 35 +- .../src/schematics/application/index.spec.ts | 5 +- .../src/schematics/application/index.ts | 4 +- .../__name__/__name__.component.ts__tmpl__ | 4 +- .../__name__/__name__.component.ts__tmpl__ | 4 +- .../feature/_files/__name__.module.ts__tmpl__ | 2 +- .../src/schematics/feature/index.ts | 2 +- .../xplat/_files/__dot__xplatframework | 1 - .../components/header/header.component.html | 7 - .../schematics/xplat/_files/index.ts__tmpl__ | 2 - .../core.module.ts__tmpl__ | 4 +- .../core => _files_core}/index.ts__tmpl__ | 0 .../index.ts__tmpl__ | 0 .../components/header/header.component.html | 7 + .../header/header.component.ts__tmpl__ | 2 +- .../ui/components/index.ts__tmpl__ | 0 .../ui/index.ts__tmpl__ | 0 .../ui/ui.module.ts__tmpl__ | 2 +- .../{_files/scss => _files_scss}/_index.scss | 2 +- .../{_files/scss => _files_scss}/_tags.scss | 0 .../{_files/scss => _files_scss}/package.json | 2 +- .../src/schematics/xplat/index.spec.ts | 38 +- .../src/schematics/xplat/index.ts | 62 +- packages/ionic-angular/src/utils/versions.ts | 12 +- .../application/_files/src/index.html | 75 +- packages/ionic/src/schematics/xplat/index.ts | 1 - .../application/_files/__dot__eslintrc.json | 39 + .../application/_files/jest.config.js | 21 + .../application/_files/package.json | 6 +- .../_files/references.d.ts__tmpl__ | 2 +- .../application/_files/src/app.android.scss | 2 +- .../_files/src/app.component.ts__tmpl__ | 5 +- .../application/_files/src/app.ios.scss | 2 +- .../_files/src/core/core.module.ts__tmpl__ | 2 +- .../environments/environment.base.ts__tmpl__ | 15 + .../environments/environment.dev.ts__tmpl__ | 7 + .../environments/environment.prod.ts__tmpl__ | 7 + .../features/shared/shared.module.ts__tmpl__ | 2 +- .../application/_files/src/main.ts__tmpl__ | 2 +- .../_files/src/test-setup.ts__tmpl__ | 1 + .../application/_files/tsconfig.app.json | 12 + .../application/_files/tsconfig.editor.json | 7 + .../application/_files/tsconfig.env.json | 4 - .../application/_files/tsconfig.json | 41 +- .../application/_files/tsconfig.spec.json | 10 + .../application/_files/webpack.config.js | 479 ++ .../home/components/home.component.html | 14 +- .../home/components/home.component.ts__tmpl__ | 2 +- .../src/app/item/item-detail.component.html | 10 +- .../src/app/item/items.component.html | 18 +- .../src/schematics/application/index.spec.ts | 24 +- .../src/schematics/application/index.ts | 67 +- .../__name__/__name__.component.ts__tmpl__ | 4 +- .../src/schematics/feature/index.ts | 2 +- .../xplat/_files/__dot__xplatframework | 1 - .../components/header/header.component.html | 5 - .../schematics/xplat/_files/index.ts__tmpl__ | 3 - .../schematics/xplat/_files/scss/package.json | 4 - .../core.module.ts__tmpl__ | 6 +- .../core => _files_core}/index.ts__tmpl__ | 0 .../services/app.service.ts__tmpl__ | 17 +- .../services/index.ts__tmpl__ | 0 .../services/tns-translate.loader.ts__tmpl__ | 2 +- .../services/tns-window.service.ts__tmpl__ | 24 +- .../index.ts__tmpl__ | 0 .../ui/base/app.base-component.ts__tmpl__ | 4 +- .../ui/base/index.ts__tmpl__ | 0 .../components/header/header.component.html | 9 + .../header/header.component.ts__tmpl__ | 2 +- .../ui/components/index.ts__tmpl__ | 0 .../ui/index.ts__tmpl__ | 0 .../ui/ui.module.ts__tmpl__ | 2 +- .../plugins => _files_plugins}/README.md | 0 .../{_files/scss => _files_scss}/_common.scss | 2 +- .../{_files/scss => _files_scss}/_fonts.scss | 0 .../scss => _files_scss}/_index.android.scss | 0 .../scss => _files_scss}/_index.ios.scss | 0 .../{_files/scss => _files_scss}/_mixins.scss | 0 .../_overrides.android.scss | 0 .../scss => _files_scss}/_overrides.ios.scss | 0 .../{_files/scss => _files_scss}/_tags.scss | 0 .../scss => _files_scss}/_variables.scss | 0 .../schematics/xplat/_files_scss/package.json | 4 + .../font-awesome.ts__tmpl__ | 0 .../utils => _files_utils}/icons.ts__tmpl__ | 0 .../utils => _files_utils}/index.ts__tmpl__ | 0 .../src/schematics/xplat/index.spec.ts | 52 +- .../src/schematics/xplat/index.ts | 135 +- .../src/utils/versions.ts | 10 +- .../nativescript-angular/src/utils/xplat.ts | 19 +- .../_files/references.d.ts__tmpl__ | 2 +- .../application/_files/tsconfig.app.json | 8 + .../application/_files/tsconfig.editor.json | 7 + .../application/_files/tsconfig.json | 35 +- .../application/_files/tsconfig.spec.json | 10 + .../src/schematics/application/index.spec.ts | 12 +- .../src/schematics/application/index.ts | 24 +- .../src/schematics/helpers/imports/index.ts | 4 +- .../src/schematics/helpers/index.spec.ts | 2 +- .../schematics/xplat/_files/index.ts__tmpl__ | 1 - .../schematics/xplat/_files/scss/package.json | 4 - .../plugins => _files_plugins}/README.md | 0 .../{_files/scss => _files_scss}/_common.scss | 2 +- .../{_files/scss => _files_scss}/_fonts.scss | 0 .../scss => _files_scss}/_index.android.scss | 0 .../scss => _files_scss}/_index.ios.scss | 0 .../{_files/scss => _files_scss}/_mixins.scss | 0 .../_overrides.android.scss | 0 .../scss => _files_scss}/_overrides.ios.scss | 0 .../{_files/scss => _files_scss}/_tags.scss | 0 .../scss => _files_scss}/_variables.scss | 0 .../schematics/xplat/_files_scss/package.json | 4 + .../utils => _files_utils}/icons.ts__tmpl__ | 0 .../utils => _files_utils}/index.ts__tmpl__ | 0 .../src/schematics/xplat/index.spec.ts | 8 +- .../src/schematics/xplat/index.ts | 15 +- packages/nativescript/src/utils/versions.ts | 2 +- packages/nativescript/src/utils/xplat.ts | 26 +- .../migrations/update-8-0-0/update-8-0-0.ts | 16 - packages/schematics/package.json | 2 +- .../__name__/__name__.component.ts__tmpl__ | 4 +- .../__name__/__name__.component.ts__tmpl__ | 4 +- .../feature/_files/__name__.module.ts__tmpl__ | 2 +- .../src/schematics/feature/index.ts | 2 +- .../xplat/_files/__dot__xplatframework | 1 - .../schematics/xplat/_files/index.ts__tmpl__ | 2 - .../base/app.base-component.ts__tmpl__ | 3 +- .../base/index.ts__tmpl__ | 0 .../core.module.spec.ts__tmpl__ | 0 .../core.module.ts__tmpl__ | 6 +- .../core => _files_core}/index.ts__tmpl__ | 0 .../index.ts__tmpl__ | 0 .../components/header/header.component.html | 4 +- .../header/header.component.ts__tmpl__ | 2 +- .../ui/components/index.ts__tmpl__ | 0 .../ui/index.ts__tmpl__ | 0 .../ui/ui.module.spec.ts__tmpl__ | 0 .../ui/ui.module.ts__tmpl__ | 2 +- .../scss => _files_lib_scss}/_index.scss | 0 .../scss => _files_lib_scss}/_variables.scss | 0 .../xplat/_files_lib_scss/package.json | 4 + .../xplat/_files_platform_scss}/_index.scss | 2 +- .../_spacing.scss | 0 .../_tags.scss | 0 .../_variables.scss | 0 .../xplat/_files_platform_scss/package.json | 4 + .../xplat/_lib_files/scss/package.json | 4 - .../schematics/xplat/_scss_files/package.json | 4 - .../src/schematics/xplat/index.spec.ts | 26 +- .../web-angular/src/schematics/xplat/index.ts | 51 +- packages/web/package.json | 2 +- .../schematics/xplat/_files/scss/package.json | 4 - .../scss => _files_lib_scss}/_index.scss | 0 .../scss => _files_lib_scss}/_variables.scss | 0 .../xplat/_files_lib_scss/package.json | 4 + .../schematics/xplat/_files_scss}/_index.scss | 2 +- .../scss => _files_scss}/_spacing.scss | 0 .../{_files/scss => _files_scss}/_tags.scss | 0 .../scss => _files_scss}/_variables.scss | 0 .../schematics/xplat/_files_scss/package.json | 4 + .../xplat/_lib_files/scss/package.json | 4 - .../web/src/schematics/xplat/index.spec.ts | 4 +- packages/web/src/schematics/xplat/index.ts | 15 +- packages/web/src/utils/xplat.ts | 2 +- packages/xplat-utils/src/utils/utils.ts | 20 - packages/xplat/migrations.json | 66 +- .../migrations/update-10-2-0/update-10-2-0.ts | 4 +- .../migrations/update-10-3-0/update-10-3-0.ts | 62 - .../update-11-0-0/clean-old-dirs.ts | 38 + .../migrations/update-11-0-0/update-11-0-0.ts | 741 +++ .../update-11-0-0/update-to-11-env-base.ts | 408 ++ .../update-11-0-0/update-to-11-imports.ts | 298 ++ packages/xplat/package.json | 2 +- .../src/schematics/app-generate/schema.json | 1 + .../src/schematics/feature/index.spec.ts | 264 +- .../xplat/src/schematics/init/index.spec.ts | 46 +- packages/xplat/src/schematics/init/index.ts | 1 - packages/xplat/src/utils/ast.ts | 41 +- packages/xplat/src/utils/postinstall.ts | 92 - packages/xplat/src/utils/testing-utils.ts | 75 +- packages/xplat/src/utils/versions.ts | 2 +- packages/xplat/src/utils/xplat.ts | 219 +- scripts/package.sh | 37 +- yarn.lock | 4080 ++++++++++------- 272 files changed, 6352 insertions(+), 3357 deletions(-) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/base/base-component.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/base/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/core.module.ts__tmpl__ (95%) create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/base/environment.base.ts__tmpl__ create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/base/environment.dev.ts__tmpl__ create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/base/environment.prod.ts__tmpl__ create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/base/index.ts__tmpl__ create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/environment.interface.ts__tmpl__ create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/environment.ts__tmpl__ create mode 100644 packages/angular/src/schematics/xplat/_files_core/environments/index.ts__tmpl__ rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/index.ts__tmpl__ (73%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/models/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/models/xplat-window.interface.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/services/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/services/log.service.spec.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/services/log.service.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/services/tokens.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/core => _files_core}/services/window.service.ts__tmpl__ (96%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/ui/base/header.base-component.ts__tmpl__ (87%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/ui/base/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/ui/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/ui/pipes/date-order.pipe.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/ui/pipes/index.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/features => _files_features}/ui/ui.module.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_scss_files => _files_scss}/_index.scss (100%) rename packages/angular/src/schematics/xplat/{_scss_files => _files_scss}/_variables.scss (100%) create mode 100644 packages/angular/src/schematics/xplat/_files_scss/package.json rename packages/angular/src/schematics/xplat/{_lib_files/utils => _files_utils}/angular.ts__tmpl__ (100%) rename packages/angular/src/schematics/xplat/{_lib_files/utils => _files_utils}/index.ts__tmpl__ (100%) create mode 100644 packages/angular/src/schematics/xplat/_files_utils/objects.ts__tmpl__ rename packages/angular/src/schematics/xplat/{_lib_files/utils => _files_utils}/platform.ts__tmpl__ (100%) delete mode 100644 packages/angular/src/schematics/xplat/_jest_files/jest.config.js delete mode 100644 packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.prod.ts__tmpl__ delete mode 100644 packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.ts__tmpl__ delete mode 100644 packages/angular/src/schematics/xplat/_lib_files/utils/objects.ts__tmpl__ delete mode 100644 packages/angular/src/schematics/xplat/_scss_files/package.json delete mode 100644 packages/angular/src/schematics/xplat/_testing_files/jest.libs.config.js delete mode 100644 packages/angular/src/schematics/xplat/_testing_files/jest.xplat.config.js delete mode 100644 packages/angular/src/schematics/xplat/_testing_files/test-setup.ts__tmpl__ delete mode 100644 packages/angular/src/schematics/xplat/_testing_files/tsconfig.json delete mode 100644 packages/angular/src/schematics/xplat/_testing_files/tsconfig.libs.spec.json delete mode 100644 packages/angular/src/schematics/xplat/_testing_files/tsconfig.xplat.spec.json delete mode 100644 packages/electron-angular/src/schematics/xplat/_files/__dot__xplatframework delete mode 100644 packages/electron-angular/src/schematics/xplat/_files/index.ts__tmpl__ rename packages/electron-angular/src/schematics/xplat/{_files/core => _files_core}/core.module.ts__tmpl__ (88%) rename packages/electron-angular/src/schematics/xplat/{_files/core => _files_core}/index.ts__tmpl__ (100%) rename packages/electron-angular/src/schematics/xplat/{_files/core => _files_core}/services/electron.service.ts__tmpl__ (89%) rename packages/electron-angular/src/schematics/xplat/{_files/core => _files_core}/services/index.ts__tmpl__ (100%) delete mode 100644 packages/ionic-angular/src/schematics/xplat/_files/__dot__xplatframework delete mode 100644 packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html delete mode 100644 packages/ionic-angular/src/schematics/xplat/_files/index.ts__tmpl__ rename packages/ionic-angular/src/schematics/xplat/{_files/core => _files_core}/core.module.ts__tmpl__ (89%) rename packages/ionic-angular/src/schematics/xplat/{_files/core => _files_core}/index.ts__tmpl__ (100%) rename packages/ionic-angular/src/schematics/xplat/{_files/features => _files_features}/index.ts__tmpl__ (100%) create mode 100644 packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html rename packages/ionic-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/header/header.component.ts__tmpl__ (73%) rename packages/ionic-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/index.ts__tmpl__ (100%) rename packages/ionic-angular/src/schematics/xplat/{_files/features => _files_features}/ui/index.ts__tmpl__ (100%) rename packages/ionic-angular/src/schematics/xplat/{_files/features => _files_features}/ui/ui.module.ts__tmpl__ (82%) rename packages/ionic-angular/src/schematics/xplat/{_files/scss => _files_scss}/_index.scss (93%) rename packages/ionic-angular/src/schematics/xplat/{_files/scss => _files_scss}/_tags.scss (100%) rename packages/ionic-angular/src/schematics/xplat/{_files/scss => _files_scss}/package.json (60%) create mode 100644 packages/nativescript-angular/src/schematics/application/_files/__dot__eslintrc.json create mode 100644 packages/nativescript-angular/src/schematics/application/_files/jest.config.js create mode 100644 packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.base.ts__tmpl__ create mode 100644 packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.dev.ts__tmpl__ create mode 100644 packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.prod.ts__tmpl__ create mode 100644 packages/nativescript-angular/src/schematics/application/_files/src/test-setup.ts__tmpl__ create mode 100644 packages/nativescript-angular/src/schematics/application/_files/tsconfig.app.json create mode 100644 packages/nativescript-angular/src/schematics/application/_files/tsconfig.editor.json delete mode 100644 packages/nativescript-angular/src/schematics/application/_files/tsconfig.env.json create mode 100644 packages/nativescript-angular/src/schematics/application/_files/tsconfig.spec.json create mode 100644 packages/nativescript-angular/src/schematics/application/_files/webpack.config.js delete mode 100644 packages/nativescript-angular/src/schematics/xplat/_files/__dot__xplatframework delete mode 100644 packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html delete mode 100644 packages/nativescript-angular/src/schematics/xplat/_files/index.ts__tmpl__ delete mode 100644 packages/nativescript-angular/src/schematics/xplat/_files/scss/package.json rename packages/nativescript-angular/src/schematics/xplat/{_files/core => _files_core}/core.module.ts__tmpl__ (90%) rename packages/nativescript-angular/src/schematics/xplat/{_files/core => _files_core}/index.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/core => _files_core}/services/app.service.ts__tmpl__ (91%) rename packages/nativescript-angular/src/schematics/xplat/{_files/core => _files_core}/services/index.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/core => _files_core}/services/tns-translate.loader.ts__tmpl__ (99%) rename packages/nativescript-angular/src/schematics/xplat/{_files/core => _files_core}/services/tns-window.service.ts__tmpl__ (75%) rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/index.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/ui/base/app.base-component.ts__tmpl__ (60%) rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/ui/base/index.ts__tmpl__ (100%) create mode 100644 packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/header/header.component.ts__tmpl__ (82%) rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/index.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/ui/index.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/features => _files_features}/ui/ui.module.ts__tmpl__ (90%) rename packages/nativescript-angular/src/schematics/xplat/{_files/plugins => _files_plugins}/README.md (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_common.scss (97%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_fonts.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_index.android.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_index.ios.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_mixins.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_overrides.android.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_overrides.ios.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_tags.scss (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/scss => _files_scss}/_variables.scss (100%) create mode 100644 packages/nativescript-angular/src/schematics/xplat/_files_scss/package.json rename packages/nativescript-angular/src/schematics/xplat/{_files/utils => _files_utils}/font-awesome.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/utils => _files_utils}/icons.ts__tmpl__ (100%) rename packages/nativescript-angular/src/schematics/xplat/{_files/utils => _files_utils}/index.ts__tmpl__ (100%) create mode 100644 packages/nativescript/src/schematics/application/_files/tsconfig.app.json create mode 100644 packages/nativescript/src/schematics/application/_files/tsconfig.editor.json create mode 100644 packages/nativescript/src/schematics/application/_files/tsconfig.spec.json delete mode 100644 packages/nativescript/src/schematics/xplat/_files/index.ts__tmpl__ delete mode 100644 packages/nativescript/src/schematics/xplat/_files/scss/package.json rename packages/nativescript/src/schematics/xplat/{_files/plugins => _files_plugins}/README.md (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_common.scss (97%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_fonts.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_index.android.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_index.ios.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_mixins.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_overrides.android.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_overrides.ios.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_tags.scss (100%) rename packages/nativescript/src/schematics/xplat/{_files/scss => _files_scss}/_variables.scss (100%) create mode 100644 packages/nativescript/src/schematics/xplat/_files_scss/package.json rename packages/nativescript/src/schematics/xplat/{_files/utils => _files_utils}/icons.ts__tmpl__ (100%) rename packages/nativescript/src/schematics/xplat/{_files/utils => _files_utils}/index.ts__tmpl__ (100%) delete mode 100644 packages/web-angular/src/schematics/xplat/_files/__dot__xplatframework delete mode 100644 packages/web-angular/src/schematics/xplat/_files/index.ts__tmpl__ rename packages/web-angular/src/schematics/xplat/{_files/core => _files_core}/base/app.base-component.ts__tmpl__ (78%) rename packages/web-angular/src/schematics/xplat/{_files/core => _files_core}/base/index.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/core => _files_core}/core.module.spec.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/core => _files_core}/core.module.ts__tmpl__ (93%) rename packages/web-angular/src/schematics/xplat/{_files/core => _files_core}/index.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/index.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/header/header.component.html (85%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/header/header.component.ts__tmpl__ (73%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/ui/components/index.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/ui/index.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/ui/ui.module.spec.ts__tmpl__ (100%) rename packages/web-angular/src/schematics/xplat/{_files/features => _files_features}/ui/ui.module.ts__tmpl__ (88%) rename packages/web-angular/src/schematics/xplat/{_lib_files/scss => _files_lib_scss}/_index.scss (100%) rename packages/web-angular/src/schematics/xplat/{_lib_files/scss => _files_lib_scss}/_variables.scss (100%) create mode 100644 packages/web-angular/src/schematics/xplat/_files_lib_scss/package.json rename packages/{web/src/schematics/xplat/_files/scss => web-angular/src/schematics/xplat/_files_platform_scss}/_index.scss (85%) rename packages/web-angular/src/schematics/xplat/{_scss_files => _files_platform_scss}/_spacing.scss (100%) rename packages/web-angular/src/schematics/xplat/{_scss_files => _files_platform_scss}/_tags.scss (100%) rename packages/web-angular/src/schematics/xplat/{_scss_files => _files_platform_scss}/_variables.scss (100%) create mode 100644 packages/web-angular/src/schematics/xplat/_files_platform_scss/package.json delete mode 100644 packages/web-angular/src/schematics/xplat/_lib_files/scss/package.json delete mode 100644 packages/web-angular/src/schematics/xplat/_scss_files/package.json delete mode 100644 packages/web/src/schematics/xplat/_files/scss/package.json rename packages/web/src/schematics/xplat/{_lib_files/scss => _files_lib_scss}/_index.scss (100%) rename packages/web/src/schematics/xplat/{_lib_files/scss => _files_lib_scss}/_variables.scss (100%) create mode 100644 packages/web/src/schematics/xplat/_files_lib_scss/package.json rename packages/{web-angular/src/schematics/xplat/_scss_files => web/src/schematics/xplat/_files_scss}/_index.scss (85%) rename packages/web/src/schematics/xplat/{_files/scss => _files_scss}/_spacing.scss (100%) rename packages/web/src/schematics/xplat/{_files/scss => _files_scss}/_tags.scss (100%) rename packages/web/src/schematics/xplat/{_files/scss => _files_scss}/_variables.scss (100%) create mode 100644 packages/web/src/schematics/xplat/_files_scss/package.json delete mode 100644 packages/web/src/schematics/xplat/_lib_files/scss/package.json delete mode 100644 packages/xplat/migrations/update-10-3-0/update-10-3-0.ts create mode 100644 packages/xplat/migrations/update-11-0-0/clean-old-dirs.ts create mode 100644 packages/xplat/migrations/update-11-0-0/update-11-0-0.ts create mode 100644 packages/xplat/migrations/update-11-0-0/update-to-11-env-base.ts create mode 100644 packages/xplat/migrations/update-11-0-0/update-to-11-imports.ts diff --git a/.prettierignore b/.prettierignore index 7995a29e..edb7c0e2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,6 +3,7 @@ tmp /build node_modules /package.json +packages/**/*.html packages/angular/src/schematics/**/_**files/**/*.json packages/electron/src/schematics/**/_**files/**/*.json packages/ionic/src/schematics/**/_**files/**/*.json @@ -11,6 +12,7 @@ packages/nativescript/src/schematics/**/App_Resources/**/* packages/nativescript/src/schematics/**/hooks/**/* packages/nativescript/src/schematics/**/tools/**/* packages/nativescript/src/schematics/xplat/_files/scss/fonticons/*.css +packages/nativescript-angular/src/schematics/application/_files/webpack.config.js packages/nativescript-angular/src/schematics/xplat/_files/scss/fonticons/*.css packages/web/src/schematics/**/_*/**/*.json packages/xplat/src/schematics/**/_*/**/*.json diff --git a/package.json b/package.json index b6af4678..afbba90a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nstudio/xplat-source", - "version": "10.3.9", + "version": "11.0.7", "description": "Cross-platform (xplat) tools for Nx workspaces.", "homepage": "https://nstudio.io/xplat", "private": true, @@ -33,43 +33,40 @@ }, "license": "MIT", "devDependencies": { - "@angular-devkit/architect": "~0.1001.0", - "@angular-devkit/build-angular": "~0.1001.0", - "@angular-devkit/build-ng-packagr": "~0.1001.0", - "@angular-devkit/build-optimizer": "~0.1001.0", - "@angular-devkit/build-webpack": "~0.1001.0", - "@angular-devkit/core": "~10.1.0", - "@angular-devkit/schematics": "~10.1.0", - "@angular/cli": "~10.1.0", - "@angular/common": "~10.1.0", - "@angular/compiler": "~10.1.0", - "@angular/compiler-cli": "~10.1.0", - "@angular/core": "~10.1.0", - "@angular/forms": "~10.1.0", - "@angular/platform-browser": "~10.1.0", - "@angular/platform-browser-dynamic": "~10.1.0", - "@angular/router": "~10.1.0", - "@angular/service-worker": "~10.1.0", - "@angular/upgrade": "~10.1.0", + "@angular-devkit/architect": "~0.1100.1", + "@angular-devkit/build-angular": "~0.1100.1", + "@angular-devkit/build-optimizer": "~0.1100.1", + "@angular-devkit/build-webpack": "~0.1100.1", + "@angular-devkit/build-ng-packagr": "~0.1002.0", + "@angular-devkit/core": "~11.0.1", + "@angular-devkit/schematics": "~11.0.1", + "@angular/cli": "~11.0.1", + "@angular/common": "~11.0.0", + "@angular/compiler": "~11.0.0", + "@angular/compiler-cli": "~11.0.0", + "@angular/core": "~11.0.0", + "@angular/forms": "~11.0.0", + "@angular/platform-browser": "~11.0.0", + "@angular/platform-browser-dynamic": "~11.0.0", + "@angular/router": "~11.0.0", + "@angular/service-worker": "~11.0.0", + "@angular/upgrade": "~11.0.0", "@cypress/webpack-preprocessor": "^5.4.2", - "@nrwl/angular": "~10.3.0", - "@nrwl/express": "~10.3.0", - "@nrwl/nest": "~10.3.0", - "@nrwl/node": "~10.3.0", - "@nrwl/react": "~10.3.0", - "@nrwl/web": "~10.3.0", - "@nrwl/workspace": "~10.3.0", - "@schematics/angular": "~10.1.0", + "@nrwl/angular": "~11.0.0", + "@nrwl/express": "~11.0.0", + "@nrwl/nest": "~11.0.0", + "@nrwl/node": "~11.0.0", + "@nrwl/react": "~11.0.0", + "@nrwl/web": "~11.0.0", + "@nrwl/workspace": "~11.0.0", + "@schematics/angular": "~11.0.0", "@types/express": "~4.17.0", "@types/jasmine": "~3.5.11", "@types/jasminewd2": "~2.0.3", "@types/jest": "~26.0.7", "@types/node": "~12.0.0", "@types/prettier": "~2.0.2", - "@types/react": "~16.9.43", - "@types/react-dom": "~16.9.4", - "@types/react-router-dom": "~5.1.3", - "@types/webpack": "~4.41.21", + "@types/webpack": "^4.4.24", "@types/xml2js": "^0.4.5", "@types/yargs": "~15.0.5", "app-root-path": "~3.0.0", @@ -97,9 +94,8 @@ "jasmine-core": "~3.6.0", "jasmine-marbles": "~0.6.0", "jasmine-spec-reporter": "~5.0.2", - "jest": "~26.1.0", - "jest-jasmine2": "~26.1.0", - "jest-preset-angular": "~8.2.1", + "jest": "26.2.2", + "jest-preset-angular": "8.2.1", "jest-worker": "~26.1.0", "karma": "~5.1.1", "karma-chrome-launcher": "~3.1.0", @@ -108,11 +104,12 @@ "karma-jasmine-html-reporter": "~1.5.4", "karma-webpack": "~4.0.2", "license-webpack-plugin": "~2.3.0", - "ng-packagr": "~10.1.0", + "ng-packagr": "~11.0.0", "npm-run-all": "~4.1.5", "open": "~6.0.0", "precise-commits": "~1.0.2", "prettier": "~2.0.0", + "pretty-quick": "^2.0.1", "release-it": "~13.6.6", "rxjs": "~6.6.0", "semver": "~7.3.0", @@ -127,8 +124,8 @@ "tsickle": "~0.38.1", "tslib": "~2.0.0", "tslint": "~6.1.2", - "typescript": "~3.9.0", - "verdaccio": "~4.8.0", + "typescript": "~4.0.0", + "verdaccio": "~4.10.0", "webpack": "~4.44.0", "webpack-dev-middleware": "~3.7.0", "webpack-dev-server": "~3.11.0", @@ -138,8 +135,8 @@ "webpack-subresource-integrity": "~1.4.1", "worker-plugin": "~4.0.3", "xml2js": "~0.4.23", - "yargs": "~15.4.0", - "yargs-parser": "~18.1.3", + "yargs": "15.4.1", + "yargs-parser": "20.0.0", "zone.js": "~0.11.1" }, "jest": { @@ -166,7 +163,7 @@ }, "husky": { "hooks": { - "pre-push": "yarn checkcommit && yarn documentation && yarn checkformat" + "pre-push": "yarn checkcommit && pretty-quick --check" } } } diff --git a/packages/angular/package.json b/packages/angular/package.json index 930f240e..bb3bda8d 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -29,7 +29,7 @@ "migrations": "./migrations.json" }, "dependencies": { - "@nrwl/angular": "^10.3.0" + "@nrwl/angular": "^11.0.0" }, "peerDependencies": { "@nstudio/xplat": "*" diff --git a/packages/angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ b/packages/angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ index 4c58ab5e..5e30c575 100644 --- a/packages/angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ +++ b/packages/angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; // xplat -import { <%= utils.classify(prefix) %>CoreModule } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { <%= utils.classify(prefix) %>CoreModule } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/core'; @NgModule({ imports: [<%= utils.classify(prefix) %>CoreModule] diff --git a/packages/angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ b/packages/angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ index 7c17ac1f..e670323a 100644 --- a/packages/angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ +++ b/packages/angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; // xplat -import { UIModule } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { UIModule } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/features'; const MODULES = [UIModule]; diff --git a/packages/angular/src/schematics/application/_routing_files/src/app/features/home/components/home.component.ts__tmpl__ b/packages/angular/src/schematics/application/_routing_files/src/app/features/home/components/home.component.ts__tmpl__ index 2a18ff02..178db88d 100644 --- a/packages/angular/src/schematics/application/_routing_files/src/app/features/home/components/home.component.ts__tmpl__ +++ b/packages/angular/src/schematics/application/_routing_files/src/app/features/home/components/home.component.ts__tmpl__ @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { BaseComponent } from '@<%= npmScope %>/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Component({ selector: '<%= prefix %>-home', diff --git a/packages/angular/src/schematics/application/index.spec.ts b/packages/angular/src/schematics/application/index.spec.ts index 5ac366d6..779ef3ca 100644 --- a/packages/angular/src/schematics/application/index.spec.ts +++ b/packages/angular/src/schematics/application/index.spec.ts @@ -35,14 +35,13 @@ describe('app', () => { expect(tree.exists('/package.json')).toBeTruthy(); - let checkFile = getFileContent(tree, '/package.json'); - // console.log(checkFile); - const packageData: any = jsonParse(checkFile); - expect(packageData.scripts['start.web.foo']).toBeDefined(); - // should gen xplat structure by default - expect(tree.exists('/xplat/web/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/web/core/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/web/features/src/lib/index.ts') + ).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/scss/src/_index.scss')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/scss/src/package.json')).toBeTruthy(); }); it('should create all files for web app using groupByName', async () => { @@ -59,7 +58,7 @@ describe('app', () => { let checkFile = getFileContent(tree, checkPath); // console.log('tsconfig.base:', checkFile); expect(files.indexOf(checkPath)).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/tsconfig.json')).toBeGreaterThanOrEqual(0); + expect(files.indexOf('/tsconfig.base.json')).toBeGreaterThanOrEqual(0); expect(files.indexOf('/apps/foo-web/src/main.ts')).toBeGreaterThanOrEqual( 0 ); @@ -72,11 +71,6 @@ describe('app', () => { checkPath = '/package.json'; expect(files.indexOf(checkPath)).toBeGreaterThanOrEqual(0); - - checkFile = getFileContent(tree, checkPath); - // console.log(checkFile); - const packageData: any = jsonParse(checkFile); - expect(packageData.scripts['start.foo.web']).toBeDefined(); }); it('should create all files for web app in directory', async () => { @@ -136,9 +130,6 @@ describe('app', () => { expect(files.indexOf(checkPath)).toBeGreaterThanOrEqual(0); let checkFile = getFileContent(tree, checkPath); - // console.log(checkFile); - const packageData: any = jsonParse(checkFile); - expect(packageData.scripts['start.web.foo']).toBeDefined(); checkPath = '/angular.json'; expect(files.indexOf(checkPath)).toBeGreaterThanOrEqual(0); @@ -164,10 +155,6 @@ describe('app', () => { // const checkPath = '/package.json'; // expect(files.indexOf(checkPath)).toBeGreaterThanOrEqual(0); - // let checkFile = getFileContent(tree, checkPath); - // // console.log(checkFile); - // const packageData: any = jsonParse(checkFile); - // expect(packageData.scripts['start.ionic.foo']).toBeDefined(); // }); // it('should create app with --framework flag for NativeScript', async () => { @@ -184,10 +171,6 @@ describe('app', () => { // const checkPath = '/package.json'; // expect(files.indexOf(checkPath)).toBeGreaterThanOrEqual(0); - // let checkFile = getFileContent(tree, checkPath); - // // console.log(checkFile); - // const packageData: any = jsonParse(checkFile); - // expect(packageData.scripts['start.nativescript.foo.ios']).toBeDefined(); // }); describe('useXplat false', () => { @@ -204,7 +187,7 @@ describe('app', () => { expect( tree.exists('/apps/web-foo/src/app/core/core.module.ts') ).toBeFalsy(); - expect(tree.exists('/xplat/web/index.ts')).toBeFalsy(); + expect(tree.exists('/libs/xplat/web/src/lib/index.ts')).toBeFalsy(); }); }); }); diff --git a/packages/angular/src/schematics/application/index.ts b/packages/angular/src/schematics/application/index.ts index f070dd5e..b619319c 100644 --- a/packages/angular/src/schematics/application/index.ts +++ b/packages/angular/src/schematics/application/index.ts @@ -31,7 +31,6 @@ import { getJsonFromFile, updateJsonFile, supportedPlatforms, - checkRootTsConfig, } from '@nstudio/xplat-utils'; import { Schema } from './schema'; @@ -103,14 +102,8 @@ export default function (options: Schema) { scripts[ `clean` ] = `npx rimraf hooks node_modules package-lock.json && npm i`; - scripts[`start.${platformApp}`] = `nx serve ${options.name}`; return updatePackageScripts(tree, scripts); }, - (tree: Tree) => { - // make sure tsconfig exists at root - // we do this here because Nrwl with 10.1 was actually removing it - checkRootTsConfig(tree); - }, formatFiles({ skipFormat: options.skipFormat }), ]); } @@ -235,10 +228,10 @@ function adjustAppFiles(options: Schema, tree: Tree): Rule { workspaceConfig.projects[ options.name ].architect.build.options.styles = [ - `xplat/${XplatHelpers.getXplatFoldername( + `libs/xplat/${XplatHelpers.getXplatFoldername( 'web', 'angular' - )}/scss/_index.scss`, + )}/scss/src/_index.scss`, `apps/${directory}${options.name}/src/styles.scss`, ]; } @@ -269,7 +262,7 @@ function mainContent() { import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; // libs -import { environment } from '@${getNpmScope()}/core'; +import { environment } from '@${getNpmScope()}/xplat/core'; // app import { AppModule } from './app/app.module'; @@ -308,10 +301,10 @@ function appCmpContent() { return `import { Component } from '@angular/core'; // xplat -import { AppBaseComponent } from '@${getNpmScope()}/${XplatHelpers.getXplatFoldername( +import { AppBaseComponent } from '@${getNpmScope()}/xplat/${XplatHelpers.getXplatFoldername( 'web', 'angular' - )}'; + )}/core'; @Component({ selector: '${getPrefix()}-root', @@ -412,7 +405,7 @@ function appModuleContent(options) { return `import { NgModule } from '@angular/core'; // libs -import { environment } from '@${getNpmScope()}/core'; +import { environment } from '@${getNpmScope()}/xplat/core'; // app import { CoreModule } from './core/core.module'; diff --git a/packages/angular/src/schematics/component/_base_files/__name__.base-component.ts__tmpl__ b/packages/angular/src/schematics/component/_base_files/__name__.base-component.ts__tmpl__ index 7dc9596d..7e43c154 100644 --- a/packages/angular/src/schematics/component/_base_files/__name__.base-component.ts__tmpl__ +++ b/packages/angular/src/schematics/component/_base_files/__name__.base-component.ts__tmpl__ @@ -1,5 +1,5 @@ import { Directive } from '@angular/core'; -import { BaseComponent } from '@<%= npmScope %>/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Directive() export abstract class <%= utils.classify(name) %>BaseComponent extends BaseComponent { diff --git a/packages/angular/src/schematics/component/index.spec.ts b/packages/angular/src/schematics/component/index.spec.ts index 09304cb6..3a4098b9 100644 --- a/packages/angular/src/schematics/component/index.spec.ts +++ b/packages/angular/src/schematics/component/index.spec.ts @@ -37,31 +37,33 @@ describe('component schematic', () => { // component expect( - tree.exists('/libs/features/foo/base/signup.base-component.ts') + tree.exists( + '/libs/xplat/features/src/lib/foo/base/signup.base-component.ts' + ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript/features/foo/components/signup/signup.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/signup/signup.component.html' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript/features/foo/components/signup/signup.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/signup/signup.component.ts' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/web/features/foo/components/signup/signup.component.html' + '/libs/xplat/web/features/src/lib/foo/components/signup/signup.component.html' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/web/features/foo/components/signup/signup.component.ts' + '/libs/xplat/web/features/src/lib/foo/components/signup/signup.component.ts' ) ).toBeTruthy(); // ensure base index was modified - let barrelPath = '/libs/features/foo/base/index.ts'; + let barrelPath = '/libs/xplat/features/src/lib/foo/base/index.ts'; let barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -71,7 +73,8 @@ describe('component schematic', () => { ).toBeGreaterThanOrEqual(0); // file content - barrelPath = '/xplat/nativescript/features/foo/components/index.ts'; + barrelPath = + '/libs/xplat/nativescript/features/src/lib/foo/components/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -81,7 +84,7 @@ describe('component schematic', () => { barrelIndex.indexOf(`./signup/signup.component`) ).toBeGreaterThanOrEqual(0); - barrelPath = '/xplat/web/features/foo/components/index.ts'; + barrelPath = '/libs/xplat/web/features/src/lib/foo/components/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -107,26 +110,28 @@ describe('component schematic', () => { // component expect( - tree.exists('/libs/features/foo/base/signup.base-component.ts') + tree.exists( + '/libs/xplat/features/src/lib/foo/base/signup.base-component.ts' + ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript-angular/features/foo/components/signup/signup.component.html' + '/libs/xplat/nativescript-angular/features/src/lib/foo/components/signup/signup.component.html' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript-angular/features/foo/components/signup/signup.component.ts' + '/libs/xplat/nativescript-angular/features/src/lib/foo/components/signup/signup.component.ts' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/web-angular/features/foo/components/signup/signup.component.html' + '/libs/xplat/web-angular/features/src/lib/foo/components/signup/signup.component.html' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/web-angular/features/foo/components/signup/signup.component.ts' + '/libs/xplat/web-angular/features/src/lib/foo/components/signup/signup.component.ts' ) ).toBeTruthy(); }); @@ -150,38 +155,39 @@ describe('component schematic', () => { // component expect( tree.exists( - '/libs/features/foo/base/registration/signup.base-component.ts' + '/libs/xplat/features/src/lib/foo/base/registration/signup.base-component.ts' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript/features/foo/components/registration/signup/signup.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/registration/signup/signup.component.html' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript/features/foo/components/registration/signup/signup.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/registration/signup/signup.component.ts' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/web/features/foo/components/registration/signup/signup.component.html' + '/libs/xplat/web/features/src/lib/foo/components/registration/signup/signup.component.html' ) ).toBeTruthy(); expect( tree.exists( - '/xplat/web/features/foo/components/registration/signup/signup.component.ts' + '/libs/xplat/web/features/src/lib/foo/components/registration/signup/signup.component.ts' ) ).toBeTruthy(); // ensure base index was modified - let barrelPath = '/libs/features/foo/base/registration/index.ts'; + let barrelPath = + '/libs/xplat/features/src/lib/foo/base/registration/index.ts'; let barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); expect(barrelIndex.indexOf(`./signup.base-component`)).toBeTruthy(); - barrelPath = '/libs/features/foo/base/index.ts'; + barrelPath = '/libs/xplat/features/src/lib/foo/base/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -190,14 +196,15 @@ describe('component schematic', () => { // file content barrelPath = - '/xplat/nativescript/features/foo/components/registration/index.ts'; + '/libs/xplat/nativescript/features/src/lib/foo/components/registration/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); // component symbol should be at end of components collection expect(barrelIndex.indexOf(`SignupComponent];`)).toBeGreaterThanOrEqual(0); - barrelPath = '/xplat/web/features/foo/components/registration/index.ts'; + barrelPath = + '/libs/xplat/web/features/src/lib/foo/components/registration/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -206,7 +213,8 @@ describe('component schematic', () => { ).toBeGreaterThanOrEqual(0); // file content - barrelPath = '/xplat/nativescript/features/foo/components/index.ts'; + barrelPath = + '/libs/xplat/nativescript/features/src/lib/foo/components/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -215,7 +223,7 @@ describe('component schematic', () => { barrelIndex.indexOf(`REGISTRATION_COMPONENTS`) ).toBeGreaterThanOrEqual(0); - barrelPath = '/xplat/web/features/foo/components/index.ts'; + barrelPath = '/libs/xplat/web/features/src/lib/foo/components/index.ts'; barrelIndex = getFileContent(tree, barrelPath); // console.log(barrelPath + ':'); // console.log(barrelIndex); @@ -246,26 +254,28 @@ describe('component schematic', () => { // component should not be setup to share expect( - tree.exists('/libs/features/foo/base/signup.base-component.ts') + tree.exists( + '/libs/xplat/features/src/lib/foo/base/signup.base-component.ts' + ) ).toBeFalsy(); expect( tree.exists( - '/xplat/nativescript/features/foo/components/signup/signup.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/signup/signup.component.html' ) ).toBeFalsy(); expect( tree.exists( - '/xplat/nativescript/features/foo/components/signup/signup.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/signup/signup.component.ts' ) ).toBeFalsy(); expect( tree.exists( - '/xplat/web/features/foo/components/signup/signup.component.html' + '/libs/xplat/web/features/src/lib/foo/components/signup/signup.component.html' ) ).toBeFalsy(); expect( tree.exists( - '/xplat/web/features/foo/components/signup/signup.component.ts' + '/libs/xplat/web/features/src/lib/foo/components/signup/signup.component.ts' ) ).toBeFalsy(); diff --git a/packages/angular/src/schematics/component/index.ts b/packages/angular/src/schematics/component/index.ts index 6c83f571..fd15ed5f 100644 --- a/packages/angular/src/schematics/component/index.ts +++ b/packages/angular/src/schematics/component/index.ts @@ -74,7 +74,7 @@ export default function (options: XplatComponentHelpers.Schema) { '', 'component', options, - 'libs', + 'libs/xplat', tree, '_base', true @@ -86,7 +86,7 @@ export default function (options: XplatComponentHelpers.Schema) { ? adjustBarrelIndex( 'component', options, - `libs/features/${componentSettings.featureName}/base/${options.subFolder}/index.ts`, + `libs/xplat/features/src/lib/${componentSettings.featureName}/base/${options.subFolder}/index.ts`, false, true )(tree, context) @@ -98,7 +98,7 @@ export default function (options: XplatComponentHelpers.Schema) { '', 'component', options, - 'libs', + 'libs/xplat', tree, '_base_index', true @@ -110,7 +110,7 @@ export default function (options: XplatComponentHelpers.Schema) { ? adjustBarrelIndex( 'component', options, - `libs/features/${componentSettings.featureName}/base/index.ts`, + `libs/xplat/features/src/lib/${componentSettings.featureName}/base/index.ts`, false, true )(tree, context) @@ -122,7 +122,7 @@ export default function (options: XplatComponentHelpers.Schema) { '', 'component', options, - 'libs', + 'libs/xplat', tree, '_base_index' )(tree, context) diff --git a/packages/angular/src/schematics/directive/index.spec.ts b/packages/angular/src/schematics/directive/index.spec.ts index 1231db2f..4b8127e4 100644 --- a/packages/angular/src/schematics/directive/index.spec.ts +++ b/packages/angular/src/schematics/directive/index.spec.ts @@ -36,13 +36,15 @@ describe('directive schematic', () => { // component expect( - files.indexOf('/libs/features/ui/directives/active-link.directive.ts') + files.indexOf( + '/libs/xplat/features/src/lib/ui/directives/active-link.directive.ts' + ) ).toBeGreaterThanOrEqual(0); // file content let content = getFileContent( tree, - '/libs/features/ui/directives/active-link.directive.ts' + '/libs/xplat/features/src/lib/ui/directives/active-link.directive.ts' ); // console.log(content); expect(content.indexOf(`@Directive({`)).toBeGreaterThanOrEqual(0); @@ -50,7 +52,7 @@ describe('directive schematic', () => { 0 ); - let modulePath = '/libs/features/ui/ui.module.ts'; + let modulePath = '/libs/xplat/features/src/lib/ui/ui.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); @@ -64,13 +66,15 @@ describe('directive schematic', () => { // console.log(files.slice(91,files.length)); expect( - files.indexOf('/libs/features/foo/directives/active-link.directive.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/directives/active-link.directive.ts' + ) ).toBeGreaterThanOrEqual(0); // file content content = getFileContent( tree, - '/libs/features/foo/directives/active-link.directive.ts' + '/libs/xplat/features/src/lib/foo/directives/active-link.directive.ts' ); // console.log(content); expect(content.indexOf(`@Directive({`)).toBeGreaterThanOrEqual(0); @@ -78,7 +82,7 @@ describe('directive schematic', () => { 0 ); - modulePath = '/libs/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/features/src/lib/foo/foo.module.ts'; moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); @@ -107,21 +111,25 @@ describe('directive schematic', () => { // console.log(files.slice(91,files.length)); expect( - tree.exists('/libs/features/ui/directives/active-link.directive.ts') + tree.exists( + '/libs/xplat/features/src/lib/ui/directives/active-link.directive.ts' + ) ).toBeFalsy(); expect( - tree.exists('/xplat/web/features/ui/directives/active-link.directive.ts') + tree.exists( + '/libs/xplat/web/features/src/lib/ui/directives/active-link.directive.ts' + ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript/features/ui/directives/active-link.directive.ts' + '/libs/xplat/nativescript/features/src/lib/ui/directives/active-link.directive.ts' ) ).toBeTruthy(); // file content let content = getFileContent( tree, - '/xplat/web/features/ui/directives/active-link.directive.ts' + '/libs/xplat/web/features/src/lib/ui/directives/active-link.directive.ts' ); // console.log(content); expect(content.indexOf(`@Directive({`)).toBeGreaterThanOrEqual(0); @@ -131,7 +139,7 @@ describe('directive schematic', () => { content = getFileContent( tree, - '/xplat/nativescript/features/ui/directives/active-link.directive.ts' + '/libs/xplat/nativescript/features/src/lib/ui/directives/active-link.directive.ts' ); // console.log(content); expect(content.indexOf(`@Directive({`)).toBeGreaterThanOrEqual(0); @@ -139,13 +147,13 @@ describe('directive schematic', () => { 0 ); - let modulePath = '/xplat/web/features/ui/ui.module.ts'; + let modulePath = '/libs/xplat/web/features/src/lib/ui/ui.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(moduleContent); expect(moduleContent.indexOf(`...UI_DIRECTIVES`)).toBeGreaterThanOrEqual(0); - modulePath = '/xplat/nativescript/features/ui/ui.module.ts'; + modulePath = '/libs/xplat/nativescript/features/src/lib/ui/ui.module.ts'; moduleContent = getFileContent(tree, modulePath); expect(moduleContent.indexOf(`...UI_DIRECTIVES`)).toBeGreaterThanOrEqual(0); @@ -157,18 +165,20 @@ describe('directive schematic', () => { // console.log(files.slice(91,files.length)); expect( - tree.exists('/xplat/web/features/foo/directives/active-link.directive.ts') + tree.exists( + '/libs/xplat/web/features/src/lib/foo/directives/active-link.directive.ts' + ) ).toBeTruthy(); expect( tree.exists( - '/xplat/nativescript/features/foo/directives/active-link.directive.ts' + '/libs/xplat/nativescript/features/src/lib/foo/directives/active-link.directive.ts' ) ).toBeTruthy(); // file content content = getFileContent( tree, - '/xplat/web/features/foo/directives/active-link.directive.ts' + '/libs/xplat/web/features/src/lib/foo/directives/active-link.directive.ts' ); // console.log(content); expect(content.indexOf(`@Directive({`)).toBeGreaterThanOrEqual(0); @@ -177,7 +187,7 @@ describe('directive schematic', () => { ); content = getFileContent( tree, - '/xplat/nativescript/features/foo/directives/active-link.directive.ts' + '/libs/xplat/nativescript/features/src/lib/foo/directives/active-link.directive.ts' ); // console.log(content); expect(content.indexOf(`@Directive({`)).toBeGreaterThanOrEqual(0); @@ -185,7 +195,7 @@ describe('directive schematic', () => { 0 ); - modulePath = '/xplat/web/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/web/features/src/lib/foo/foo.module.ts'; moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); @@ -193,7 +203,7 @@ describe('directive schematic', () => { expect(moduleContent.indexOf(`...FOO_DIRECTIVES`)).toBeGreaterThanOrEqual( 0 ); - modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); @@ -226,16 +236,18 @@ describe('directive schematic', () => { // directive should not be setup to share expect( - files.indexOf('/libs/features/ui/directives/active-link.directive.ts') + files.indexOf( + '/libs/xplat/features/src/lib/ui/directives/active-link.directive.ts' + ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/directives/active-link.directive.ts' + '/libs/xplat/nativescript/features/src/lib/foo/directives/active-link.directive.ts' ) ).toBe(-1); expect( files.indexOf( - '/xplat/web/features/foo/directives/active-link.directive.ts' + '/libs/xplat/web/features/src/lib/foo/directives/active-link.directive.ts' ) ).toBe(-1); diff --git a/packages/angular/src/schematics/elements/_builder_files/builder/index.html b/packages/angular/src/schematics/elements/_builder_files/builder/index.html index 57d67081..bc175bce 100644 --- a/packages/angular/src/schematics/elements/_builder_files/builder/index.html +++ b/packages/angular/src/schematics/elements/_builder_files/builder/index.html @@ -1,13 +1,13 @@ - + - - - Custom Elements - + + + Custom Elements + - - - - <%= htmlElements %> - - \ No newline at end of file + + + + <%= htmlElements %> + + diff --git a/packages/angular/src/schematics/elements/_builder_files/builder/tsconfig.elements.json b/packages/angular/src/schematics/elements/_builder_files/builder/tsconfig.elements.json index 9f36d024..6c7a60e0 100644 --- a/packages/angular/src/schematics/elements/_builder_files/builder/tsconfig.elements.json +++ b/packages/angular/src/schematics/elements/_builder_files/builder/tsconfig.elements.json @@ -1,7 +1,7 @@ { - "extends": "../../../../tsconfig.json", + "extends": "../../../../../tsconfig.base.json", "compilerOptions": { - "outDir": "../../../../dist/out-tsc/xplat/web/elements", + "outDir": "../../../../../dist/out-tsc/libs/xplat/web/elements", "module": "es2015", "types": [] }, diff --git a/packages/angular/src/schematics/elements/index.spec.ts b/packages/angular/src/schematics/elements/index.spec.ts index b6be90d3..7a32a3c0 100644 --- a/packages/angular/src/schematics/elements/index.spec.ts +++ b/packages/angular/src/schematics/elements/index.spec.ts @@ -8,7 +8,7 @@ describe('elements schematic', () => { let appTree: Tree; const defaultOptions: ElementsOptions = { name: 'ui-kit', - barrel: '@mycompany/web', + barrel: '@mycompany/xplat/web/features', components: 'menu,footer', }; @@ -31,33 +31,35 @@ describe('elements schematic', () => { // console.log(files.slice(85,files.length)); expect( files.indexOf( - '/xplat/web/features/ui/components/menu/menu.component.html' + '/libs/xplat/web/features/src/lib/ui/components/menu/menu.component.html' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/ui/components/menu/menu.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/ui/components/menu/menu.component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web/features/ui/components/footer/footer.component.html' + '/libs/xplat/web/features/src/lib/ui/components/footer/footer.component.html' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web/features/ui/components/footer/footer.component.ts' + '/libs/xplat/web/features/src/lib/ui/components/footer/footer.component.ts' ) ).toBeGreaterThanOrEqual(0); tree = await runSchematic('elements', options, tree); files = tree.files; - const elementModulePath = '/xplat/web/elements/ui-kit.module.ts'; + const elementModulePath = '/libs/xplat/web/elements/ui-kit.module.ts'; expect(files.indexOf(elementModulePath)).toBeGreaterThanOrEqual(0); const elementModule = getFileContent(tree, elementModulePath); // console.log(elementModule); expect( elementModule.indexOf( - `import { MenuComponent, FooterComponent } from '@mycompany/web';` + `import { MenuComponent, FooterComponent } from '@mycompany/xplat/web/features';` ) ).toBeGreaterThanOrEqual(0); expect( @@ -93,42 +95,42 @@ describe('elements schematic', () => { // console.log(files.slice(85,files.length)); expect( files.indexOf( - '/xplat/web/features/ui/components/menu/menu.component.html' + '/libs/xplat/web/features/src/lib/ui/components/menu/menu.component.html' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/ui/components/menu/menu.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/ui/components/menu/menu.component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web/features/ui/components/footer/footer.component.html' + '/libs/xplat/web/features/src/lib/ui/components/footer/footer.component.html' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web/features/ui/components/footer/footer.component.ts' + '/libs/xplat/web/features/src/lib/ui/components/footer/footer.component.ts' ) ).toBeGreaterThanOrEqual(0); tree = await runSchematic('elements', options, tree); files = tree.files; - let elementModulePath = '/xplat/web/elements/ui-kit.module.ts'; + let elementModulePath = '/libs/xplat/web/elements/ui-kit.module.ts'; expect(files.indexOf(elementModulePath)).toBeGreaterThanOrEqual(0); let elementModule = getFileContent(tree, elementModulePath); // console.log(elementModule); expect( - elementModule.indexOf( - `import { MenuComponent, FooterComponent } from '@mycompany/web';` - ) + elementModule.indexOf(`'@mycompany/xplat/web/features';`) ).toBeGreaterThanOrEqual(0); - let builderPath = '/xplat/web/elements/builder/elements.ts'; + let builderPath = '/libs/xplat/web/elements/builder/elements.ts'; expect(files.indexOf(builderPath)).toBeGreaterThanOrEqual(0); let builderModule = getFileContent(tree, builderPath); // console.log(builderModule); expect(builderModule.indexOf(`../ui-kit.module`)).toBeGreaterThanOrEqual(0); - let builderIndexPath = '/xplat/web/elements/builder/index.html'; + let builderIndexPath = '/libs/xplat/web/elements/builder/index.html'; expect(files.indexOf(builderPath)).toBeGreaterThanOrEqual(0); let builderIndex = getFileContent(tree, builderIndexPath); // console.log(builderIndex); @@ -150,39 +152,39 @@ describe('elements schematic', () => { // console.log(files.slice(85,files.length)); expect( files.indexOf( - '/xplat/web/features/ui/components/dropdown/dropdown.component.html' + '/libs/xplat/web/features/src/lib/ui/components/dropdown/dropdown.component.html' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web/features/ui/components/dropdown/dropdown.component.ts' + '/libs/xplat/web/features/src/lib/ui/components/dropdown/dropdown.component.ts' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web/features/ui/components/link/link.component.html' + '/libs/xplat/web/features/src/lib/ui/components/link/link.component.html' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/ui/components/link/link.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/ui/components/link/link.component.ts' + ) ).toBeGreaterThanOrEqual(0); const newElementOptions: ElementsOptions = { name: 'widgets', - barrel: '@mycompany/web', + barrel: '@mycompany/xplat/web/features', components: 'dropdown,link', }; tree = await runSchematic('elements', newElementOptions, tree); files = tree.files; - elementModulePath = '/xplat/web/elements/widgets.module.ts'; + elementModulePath = '/libs/xplat/web/elements/widgets.module.ts'; expect(files.indexOf(elementModulePath)).toBeGreaterThanOrEqual(0); elementModule = getFileContent(tree, elementModulePath); // console.log(elementModule); expect( - elementModule.indexOf( - `import { DropdownComponent, LinkComponent } from '@mycompany/web';` - ) + elementModule.indexOf(`'@mycompany/xplat/web/features';`) ).toBeGreaterThanOrEqual(0); builderModule = getFileContent(tree, builderPath); diff --git a/packages/angular/src/schematics/elements/index.ts b/packages/angular/src/schematics/elements/index.ts index 1e5412a2..1c9f76ec 100644 --- a/packages/angular/src/schematics/elements/index.ts +++ b/packages/angular/src/schematics/elements/index.ts @@ -112,7 +112,7 @@ export default function (options: ElementsOptions) { }, // add builder files or update them (tree: Tree, context: SchematicContext) => { - if (tree.exists('xplat/web/elements/builder/index.html')) { + if (tree.exists('libs/xplat/web/elements/builder/index.html')) { return updateBuilder(tree, options); } else { return addFiles(options, 'builder')(tree, context); @@ -141,7 +141,7 @@ export default function (options: ElementsOptions) { projects: { 'web-elements': { root: '', - sourceRoot: 'xplat/web/elements/builder', + sourceRoot: 'libs/xplat/web/elements/builder', projectType: 'application', prefix: 'web-elements', schematics: {}, @@ -150,11 +150,11 @@ export default function (options: ElementsOptions) { builder: 'ngx-build-plus:build', options: { outputPath: 'dist/ngelements', - index: 'xplat/web/elements/builder/index.html', - main: 'xplat/web/elements/builder/elements.ts', - polyfills: 'xplat/web/elements/builder/polyfills.ts', + index: 'libs/xplat/web/elements/builder/index.html', + main: 'libs/xplat/web/elements/builder/elements.ts', + polyfills: 'libs/xplat/web/elements/builder/polyfills.ts', tsConfig: - 'xplat/web/elements/builder/tsconfig.elements.json', + 'libs/xplat/web/elements/builder/tsconfig.elements.json', }, configurations: { production: { @@ -220,7 +220,7 @@ function addFiles(options: ElementsOptions, extra: string = ''): Rule { componentSymbols, htmlElements, }), - move(`xplat/${xplatFolderName}/elements`), + move(`libs/xplat/${xplatFolderName}/elements`), ]) ) ); @@ -263,10 +263,10 @@ function createCustomElementList(componentSymbols) { function updateBuilder(tree: Tree, options: ElementsOptions) { if (options.builderModule) { tree.overwrite( - `xplat/web/elements/builder/elements.ts`, + `libs/xplat/web/elements/builder/elements.ts`, builderElementsContent(options.builderModule) ); - const moduleFilePath = `xplat/web/elements/${options.builderModule}.module.ts`; + const moduleFilePath = `libs/xplat/web/elements/${options.builderModule}.module.ts`; if (tree.exists(moduleFilePath)) { const moduleFile = tree.get(moduleFilePath).content.toString(); const selectorParts = moduleFile.split('.define('); @@ -277,7 +277,7 @@ function updateBuilder(tree: Tree, options: ElementsOptions) { customElements.push(`<${selector}>`); } tree.overwrite( - `xplat/web/elements/builder/index.html`, + `libs/xplat/web/elements/builder/index.html`, buildIndexContent(customElements.join('\n')) ); } else { @@ -285,11 +285,11 @@ function updateBuilder(tree: Tree, options: ElementsOptions) { } } else { tree.overwrite( - `xplat/web/elements/builder/elements.ts`, + `libs/xplat/web/elements/builder/elements.ts`, builderElementsContent(options.name) ); tree.overwrite( - `xplat/web/elements/builder/index.html`, + `libs/xplat/web/elements/builder/index.html`, buildIndexContent(htmlElements) ); } diff --git a/packages/angular/src/schematics/feature/_component_files/base/__name__.base-component.ts__tmpl__ b/packages/angular/src/schematics/feature/_component_files/base/__name__.base-component.ts__tmpl__ index 7dc9596d..7e43c154 100644 --- a/packages/angular/src/schematics/feature/_component_files/base/__name__.base-component.ts__tmpl__ +++ b/packages/angular/src/schematics/feature/_component_files/base/__name__.base-component.ts__tmpl__ @@ -1,5 +1,5 @@ import { Directive } from '@angular/core'; -import { BaseComponent } from '@<%= npmScope %>/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Directive() export abstract class <%= utils.classify(name) %>BaseComponent extends BaseComponent { diff --git a/packages/angular/src/schematics/feature/index.spec.ts b/packages/angular/src/schematics/feature/index.spec.ts index 555daf20..29c497fa 100644 --- a/packages/angular/src/schematics/feature/index.spec.ts +++ b/packages/angular/src/schematics/feature/index.spec.ts @@ -26,7 +26,7 @@ describe('feature schematic', () => { // console.log('appTree:', appTree); let tree = await runSchematic('feature', options, appTree); const files = tree.files; - // console.log(files.slice(85,files.length)); + // console.log(files.slice(85, files.length)); expect( files.indexOf('/apps/nativescript-viewer/package.json') ).toBeGreaterThanOrEqual(0); @@ -35,49 +35,61 @@ describe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); // feature in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/features/foo/base/foo.base-component.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); // feature should NOT be in projects @@ -115,7 +127,8 @@ describe('feature schematic', () => { ).toBeGreaterThanOrEqual(-1); // file content - let modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -126,7 +139,7 @@ describe('feature schematic', () => { `import { UIModule } from \'../ui/ui.module\'` ); - modulePath = '/xplat/web/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/web/features/src/lib/foo/foo.module.ts'; featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -154,54 +167,64 @@ describe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript-angular/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript-angular/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web-angular/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web-angular/index.ts')).toBeGreaterThanOrEqual( - 0 - ); // feature in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/features/foo/base/foo.base-component.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript-angular/features/foo/index.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript-angular/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript-angular/features/src/lib/foo/index.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript-angular/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript-angular/features/src/lib/foo/foo.module.ts' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript-angular/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript-angular/features/src/lib/foo/components/foo/foo.component.html' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web-angular/features/foo/index.ts') + files.indexOf( + '/libs/xplat/nativescript-angular/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web-angular/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web-angular/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web-angular/features/foo/components/foo/foo.component.html' + '/libs/xplat/web-angular/features/src/lib/foo/foo.module.ts' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web-angular/features/foo/components/foo/foo.component.ts' + '/libs/xplat/web-angular/features/src/lib/foo/components/foo/foo.component.html' + ) + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/web-angular/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBeGreaterThanOrEqual(0); @@ -240,7 +263,8 @@ describe('feature schematic', () => { ).toBeGreaterThanOrEqual(-1); // file content - let modulePath = '/xplat/nativescript-angular/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript-angular/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -251,7 +275,7 @@ describe('feature schematic', () => { `import { UIModule } from \'../ui/ui.module\'` ); - modulePath = '/xplat/web-angular/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/web-angular/features/src/lib/foo/foo.module.ts'; featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -278,53 +302,66 @@ describe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); // feature - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/features/foo/base/foo.base-component.ts')).toBe( - -1 - ); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBe(-1); // file content - let modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -337,7 +374,7 @@ describe('feature schematic', () => { expect(featureModule.indexOf('FOO_COMPONENTS')).toBe(-1); expect(featureModule.indexOf('declarations')).toBe(-1); - modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -360,53 +397,63 @@ describe('feature schematic', () => { // console.log(files.slice(85,files.length)); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); // feature - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/features/foo/base/foo.base-component.ts')).toBe( - -1 - ); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/foo/index.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/nativescript/features/foo/foo.module.ts') ).toBeGreaterThanOrEqual(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/foo/components/foo/foo.component.html' ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); // file content - let modulePath = '/xplat/web/features/foo/foo.module.ts'; + let modulePath = '/libs/xplat/web/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -419,7 +466,8 @@ describe('feature schematic', () => { expect(featureModule.indexOf('FOO_COMPONENTS')).toBeGreaterThanOrEqual(0); expect(featureModule.indexOf('declarations')).toBeGreaterThanOrEqual(0); - let compPath = '/xplat/web/features/foo/components/foo/foo.component.ts'; + let compPath = + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts'; let compContent = getFileContent(tree, compPath); // console.log(compPath + ':'); // console.log(compContent); @@ -437,10 +485,16 @@ describe('feature schematic', () => { // console.log(files.slice(85,files.length)); // feature should not be in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBe(-1); - expect(files.indexOf('/libs/features/foo/foo.module.ts')).toBe(-1); - expect(files.indexOf('/xplat/nativescript/features/foo/index.ts')).toBe(-1); - expect(files.indexOf('/xplat/web/features/foo/index.ts')).toBe(-1); + expect(files.indexOf('/libs/xplat/features/src/lib/foo/index.ts')).toBe(-1); + expect( + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') + ).toBe(-1); + expect(files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts')).toBe( + -1 + ); // feature should be in projects only expect( @@ -477,37 +531,45 @@ describe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // NOT in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBe(-1); - expect(files.indexOf('/libs/features/foo/base/foo.base-component.ts')).toBe( - -1 - ); + expect(files.indexOf('/libs/xplat/features/src/lib/foo/index.ts')).toBe(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' + ) ).toBeGreaterThanOrEqual(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(-1); // file content @@ -558,13 +620,17 @@ describe('feature schematic', () => { // console.log(files.slice(85,files.length)); // feature should not be in shared code - expect(files.indexOf('/libs/features/foo-with-dash/index.ts')).toBe(-1); expect( - files.indexOf('/xplat/nativescript/features/foo-with-dash/index.ts') + files.indexOf('/libs/xplat/features/src/lib/foo-with-dash/index.ts') + ).toBe(-1); + expect( + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo-with-dash/index.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/web/features/src/lib/foo-with-dash/index.ts') ).toBe(-1); - expect(files.indexOf('/xplat/web/features/foo-with-dash/index.ts')).toBe( - -1 - ); // feature should be in projects only expect( diff --git a/packages/angular/src/schematics/feature/index.ts b/packages/angular/src/schematics/feature/index.ts index 3e32799d..2a437045 100644 --- a/packages/angular/src/schematics/feature/index.ts +++ b/packages/angular/src/schematics/feature/index.ts @@ -80,7 +80,7 @@ export default function (options: XplatFeatureHelpers.Schema) { ? noop()(tree, context) : XplatFeatureHelpers.adjustBarrelIndex( options, - 'libs/features/index.ts' + 'libs/xplat/features/src/lib/index.ts' )(tree, context), // external schematic handling ...externalChains, diff --git a/packages/angular/src/schematics/ngrx/_files/__name__.effects.spec.ts__tmpl__ b/packages/angular/src/schematics/ngrx/_files/__name__.effects.spec.ts__tmpl__ index 29257a1d..55af3887 100644 --- a/packages/angular/src/schematics/ngrx/_files/__name__.effects.spec.ts__tmpl__ +++ b/packages/angular/src/schematics/ngrx/_files/__name__.effects.spec.ts__tmpl__ @@ -1,7 +1,7 @@ import { TestBed } from '@angular/core/testing'; -import { StoreModule } from '@ngrx/store'; +import { provideMockStore } from '@ngrx/store/testing'; import { provideMockActions } from '@ngrx/effects/testing'; -export { hot } from 'jasmine-marbles'; +import { hot } from '@nrwl/angular/testing'; import { <%= utils.classify(name) %>Effects } from './<%= name %>.effects'; import { <%= utils.classify(name) %>Actions } from './<%= name %>.actions'; @@ -14,10 +14,10 @@ describe('<%= utils.classify(name) %>Effects', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [StoreModule.forRoot({})], providers: [ <%= utils.classify(name) %>Effects, - provideMockActions(() => actions$) + provideMockActions(() => actions$), + provideMockStore() ] }); diff --git a/packages/angular/src/schematics/ngrx/index.spec.ts b/packages/angular/src/schematics/ngrx/index.spec.ts index 0c0b1281..b9e7bad1 100644 --- a/packages/angular/src/schematics/ngrx/index.spec.ts +++ b/packages/angular/src/schematics/ngrx/index.spec.ts @@ -36,40 +36,43 @@ describe('ngrx schematic', () => { // console.log(files.slice(91,files.length)); expect( - files.indexOf('/libs/core/state/auth.actions.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.actions.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/core/state/auth.effects.spec.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.effects.spec.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/core/state/auth.effects.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.effects.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/core/state/auth.reducer.spec.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.reducer.spec.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/core/state/auth.reducer.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.reducer.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/core/state/auth.state.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.state.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/core/src/lib/state/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/core/state/index.ts')).toBeGreaterThanOrEqual( - 0 - ); // file content - let content = getFileContent(tree, '/libs/core/state/auth.actions.ts'); + let content = getFileContent( + tree, + '/libs/xplat/core/src/lib/state/auth.actions.ts' + ); // console.log(content); expect(content.indexOf(`AuthActions`)).toBeGreaterThanOrEqual(0); expect(content.indexOf(`[@testing/auth] init'`)).toBeGreaterThanOrEqual(0); - content = getFileContent(tree, '/libs/core/index.ts'); + content = getFileContent(tree, '/libs/xplat/core/src/lib/index.ts'); // console.log('/libs/core/index.ts:', content); expect(content.indexOf(`export * from './state';`)).toBeGreaterThanOrEqual( 0 ); - let modulePath = '/libs/core/core.module.ts'; + let modulePath = '/libs/xplat/core/src/lib/core.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(moduleContent); @@ -99,13 +102,19 @@ describe('ngrx schematic', () => { // console.log(files. slice(91,files.length)); // state should not be setup to share - expect(files.indexOf('/libs/core/state/auth.actions.ts')).toBe(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/state/auth.actions.ts') + files.indexOf('/libs/xplat/core/src/lib/state/auth.actions.ts') + ).toBe(-1); + expect( + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/state/auth.actions.ts' + ) + ).toBe(-1); + expect( + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/state/auth.actions.ts' + ) ).toBe(-1); - expect(files.indexOf('/xplat/web/features/foo/state/auth.actions.ts')).toBe( - -1 - ); // state should be project specific expect( diff --git a/packages/angular/src/schematics/pipe/index.spec.ts b/packages/angular/src/schematics/pipe/index.spec.ts index c2a66cf5..982e8cb6 100644 --- a/packages/angular/src/schematics/pipe/index.spec.ts +++ b/packages/angular/src/schematics/pipe/index.spec.ts @@ -36,19 +36,19 @@ describe('pipe schematic', () => { // component expect( - tree.exists('/libs/features/ui/pipes/truncate.pipe.ts') + tree.exists('/libs/xplat/features/src/lib/ui/pipes/truncate.pipe.ts') ).toBeTruthy(); // file content let content = getFileContent( tree, - '/libs/features/ui/pipes/truncate.pipe.ts' + '/libs/xplat/features/src/lib/ui/pipes/truncate.pipe.ts' ); // console.log(content); expect(content.indexOf(`@Pipe({`)).toBeGreaterThanOrEqual(0); expect(content.indexOf(`name: 'truncate'`)).toBeGreaterThanOrEqual(0); - let modulePath = '/libs/features/ui/ui.module.ts'; + let modulePath = '/libs/xplat/features/src/lib/ui/ui.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); @@ -62,16 +62,19 @@ describe('pipe schematic', () => { // component expect( - tree.exists('/libs/features/foo/pipes/truncate.pipe.ts') + tree.exists('/libs/xplat/features/src/lib/foo/pipes/truncate.pipe.ts') ).toBeTruthy(); // file content - content = getFileContent(tree, '/libs/features/foo/pipes/truncate.pipe.ts'); + content = getFileContent( + tree, + '/libs/xplat/features/src/lib/foo/pipes/truncate.pipe.ts' + ); // console.log(content); expect(content.indexOf(`@Pipe({`)).toBeGreaterThanOrEqual(0); expect(content.indexOf(`name: 'truncate'`)).toBeGreaterThanOrEqual(0); - modulePath = '/libs/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/features/src/lib/foo/foo.module.ts'; moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); @@ -99,13 +102,15 @@ describe('pipe schematic', () => { // component expect( - tree.exists('/libs/features/ui/pipes/test-with-dashes.pipe.ts') + tree.exists( + '/libs/xplat/features/src/lib/ui/pipes/test-with-dashes.pipe.ts' + ) ).toBeTruthy(); // file content let content = getFileContent( tree, - '/libs/features/ui/pipes/test-with-dashes.pipe.ts' + '/libs/xplat/features/src/lib/ui/pipes/test-with-dashes.pipe.ts' ); // console.log(content); expect(content.indexOf(`@Pipe({`)).toBeGreaterThanOrEqual(0); @@ -118,7 +123,7 @@ describe('pipe schematic', () => { const options: GenerateOptions = { ...defaultOptions }; options.feature = 'register'; await expect(runSchematic('pipe', options, appTree)).rejects.toThrow( - `libs/features/register/register.module.ts does not exist. Create the feature module first. For example: nx g @nstudio/angular:feature register` + `libs/xplat/features/src/lib/register/register.module.ts does not exist. Create the feature module first. For example: nx g @nstudio/angular:feature register` ); }); @@ -143,12 +148,16 @@ describe('pipe schematic', () => { // console.log(files. slice(91,files.length)); // pipe should not be setup to share - expect(tree.exists('/libs/features/ui/pipes/truncate.pipe.ts')).toBeFalsy(); expect( - tree.exists('/xplat/nativescript/features/foo/pipes/truncate.pipe.ts') + tree.exists('/libs/xplat/features/src/lib/ui/pipes/truncate.pipe.ts') + ).toBeFalsy(); + expect( + tree.exists( + '/libs/xplat/nativescript/features/src/lib/foo/pipes/truncate.pipe.ts' + ) ).toBeFalsy(); expect( - tree.exists('/xplat/web/features/foo/pipes/truncate.pipe.ts') + tree.exists('/libs/xplat/web/features/src/lib/foo/pipes/truncate.pipe.ts') ).toBeFalsy(); // pipe should be project specific @@ -201,7 +210,7 @@ describe('pipe schematic', () => { }; await expect(runSchematic('pipe', options, appTree)).rejects.toThrow( - `xplat/nativescript/features/register/register.module.ts does not exist. Create the feature module first. For example: nx g @nstudio/angular:feature register --platforms=nativescript --onlyModule` + `libs/xplat/nativescript/features/src/lib/register/register.module.ts does not exist. Create the feature module first. For example: nx g @nstudio/angular:feature register --platforms=nativescript --onlyModule` ); }); diff --git a/packages/angular/src/schematics/service/index.spec.ts b/packages/angular/src/schematics/service/index.spec.ts index e273b4a9..75680598 100644 --- a/packages/angular/src/schematics/service/index.spec.ts +++ b/packages/angular/src/schematics/service/index.spec.ts @@ -32,19 +32,27 @@ describe('service schematic', () => { tree = await runSchematic('service', options, tree); // console.log(files.slice(91,files.length)); - expect(tree.exists('/libs/core/services/auth.service.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/core/src/lib/services/auth.service.ts') + ).toBeTruthy(); // file content - let content = getFileContent(tree, '/libs/core/services/auth.service.ts'); + let content = getFileContent( + tree, + '/libs/xplat/core/src/lib/services/auth.service.ts' + ); // console.log(content); expect(content.indexOf(`@Injectable({`)).toBeGreaterThanOrEqual(0); expect(content.indexOf(`AuthService`)).toBeGreaterThanOrEqual(0); - content = getFileContent(tree, '/libs/core/services/index.ts'); + content = getFileContent( + tree, + '/libs/xplat/core/src/lib/services/index.ts' + ); // console.log(content); expect(content.indexOf(`./auth.service`)).toBeGreaterThanOrEqual(0); - let modulePath = '/libs/core/core.module.ts'; + let modulePath = '/libs/xplat/core/src/lib/core.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(moduleContent); @@ -72,14 +80,18 @@ describe('service schematic', () => { // console.log(files. slice(91,files.length)); // service should not be setup to share - expect(files.indexOf('/libs/features/foo/services/auth.service.ts')).toBe( - -1 - ); expect( - files.indexOf('/xplat/nativescript/features/foo/services/auth.service.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/services/auth.service.ts') + ).toBe(-1); + expect( + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/services/auth.service.ts' + ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/services/auth.service.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/services/auth.service.ts' + ) ).toBe(-1); // service should be project specific @@ -137,17 +149,21 @@ describe('service schematic', () => { // console.log(files.slice(91,files.length)); expect( - files.indexOf('/xplat/nativescript/features/foo/services/auth.service.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/services/auth.service.ts' + ) ).toBeGreaterThanOrEqual(0); // should NOT add for other platform expect( - files.indexOf('/xplat/web/features/foo/services/auth.service.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/services/auth.service.ts' + ) ).toBe(-1); // file content let content = getFileContent( tree, - '/xplat/nativescript/features/foo/services/auth.service.ts' + '/libs/xplat/nativescript/features/src/lib/foo/services/auth.service.ts' ); // console.log(content); expect(content.indexOf(`@Injectable({`)).toBeGreaterThanOrEqual(0); @@ -155,12 +171,13 @@ describe('service schematic', () => { content = getFileContent( tree, - '/xplat/nativescript/features/foo/services/index.ts' + '/libs/xplat/nativescript/features/src/lib/foo/services/index.ts' ); // console.log(content); expect(content.indexOf(`./auth.service`)).toBeGreaterThanOrEqual(0); - let modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(moduleContent); @@ -178,15 +195,19 @@ describe('service schematic', () => { // console.log(files.slice(91,files.length)); expect( - files.indexOf('/xplat/nativescript/core/services/auth.service.ts') + files.indexOf( + '/libs/xplat/nativescript/core/src/lib/services/auth.service.ts' + ) ).toBeGreaterThanOrEqual(0); // should NOT add for other platform - expect(files.indexOf('/xplat/web/core/services/auth.service.ts')).toBe(-1); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/services/auth.service.ts') + ).toBe(-1); // file content let content = getFileContent( tree, - '/xplat/nativescript/core/services/auth.service.ts' + '/libs/xplat/nativescript/core/src/lib/services/auth.service.ts' ); // console.log(content); expect(content.indexOf(`@Injectable({`)).toBeGreaterThanOrEqual(0); @@ -194,12 +215,12 @@ describe('service schematic', () => { content = getFileContent( tree, - '/xplat/nativescript/core/services/index.ts' + '/libs/xplat/nativescript/core/src/lib/services/index.ts' ); // console.log(content); expect(content.indexOf(`./auth.service`)).toBeGreaterThanOrEqual(0); - let modulePath = '/xplat/nativescript/core/core.module.ts'; + let modulePath = '/libs/xplat/nativescript/core/src/lib/core.module.ts'; let moduleContent = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(moduleContent); diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/base/base-component.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/base/base-component.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/base/base-component.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/base/base-component.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/base/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/base/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/base/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/base/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/core.module.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ similarity index 95% rename from packages/angular/src/schematics/xplat/_lib_files/core/core.module.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ index 5d0b7747..9b272180 100644 --- a/packages/angular/src/schematics/xplat/_lib_files/core/core.module.ts__tmpl__ +++ b/packages/angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ @@ -9,7 +9,7 @@ import { APP_BASE_HREF, CommonModule } from '@angular/common'; // libs import { TranslateService } from '@ngx-translate/core'; -import { throwIfAlreadyLoaded } from '@<%= npmScope %>/utils'; +import { throwIfAlreadyLoaded } from '@<%= npmScope %>/xplat/utils'; // app import { environment } from './environments/environment'; diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.base.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.base.ts__tmpl__ new file mode 100644 index 00000000..81ece2ec --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.base.ts__tmpl__ @@ -0,0 +1,8 @@ +import { IEnvironment } from '../environment.interface'; + +/** + * Reduce the most commonly used environment values here + */ +export const environmentBase: IEnvironment = { + production: false +}; \ No newline at end of file diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.dev.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.dev.ts__tmpl__ new file mode 100644 index 00000000..8d3c83b6 --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.dev.ts__tmpl__ @@ -0,0 +1,7 @@ +import { IEnvironment } from '@<%= npmScope %>/xplat/core'; +import { deepMerge } from '@<%= npmScope %>/xplat/utils'; +import { environmentBase } from './environment.base'; + +export const environmentDev = deepMerge(environmentBase, { + // customizations here... +}); diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.prod.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.prod.ts__tmpl__ new file mode 100644 index 00000000..941dc470 --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/base/environment.prod.ts__tmpl__ @@ -0,0 +1,8 @@ +import { IEnvironment } from '@<%= npmScope %>/xplat/core'; +import { deepMerge } from '@<%= npmScope %>/xplat/utils'; +import { environmentBase } from './environment.base'; + +export const environmentProd = deepMerge(environmentBase, { + production: true, + // customizations here... +}); diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/base/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/base/index.ts__tmpl__ new file mode 100644 index 00000000..5ac55070 --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/base/index.ts__tmpl__ @@ -0,0 +1,3 @@ +export * from './environment.base'; +export * from './environment.dev'; +export * from './environment.prod'; \ No newline at end of file diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/environment.interface.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/environment.interface.ts__tmpl__ new file mode 100644 index 00000000..baf272b0 --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/environment.interface.ts__tmpl__ @@ -0,0 +1,6 @@ +/** + * Workspace shared environment properties + */ +export interface IEnvironment { + production?: boolean; +} \ No newline at end of file diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/environment.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/environment.ts__tmpl__ new file mode 100644 index 00000000..beeb2e28 --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/environment.ts__tmpl__ @@ -0,0 +1,10 @@ +import { IEnvironment } from './environment.interface'; + +/** + * Workspace shared environment for ease of use across all shared code and apps + * You can ignore this file - values here only used for unit testing + * Real Values are filled in by each runtime/platform/app + */ +export const environment: IEnvironment = { + production: false, +}; \ No newline at end of file diff --git a/packages/angular/src/schematics/xplat/_files_core/environments/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/environments/index.ts__tmpl__ new file mode 100644 index 00000000..c83de997 --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_core/environments/index.ts__tmpl__ @@ -0,0 +1,2 @@ +export * from './environment.interface'; +export * from './environment'; \ No newline at end of file diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/index.ts__tmpl__ similarity index 73% rename from packages/angular/src/schematics/xplat/_lib_files/core/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/index.ts__tmpl__ index b7fdba33..8615d4f5 100644 --- a/packages/angular/src/schematics/xplat/_lib_files/core/index.ts__tmpl__ +++ b/packages/angular/src/schematics/xplat/_files_core/index.ts__tmpl__ @@ -1,5 +1,5 @@ export * from './base'; -export * from './environments/environment'; +export * from './environments'; export * from './models'; export * from './services'; export { CoreModule } from './core.module'; diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/models/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/models/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/models/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/models/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/models/xplat-window.interface.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/models/xplat-window.interface.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/models/xplat-window.interface.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/models/xplat-window.interface.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/services/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/services/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/services/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/services/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/services/log.service.spec.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/services/log.service.spec.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/services/log.service.spec.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/services/log.service.spec.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/services/log.service.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/services/log.service.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/services/log.service.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/services/log.service.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/services/tokens.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/services/tokens.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/core/services/tokens.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/services/tokens.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/services/window.service.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_core/services/window.service.ts__tmpl__ similarity index 96% rename from packages/angular/src/schematics/xplat/_lib_files/core/services/window.service.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_core/services/window.service.ts__tmpl__ index 3bade879..5d823560 100644 --- a/packages/angular/src/schematics/xplat/_lib_files/core/services/window.service.ts__tmpl__ +++ b/packages/angular/src/schematics/xplat/_files_core/services/window.service.ts__tmpl__ @@ -2,7 +2,7 @@ import { Injectable, Inject, ViewContainerRef } from '@angular/core'; // app -import { isObject, isNativeScript } from '@<%= npmScope %>/utils'; +import { isObject, isNativeScript } from '@<%= npmScope %>/xplat/utils'; import { XPlatWindow } from '../models'; import { PlatformWindowToken } from './tokens'; diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/features/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/ui/base/header.base-component.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/ui/base/header.base-component.ts__tmpl__ similarity index 87% rename from packages/angular/src/schematics/xplat/_lib_files/features/ui/base/header.base-component.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/ui/base/header.base-component.ts__tmpl__ index cdc7819b..38a3778e 100644 --- a/packages/angular/src/schematics/xplat/_lib_files/features/ui/base/header.base-component.ts__tmpl__ +++ b/packages/angular/src/schematics/xplat/_files_features/ui/base/header.base-component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Directive, Input, Output, EventEmitter } from '@angular/core'; // libs -import { BaseComponent } from '@<%= npmScope %>/core/base'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Directive() export abstract class HeaderBaseComponent extends BaseComponent { diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/ui/base/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/ui/base/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/features/ui/base/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/ui/base/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/ui/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/features/ui/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/ui/pipes/date-order.pipe.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/ui/pipes/date-order.pipe.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/features/ui/pipes/date-order.pipe.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/ui/pipes/date-order.pipe.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/ui/pipes/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/ui/pipes/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/features/ui/pipes/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/ui/pipes/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/features/ui/ui.module.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/features/ui/ui.module.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_scss_files/_index.scss b/packages/angular/src/schematics/xplat/_files_scss/_index.scss similarity index 100% rename from packages/angular/src/schematics/xplat/_scss_files/_index.scss rename to packages/angular/src/schematics/xplat/_files_scss/_index.scss diff --git a/packages/angular/src/schematics/xplat/_scss_files/_variables.scss b/packages/angular/src/schematics/xplat/_files_scss/_variables.scss similarity index 100% rename from packages/angular/src/schematics/xplat/_scss_files/_variables.scss rename to packages/angular/src/schematics/xplat/_files_scss/_variables.scss diff --git a/packages/angular/src/schematics/xplat/_files_scss/package.json b/packages/angular/src/schematics/xplat/_files_scss/package.json new file mode 100644 index 00000000..55aab6dc --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-scss", + "version": "1.0.0" +} diff --git a/packages/angular/src/schematics/xplat/_lib_files/utils/angular.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_utils/angular.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/utils/angular.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_utils/angular.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_lib_files/utils/index.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_utils/index.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/utils/index.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_utils/index.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_files_utils/objects.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_utils/objects.ts__tmpl__ new file mode 100644 index 00000000..d9dd183b --- /dev/null +++ b/packages/angular/src/schematics/xplat/_files_utils/objects.ts__tmpl__ @@ -0,0 +1,32 @@ +export const isString = function(arg: any) { + return typeof arg === 'string'; +}; + +export const isObject = function(arg: any) { + return arg && typeof arg === 'object'; +}; + +export function deepMerge(target: T1, source: T2): T1 & T2 { + const result: any = {}; + Object.entries(target).forEach(([key, value]) => { + if (key in source) { + // potential overwrite + if (typeof value !== typeof source[key]) { + // value type mismatch, always take source values. + result[key] = source[key]; + } else if (isObject(value)) { + result[key] = deepMerge(value, source[key]); + } else { + result[key] = source[key]; + } + } else { + result[key] = value; + } + }); + Object.entries(source) + .filter(([key]) => !(key in target)) + .forEach(([key, value]) => { + result[key] = value; + }); + return result; +} diff --git a/packages/angular/src/schematics/xplat/_lib_files/utils/platform.ts__tmpl__ b/packages/angular/src/schematics/xplat/_files_utils/platform.ts__tmpl__ similarity index 100% rename from packages/angular/src/schematics/xplat/_lib_files/utils/platform.ts__tmpl__ rename to packages/angular/src/schematics/xplat/_files_utils/platform.ts__tmpl__ diff --git a/packages/angular/src/schematics/xplat/_jest_files/jest.config.js b/packages/angular/src/schematics/xplat/_jest_files/jest.config.js deleted file mode 100644 index 9090b491..00000000 --- a/packages/angular/src/schematics/xplat/_jest_files/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'], - transform: { - '^.+\\.(ts|js|html)$': 'ts-jest', - }, - resolver: '@nrwl/jest/plugins/resolver', - moduleFileExtensions: ['ts', 'js', 'html'], - coverageReporters: ['html'], -}; diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.prod.ts__tmpl__ b/packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.prod.ts__tmpl__ deleted file mode 100644 index 3612073b..00000000 --- a/packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.prod.ts__tmpl__ +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.ts__tmpl__ b/packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.ts__tmpl__ deleted file mode 100644 index ffe8aed7..00000000 --- a/packages/angular/src/schematics/xplat/_lib_files/core/environments/environment.ts__tmpl__ +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: false -}; diff --git a/packages/angular/src/schematics/xplat/_lib_files/utils/objects.ts__tmpl__ b/packages/angular/src/schematics/xplat/_lib_files/utils/objects.ts__tmpl__ deleted file mode 100644 index 982821b8..00000000 --- a/packages/angular/src/schematics/xplat/_lib_files/utils/objects.ts__tmpl__ +++ /dev/null @@ -1,7 +0,0 @@ -export const isString = function(arg: any) { - return typeof arg === 'string'; -}; - -export const isObject = function(arg: any) { - return arg && typeof arg === 'object'; -}; diff --git a/packages/angular/src/schematics/xplat/_scss_files/package.json b/packages/angular/src/schematics/xplat/_scss_files/package.json deleted file mode 100644 index ed711084..00000000 --- a/packages/angular/src/schematics/xplat/_scss_files/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/scss", - "version": "1.0.0" -} diff --git a/packages/angular/src/schematics/xplat/_testing_files/jest.libs.config.js b/packages/angular/src/schematics/xplat/_testing_files/jest.libs.config.js deleted file mode 100644 index 8fb03342..00000000 --- a/packages/angular/src/schematics/xplat/_testing_files/jest.libs.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - name: 'libs', - preset: '../jest.config.js', - rootDir: '../libs', - coverageDirectory: '../coverage/libs', - snapshotSerializers: [ - 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', - 'jest-preset-angular/build/AngularSnapshotSerializer.js', - 'jest-preset-angular/build/HTMLCommentSerializer.js', - ], -}; diff --git a/packages/angular/src/schematics/xplat/_testing_files/jest.xplat.config.js b/packages/angular/src/schematics/xplat/_testing_files/jest.xplat.config.js deleted file mode 100644 index cbfd4d49..00000000 --- a/packages/angular/src/schematics/xplat/_testing_files/jest.xplat.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - name: 'xplat', - preset: '../jest.config.js', - rootDir: '../xplat', - coverageDirectory: '../coverage/xplat', - snapshotSerializers: [ - 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', - 'jest-preset-angular/build/AngularSnapshotSerializer.js', - 'jest-preset-angular/build/HTMLCommentSerializer.js', - ], -}; diff --git a/packages/angular/src/schematics/xplat/_testing_files/test-setup.ts__tmpl__ b/packages/angular/src/schematics/xplat/_testing_files/test-setup.ts__tmpl__ deleted file mode 100644 index fa3402d3..00000000 --- a/packages/angular/src/schematics/xplat/_testing_files/test-setup.ts__tmpl__ +++ /dev/null @@ -1 +0,0 @@ -import 'jest-preset-angular'; \ No newline at end of file diff --git a/packages/angular/src/schematics/xplat/_testing_files/tsconfig.json b/packages/angular/src/schematics/xplat/_testing_files/tsconfig.json deleted file mode 100644 index 9a8a899f..00000000 --- a/packages/angular/src/schematics/xplat/_testing_files/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "types": ["node", "jest"] - }, - "include": ["**/*.ts"] -} diff --git a/packages/angular/src/schematics/xplat/_testing_files/tsconfig.libs.spec.json b/packages/angular/src/schematics/xplat/_testing_files/tsconfig.libs.spec.json deleted file mode 100644 index e3298047..00000000 --- a/packages/angular/src/schematics/xplat/_testing_files/tsconfig.libs.spec.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../dist/out-tsc/libs", - "module": "commonjs", - "types": ["jest", "node"] - }, - "files": ["test-setup.ts"], - "include": ["../libs/**/*.spec.ts", "../libs/**/*.d.ts"] -} diff --git a/packages/angular/src/schematics/xplat/_testing_files/tsconfig.xplat.spec.json b/packages/angular/src/schematics/xplat/_testing_files/tsconfig.xplat.spec.json deleted file mode 100644 index cf89fbd9..00000000 --- a/packages/angular/src/schematics/xplat/_testing_files/tsconfig.xplat.spec.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "./tsconfig.libs.spec.json", - "compilerOptions": { - "outDir": "../dist/out-tsc/xplat" - }, - "files": ["test-setup.ts"], - "include": [ - "../libs/**/*.spec.ts", - "../libs/**/*.d.ts", - "../xplat/web/**/*.spec.ts", - "../xplat/web/**/*.d.ts" - ] -} diff --git a/packages/angular/src/schematics/xplat/index.spec.ts b/packages/angular/src/schematics/xplat/index.spec.ts index 80f76aa4..5786d04c 100644 --- a/packages/angular/src/schematics/xplat/index.spec.ts +++ b/packages/angular/src/schematics/xplat/index.spec.ts @@ -24,34 +24,28 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); const files = tree.files; // console.log(files); - expect(files.indexOf('/libs/core/index.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/scss/package.json')).toBeGreaterThanOrEqual(0); - expect( - files.indexOf('/testing/jest.libs.config.js') + files.indexOf('/libs/xplat/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/testing/jest.xplat.config.js') - ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/testing/test-setup.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/testing/tsconfig.json')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/karma.conf.js')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/test.libs.ts')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/test.xplat.ts')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/tsconfig.libs.json')).toBeGreaterThanOrEqual(0); - expect( - files.indexOf('/testing/tsconfig.libs.spec.json') + files.indexOf('/libs/xplat/features/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/tsconfig.xplat.json')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/testing/tsconfig.xplat.spec.json') + files.indexOf('/libs/xplat/scss/src/package.json') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); + let filePath = '/tsconfig.base.json'; + let fileContent = jsonParse(getFileContent(tree, filePath)); + // console.log(fileContent); + expect( + fileContent.compilerOptions.paths['@testing/xplat/environments'] + ).toBeTruthy(); }); it('should create default xplat support for web,nativescript', async () => { @@ -60,13 +54,19 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); const files = tree.files; - expect(files.indexOf('/xplat/web/features/items/items.module.ts')).toBe(-1); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/items/items.module.ts') + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/items/items.module.ts') + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/items/items.module.ts' + ) ).toBe(-1); }); @@ -99,16 +99,20 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); const files = tree.files; - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/electron/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/electron/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(-1); const packagePath = '/package.json'; const packageFile = jsonParse(getFileContent(tree, packagePath)); - const hasScss = packageFile.dependencies[`@testing/scss`]; + const hasScss = packageFile.dependencies[`@testing/xplat-scss`]; expect(hasScss).not.toBeUndefined(); - // const hasWebScss = packageFile.dependencies[`@testing/web-scss`]; + // const hasWebScss = packageFile.dependencies[`@testing/xplat-web-scss`]; // expect(hasWebScss).not.toBeUndefined(); // should not include these root packages const hasNativeScript = packageFile.dependencies[`nativescript-angular`]; @@ -124,9 +128,11 @@ describe('xplat schematic', () => { let tree = await runSchematic('xplat', options, appTree); // let files = tree.files; - expect(tree.exists('/xplat/web/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/ionic/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeFalsy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/ionic/core/src/lib/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeFalsy(); options.platforms = 'nativescript'; // let packageFile = jsonParse(getFileContent(tree, 'package.json')); @@ -137,9 +143,11 @@ describe('xplat schematic', () => { // files = tree.files; // console.log('files:', files); // should be unchanged - expect(tree.exists('/xplat/web/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/ionic/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/ionic/core/src/lib/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeTruthy(); }); it('should NOT create xplat unless platforms are specified', async () => { diff --git a/packages/angular/src/schematics/xplat/index.ts b/packages/angular/src/schematics/xplat/index.ts index 0e16fba8..23dfe46d 100644 --- a/packages/angular/src/schematics/xplat/index.ts +++ b/packages/angular/src/schematics/xplat/index.ts @@ -11,8 +11,12 @@ import { SchematicContext, } from '@angular-devkit/schematics'; import { formatFiles } from '@nrwl/workspace'; -import { XplatHelpers, getDefaultTemplateOptions } from '@nstudio/xplat'; -import { prerun, addInstallTask } from '@nstudio/xplat-utils'; +import { + XplatHelpers, + getDefaultTemplateOptions, + updateTsConfig, +} from '@nstudio/xplat'; +import { prerun, addInstallTask, getNpmScope } from '@nstudio/xplat-utils'; import { XplatAngularHelpers } from '../../utils/xplat'; import { FocusHelpers } from '@nstudio/focus'; @@ -22,19 +26,41 @@ export default function (options: XplatHelpers.Schema) { return chain([ prerun(options, true), - // update gitignore to support xplat - XplatHelpers.updateGitIgnore(), // libs - XplatAngularHelpers.addLibFiles(options), - XplatAngularHelpers.addScssFiles(options), + XplatHelpers.generateLib(options, 'core', 'xplat', 'node'), + XplatHelpers.cleanupLib(options, 'core', 'xplat'), + XplatAngularHelpers.addLibFiles(options, './', 'core'), + XplatHelpers.generateLib(options, 'features', 'xplat', 'node'), + XplatHelpers.cleanupLib(options, 'features', 'xplat'), + XplatAngularHelpers.addLibFiles(options, './', 'features'), + XplatHelpers.generateLib(options, 'scss', 'xplat', 'jsdom'), + XplatHelpers.cleanupLib(options, 'scss', 'xplat'), + XplatAngularHelpers.addLibFiles(options, './', 'scss'), + XplatHelpers.generateLib(options, 'utils', 'xplat', 'node'), + XplatHelpers.cleanupLib(options, 'utils', 'xplat'), + XplatAngularHelpers.addLibFiles(options, './', 'utils'), // cross platform support ...externalChains, - // testing - XplatAngularHelpers.addTestingFiles(options, '_testing'), - XplatAngularHelpers.addJestConfig(options, '_jest'), - XplatAngularHelpers.updateTestingConfig(options), - XplatAngularHelpers.updateLint(options), XplatAngularHelpers.updateRootDeps(options), + // adjust root tsconfig + (tree: Tree, context: SchematicContext) => { + return updateTsConfig(tree, (tsConfig: any) => { + if (tsConfig) { + if (!tsConfig.compilerOptions) { + tsConfig.compilerOptions = {}; + } + if ( + !tsConfig.compilerOptions.paths[ + `@${getNpmScope()}/xplat/environments` + ] + ) { + tsConfig.compilerOptions.paths[ + `@${getNpmScope()}/xplat/environments` + ] = [`libs/xplat/core/src/lib/environments/base/index.ts`]; + } + } + }); + }, formatFiles({ skipFormat: options.skipFormat }), // clean shared code script - don't believe need this anymore // (tree: Tree) => { diff --git a/packages/angular/src/utils/generator.ts b/packages/angular/src/utils/generator.ts index 5dbaec34..6fb13b42 100644 --- a/packages/angular/src/utils/generator.ts +++ b/packages/angular/src/utils/generator.ts @@ -218,7 +218,7 @@ export function generate(type: IGenerateType, options) { xplatFolderName, type, options, - `xplat/${xplatFolderName}`, + `libs/xplat/${xplatFolderName}`, tree ); }); @@ -228,7 +228,7 @@ export function generate(type: IGenerateType, options) { platform, 'angular' ); - return adjustBarrel(type, options, `xplat/${xplatFolderName}`); + return adjustBarrel(type, options, `libs/xplat/${xplatFolderName}`); }); // add index barrel if needed externalChains.push((tree: Tree, context: SchematicContext) => { @@ -241,7 +241,7 @@ export function generate(type: IGenerateType, options) { xplatFolderName, type, options, - `xplat/${xplatFolderName}`, + `libs/xplat/${xplatFolderName}`, tree, '_index' )(tree, context) @@ -253,7 +253,7 @@ export function generate(type: IGenerateType, options) { platform, 'angular' ); - return adjustModule(type, options, `xplat/${xplatFolderName}`); + return adjustModule(type, options, `libs/xplat/${xplatFolderName}`); }); } else { throw new Error(unsupportedPlatformError(platform)); @@ -267,22 +267,29 @@ export function generate(type: IGenerateType, options) { // for entire workspace usage // no projects and no specific platforms specified !options.projects && platforms.length === 0 - ? addToFeature('', type, options, 'libs', tree)(tree, context) + ? addToFeature('', type, options, 'libs/xplat', tree)(tree, context) : noop()(tree, context), // adjust libs barrel (tree: Tree, context: SchematicContext) => !options.projects && platforms.length === 0 - ? adjustBarrel(type, options, 'libs')(tree, context) + ? adjustBarrel(type, options, 'libs/xplat')(tree, context) : noop()(tree, context), // add index barrel if needed (tree: Tree, context: SchematicContext) => options.needsIndex - ? addToFeature('', type, options, 'libs', tree, '_index')(tree, context) + ? addToFeature( + '', + type, + options, + 'libs/xplat', + tree, + '_index' + )(tree, context) : noop()(tree, context), // adjust feature module metadata if needed (tree: Tree, context: SchematicContext) => !options.projects && platforms.length === 0 - ? adjustModule(type, options, 'libs')(tree, context) + ? adjustModule(type, options, 'libs/xplat')(tree, context) : noop()(tree, context), // project handling @@ -328,21 +335,22 @@ export function addToFeature( options.needsIndex = false; // reset + const srcSubFolderPath = options.projects ? '' : '/src/lib'; let featurePath: string; if (shouldTargetCoreBarrel(type, featureName)) { // services and/or state should never be generated in shared or ui features // therefore place in core (since they are service level) featureName = 'core'; - featurePath = `${prefixPath}/${featureName}`; + featurePath = `${prefixPath}/${featureName}${srcSubFolderPath}`; } else { - featurePath = `${prefixPath}/features/${featureName}`; + featurePath = `${prefixPath}/features${srcSubFolderPath}/${featureName}`; } const featureModulePath = `${featurePath}/${featureName}.module.ts`; let moveTo: string; if (extra === '_base' || extra === '_base_index') { // always in libs - moveTo = `libs/features/${featureName}/base`; + moveTo = `libs/xplat/features/src/lib/${featureName}/base`; } else { moveTo = `${featurePath}/${type}${type === 'state' ? '' : 's'}`; if (!tree.exists(featureModulePath)) { @@ -351,7 +359,7 @@ export function addToFeature( // parse platform from prefix const parts = prefixPath.split('/'); if (parts.length > 1) { - optionName = parts[1]; + optionName = parts[2]; } } throw new Error( @@ -415,18 +423,19 @@ export function adjustBarrel( prefix: string ) { let featureName: string = getFeatureName(options); + const srcSubFolderPath = options.projects ? '' : '/src/lib'; let barrelIndexPath: string; if (shouldTargetCoreBarrel(type, featureName)) { if (type === 'state') { - barrelIndexPath = `${prefix}/core/index.ts`; + barrelIndexPath = `${prefix}/core${srcSubFolderPath}/index.ts`; } else { - barrelIndexPath = `${prefix}/core/${type}s/index.ts`; + barrelIndexPath = `${prefix}/core${srcSubFolderPath}/${type}s/index.ts`; } } else { if (type === 'state') { - barrelIndexPath = `${prefix}/features/${featureName}/index.ts`; + barrelIndexPath = `${prefix}/features${srcSubFolderPath}/${featureName}/index.ts`; } else { - barrelIndexPath = `${prefix}/features/${featureName}/${type}s/index.ts`; + barrelIndexPath = `${prefix}/features${srcSubFolderPath}/${featureName}/${type}s/index.ts`; } } @@ -460,7 +469,7 @@ export function adjustBarrelIndex( const changes = []; const name = options.name.toLowerCase(); - if (!isBase) { + if (!isBase && type !== 'service') { // add to barrel collection if (importIfSubFolder && options.subFolder) { // import collection from subfolder @@ -573,9 +582,9 @@ export function adjustModule( let featurePath: string; if (shouldTargetCoreBarrel(type, featureName)) { featureName = 'core'; - featurePath = `${prefixPath}/${featureName}`; + featurePath = `${prefixPath}/${featureName}/src/lib`; } else { - featurePath = `${prefixPath}/features/${featureName}`; + featurePath = `${prefixPath}/features/src/lib/${featureName}`; } const featureModulePath = `${featurePath}/${featureName}.module.ts`; @@ -690,7 +699,7 @@ export function adjustFeatureModuleForState( ); // console.log('moduleSource:', moduleSource); - const isInLibs = modulePath.indexOf('libs') === 0; + const isInLibs = modulePath.indexOf('libs/xplat/core') === 0; const name = options.name.toLowerCase(); const changes = []; if (moduleSource.indexOf('StoreModule') === -1) { @@ -740,7 +749,7 @@ export function adjustFeatureModuleForState( if (moduleSource.indexOf('environments/environment') === -1) { const envFrom = isInLibs ? './environments/environment' - : `@${getNpmScope()}/core`; + : `@${getNpmScope()}/xplat/core`; changes.push( ...addGlobal( moduleSourceFile, @@ -828,7 +837,6 @@ export function adjustRouting( const changes = []; - const loadPrefix = platform === 'nativescript' ? '~' : '.'; // add component to route config changes.push( ...addToCollection( diff --git a/packages/angular/src/utils/versions.ts b/packages/angular/src/utils/versions.ts index 34c52170..16cecae2 100644 --- a/packages/angular/src/utils/versions.ts +++ b/packages/angular/src/utils/versions.ts @@ -1,7 +1,7 @@ export const xplatVersion = '*'; -export const nxVersion = '^10.3.0'; -export const angularVersion = '~10.1.0'; -export const angularDevkitVersion = '~0.1001.0'; +export const nxVersion = '^11.0.0'; +export const angularVersion = '~11.0.0'; +export const angularDevkitVersion = '~0.1100.5'; export const ngxTranslateVersion = '~13.0.0'; export const ngxTranslateHttpVersion = '~6.0.0'; export const coreJsVersion = '^3.6.5'; @@ -9,5 +9,5 @@ export const rxjsVersion = '~6.6.0'; export const zonejsVersion = '~0.11.1'; export const codelyzerVersion = '~6.0.0'; export const jestJasmine2 = '~25.2.0'; -export const jestPresetAngular = '~8.1.2'; +export const jestPresetAngular = '8.3.1'; export const typesJest = '~25.1.4'; diff --git a/packages/angular/src/utils/xplat.ts b/packages/angular/src/utils/xplat.ts index 46ea11c6..73ba2949 100644 --- a/packages/angular/src/utils/xplat.ts +++ b/packages/angular/src/utils/xplat.ts @@ -33,6 +33,7 @@ import { getJsonFromFile, sanitizeCommaDelimitedArg, getNpmScope, + getFrontendFramework, } from '@nstudio/xplat-utils'; import { addToFeature, adjustBarrelIndex } from './generator'; import { updateJsonInTree, getWorkspacePath } from '@nrwl/workspace'; @@ -122,7 +123,7 @@ export namespace ComponentHelpers { xplatFolderName, 'component', options, - `xplat/${xplatFolderName}`, + `libs/xplat/${xplatFolderName}`, tree, ``, true @@ -138,7 +139,7 @@ export namespace ComponentHelpers { return adjustBarrelIndex( 'component', options, - `xplat/${xplatFolderName}/features/${componentSettings.featureName}/components/${options.subFolder}/index.ts`, + `libs/xplat/${xplatFolderName}/features/src/lib/${componentSettings.featureName}/components/${options.subFolder}/index.ts`, true )(tree, context); }); @@ -152,7 +153,7 @@ export namespace ComponentHelpers { xplatFolderName, 'component', options, - `xplat/${xplatFolderName}`, + `libs/xplat/${xplatFolderName}`, tree, '_index', true @@ -169,7 +170,7 @@ export namespace ComponentHelpers { return adjustBarrelIndex( 'component', options, - `xplat/${xplatFolderName}/features/${componentSettings.featureName}/components/index.ts`, + `libs/xplat/${xplatFolderName}/features/src/lib/${componentSettings.featureName}/components/index.ts`, true, false, true @@ -186,7 +187,7 @@ export namespace ComponentHelpers { xplatFolderName, 'component', options, - `xplat/${xplatFolderName}`, + `libs/xplat/${xplatFolderName}`, tree, '_index' )(tree, context) @@ -234,7 +235,7 @@ export namespace XplatAngularHelpers { packageJson.devDependencies['@nstudio/web'] = xplatVersion; } - dependencies[`@${getNpmScope()}/scss`] = 'file:libs/scss'; + dependencies[`@${getNpmScope()}/xplat-scss`] = 'file:libs/xplat/scss/src'; return XplatHelpers.updatePackageForXplat(options, { dependencies: { @@ -269,212 +270,32 @@ export namespace XplatAngularHelpers { export function addLibFiles( options: XplatHelpers.Schema, - relativeTo: string = './' + relativeTo: string = './', + libName: string ): Rule { return (tree: Tree, context: SchematicContext) => { if ( - tree.exists(`libs/core/base/base-component.ts`) || - tree.exists(`libs/features/index.ts`) + libName === 'scss' && + tree.exists(`libs/xplat/${libName}/src/package.json`) ) { return noop()(tree, context); - } - - return branchAndMerge( - mergeWith( - apply(url(`${relativeTo}_lib_files`), [ - template({ - ...(options as any), - ...getDefaultTemplateOptions(), - }), - move('libs'), - ]) - ) - )(tree, context); - }; - } - - export function addScssFiles( - options: XplatHelpers.Schema, - relativeTo: string = './' - ): Rule { - return (tree: Tree, context: SchematicContext) => { - if (tree.exists(`libs/scss/_index.scss`)) { + } else if (tree.exists(`libs/xplat/${libName}/src/lib/index.ts`)) { return noop()(tree, context); } - return branchAndMerge( - mergeWith( - apply(url(`${relativeTo}_scss_files`), [ - template({ - ...(options as any), - ...getDefaultTemplateOptions(), - }), - move('libs/scss'), - ]) - ) - )(tree, context); - }; - } - - export function addTestingFiles( - options: any, - relativePath: string = './' - ): void | Tree | Rule | Promise | Promise { - return (tree: Tree, context: SchematicContext) => { - if (tree.exists(`testing/test-setup.ts`)) { - return noop()(tree, context); - } + const libSrcFolder = `/${libName}/src${libName === 'scss' ? '' : '/lib'}`; return branchAndMerge( mergeWith( - apply(url(`${relativePath}_files`), [ + apply(url(`${relativeTo}_files_${libName}`), [ template({ ...(options as any), ...getDefaultTemplateOptions(), - xplatFolderName: XplatHelpers.getXplatFoldername( - 'web', - 'angular' - ), }), - move('testing'), + move(`libs/xplat/${libSrcFolder}`), ]) ) )(tree, context); }; } - - export function addJestConfig( - options: any, - relativePath: string = './' - ): void | Tree | Rule | Promise | Promise { - return (tree: Tree, context: SchematicContext) => { - if (tree.exists('jest.config.js')) { - // user may have generated support already - return noop()(tree, context); - } else { - return branchAndMerge( - mergeWith( - apply(url(`${relativePath}_files`), [ - template({ - ...(options as any), - ...getDefaultTemplateOptions(), - }), - move('/'), - ]) - ) - )(tree, context); - } - }; - } - - export function updateTestingConfig(options: XplatHelpers.Schema) { - return (tree: Tree, context: SchematicContext) => { - const configPath = getWorkspacePath(tree); - const nxConfigPath = `nx.json`; - - const workspaceJson = getJsonFromFile(tree, configPath); - const nxJson = getJsonFromFile(tree, nxConfigPath); - const prefix = getPrefix(); - // console.log('prefix:', prefix); - - // update libs and xplat config - if (workspaceJson && workspaceJson.projects) { - workspaceJson.projects['libs'] = { - root: 'libs', - sourceRoot: 'libs', - projectType: 'library', - prefix: prefix, - architect: { - test: { - builder: '@nrwl/jest:jest', - options: { - jestConfig: 'testing/jest.libs.config.js', - tsConfig: 'testing/tsconfig.libs.spec.json', - passWithNoTests: true, - setupFile: 'testing/test-setup.ts', - }, - }, - lint: { - builder: '@angular-devkit/build-angular:tslint', - options: { - tsConfig: [ - 'testing/tsconfig.libs.json', - 'testing/tsconfig.libs.spec.json', - ], - exclude: ['**/node_modules/**'], - }, - }, - }, - }; - workspaceJson.projects['xplat'] = { - root: 'xplat', - sourceRoot: 'xplat', - projectType: 'library', - prefix: prefix, - architect: { - test: { - builder: '@nrwl/jest:jest', - options: { - jestConfig: 'testing/jest.xplat.config.js', - tsConfig: 'testing/tsconfig.xplat.spec.json', - passWithNoTests: true, - setupFile: 'testing/test-setup.ts', - }, - }, - lint: { - builder: '@angular-devkit/build-angular:tslint', - options: { - tsConfig: [ - 'testing/tsconfig.xplat.json', - 'testing/tsconfig.xplat.spec.json', - ], - exclude: ['**/node_modules/**'], - }, - }, - }, - }; - } - - if (nxJson && nxJson.projects) { - nxJson.projects['libs'] = { - tags: [], - }; - nxJson.projects['xplat'] = { - tags: [], - }; - } - - tree = updateJsonFile(tree, configPath, workspaceJson); - tree = updateJsonFile(tree, nxConfigPath, nxJson); - return tree; - }; - } - - export function updateLint(options: XplatHelpers.Schema): Rule { - return (tree: Tree, context: SchematicContext) => { - const prefix = getPrefix(); - - return updateJsonInTree('tslint.json', (json) => { - json.rules = json.rules || {}; - // remove forin rule as collides with LogService - delete json.rules['forin']; - // adjust console rules to work with LogService - json.rules['no-console'] = [true, 'debug', 'time', 'timeEnd', 'trace']; - json.rules['directive-selector'] = [ - true, - 'attribute', - prefix, - 'camelCase', - ]; - json.rules['component-selector'] = [ - true, - 'element', - prefix, - 'kebab-case', - ]; - - return json; - })(tree, context); - }; - } } diff --git a/packages/electron-angular/src/schematics/application/index.ts b/packages/electron-angular/src/schematics/application/index.ts index 158fc3d1..7110447c 100644 --- a/packages/electron-angular/src/schematics/application/index.ts +++ b/packages/electron-angular/src/schematics/application/index.ts @@ -217,7 +217,7 @@ function electronMain() { import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; // libs - import { environment } from '@${getNpmScope()}/core'; + import { environment } from '@${getNpmScope()}/xplat/core'; // app import { AppElectronModule } from './app/app.electron.module'; diff --git a/packages/electron-angular/src/schematics/xplat/_files/__dot__xplatframework b/packages/electron-angular/src/schematics/xplat/_files/__dot__xplatframework deleted file mode 100644 index a7edb09b..00000000 --- a/packages/electron-angular/src/schematics/xplat/_files/__dot__xplatframework +++ /dev/null @@ -1 +0,0 @@ -angular \ No newline at end of file diff --git a/packages/electron-angular/src/schematics/xplat/_files/index.ts__tmpl__ b/packages/electron-angular/src/schematics/xplat/_files/index.ts__tmpl__ deleted file mode 100644 index 4b0e0413..00000000 --- a/packages/electron-angular/src/schematics/xplat/_files/index.ts__tmpl__ +++ /dev/null @@ -1 +0,0 @@ -export * from './core'; diff --git a/packages/electron-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ b/packages/electron-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ similarity index 88% rename from packages/electron-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ rename to packages/electron-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ index 18888bd2..75f6a03d 100644 --- a/packages/electron-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ +++ b/packages/electron-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ @@ -1,6 +1,6 @@ import { NgModule, Optional, SkipSelf } from '@angular/core'; -import { throwIfAlreadyLoaded } from '@<%= npmScope %>/utils'; +import { throwIfAlreadyLoaded } from '@<%= npmScope %>/xplat/utils'; import { ELECTRON_PROVIDERS, ElectronService } from './services'; @NgModule({ diff --git a/packages/electron-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ b/packages/electron-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ similarity index 100% rename from packages/electron-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ rename to packages/electron-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ diff --git a/packages/electron-angular/src/schematics/xplat/_files/core/services/electron.service.ts__tmpl__ b/packages/electron-angular/src/schematics/xplat/_files_core/services/electron.service.ts__tmpl__ similarity index 89% rename from packages/electron-angular/src/schematics/xplat/_files/core/services/electron.service.ts__tmpl__ rename to packages/electron-angular/src/schematics/xplat/_files_core/services/electron.service.ts__tmpl__ index b0f2f9b6..8d9743ad 100644 --- a/packages/electron-angular/src/schematics/xplat/_files/core/services/electron.service.ts__tmpl__ +++ b/packages/electron-angular/src/schematics/xplat/_files_core/services/electron.service.ts__tmpl__ @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; -import { LogService, WindowService } from '@<%= npmScope %>/core'; -import { isElectron } from '@<%= npmScope %>/utils'; +import { LogService, WindowService } from '@<%= npmScope %>/xplat/core'; +import { isElectron } from '@<%= npmScope %>/xplat/utils'; import * as childProcess from 'child_process'; import { ipcRenderer } from 'electron'; import IpcRendererEvent = Electron.IpcRendererEvent; diff --git a/packages/electron-angular/src/schematics/xplat/_files/core/services/index.ts__tmpl__ b/packages/electron-angular/src/schematics/xplat/_files_core/services/index.ts__tmpl__ similarity index 100% rename from packages/electron-angular/src/schematics/xplat/_files/core/services/index.ts__tmpl__ rename to packages/electron-angular/src/schematics/xplat/_files_core/services/index.ts__tmpl__ diff --git a/packages/electron-angular/src/schematics/xplat/index.spec.ts b/packages/electron-angular/src/schematics/xplat/index.spec.ts index a8674e65..862dfc35 100644 --- a/packages/electron-angular/src/schematics/xplat/index.spec.ts +++ b/packages/electron-angular/src/schematics/xplat/index.spec.ts @@ -24,10 +24,14 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); const files = tree.files; - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/electron/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/electron/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(-1); const packagePath = '/package.json'; const packageFile = jsonParse(getFileContent(tree, packagePath)); @@ -43,14 +47,9 @@ describe('xplat schematic', () => { let filePath = '/tsconfig.base.json'; let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); - expect(fileContent.compilerOptions.paths['@testing/electron']).toBeTruthy(); expect( - fileContent.compilerOptions.paths['@testing/electron/*'] + fileContent.compilerOptions.paths['@testing/xplat/electron/core'] ).toBeTruthy(); - filePath = '/xplat/electron/.xplatframework'; - fileContent = getFileContent(tree, filePath); - // console.log(fileContent); - expect(fileContent.indexOf('angular')).toBeGreaterThanOrEqual(0); }); it('should create default xplat support with framework suffix when not specifying default', async () => { @@ -59,15 +58,14 @@ describe('xplat schematic', () => { const options: XplatHelpers.Schema = { ...defaultOptions }; const tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/electron-angular/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/electron-angular/core/src/lib/index.ts') + ).toBeTruthy(); const filePath = getRootTsConfigPath(); const fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect( - fileContent.compilerOptions.paths['@testing/electron-angular'] - ).toBeTruthy(); - expect( - fileContent.compilerOptions.paths['@testing/electron-angular/*'] + fileContent.compilerOptions.paths['@testing/xplat/electron-angular/core'] ).toBeTruthy(); }); @@ -78,13 +76,14 @@ describe('xplat schematic', () => { options.framework = 'angular'; let tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/electron/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/electron/core/src/lib/index.ts') + ).toBeTruthy(); let filePath = getRootTsConfigPath(); let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); - expect(fileContent.compilerOptions.paths['@testing/electron']).toBeTruthy(); expect( - fileContent.compilerOptions.paths['@testing/electron/*'] + fileContent.compilerOptions.paths['@testing/xplat/electron/core'] ).toBeTruthy(); await expect(runSchematic('xplat', defaultOptions, tree)).rejects.toThrow( diff --git a/packages/electron-angular/src/schematics/xplat/index.ts b/packages/electron-angular/src/schematics/xplat/index.ts index 0b9497a9..a4c276d4 100644 --- a/packages/electron-angular/src/schematics/xplat/index.ts +++ b/packages/electron-angular/src/schematics/xplat/index.ts @@ -5,7 +5,6 @@ import { SchematicContext, noop, } from '@angular-devkit/schematics'; -// import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; import { XplatHelpers } from '@nstudio/xplat'; import { prerun } from '@nstudio/xplat-utils'; import { XplatElectronAngularHelpers } from '../../utils'; @@ -14,7 +13,7 @@ export default function (options: XplatHelpers.Schema) { return chain([ prerun(options, true), (tree: Tree, context: SchematicContext) => { - if (tree.exists('/xplat/web-angular/scss/_variables.scss')) { + if (tree.exists(`/libs/xplat/web-angular/scss/src/_variables.scss`)) { return noop(); } else { return externalSchematic('@nstudio/web-angular', 'xplat', options, { @@ -32,6 +31,8 @@ export default function (options: XplatHelpers.Schema) { }, { interactive: false } ), + XplatHelpers.generateLib(options, 'core', 'xplat/electron', 'node'), + XplatHelpers.cleanupLib(options, 'core', 'xplat/electron'), (tree: Tree, context: SchematicContext) => { const xplatFolderName = XplatHelpers.getXplatFoldername( 'electron', @@ -40,12 +41,12 @@ export default function (options: XplatHelpers.Schema) { // console.log('xplatName:', xplatName); return options.skipDependentPlatformFiles ? noop() - : XplatHelpers.addPlatformFiles(options, xplatFolderName)( - tree, - context - ); + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'core' + )(tree, context); }, - XplatHelpers.updateTsConfigPaths(options, { framework: 'angular' }), XplatElectronAngularHelpers.updateRootDeps(options), ]); } diff --git a/packages/electron-angular/src/utils/versions.ts b/packages/electron-angular/src/utils/versions.ts index 06956cdd..6c746b33 100644 --- a/packages/electron-angular/src/utils/versions.ts +++ b/packages/electron-angular/src/utils/versions.ts @@ -1,2 +1,2 @@ export const xplatVersion = '*'; -export const nxVersion = '^10.3.0'; +export const nxVersion = '^11.0.0'; diff --git a/packages/focus/package.json b/packages/focus/package.json index e3b16d89..0e7101da 100644 --- a/packages/focus/package.json +++ b/packages/focus/package.json @@ -30,8 +30,8 @@ "migrations": "./migrations.json" }, "dependencies": { - "@angular-devkit/core": "~10.1.0", - "@angular-devkit/schematics": "~10.1.0", + "@angular-devkit/core": "~11.0.0", + "@angular-devkit/schematics": "~11.0.0", "@nstudio/xplat-utils": "*", "xml2js": "~0.4.23" } diff --git a/packages/focus/src/utils/index.ts b/packages/focus/src/utils/index.ts index fc951906..d84c6e19 100644 --- a/packages/focus/src/utils/index.ts +++ b/packages/focus/src/utils/index.ts @@ -60,9 +60,9 @@ export namespace FocusHelpers { for (const p of supportedPlatformsWithNx) { const appFilter = groupByName ? `*-${p}` : `${p}*`; userUpdates[`**/apps/${appFilter}`] = false; - userUpdates[`**/xplat/${p}`] = false; + userUpdates[`**/libs/xplat/${p}`] = false; if (frameworkSuffix) { - userUpdates[`**/xplat/${p}${frameworkSuffix}`] = false; + userUpdates[`**/libs/xplat/${p}${frameworkSuffix}`] = false; } } } else { @@ -91,9 +91,9 @@ export namespace FocusHelpers { // use wildcards for apps only if no project names were specified userUpdates[`**/apps/${appFilter}`] = excluded; } - userUpdates[`**/xplat/${p}`] = excluded; + userUpdates[`**/libs/xplat/${p}`] = excluded; if (frameworkSuffix) { - userUpdates[`**/xplat/${p}${frameworkSuffix}`] = excluded; + userUpdates[`**/libs/xplat/${p}${frameworkSuffix}`] = excluded; } if (excluded) { @@ -138,11 +138,6 @@ export namespace FocusHelpers { } } - if (isXplatWorkspace()) { - // always ensure hidden xplat files are hidden from view - userUpdates['**/xplat/*/.xplatframework'] = true; - } - // VS Code const isVsCode = updateVSCode({ userUpdates, @@ -198,18 +193,12 @@ export namespace FocusHelpers { when: '$(basename).scss', }, // libs/xplat - '**/libs/**/*.js': { - when: '$(basename).ts', - }, - '**/libs/**/*.d.ts': { - when: '$(basename).ts', - }, - '**/xplat/**/*.js': { - when: '$(basename).ts', - }, - '**/xplat/**/*.d.ts': { - when: '$(basename).ts', - }, + // '**/libs/xplat/**/*.js': { + // when: '$(basename).ts', + // }, + // '**/libs/xplat/**/*.d.ts': { + // when: '$(basename).ts', + // }, }; if (isVsCode) { diff --git a/packages/ionic-angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ b/packages/ionic-angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ index d5373b68..7835d790 100644 --- a/packages/ionic-angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/application/_files/src/app/core/core.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; // libs -import { <%= utils.classify(prefix) %>IonicCoreModule } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { <%= utils.classify(prefix) %>IonicCoreModule } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/core'; @NgModule({ imports: [<%= utils.classify(prefix) %>IonicCoreModule] diff --git a/packages/ionic-angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ b/packages/ionic-angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ index 7c17ac1f..e670323a 100644 --- a/packages/ionic-angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/application/_files/src/app/features/shared/shared.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; // xplat -import { UIModule } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { UIModule } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/features'; const MODULES = [UIModule]; diff --git a/packages/ionic-angular/src/schematics/application/_files/src/app/pages/home/home.component.ts__tmpl__ b/packages/ionic-angular/src/schematics/application/_files/src/app/pages/home/home.component.ts__tmpl__ index 6e90e13f..8d6173ff 100644 --- a/packages/ionic-angular/src/schematics/application/_files/src/app/pages/home/home.component.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/application/_files/src/app/pages/home/home.component.ts__tmpl__ @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { BaseComponent } from '@<%= npmScope %>/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Component({ selector: 'page-home', diff --git a/packages/ionic-angular/src/schematics/application/_files/tsconfig.json b/packages/ionic-angular/src/schematics/application/_files/tsconfig.json index 5046720e..c6a45c6d 100644 --- a/packages/ionic-angular/src/schematics/application/_files/tsconfig.json +++ b/packages/ionic-angular/src/schematics/application/_files/tsconfig.json @@ -9,19 +9,5 @@ { "path": "./tsconfig.spec.json" } - ], - "compilerOptions": { - "paths": { - "@<%= npmScope %>/*": ["<%= pathOffset %>libs/*"], - "@<%= npmScope %>/ionic": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/index.ts" - ], - "@<%= npmScope %>/ionic/*": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/*" - ], - "@<%= npmScope %>/web": ["<%= pathOffset %>xplat/web/index.ts"], - "@<%= npmScope %>/web/*": ["<%= pathOffset %>xplat/web/*"], - "@angular/*": ["../../node_modules/@angular/*"] - } - } + ] } diff --git a/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/app/home/home.page.html b/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/app/home/home.page.html index 570ede79..cad49248 100644 --- a/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/app/home/home.page.html +++ b/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/app/home/home.page.html @@ -9,6 +9,12 @@
The world is your oyster. -

If you get lost, the docs will be your guide.

+

+ If you get lost, the + docs + will be your guide. +

diff --git a/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/index.html b/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/index.html index 64485f0d..8b408880 100644 --- a/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/index.html +++ b/packages/ionic-angular/src/schematics/application/_skipxplat_files/src/index.html @@ -1,25 +1,26 @@ + + + Ionic + Nx + xplat - - - Ionic + Nx + xplat + - + + + - - - + - - - - - - - - - - + + + + + + + diff --git a/packages/ionic-angular/src/schematics/application/index.spec.ts b/packages/ionic-angular/src/schematics/application/index.spec.ts index 91965561..8bb9a5cd 100644 --- a/packages/ionic-angular/src/schematics/application/index.spec.ts +++ b/packages/ionic-angular/src/schematics/application/index.spec.ts @@ -67,9 +67,8 @@ describe('app.ionic schematic', () => { files.indexOf('/apps/ionic-foo/src/app/app-routing.module.ts') ).toBeGreaterThanOrEqual(0); - expect(tree.exists('xplat/web/scss/_index.scss')).toBeTruthy(); - expect(tree.exists('xplat/ionic/scss/_index.scss')).toBeTruthy(); - expect(tree.exists('xplat/ionic/.xplatframework')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/scss/src/_index.scss')).toBeTruthy(); + expect(tree.exists('/libs/xplat/ionic/scss/src/_index.scss')).toBeTruthy(); }); it('should create all files for app in directory', async () => { diff --git a/packages/ionic-angular/src/schematics/application/index.ts b/packages/ionic-angular/src/schematics/application/index.ts index b7492598..b7da69d9 100644 --- a/packages/ionic-angular/src/schematics/application/index.ts +++ b/packages/ionic-angular/src/schematics/application/index.ts @@ -29,6 +29,7 @@ import { getNpmScope, getPrefix, getAppName, + addInstallTask, } from '@nstudio/xplat-utils'; import { Schema as ApplicationOptions } from './schema'; import { XplatIonicAngularHelpers } from '../../utils'; @@ -69,7 +70,8 @@ export default function (options: ApplicationOptions) { )(tree, context), // add root package dependencies XplatIonicAngularHelpers.updateRootDeps(options), - XplatHelpers.addPackageInstallTask(options), + addInstallTask(options), + // XplatHelpers.addPackageInstallTask(options), // add start/clean scripts (tree: Tree) => { const scripts = {}; diff --git a/packages/ionic-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ b/packages/ionic-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ index 379c0d0c..192bd66c 100644 --- a/packages/ionic-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; -<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/core';<% -} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/features';<% } %> +<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/xplat/core';<% +} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/xplat/features';<% } %> @Component({ selector: '<%= prefix %>-<%= name %>', diff --git a/packages/ionic-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ b/packages/ionic-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ index 379c0d0c..192bd66c 100644 --- a/packages/ionic-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; -<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/core';<% -} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/features';<% } %> +<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/xplat/core';<% +} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/xplat/features';<% } %> @Component({ selector: '<%= prefix %>-<%= name %>', diff --git a/packages/ionic-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ b/packages/ionic-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ index 3fb20011..0ce344b8 100644 --- a/packages/ionic-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ @@ -1,6 +1,6 @@ import { NgModule } from '@angular/core';<% if (!onlyModule && onlyProject && routing) { %> import { RouterModule, Routes } from '@angular/router';<% } %> -<% if (!onlyProject) { %>import { <%= utils.classify(name) %>Module as Shared<%= utils.classify(name) %>Module } from '@<%= npmScope %>/features';<% } if (onlyProject) { %> +<% if (!onlyProject) { %>import { <%= utils.classify(name) %>Module as Shared<%= utils.classify(name) %>Module } from '@<%= npmScope %>/xplat/features';<% } if (onlyProject) { %> import { SharedModule } from '../shared/shared.module';<% } else { %> import { UIModule } from '../ui/ui.module';<% } if (!onlyModule) { %> import { <%= utils.sanitize(name).toUpperCase() %>_COMPONENTS<% if (onlyProject && routing) { %>, <%= utils.classify(name) %>Component<% } %> } from './components'; diff --git a/packages/ionic-angular/src/schematics/feature/index.ts b/packages/ionic-angular/src/schematics/feature/index.ts index b37e919a..50e4c53a 100644 --- a/packages/ionic-angular/src/schematics/feature/index.ts +++ b/packages/ionic-angular/src/schematics/feature/index.ts @@ -80,7 +80,7 @@ export default function (options: XplatFeatureHelpers.Schema) { ); return XplatFeatureHelpers.adjustBarrelIndex( options, - `xplat/${xplatFolderName}/features/index.ts` + `libs/xplat/${xplatFolderName}/features/src/lib/index.ts` )(tree, context); }); // add starting component unless onlyModule diff --git a/packages/ionic-angular/src/schematics/xplat/_files/__dot__xplatframework b/packages/ionic-angular/src/schematics/xplat/_files/__dot__xplatframework deleted file mode 100644 index a7edb09b..00000000 --- a/packages/ionic-angular/src/schematics/xplat/_files/__dot__xplatframework +++ /dev/null @@ -1 +0,0 @@ -angular \ No newline at end of file diff --git a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html b/packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html deleted file mode 100644 index 3955124b..00000000 --- a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - {{title}} - - - \ No newline at end of file diff --git a/packages/ionic-angular/src/schematics/xplat/_files/index.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files/index.ts__tmpl__ deleted file mode 100644 index 66eb70a8..00000000 --- a/packages/ionic-angular/src/schematics/xplat/_files/index.ts__tmpl__ +++ /dev/null @@ -1,2 +0,0 @@ -export * from './core'; -export * from './features'; diff --git a/packages/ionic-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ similarity index 89% rename from packages/ionic-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ index 6a2d29ad..70336186 100644 --- a/packages/ionic-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ @@ -4,8 +4,8 @@ import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { StatusBar } from '@ionic-native/status-bar/ngx'; -import { throwIfAlreadyLoaded } from '@<%= npmScope %>/utils'; -import { <%= utils.classify(prefix) %>CoreModule } from '@<%= npmScope %>/web'; +import { throwIfAlreadyLoaded } from '@<%= npmScope %>/xplat/utils'; +import { <%= utils.classify(prefix) %>CoreModule } from '@<%= npmScope %>/xplat/web/core'; @NgModule({ imports: [ diff --git a/packages/ionic-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ similarity index 100% rename from packages/ionic-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ diff --git a/packages/ionic-angular/src/schematics/xplat/_files/features/index.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_features/index.ts__tmpl__ similarity index 100% rename from packages/ionic-angular/src/schematics/xplat/_files/features/index.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_features/index.ts__tmpl__ diff --git a/packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html new file mode 100644 index 00000000..e921a0ed --- /dev/null +++ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html @@ -0,0 +1,7 @@ + + + + {{ title }} + + + diff --git a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ similarity index 73% rename from packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ index c4349b6e..c53d0b32 100644 --- a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { HeaderBaseComponent } from '@<%= npmScope %>/features'; +import { HeaderBaseComponent } from '@<%= npmScope %>/xplat/features'; @Component({ selector: '<%= prefix %>-ion-header', diff --git a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/index.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/index.ts__tmpl__ similarity index 100% rename from packages/ionic-angular/src/schematics/xplat/_files/features/ui/components/index.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_features/ui/components/index.ts__tmpl__ diff --git a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/index.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ similarity index 100% rename from packages/ionic-angular/src/schematics/xplat/_files/features/ui/index.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ diff --git a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ similarity index 82% rename from packages/ionic-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ rename to packages/ionic-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ index 2d7b56f6..0faddb41 100644 --- a/packages/ionic-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ +++ b/packages/ionic-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { IonicModule } from '@ionic/angular'; -import { UIModule as UIWebModule } from '@<%= npmScope %>/web'; +import { UIModule as UIWebModule } from '@<%= npmScope %>/xplat/web/features'; import { HeaderComponent } from './components'; @NgModule({ diff --git a/packages/ionic-angular/src/schematics/xplat/_files/scss/_index.scss b/packages/ionic-angular/src/schematics/xplat/_files_scss/_index.scss similarity index 93% rename from packages/ionic-angular/src/schematics/xplat/_files/scss/_index.scss rename to packages/ionic-angular/src/schematics/xplat/_files_scss/_index.scss index e9d970c3..8bf84954 100644 --- a/packages/ionic-angular/src/schematics/xplat/_files/scss/_index.scss +++ b/packages/ionic-angular/src/schematics/xplat/_files_scss/_index.scss @@ -1,5 +1,5 @@ // shared across all web based platforms and apps -@import '~@<%= npmScope %>/web-scss/index'; +@import '~@<%= npmScope %>/xplat-web-scss/index'; // http://ionicframework.com/docs/theming/ diff --git a/packages/ionic-angular/src/schematics/xplat/_files/scss/_tags.scss b/packages/ionic-angular/src/schematics/xplat/_files_scss/_tags.scss similarity index 100% rename from packages/ionic-angular/src/schematics/xplat/_files/scss/_tags.scss rename to packages/ionic-angular/src/schematics/xplat/_files_scss/_tags.scss diff --git a/packages/ionic-angular/src/schematics/xplat/_files/scss/package.json b/packages/ionic-angular/src/schematics/xplat/_files_scss/package.json similarity index 60% rename from packages/ionic-angular/src/schematics/xplat/_files/scss/package.json rename to packages/ionic-angular/src/schematics/xplat/_files_scss/package.json index 42cbee51..0879ba0e 100644 --- a/packages/ionic-angular/src/schematics/xplat/_files/scss/package.json +++ b/packages/ionic-angular/src/schematics/xplat/_files_scss/package.json @@ -1,5 +1,5 @@ { - "name": "@<%= npmScope %>/ionic-scss", + "name": "@<%= npmScope %>/xplat-ionic-scss", "version": "1.0.0", "main": "index", "typings": "index.d.ts" diff --git a/packages/ionic-angular/src/schematics/xplat/index.spec.ts b/packages/ionic-angular/src/schematics/xplat/index.spec.ts index 0f2b95b3..16f5f9c0 100644 --- a/packages/ionic-angular/src/schematics/xplat/index.spec.ts +++ b/packages/ionic-angular/src/schematics/xplat/index.spec.ts @@ -28,8 +28,12 @@ describe('xplat ionic angular', () => { const tree = await runSchematic('xplat', options, appTree); const files = tree.files; - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/ionic/index.ts')).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/ionic/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); expect( files.indexOf('/xplat/nativescript/index.ts') ).toBeGreaterThanOrEqual(-1); @@ -37,7 +41,7 @@ describe('xplat ionic angular', () => { const packageFile = jsonParse(getFileContent(tree, packagePath)); // const hasScss = packageFile.dependencies[`@testing/scss`]; // expect(hasScss).not.toBeUndefined(); - const hasWebScss = packageFile.dependencies[`@testing/web-scss`]; + const hasWebScss = packageFile.dependencies[`@testing/xplat-web-scss`]; expect(hasWebScss).not.toBeUndefined(); // should not include these root packages const hasNativeScript = packageFile.dependencies[`nativescript-angular`]; @@ -45,12 +49,9 @@ describe('xplat ionic angular', () => { let filePath = getRootTsConfigPath(); let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); - expect(fileContent.compilerOptions.paths['@testing/ionic']).toBeTruthy(); - expect(fileContent.compilerOptions.paths['@testing/ionic/*']).toBeTruthy(); - filePath = '/xplat/ionic/.xplatframework'; - fileContent = getFileContent(tree, filePath); - // console.log(fileContent); - expect(fileContent.indexOf('angular')).toBeGreaterThanOrEqual(0); + expect( + fileContent.compilerOptions.paths['@testing/xplat/ionic/core'] + ).toBeTruthy(); }); it('should create default xplat support with framework suffix when not specifying default', async () => { @@ -59,15 +60,14 @@ describe('xplat ionic angular', () => { const options: XplatHelpers.Schema = { ...defaultOptions }; const tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/ionic-angular/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/ionic-angular/core/src/lib/index.ts') + ).toBeTruthy(); const filePath = getRootTsConfigPath(); const fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect( - fileContent.compilerOptions.paths['@testing/ionic-angular'] - ).toBeTruthy(); - expect( - fileContent.compilerOptions.paths['@testing/ionic-angular/*'] + fileContent.compilerOptions.paths['@testing/xplat/ionic-angular/core'] ).toBeTruthy(); }); @@ -78,12 +78,16 @@ describe('xplat ionic angular', () => { options.framework = 'angular'; let tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/ionic/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/ionic/core/src/lib/index.ts')).toBeTruthy(); let filePath = getRootTsConfigPath(); let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); - expect(fileContent.compilerOptions.paths['@testing/ionic']).toBeTruthy(); - expect(fileContent.compilerOptions.paths['@testing/ionic/*']).toBeTruthy(); + expect( + fileContent.compilerOptions.paths['@testing/xplat/ionic/core'] + ).toBeTruthy(); + expect( + fileContent.compilerOptions.paths['@testing/xplat/ionic/features'] + ).toBeTruthy(); await expect(runSchematic('xplat', defaultOptions, tree)).rejects.toThrow( `You currently have "angular" set as your default frontend framework and have already generated xplat support for "ionic". A command is coming soon to auto reconfigure your workspace to later add baseline platform support for those which have previously been generated prepaired with a frontend framework.` diff --git a/packages/ionic-angular/src/schematics/xplat/index.ts b/packages/ionic-angular/src/schematics/xplat/index.ts index 18a8f7be..49c09bd7 100644 --- a/packages/ionic-angular/src/schematics/xplat/index.ts +++ b/packages/ionic-angular/src/schematics/xplat/index.ts @@ -23,6 +23,12 @@ export default function (options: XplatHelpers.Schema) { }, { interactive: false } ), + XplatHelpers.generateLib(options, 'core', 'xplat/ionic', 'node'), + XplatHelpers.cleanupLib(options, 'core', 'xplat/ionic'), + XplatHelpers.generateLib(options, 'features', 'xplat/ionic', 'node'), + XplatHelpers.cleanupLib(options, 'features', 'xplat/ionic'), + XplatHelpers.generateLib(options, 'scss', 'xplat/ionic', 'node'), + XplatHelpers.cleanupLib(options, 'scss', 'xplat/ionic'), (tree: Tree, context: SchematicContext) => { const xplatFolderName = XplatHelpers.getXplatFoldername( 'ionic', @@ -31,21 +37,61 @@ export default function (options: XplatHelpers.Schema) { // console.log('xplatName:', xplatName); return options.skipDependentPlatformFiles ? noop() - : XplatHelpers.addPlatformFiles(options, xplatFolderName)( - tree, - context - ); + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'core' + )(tree, context); + }, + (tree: Tree, context: SchematicContext) => { + const xplatFolderName = XplatHelpers.getXplatFoldername( + 'ionic', + 'angular' + ); + // console.log('xplatName:', xplatName); + return options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'features' + )(tree, context); + }, + (tree: Tree, context: SchematicContext) => { + const xplatFolderName = XplatHelpers.getXplatFoldername( + 'ionic', + 'angular' + ); + // console.log('xplatName:', xplatName); + return options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'scss' + )(tree, context); }, // TODO: convert these @nstudio/angular api's to singular external schematics so could be called with externalSchematic api XplatAngularHelpers.addLibFiles( options, - `../../../../angular/src/schematics/xplat/` + `../../../../angular/src/schematics/xplat/`, + 'core' + ), + XplatAngularHelpers.addLibFiles( + options, + `../../../../angular/src/schematics/xplat/`, + 'features' + ), + XplatAngularHelpers.addLibFiles( + options, + `../../../../angular/src/schematics/xplat/`, + 'scss' ), - XplatAngularHelpers.addScssFiles( + XplatAngularHelpers.addLibFiles( options, - `../../../../angular/src/schematics/xplat/` + `../../../../angular/src/schematics/xplat/`, + 'utils' ), - XplatHelpers.updateTsConfigPaths(options, { framework: 'angular' }), XplatIonicAngularHelpers.updateRootDeps(options), ]); } diff --git a/packages/ionic-angular/src/utils/versions.ts b/packages/ionic-angular/src/utils/versions.ts index 660b20e7..7f3ec4d3 100644 --- a/packages/ionic-angular/src/utils/versions.ts +++ b/packages/ionic-angular/src/utils/versions.ts @@ -3,10 +3,10 @@ export const ionicAngularVersion = '~5.3.1'; export const ionicAngularToolkitVersion = '^2.3.0'; export const ionicNativeVersion = '~5.23.0'; export const capacitorVersion = '~2.4.0'; -export const ngDevKitArchitect = '~0.1000.6'; -export const ngDevKitBuild = '~0.1000.6'; -export const ngDevKitCore = '~10.1.0'; -export const ngDevKitSchematics = '~10.1.0'; +export const ngDevKitArchitect = '~0.1100.1'; +export const ngDevKitBuild = '~0.1100.1'; +export const ngDevKitCore = '~11.0.0'; +export const ngDevKitSchematics = '~11.0.0'; export const jasmineCoreVersion = '~3.6.0'; export const jasmineSpecVersion = '~5.0.2'; @@ -17,8 +17,8 @@ export const karmaJasmineVersion = '~4.0.1'; export const karmaJasmineHtmlVersion = '^1.5.2'; export const typescriptVersion = '~3.9.0'; -export const angularVersion = '~10.1.0'; -export const angularDevkitVersion = '~0.1001.0'; +export const angularVersion = '~11.0.0'; +export const angularDevkitVersion = '~0.1100.1'; export const ngxTranslateVersion = '~13.0.0'; export const ngxTranslateHttpVersion = '~6.0.0'; export const coreJsVersion = '^3.6.5'; diff --git a/packages/ionic/src/schematics/application/_files/src/index.html b/packages/ionic/src/schematics/application/_files/src/index.html index 482e2d86..7677b0e8 100644 --- a/packages/ionic/src/schematics/application/_files/src/index.html +++ b/packages/ionic/src/schematics/application/_files/src/index.html @@ -1,36 +1,45 @@ - - - - <%= utils.sanitize(name) %> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + <%= utils.sanitize(name) %> + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/ionic/src/schematics/xplat/index.ts b/packages/ionic/src/schematics/xplat/index.ts index fed9fe30..a5c22f3f 100644 --- a/packages/ionic/src/schematics/xplat/index.ts +++ b/packages/ionic/src/schematics/xplat/index.ts @@ -1,5 +1,4 @@ import { chain, externalSchematic, noop } from '@angular-devkit/schematics'; -// import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; import { XplatHelpers } from '@nstudio/xplat'; import { prerun } from '@nstudio/xplat-utils'; import { XplatIonicHelpers } from '../../utils'; diff --git a/packages/nativescript-angular/src/schematics/application/_files/__dot__eslintrc.json b/packages/nativescript-angular/src/schematics/application/_files/__dot__eslintrc.json new file mode 100644 index 00000000..4cf5c6d1 --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/__dot__eslintrc.json @@ -0,0 +1,39 @@ +{ + "extends": "<%= pathOffset %>.eslintrc.json", + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "extends": [ + "plugin:@nrwl/nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "parserOptions": { + "project": ["apps/<%= directoryAppPath %>/tsconfig.*?.json"] + }, + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "<%= prefix %>", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "<%= prefix %>", + "style": "kebab-case" + } + ] + } + }, + { + "files": ["*.html"], + "extends": ["plugin:@nrwl/nx/angular-template"], + "rules": {} + } + ] +} diff --git a/packages/nativescript-angular/src/schematics/application/_files/jest.config.js b/packages/nativescript-angular/src/schematics/application/_files/jest.config.js new file mode 100644 index 00000000..7d62f71d --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/jest.config.js @@ -0,0 +1,21 @@ +module.exports = { + preset: '<%= pathOffset %>jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + globals: { + 'ts-jest': { + tsConfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + astTransformers: [ + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer', + ], + }, + }, + coverageDirectory: '<%= pathOffset %>coverage/apps/<%= directoryAppPath %>', + snapshotSerializers: [ + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', + 'jest-preset-angular/build/AngularSnapshotSerializer.js', + 'jest-preset-angular/build/HTMLCommentSerializer.js', + ], + displayName: '<%= utils.sanitize(appname) %>', +}; diff --git a/packages/nativescript-angular/src/schematics/application/_files/package.json b/packages/nativescript-angular/src/schematics/application/_files/package.json index d70c1b58..1c0c6ffa 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/package.json +++ b/packages/nativescript-angular/src/schematics/application/_files/package.json @@ -4,7 +4,7 @@ "license": "SEE LICENSE IN ", "version": "0.0.0", "scripts": { - "build.ios": "ns build ios --env.uglify --env.production --release", + "build.ios": "ns build ios --env.uglify --env.production --env.configuration null --env.projectName <%= name %> --release --for-device", "build.android": "ns build android --env.uglify --env.production --release", "postinstall": "node ./tools/xplat-postinstall.js" }, @@ -20,8 +20,8 @@ "@nativescript/angular": "file:<%= pathOffset %>node_modules/@nativescript/angular", "@nativescript/core": "file:<%= pathOffset %>node_modules/@nativescript/core", "@ngx-translate/core": "file:<%= pathOffset %>node_modules/@ngx-translate/core", - "@<%= npmScope %>/scss": "file:<%= pathOffset %>libs/scss", - "@<%= npmScope %>/nativescript-scss": "file:<%= pathOffset %>xplat/<%= xplatFolderName %>/scss", + "@<%= npmScope %>/xplat-scss": "file:<%= pathOffset %>libs/xplat/scss/src", + "@<%= npmScope %>/xplat-nativescript-scss": "file:<%= pathOffset %>libs/xplat/<%= xplatFolderName %>/scss/src", "nativescript-ngx-fonticon": "file:<%= pathOffset %>node_modules/nativescript-ngx-fonticon", "nativescript-theme-core": "file:<%= pathOffset %>node_modules/nativescript-theme-core", "rxjs": "file:<%= pathOffset %>node_modules/rxjs", diff --git a/packages/nativescript-angular/src/schematics/application/_files/references.d.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/references.d.ts__tmpl__ index 898989f3..05f388a7 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/references.d.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/application/_files/references.d.ts__tmpl__ @@ -1 +1 @@ -/// +/// \ No newline at end of file diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/app.android.scss b/packages/nativescript-angular/src/schematics/application/_files/src/app.android.scss index ac80eeea..8ee0b485 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/src/app.android.scss +++ b/packages/nativescript-angular/src/schematics/application/_files/src/app.android.scss @@ -1,3 +1,3 @@ -@import '~@<%= npmScope %>/nativescript-scss/index.android'; +@import '~@<%= npmScope %>/xplat-nativescript-scss/index.android'; @import 'scss/index'; @import 'scss/overrides.android'; diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/app.component.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/app.component.ts__tmpl__ index ddf678a2..eef47012 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/src/app.component.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/application/_files/src/app.component.ts__tmpl__ @@ -1,7 +1,6 @@ import { Component } from '@angular/core'; - -// libs -import { AppBaseComponent, AppService } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { AppService } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/core'; +import { AppBaseComponent } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/features'; @Component({ selector: '<%= prefix %>-root', diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/app.ios.scss b/packages/nativescript-angular/src/schematics/application/_files/src/app.ios.scss index 8216c565..946c4f39 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/src/app.ios.scss +++ b/packages/nativescript-angular/src/schematics/application/_files/src/app.ios.scss @@ -1,2 +1,2 @@ -@import '~@<%= npmScope %>/nativescript-scss/index.ios'; +@import '~@<%= npmScope %>/xplat-nativescript-scss/index.ios'; @import 'scss/index'; diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/core/core.module.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/core/core.module.ts__tmpl__ index a15ded9d..5362b693 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/src/core/core.module.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/application/_files/src/core/core.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; // libs -import { <%= utils.classify(prefix) %>CoreModule } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { <%= utils.classify(prefix) %>CoreModule } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/core'; @NgModule({ imports: [<%= utils.classify(prefix) %>CoreModule] diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.base.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.base.ts__tmpl__ new file mode 100644 index 00000000..0babeafe --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.base.ts__tmpl__ @@ -0,0 +1,15 @@ +import { IEnvironment } from '@<%= npmScope %>/xplat/core'; +import { deepMerge } from '@<%= npmScope %>/xplat/utils'; + +export const environmentBase = function (baseWorkspaceEnv: IEnvironment, appEnvironmentCustom: IEnvironment = {}) { + // base app environment + customizations + const appEnvironment = deepMerge( + { + production: baseWorkspaceEnv.production, + // shared app level customizations here... + }, + appEnvironmentCustom + ); + // base workspace environment + target app environment + return deepMerge(baseWorkspaceEnv, appEnvironment); +}; diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.dev.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.dev.ts__tmpl__ new file mode 100644 index 00000000..6d98e8b1 --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.dev.ts__tmpl__ @@ -0,0 +1,7 @@ +import { environmentBase } from './environment.base'; +import { IEnvironment } from '@<%= npmScope %>/xplat/core'; +import { environmentDev } from '@<%= npmScope %>/xplat/environments'; + +export const environment: IEnvironment = environmentBase(environmentDev, { + // app level customizations here... +}); \ No newline at end of file diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.prod.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.prod.ts__tmpl__ new file mode 100644 index 00000000..4c4655fa --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/src/environments/environment.prod.ts__tmpl__ @@ -0,0 +1,7 @@ +import { environmentBase } from './environment.base'; +import { IEnvironment } from '@<%= npmScope %>/xplat/core'; +import { environmentProd } from '@<%= npmScope %>/xplat/environments'; + +export const environment: IEnvironment = environmentBase(environmentProd, { + // app level customizations here... +}); \ No newline at end of file diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/features/shared/shared.module.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/features/shared/shared.module.ts__tmpl__ index 7c17ac1f..e670323a 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/src/features/shared/shared.module.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/application/_files/src/features/shared/shared.module.ts__tmpl__ @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; // xplat -import { UIModule } from '@<%= npmScope %>/<%= xplatFolderName %>'; +import { UIModule } from '@<%= npmScope %>/xplat/<%= xplatFolderName %>/features'; const MODULES = [UIModule]; diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/main.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/main.ts__tmpl__ index f5fdd055..dca2b9c2 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/src/main.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/application/_files/src/main.ts__tmpl__ @@ -1,6 +1,6 @@ import { platformNativeScriptDynamic } from '@nativescript/angular'; import { enableProdMode } from '@angular/core'; -import { environment } from '@<%= npmScope %>/core'; +import { environment } from '@<%= npmScope %>/xplat/core'; import { AppModule } from './app.module'; if (environment.production) { diff --git a/packages/nativescript-angular/src/schematics/application/_files/src/test-setup.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_files/src/test-setup.ts__tmpl__ new file mode 100644 index 00000000..8d88704e --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/src/test-setup.ts__tmpl__ @@ -0,0 +1 @@ +import 'jest-preset-angular'; diff --git a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.app.json b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.app.json new file mode 100644 index 00000000..37af5992 --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "<%= pathOffset %>dist/out-tsc", + "types": [] + }, + "files": [ + "./references.d.ts", + "./src/main.ts", + "./src/environments/environment.dev.ts" + ] +} diff --git a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.editor.json b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.editor.json new file mode 100644 index 00000000..20c4afdb --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.editor.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "include": ["**/*.ts"], + "compilerOptions": { + "types": ["jest", "node"] + } +} diff --git a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.env.json b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.env.json deleted file mode 100644 index 67d1ec18..00000000 --- a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.env.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["<%= pathOffset %>libs/core/environments/*.ts"] -} diff --git a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.json b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.json index 28cfe0c9..590f3493 100644 --- a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.json +++ b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.json @@ -1,33 +1,16 @@ { - "compilerOptions": { - "module": "ESNext", - "target": "es2017", - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "moduleResolution": "node", - "noEmitHelpers": true, - "noEmitOnError": true, - "skipLibCheck": true, - "lib": ["es2018", "es2017", "dom", "webworker", "es6"], - "baseUrl": ".", - "paths": { - "~/*": ["src/*"], - "@<%= npmScope %>/*": ["<%= pathOffset %>libs/*"], - "@<%= npmScope %>/nativescript": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/index.ts" - ], - "@<%= npmScope %>/nativescript/*": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/*" - ], - "*": ["./node_modules/*"] + "extends": "<%= pathOffset %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./tsconfig.editor.json" } - }, - "files": ["./references.d.ts", "./src/main.ts"], - "include": [ - "<%= pathOffset %>xplat/**/*.{ios,android}.ts", - "<%= pathOffset %>xplat/<%= xplatFolderName %>/workers/**/*.worker.ts" - ], - "exclude": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/plugins/**/node_modules/**" ] } diff --git a/packages/nativescript-angular/src/schematics/application/_files/tsconfig.spec.json b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.spec.json new file mode 100644 index 00000000..545b78c4 --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "<%= pathOffset %>dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/packages/nativescript-angular/src/schematics/application/_files/webpack.config.js b/packages/nativescript-angular/src/schematics/application/_files/webpack.config.js new file mode 100644 index 00000000..dbd246ac --- /dev/null +++ b/packages/nativescript-angular/src/schematics/application/_files/webpack.config.js @@ -0,0 +1,479 @@ +const { join, relative, resolve, sep, dirname } = require('path'); +const fs = require('fs'); + +const webpack = require('webpack'); +const nsWebpack = require('@nativescript/webpack'); +const nativescriptTarget = require('@nativescript/webpack/nativescript-target'); +const { + nsSupportHmrNg +} = require('@nativescript/webpack/transformers/ns-support-hmr-ng'); +const { nsTransformNativeClassesNg } = require("@nativescript/webpack/transformers/ns-transform-native-classes-ng"); +const { + parseWorkspaceConfig, hasConfigurations +} = require('@nativescript/webpack/helpers/angular-config-parser'); +const { + getMainModulePath +} = require('@nativescript/webpack/utils/ast-utils'); +const { getNoEmitOnErrorFromTSConfig, getCompilerOptionsFromTSConfig } = require("@nativescript/webpack/utils/tsconfig-utils"); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); +const { + NativeScriptWorkerPlugin +} = require('nativescript-worker-loader/NativeScriptWorkerPlugin'); +const TerserPlugin = require('terser-webpack-plugin'); +const { + getAngularCompilerPlugin +} = require('@nativescript/webpack/plugins/NativeScriptAngularCompilerPlugin'); +const hashSalt = Date.now().toString(); + +module.exports = env => { + // Add your custom Activities, Services and other Android app components here. + const appComponents = [ + "@nativescript/core/ui/frame", "@nativescript/core/ui/frame/activity" + ]; + + const platform = env && ((env.android && 'android') || (env.ios && 'ios')); + if (!platform) { + throw new Error('You need to provide a target platform!'); + } + + const AngularCompilerPlugin = getAngularCompilerPlugin(platform); + const projectRoot = __dirname; + + // Default destination inside platforms//... + const dist = resolve( + projectRoot, + nsWebpack.getAppPath(platform, projectRoot) + ); + + const { + // The 'appPath' and 'appResourcesPath' values are fetched from + // the nsconfig.json configuration file + // when bundling with `tns run android|ios --bundle`. + appPath = 'src', + appResourcesPath = 'App_Resources', + + // You can provide the following flags when running 'tns run android|ios' + snapshot, // --env.snapshot, + production, // --env.production + configuration, // --env.configuration (consistent with angular cli usage) + projectName, // --env.projectName (drive configuration through angular projects) + uglify, // --env.uglify + report, // --env.report + sourceMap, // --env.sourceMap + hiddenSourceMap, // --env.hiddenSourceMap + hmr, // --env.hmr, + unitTesting, // --env.unitTesting + testing, // --env.testing + verbose, // --env.verbose + ci, // --env.ci + snapshotInDocker, // --env.snapshotInDocker + skipSnapshotTools, // --env.skipSnapshotTools + compileSnapshot // --env.compileSnapshot + } = env; + + const { fileReplacements, copyReplacements } = parseWorkspaceConfig(platform, configuration, projectName); + + const useLibs = compileSnapshot; + const isAnySourceMapEnabled = !!sourceMap || !!hiddenSourceMap; + const externals = nsWebpack.getConvertedExternals(env.externals); + const appFullPath = resolve(projectRoot, appPath); + const appResourcesFullPath = resolve(projectRoot, appResourcesPath); + let tsConfigName = 'tsconfig.json'; + let tsConfigPath = resolve(projectRoot, tsConfigName); + + const tsConfigAppName = 'tsconfig.app.json'; + const tsConfigAppPath = resolve(projectRoot, tsConfigAppName); + let isXplatWorkspace = false; + if (fs.existsSync(tsConfigAppPath)) { + // support workspace style configurations + isXplatWorkspace = true; + tsConfigName = tsConfigAppName; + tsConfigPath = tsConfigAppPath; + } + + if (isXplatWorkspace) { + // add environment to tsconfig to avoid warning + const hasConfig = configuration !== 'undefined' && !!configuration; + // default to dev environment + let envConfig = hasConfig ? configuration : 'dev'; + const envFileBasePath = `src/environments/environment.`; + const envConfigPath = `${envFileBasePath}${envConfig}.ts`; + const appEnvConfigPath = resolve(projectRoot, envConfigPath); + if (fs.existsSync(appEnvConfigPath)) { + if (!hasConfig) { + // ensure default environment is handled + fileReplacements[resolve(projectRoot, '<%= pathOffset %>', `libs/xplat/core/src/lib/environments/environment.ts`)] = appEnvConfigPath; + } + const tsConfigData = require(tsConfigPath); + if (!tsConfigData.files) { + tsConfigData.files = []; + } + const envFilePath = `./${envConfigPath}`; + const envFileIndex = tsConfigData.files.findIndex((f) => f.indexOf(envFileBasePath) > -1 && f !== envFilePath); + if (envFileIndex > -1) { + // remove any existing environment entries + tsConfigData.files.splice(envFileIndex, 1); + } + if (!tsConfigData.files.includes(envFilePath)) { + // add environment + tsConfigData.files.push(envFilePath); + fs.writeFileSync(tsConfigPath, JSON.stringify(tsConfigData, null, 2)); + } + } + } + + const entryModule = `${nsWebpack.getEntryModule(appFullPath, platform)}.ts`; + const entryPath = `.${sep}${entryModule}`; + const entries = { bundle: entryPath }; + const areCoreModulesExternal = + Array.isArray(env.externals) && + env.externals.some(e => e.indexOf('@nativescript') > -1); + if (platform === 'ios' && !areCoreModulesExternal && !testing) { + entries['tns_modules/inspector_modules'] = + 'inspector_modules'; + } + + const compilerOptions = getCompilerOptionsFromTSConfig(tsConfigPath); + nsWebpack.processTsPathsForScopedModules({ compilerOptions }); + nsWebpack.processTsPathsForScopedAngular({ compilerOptions }); + + const ngCompilerTransformers = [nsTransformNativeClassesNg]; + const additionalLazyModuleResources = []; + + const copyIgnore = { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] }; + const copyTargets = [ + { from: 'assets/**', noErrorOnMissing: true, globOptions: { dot: false, ...copyIgnore } }, + { from: 'fonts/**', noErrorOnMissing: true, globOptions: { dot: false, ...copyIgnore } }, + ...copyReplacements + ]; + + if (!production) { + // for development purposes only + // for example, include mock json folder + // copyTargets.push({ from: 'tools/mockdata', to: 'assets/mockdata' }); + + if (hmr) { + ngCompilerTransformers.push(nsSupportHmrNg); + } + } + + // when "@angular/core" is external, it's not included in the bundles. In this way, it will be used + // directly from node_modules and the Angular modules loader won't be able to resolve the lazy routes + // fixes https://github.com/NativeScript/nativescript-cli/issues/4024 + if (env.externals && env.externals.indexOf('@angular/core') > -1) { + const appModuleRelativePath = getMainModulePath( + resolve(appFullPath, entryModule), + tsConfigName + ); + if (appModuleRelativePath) { + const appModuleFolderPath = dirname( + resolve(appFullPath, appModuleRelativePath) + ); + // include the new lazy loader path in the allowed ones + additionalLazyModuleResources.push(appModuleFolderPath); + } + } + + const ngCompilerPlugin = new AngularCompilerPlugin({ + hostReplacementPaths: nsWebpack.getResolver([platform, 'tns']), + platformTransformers: ngCompilerTransformers.map(t => + t(() => ngCompilerPlugin, resolve(appFullPath, entryModule), projectRoot) + ), + mainPath: join(appFullPath, entryModule), + tsConfigPath, + skipCodeGeneration: false, + sourceMap: !!isAnySourceMapEnabled, + additionalLazyModuleResources: additionalLazyModuleResources, + compilerOptions: { paths: compilerOptions.paths } + }); + + let sourceMapFilename = nsWebpack.getSourceMapFilename( + hiddenSourceMap, + __dirname, + dist + ); + + const itemsToClean = [`${dist}/**/*`]; + if (platform === 'android') { + itemsToClean.push( + `${join( + projectRoot, + 'platforms', + 'android', + 'app', + 'src', + 'main', + 'assets', + 'snapshots' + )}` + ); + itemsToClean.push( + `${join( + projectRoot, + 'platforms', + 'android', + 'app', + 'build', + 'configurations', + 'nativescript-android-snapshot' + )}` + ); + } + + const noEmitOnErrorFromTSConfig = getNoEmitOnErrorFromTSConfig(tsConfigName); + + nsWebpack.processAppComponents(appComponents, platform); + const config = { + mode: production ? 'production' : 'development', + context: appFullPath, + externals, + watchOptions: { + ignored: [ + appResourcesFullPath, + // Don't watch hidden files + '**/.*' + ] + }, + target: nativescriptTarget, + entry: entries, + output: { + pathinfo: false, + path: dist, + sourceMapFilename, + libraryTarget: 'commonjs2', + filename: '[name].js', + globalObject: 'global', + hashSalt + }, + resolve: { + extensions: ['.ts', '.js', '.scss', '.css'], + // Resolve {N} system modules from @nativescript/core + modules: [ + resolve(__dirname, 'node_modules/@nativescript/core'), + resolve(__dirname, 'node_modules'), + 'node_modules/@nativescript/core', + 'node_modules' + ], + alias: { + '~/package.json': resolve(projectRoot, 'package.json'), + '~': appFullPath, + "tns-core-modules": "@nativescript/core", + "nativescript-angular": "@nativescript/angular", + ...fileReplacements + }, + symlinks: true + }, + resolveLoader: { + symlinks: false + }, + node: { + // Disable node shims that conflict with NativeScript + http: false, + timers: false, + setImmediate: false, + fs: 'empty', + __dirname: false + }, + devtool: hiddenSourceMap + ? 'hidden-source-map' + : sourceMap + ? 'inline-source-map' + : 'none', + optimization: { + runtimeChunk: 'single', + noEmitOnErrors: noEmitOnErrorFromTSConfig, + splitChunks: { + cacheGroups: { + vendor: { + name: 'vendor', + chunks: 'all', + test: (module, chunks) => { + const moduleName = module.nameForCondition + ? module.nameForCondition() + : ''; + return ( + /[\\/]node_modules[\\/]/.test(moduleName) || + appComponents.some(comp => comp === moduleName) + ); + }, + enforce: true + } + } + }, + minimize: !!uglify, + minimizer: [ + new TerserPlugin({ + parallel: true, + cache: !ci, + sourceMap: isAnySourceMapEnabled, + terserOptions: { + output: { + comments: false, + semicolons: !isAnySourceMapEnabled + }, + compress: { + // The Android SBG has problems parsing the output + // when these options are enabled + collapse_vars: platform !== 'android', + sequences: platform !== 'android', + // custom + drop_console: true, + drop_debugger: true, + ecma: 6, + keep_infinity: platform === 'android', // for Chrome/V8 + reduce_funcs: platform !== 'android', // for Chrome/V8 + global_defs: { + __UGLIFIED__: true + } + }, + // custom + ecma: 6, + safari10: platform !== 'android' + } + }) + ] + }, + module: { + rules: [ + { + include: join(appFullPath, entryPath), + use: [ + // Require all Android app components + platform === 'android' && { + loader: '@nativescript/webpack/helpers/android-app-components-loader', + options: { modules: appComponents } + }, + + { + loader: '@nativescript/webpack/bundle-config-loader', + options: { + angular: true, + loadCss: !snapshot, // load the application css if in debug mode + unitTesting, + appFullPath, + projectRoot, + ignoredFiles: nsWebpack.getUserDefinedEntries(entries, platform) + } + } + ].filter(loader => !!loader) + }, + + { test: /\.html$|\.xml$/, use: 'raw-loader' }, + + { + test: /[\/|\\]app\.css$/, + use: [ + '@nativescript/webpack/helpers/style-hot-loader', + { + loader: "@nativescript/webpack/helpers/css2json-loader", + options: { useForImports: true } + }, + ], + }, + { + test: /[\/|\\]app\.scss$/, + use: [ + '@nativescript/webpack/helpers/style-hot-loader', + { + loader: "@nativescript/webpack/helpers/css2json-loader", + options: { useForImports: true } + }, + 'sass-loader', + ], + }, + + // Angular components reference css files and their imports using raw-loader + { test: /\.css$/, exclude: /[\/|\\]app\.css$/, use: 'raw-loader' }, + { + test: /\.scss$/, + exclude: /[\/|\\]app\.scss$/, + use: ['raw-loader', 'resolve-url-loader', 'sass-loader'] + }, + + { + test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, + use: [ + '@nativescript/webpack/helpers/moduleid-compat-loader', + '@nativescript/webpack/helpers/lazy-ngmodule-hot-loader', + '@ngtools/webpack' + ] + }, + + // Mark files inside `@angular/core` as using SystemJS style dynamic imports. + // Removing this will cause deprecation warnings to appear. + { + test: /[\/\\]@angular[\/\\]core[\/\\].+\.js$/, + parser: { system: true } + } + ] + }, + plugins: [ + // Define useful constants like TNS_WEBPACK + new webpack.DefinePlugin({ + 'global.TNS_WEBPACK': 'true', + 'global.isAndroid': platform === 'android', + 'global.isIOS': platform === 'ios', + process: 'global.process' + }), + // Remove all files from the out dir. + new CleanWebpackPlugin({ + cleanOnceBeforeBuildPatterns: itemsToClean, + verbose: !!verbose + }), + // Copy assets + new CopyWebpackPlugin({ + patterns: copyTargets, + }), + new nsWebpack.GenerateNativeScriptEntryPointsPlugin('bundle'), + // For instructions on how to set up workers with webpack + // check out https://github.com/nativescript/worker-loader + new NativeScriptWorkerPlugin(), + ngCompilerPlugin, + // Does IPC communication with the {N} CLI to notify events when running in watch mode. + new nsWebpack.WatchStateLoggerPlugin() + ] + }; + + if (report) { + // Generate report files for bundles content + config.plugins.push( + new BundleAnalyzerPlugin({ + analyzerMode: 'static', + openAnalyzer: false, + generateStatsFile: true, + reportFilename: resolve(projectRoot, 'report', `report.html`), + statsFilename: resolve(projectRoot, 'report', `stats.json`) + }) + ); + } + + if (snapshot) { + config.plugins.push( + new nsWebpack.NativeScriptSnapshotPlugin({ + chunk: 'vendor', + angular: true, + requireModules: [ + 'reflect-metadata', + '@angular/platform-browser', + '@angular/core', + '@angular/common', + '@angular/router', + '@nativescript/angular' + ], + projectRoot, + webpackConfig: config, + snapshotInDocker, + skipSnapshotTools, + useLibs + }) + ); + } + + if (!production && hmr) { + config.plugins.push(new webpack.HotModuleReplacementPlugin()); + } + + return config; +}; \ No newline at end of file diff --git a/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.html b/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.html index 43e4f051..3ac89431 100644 --- a/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.html +++ b/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.html @@ -3,12 +3,20 @@ - + <% } else { %> - + -<% } %> \ No newline at end of file +<% } %> diff --git a/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.ts__tmpl__ b/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.ts__tmpl__ index 025b856c..6133a9b7 100644 --- a/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/application/_routing_files/src/features/home/components/home.component.ts__tmpl__ @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; <% if (setupSandbox) { %>import { RouterExtensions } from '@nativescript/angular';<% } %> -import { BaseComponent } from '@<%= npmScope %>/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Component({ moduleId: module.id, diff --git a/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/item-detail.component.html b/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/item-detail.component.html index 3bbd174c..92616d2a 100644 --- a/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/item-detail.component.html +++ b/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/item-detail.component.html @@ -1,8 +1,8 @@ - - - - - + + + + + diff --git a/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/items.component.html b/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/items.component.html index f679310b..ea57542a 100644 --- a/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/items.component.html +++ b/packages/nativescript-angular/src/schematics/application/_skipxplat_files/src/app/item/items.component.html @@ -10,8 +10,7 @@ The ActionBar is the NativeScript common abstraction over the Android ActionBar and iOS NavigationBar. http://docs.nativescript.org/ui/action-bar --> - - + - - - - - + + + + + diff --git a/packages/nativescript-angular/src/schematics/application/index.spec.ts b/packages/nativescript-angular/src/schematics/application/index.spec.ts index 1787f58a..906483de 100644 --- a/packages/nativescript-angular/src/schematics/application/index.spec.ts +++ b/packages/nativescript-angular/src/schematics/application/index.spec.ts @@ -48,7 +48,7 @@ describe('app', () => { // source dir expect( - files.indexOf('/xplat/nativescript/utils/font-awesome.ts') + files.indexOf('/libs/xplat/nativescript/utils/src/lib/font-awesome.ts') ).toBeGreaterThanOrEqual(0); expect( files.indexOf('/apps/nativescript-foo/src/core/core.module.ts') @@ -88,8 +88,10 @@ describe('app', () => { expect(files.indexOf('/apps/nativescript-foo/src/package.json')).toBe(-1); // xplat file defaults - expect(tree.exists('/xplat/nativescript/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/web/index.ts')).toBeFalsy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeFalsy(); }); it('should create all files for app in directory', async () => { @@ -102,14 +104,6 @@ describe('app', () => { expect( tree.exists('/apps/frontend/nativescript-foo/package.json') ).toBeTruthy(); - const fileContent = getFileContent( - tree, - '/apps/frontend/nativescript-foo/tsconfig.json' - ); - // console.log('tsconfig:', fileContent) - expect( - fileContent.indexOf('../../../xplat/nativescript/*') - ).toBeGreaterThanOrEqual(0); }); it('should create all files for app in directory and ignore platform naming when directory is a platform', async () => { @@ -141,7 +135,7 @@ describe('app', () => { expect(appModule).toMatch( `import { ${stringUtils.classify(options.prefix)}CoreModule } from \'@${ options.npmScope - }/nativescript\'` + }/xplat/nativescript/core\'` ); }); @@ -174,7 +168,7 @@ describe('app', () => { expect(appModule).toMatch( `import { ${stringUtils.classify(options.prefix)}CoreModule } from \'@${ options.npmScope - }/nativescript-angular\'` + }/xplat/nativescript-angular/core\'` ); }); @@ -302,7 +296,9 @@ describe('app', () => { tree.exists('/apps/nativescript-foo/src/app/app.component.ts') ).toBeTruthy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeFalsy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeFalsy(); }); }); }); diff --git a/packages/nativescript-angular/src/schematics/application/index.ts b/packages/nativescript-angular/src/schematics/application/index.ts index 7c5f161b..261bfa1b 100644 --- a/packages/nativescript-angular/src/schematics/application/index.ts +++ b/packages/nativescript-angular/src/schematics/application/index.ts @@ -92,27 +92,6 @@ export default function (options: Schema) { { interactive: false } )(tree, context); }, - // adjust root tsconfig - (tree: Tree, context: SchematicContext) => { - return updateTsConfig(tree, (tsConfig: any) => { - if (tsConfig) { - if (!tsConfig.exclude) { - tsConfig.exclude = []; - } - const excludeNSApps = 'apps/nativescript-*'; - if (!tsConfig.exclude.includes(excludeNSApps)) { - tsConfig.exclude.push(excludeNSApps); - } - if (!tsConfig.includes) { - tsConfig.includes = []; - } - const platformFiles = 'xplat/**/*.{ios,android}.ts'; - if (!tsConfig.includes.includes(platformFiles)) { - tsConfig.includes.push(platformFiles); - } - } - }); - }, // add root package dependencies XplatNativeScriptAngularHelpers.updateRootDeps(options), XplatNativeScriptHelpers.updatePrettierIgnore(), @@ -146,11 +125,21 @@ export default function (options: Schema) { default: { builder: '@nrwl/workspace:run-commands', configurations: { + dev: { + fileReplacements: [ + { + replace: + 'libs/xplat/core/src/lib/environments/environment.ts', + with: `apps/${directory}${options.name}/src/environments/environment.dev.ts`, + }, + ], + }, production: { fileReplacements: [ { - replace: 'libs/core/environments/environment.ts', - with: 'libs/core/environments/environment.prod.ts', + replace: + 'libs/xplat/core/src/lib/environments/environment.ts', + with: `apps/${directory}${options.name}/src/environments/environment.prod.ts`, }, ], }, @@ -159,21 +148,15 @@ export default function (options: Schema) { ios: { builder: '@nrwl/workspace:run-commands', options: { - commands: [ - `ns debug ios --no-hmr --env.configuration={args.configuration} --env.projectName=${options.name}`, - ], + command: `ns debug ios --no-hmr --env.projectName=${options.name}`, cwd: `apps/${directory}${options.name}`, - parallel: false, }, }, android: { builder: '@nrwl/workspace:run-commands', options: { - commands: [ - `ns debug android --no-hmr --env.configuration={args.configuration} --env.projectName=${options.name}`, - ], + command: `ns debug android --no-hmr --env.projectName=${options.name}`, cwd: `apps/${directory}${options.name}`, - parallel: false, }, }, clean: { @@ -184,6 +167,25 @@ export default function (options: Schema) { parallel: false, }, }, + lint: { + builder: '@nrwl/linter:eslint', + options: { + lintFilePatterns: [ + `apps/${directory}${options.name}/**/*.ts`, + `apps/${directory}${options.name}/src/**/*.html`, + ], + }, + }, + test: { + builder: '@nrwl/jest:jest', + options: { + jestConfig: `apps/${directory}${options.name}/jest.config.js`, + tsConfig: `apps/${directory}${options.name}/tsconfig.spec.json`, + passWithNoTests: true, + setupFile: `apps/${directory}${options.name}/src/test-setup.ts`, + }, + outputs: [`coverage/apps/${directory}${options.name}/`], + }, }, }; return updateWorkspace({ projects })(tree, context); @@ -203,7 +205,7 @@ export default function (options: Schema) { ` `, `nx run ${options.name}:android`, ` `, - `You can also clean/reset the app anytime with:`, + `You can also:`, ` `, `nx run ${options.name}:clean`, ], @@ -227,6 +229,7 @@ function addAppFiles( ...(options as any), ...getDefaultTemplateOptions(), appname, + directoryAppPath: `${directory}${appPath}`, pathOffset: directory ? '../../../' : '../../', angularVersion: angularVersion, nsNgScopedVersion: nsNgScopedVersion, diff --git a/packages/nativescript-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ b/packages/nativescript-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ index 26e37dd3..36a6f3ff 100644 --- a/packages/nativescript-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; -<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/core';<% -} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/features';<% } %> +<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/xplat/core';<% +} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/xplat/features';<% } %> @Component({ moduleId: module.id, diff --git a/packages/nativescript-angular/src/schematics/feature/index.ts b/packages/nativescript-angular/src/schematics/feature/index.ts index 422ca410..3568a3d2 100644 --- a/packages/nativescript-angular/src/schematics/feature/index.ts +++ b/packages/nativescript-angular/src/schematics/feature/index.ts @@ -90,7 +90,7 @@ export default function (options: XplatFeatureHelpers.Schema) { ); return XplatFeatureHelpers.adjustBarrelIndex( options, - `xplat/${xplatFolderName}/features/index.ts` + `libs/xplat/${xplatFolderName}/features/src/lib/index.ts` )(tree, context); }); // add starting component unless onlyModule diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/__dot__xplatframework b/packages/nativescript-angular/src/schematics/xplat/_files/__dot__xplatframework deleted file mode 100644 index a7edb09b..00000000 --- a/packages/nativescript-angular/src/schematics/xplat/_files/__dot__xplatframework +++ /dev/null @@ -1 +0,0 @@ -angular \ No newline at end of file diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html b/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html deleted file mode 100644 index 423db52e..00000000 --- a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files/index.ts__tmpl__ deleted file mode 100644 index af127e80..00000000 --- a/packages/nativescript-angular/src/schematics/xplat/_files/index.ts__tmpl__ +++ /dev/null @@ -1,3 +0,0 @@ -export * from './core'; -export * from './features'; -export * from './utils'; diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/package.json b/packages/nativescript-angular/src/schematics/xplat/_files/scss/package.json deleted file mode 100644 index e4c74585..00000000 --- a/packages/nativescript-angular/src/schematics/xplat/_files/scss/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/nativescript-scss", - "version": "1.0.0" -} diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ similarity index 90% rename from packages/nativescript-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ index 710632a9..4ce54fd5 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ @@ -4,12 +4,12 @@ import { NgModule, Optional, SkipSelf } from '@angular/core'; import { NativeScriptModule, NativeScriptHttpClientModule } from '@nativescript/angular'; import { Device } from '@nativescript/core'; import { TNSFontIconModule, USE_STORE } from 'nativescript-ngx-fonticon'; -import { fontAwesomeIcons } from '../utils'; +import { fontAwesomeIcons } from '@<%= npmScope %>/xplat/nativescript/utils'; // libs import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { CoreModule, PlatformLanguageToken, PlatformWindowToken } from '@<%= npmScope %>/core'; -import { throwIfAlreadyLoaded } from '@<%= npmScope %>/utils'; +import { CoreModule, PlatformLanguageToken, PlatformWindowToken } from '@<%= npmScope %>/xplat/core'; +import { throwIfAlreadyLoaded } from '@<%= npmScope %>/xplat/utils'; // app import { TNSWindowService } from './services/tns-window.service'; diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/app.service.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/app.service.ts__tmpl__ similarity index 91% rename from packages/nativescript-angular/src/schematics/xplat/_files/core/services/app.service.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_core/services/app.service.ts__tmpl__ index 8f271d06..0df3081c 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/app.service.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/app.service.ts__tmpl__ @@ -2,13 +2,12 @@ import { Injectable, Inject, NgZone } from '@angular/core'; // nativescript -import { Device, isIOS, Application } from '@nativescript/core'; -import { DeviceOrientation } from '@nativescript/core/ui/enums'; +import { Device, isIOS, Application, Enums } from '@nativescript/core'; // libs import { TranslateService } from '@ngx-translate/core'; import { Subject } from 'rxjs'; -import { LogService, PlatformLanguageToken } from '@<%= npmScope %>/core'; +import { LogService, PlatformLanguageToken } from '@<%= npmScope %>/xplat/core'; /** * This service can be used for low level app wiring @@ -108,7 +107,7 @@ export class AppService { // set initial orientation let orientation = getOrientation(); - this.orientation = orientation ? orientation : DeviceOrientation.portrait; + this.orientation = orientation ? orientation : Enums.DeviceOrientation.portrait; this._log.debug('current orientation:', this.orientation); // handle orientation changes @@ -134,12 +133,12 @@ const getOrientation = function() { deviceOrientation === UIDeviceOrientation.LandscapeLeft || deviceOrientation === UIDeviceOrientation.LandscapeRight ) { - return DeviceOrientation.landscape; + return Enums.DeviceOrientation.landscape; } else if ( deviceOrientation === UIDeviceOrientation.Portrait || deviceOrientation == UIDeviceOrientation.PortraitUpsideDown ) { - return DeviceOrientation.portrait; + return Enums.DeviceOrientation.portrait; } else { return ''; } @@ -149,12 +148,12 @@ const getOrientation = function() { .getConfiguration().orientation; switch (orientation) { case 1 /* ORIENTATION_PORTRAIT (0x00000001) */: - return DeviceOrientation.portrait; + return Enums.DeviceOrientation.portrait; case 2 /* ORIENTATION_LANDSCAPE (0x00000002) */: - return DeviceOrientation.landscape; + return Enums.DeviceOrientation.landscape; default: /* ORIENTATION_UNDEFINED (0x00000000) */ - return DeviceOrientation.portrait; + return Enums.DeviceOrientation.portrait; } } }; diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/core/services/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_core/services/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/tns-translate.loader.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/tns-translate.loader.ts__tmpl__ similarity index 99% rename from packages/nativescript-angular/src/schematics/xplat/_files/core/services/tns-translate.loader.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_core/services/tns-translate.loader.ts__tmpl__ index 64ffa1e0..09d53c31 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/tns-translate.loader.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/tns-translate.loader.ts__tmpl__ @@ -1,7 +1,7 @@ import { Observable, Observer } from 'rxjs'; // nativescript -import { knownFolders, File, Folder, path } from '@nativescript/core/file-system'; +import { knownFolders, File, Folder, path } from '@nativescript/core'; export class TNSTranslateLoader { constructor(private _path: string) {} diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/tns-window.service.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/tns-window.service.ts__tmpl__ similarity index 75% rename from packages/nativescript-angular/src/schematics/xplat/_files/core/services/tns-window.service.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_core/services/tns-window.service.ts__tmpl__ index d0d0c950..87f620c4 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/core/services/tns-window.service.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_core/services/tns-window.service.ts__tmpl__ @@ -1,41 +1,35 @@ import { Injectable } from '@angular/core'; - -// nativescript -import * as dialogs from '@nativescript/core/ui/dialogs'; -import { Device, isIOS } from '@nativescript/core'; +import { Device, isIOS, Dialogs, AlertOptions, ConfirmOptions } from '@nativescript/core'; import * as timer from '@nativescript/core/timer'; -// app -import { isString } from '@<%= npmScope %>/utils'; - @Injectable({ providedIn: 'root' }) export class TNSWindowService { private _dialogOpened = false; - public get navigator(): any { + get navigator(): any { return { language: Device.language, userAgent: 'nativescript' }; } - public get location(): any { + get location(): any { return { host: 'nativescript' }; } - public alert(msg: string): Promise { + alert(msg: string): Promise { return new Promise(resolve => { if (!this._dialogOpened && msg) { this._dialogOpened = true; if (typeof msg === 'string') { - const options: dialogs.AlertOptions = { + const options: AlertOptions = { message: msg, okButtonText: 'Ok' }; - dialogs.alert(options).then(ok => { + Dialogs.alert(options).then(ok => { this._dialogOpened = false; resolve(); }); @@ -44,18 +38,18 @@ export class TNSWindowService { }); } - public confirm(message: string): Promise { + confirm(message: string): Promise { return new Promise((resolve, reject) => { if (!this._dialogOpened) { this._dialogOpened = true; - const options: dialogs.ConfirmOptions = { + const options: ConfirmOptions = { title: 'Confirm', message, okButtonText: 'Ok', cancelButtonText: 'Cancel' }; - dialogs.confirm(options).then(ok => { + Dialogs.confirm(options).then(ok => { this._dialogOpened = false; if (ok) { resolve(); diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/base/app.base-component.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/base/app.base-component.ts__tmpl__ similarity index 60% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/ui/base/app.base-component.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/ui/base/app.base-component.ts__tmpl__ index afcde6f8..53e67cf6 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/base/app.base-component.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/base/app.base-component.ts__tmpl__ @@ -1,8 +1,8 @@ import { Directive } from '@angular/core'; // libs -import { BaseComponent } from '@<%= npmScope %>/core'; -import { AppService } from '@<%= npmScope %>/nativescript/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; +import { AppService } from '@<%= npmScope %>/xplat/nativescript/core'; @Directive() export abstract class AppBaseComponent extends BaseComponent { diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/base/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/base/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/ui/base/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/ui/base/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html new file mode 100644 index 00000000..e9db7787 --- /dev/null +++ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html @@ -0,0 +1,9 @@ + + + + + diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ similarity index 82% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ index e77f10ae..70bf1d53 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; import { RouterExtensions } from '@nativescript/angular'; -import { HeaderBaseComponent } from '@<%= npmScope %>/features'; +import { HeaderBaseComponent } from '@<%= npmScope %>/xplat/features'; @Component({ moduleId: module.id, diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/ui/components/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/ui/components/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/ui/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ similarity index 90% rename from packages/nativescript-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ index 14575c77..b71d9296 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ +++ b/packages/nativescript-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ @@ -3,7 +3,7 @@ import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptFormsModule, NativeScriptRouterModule } from '@nativescript/angular'; import { TNSFontIconModule } from 'nativescript-ngx-fonticon'; -import { UISharedModule } from '@<%= npmScope %>/features'; +import { UISharedModule } from '@<%= npmScope %>/xplat/features'; import { UI_COMPONENTS } from './components'; const MODULES = [ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/plugins/README.md b/packages/nativescript-angular/src/schematics/xplat/_files_plugins/README.md similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/plugins/README.md rename to packages/nativescript-angular/src/schematics/xplat/_files_plugins/README.md diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_common.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_common.scss similarity index 97% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_common.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_common.scss index 5adc3496..c308bf6b 100644 --- a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_common.scss +++ b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_common.scss @@ -1,5 +1,5 @@ // shared across all platforms and apps -@import '~@<%= npmScope %>/scss/index'; +@import '~@<%= npmScope %>/xplat-scss/index'; /** * The following are common styles for both iOS and Android (used with any {N} app targets) diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_fonts.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_fonts.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_fonts.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_fonts.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_index.android.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_index.android.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_index.android.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_index.android.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_index.ios.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_index.ios.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_index.ios.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_index.ios.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_mixins.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_mixins.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_mixins.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_mixins.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_overrides.android.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_overrides.android.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_overrides.android.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_overrides.android.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_overrides.ios.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_overrides.ios.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_overrides.ios.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_overrides.ios.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_tags.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_tags.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_tags.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_tags.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/scss/_variables.scss b/packages/nativescript-angular/src/schematics/xplat/_files_scss/_variables.scss similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/scss/_variables.scss rename to packages/nativescript-angular/src/schematics/xplat/_files_scss/_variables.scss diff --git a/packages/nativescript-angular/src/schematics/xplat/_files_scss/package.json b/packages/nativescript-angular/src/schematics/xplat/_files_scss/package.json new file mode 100644 index 00000000..ace1b20f --- /dev/null +++ b/packages/nativescript-angular/src/schematics/xplat/_files_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-nativescript-scss", + "version": "1.0.0" +} diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/utils/font-awesome.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_utils/font-awesome.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/utils/font-awesome.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_utils/font-awesome.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/utils/icons.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_utils/icons.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/utils/icons.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_utils/icons.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/_files/utils/index.ts__tmpl__ b/packages/nativescript-angular/src/schematics/xplat/_files_utils/index.ts__tmpl__ similarity index 100% rename from packages/nativescript-angular/src/schematics/xplat/_files/utils/index.ts__tmpl__ rename to packages/nativescript-angular/src/schematics/xplat/_files_utils/index.ts__tmpl__ diff --git a/packages/nativescript-angular/src/schematics/xplat/index.spec.ts b/packages/nativescript-angular/src/schematics/xplat/index.spec.ts index 0316044d..62531f1a 100644 --- a/packages/nativescript-angular/src/schematics/xplat/index.spec.ts +++ b/packages/nativescript-angular/src/schematics/xplat/index.spec.ts @@ -28,12 +28,16 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); // const files = tree.files; - expect(tree.exists('/libs/core/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/web/index.ts')).toBeFalsy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/nativescript/core/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/core/src/lib/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/src/lib/index.ts')).toBeFalsy(); expect( - tree.exists('/xplat/nativescript/features/ui/index.ts') + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/features/src/lib/index.ts') + ).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/features/src/lib/ui/index.ts') ).toBeTruthy(); const packagePath = '/package.json'; const packageFile = jsonParse(getFileContent(tree, packagePath)); @@ -52,15 +56,19 @@ describe('xplat schematic', () => { let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect( - fileContent.compilerOptions.paths['@testing/nativescript'] + fileContent.compilerOptions.paths['@testing/xplat/nativescript/core'] ).toBeTruthy(); expect( - fileContent.compilerOptions.paths['@testing/nativescript/*'] + fileContent.compilerOptions.paths['@testing/xplat/nativescript/features'] ).toBeTruthy(); - filePath = '/xplat/nativescript/.xplatframework'; - fileContent = getFileContent(tree, filePath); + + filePath = '/libs/xplat/nativescript/core/tsconfig.json'; + fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); - expect(fileContent.indexOf('angular')).toBeGreaterThanOrEqual(0); + expect( + fileContent.files.includes('../../../../references.d.ts') + ).toBeTruthy(); + expect(fileContent.include.includes('**/*.ts')).toBeTruthy(); }); it('should create default xplat support with framework suffix when not specifying default', async () => { @@ -70,17 +78,18 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); // console.log(tree.files); - expect(tree.exists('/libs/core/index.ts')).toBeTruthy(); - expect(tree.exists('/libs/scss/_index.scss')).toBeTruthy(); - expect(tree.exists('/xplat/nativescript-angular/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/core/src/lib/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/scss/src/_index.scss')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript-angular/core/src/lib/index.ts') + ).toBeTruthy(); const filePath = getRootTsConfigPath(); const fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect( - fileContent.compilerOptions.paths['@testing/nativescript-angular'] - ).toBeTruthy(); - expect( - fileContent.compilerOptions.paths['@testing/nativescript-angular/*'] + fileContent.compilerOptions.paths[ + '@testing/xplat/nativescript-angular/core' + ] ).toBeTruthy(); }); @@ -91,15 +100,14 @@ describe('xplat schematic', () => { options.framework = 'angular'; let tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeTruthy(); let filePath = getRootTsConfigPath(); let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect( - fileContent.compilerOptions.paths['@testing/nativescript'] - ).toBeTruthy(); - expect( - fileContent.compilerOptions.paths['@testing/nativescript/*'] + fileContent.compilerOptions.paths['@testing/xplat/nativescript/core'] ).toBeTruthy(); await expect(runSchematic('xplat', defaultOptions, tree)).rejects.toThrow( diff --git a/packages/nativescript-angular/src/schematics/xplat/index.ts b/packages/nativescript-angular/src/schematics/xplat/index.ts index 485f9711..8d9609dc 100644 --- a/packages/nativescript-angular/src/schematics/xplat/index.ts +++ b/packages/nativescript-angular/src/schematics/xplat/index.ts @@ -5,15 +5,16 @@ import { SchematicContext, noop, } from '@angular-devkit/schematics'; -import { XplatHelpers } from '@nstudio/xplat'; -import { prerun } from '@nstudio/xplat-utils'; +import { updateTsConfig, XplatHelpers } from '@nstudio/xplat'; +import { getNpmScope, prerun } from '@nstudio/xplat-utils'; import { XplatAngularHelpers } from '@nstudio/angular'; import { XplatNativeScriptAngularHelpers } from '../../utils/xplat'; +import { XplatNativeScriptHelpers } from '@nstudio/nativescript'; export default function (options: XplatHelpers.Schema) { return chain([ prerun(options, true), - XplatNativeScriptAngularHelpers.addReferences(), + XplatNativeScriptHelpers.addReferences(), (tree: Tree, context: SchematicContext) => externalSchematic( '@nstudio/nativescript', @@ -24,6 +25,58 @@ export default function (options: XplatHelpers.Schema) { }, { interactive: false } ), + XplatHelpers.generateLib(options, 'core', 'xplat/nativescript', 'node'), + XplatHelpers.cleanupLib(options, 'core', 'xplat/nativescript'), + XplatHelpers.generateLib(options, 'features', 'xplat/nativescript', 'node'), + XplatHelpers.cleanupLib(options, 'features', 'xplat/nativescript'), + XplatHelpers.generateLib(options, 'scss', 'xplat/nativescript', 'node'), + XplatHelpers.cleanupLib(options, 'scss', 'xplat/nativescript'), + XplatHelpers.generateLib(options, 'utils', 'xplat/nativescript', 'node'), + XplatHelpers.cleanupLib(options, 'utils', 'xplat/nativescript'), + (tree: Tree, context: SchematicContext) => { + const xplatFolderName = XplatHelpers.getXplatFoldername( + 'nativescript', + 'angular' + ); + // console.log('xplatName:', xplatName); + return options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'core' + )(tree, context); + }, + (tree: Tree, context: SchematicContext) => { + const xplatFolderName = XplatHelpers.getXplatFoldername( + 'nativescript', + 'angular' + ); + // console.log('xplatName:', xplatName); + return options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'features' + )(tree, context); + }, + + (tree: Tree, context: SchematicContext) => { + const xplatFolderName = XplatHelpers.getXplatFoldername( + 'nativescript', + 'angular' + ); + // console.log('xplatName:', xplatName); + // console.log('options:', options); + return options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'utils' + )(tree, context); + }, (tree: Tree, context: SchematicContext) => { const xplatFolderName = XplatHelpers.getXplatFoldername( 'nativescript', @@ -33,21 +86,81 @@ export default function (options: XplatHelpers.Schema) { // console.log('options:', options); return options.skipDependentPlatformFiles ? noop() - : XplatHelpers.addPlatformFiles(options, xplatFolderName)( - tree, - context - ); + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'scss' + )(tree, context); }, // TODO: convert these @nstudio/angular api's to singular external schematics so could be called with externalSchematic api + + XplatHelpers.generateLib(options, 'core', 'xplat', 'node'), + XplatHelpers.cleanupLib(options, 'core', 'xplat'), XplatAngularHelpers.addLibFiles( options, - `../../../../angular/src/schematics/xplat/` + `../../../../angular/src/schematics/xplat/`, + 'core' ), - XplatAngularHelpers.addScssFiles( + XplatHelpers.generateLib(options, 'features', 'xplat', 'node'), + XplatHelpers.cleanupLib(options, 'features', 'xplat'), + XplatAngularHelpers.addLibFiles( + options, + `../../../../angular/src/schematics/xplat/`, + 'features' + ), + XplatHelpers.generateLib(options, 'scss', 'xplat', 'jsdom'), + XplatHelpers.cleanupLib(options, 'scss', 'xplat'), + XplatAngularHelpers.addLibFiles( + options, + `../../../../angular/src/schematics/xplat/`, + 'scss' + ), + XplatHelpers.generateLib(options, 'utils', 'xplat', 'node'), + XplatHelpers.cleanupLib(options, 'utils', 'xplat'), + XplatAngularHelpers.addLibFiles( options, - `../../../../angular/src/schematics/xplat/` + `../../../../angular/src/schematics/xplat/`, + 'utils' ), - XplatHelpers.updateTsConfigPaths(options, { framework: 'angular' }), XplatNativeScriptAngularHelpers.updateRootDeps(options), + // adjust root tsconfig + (tree: Tree, context: SchematicContext) => { + return updateTsConfig(tree, (tsConfig: any) => { + if (tsConfig) { + if (!tsConfig.compilerOptions) { + tsConfig.compilerOptions = {}; + } + + if (!tsConfig.compilerOptions.paths[`@${getNpmScope()}/xplat/core`]) { + tsConfig.compilerOptions.paths[`@${getNpmScope()}/xplat/core`] = [ + `libs/xplat/core/src/index.ts`, + ]; + } + if ( + !tsConfig.compilerOptions.paths[ + `@${getNpmScope()}/xplat/environments` + ] + ) { + tsConfig.compilerOptions.paths[ + `@${getNpmScope()}/xplat/environments` + ] = [`libs/xplat/core/src/lib/environments/base/index.ts`]; + } + if ( + !tsConfig.compilerOptions.paths[`@${getNpmScope()}/xplat/features`] + ) { + tsConfig.compilerOptions.paths[ + `@${getNpmScope()}/xplat/features` + ] = [`libs/xplat/features/src/index.ts`]; + } + if ( + !tsConfig.compilerOptions.paths[`@${getNpmScope()}/xplat/utils`] + ) { + tsConfig.compilerOptions.paths[`@${getNpmScope()}/xplat/utils`] = [ + `libs/xplat/utils/src/index.ts`, + ]; + } + } + }); + }, ]); } diff --git a/packages/nativescript-angular/src/utils/versions.ts b/packages/nativescript-angular/src/utils/versions.ts index 8fd49e41..5a59acea 100644 --- a/packages/nativescript-angular/src/utils/versions.ts +++ b/packages/nativescript-angular/src/utils/versions.ts @@ -1,16 +1,16 @@ export const xplatVersion = '*'; export const nsCoreVersion = '~7.0.0'; -export const nsNgScopedVersion = '~10.1.0'; +export const nsNgScopedVersion = '~11.0.0'; export const nsNgFonticonVersion = '~7.0.0'; export const nsWebpackVersion = '~3.0.0'; -export const nodeSassVersion = '^4.14.0'; +export const sassVersion = '~1.30.0'; export const nsThemeCoreVersion = '^1.0.4'; -export const typescriptVersion = '~3.9.0'; +export const typescriptVersion = '~4.0.0'; // in case workspace had not added angular yet // TODO: move deps to nstudio/xplat to ref from everywhere for all supported framework versions -export const angularVersion = '~10.1.0'; -export const ngToolsWebpack = '~10.1.0'; +export const angularVersion = '~11.0.0'; +export const ngToolsWebpack = '~11.0.0'; export const ngxTranslateVersion = '~13.0.0'; export const rxjsVersion = '^6.6.0'; export const zonejsVersion = '~0.11.1'; diff --git a/packages/nativescript-angular/src/utils/xplat.ts b/packages/nativescript-angular/src/utils/xplat.ts index da55b587..c2565f43 100644 --- a/packages/nativescript-angular/src/utils/xplat.ts +++ b/packages/nativescript-angular/src/utils/xplat.ts @@ -8,7 +8,7 @@ import { import { nsNgScopedVersion, nsNgFonticonVersion, - nodeSassVersion, + sassVersion, nsCoreVersion, angularVersion, ngToolsWebpack, @@ -57,24 +57,9 @@ export namespace XplatNativeScriptAngularHelpers { devDependencies: { ...angularDevDeps, '@ngtools/webpack': ngToolsWebpack, - 'node-sass': nodeSassVersion, + sass: sassVersion, }, })(tree, context); }; } - - export function addReferences() { - return (tree: Tree) => { - const filename = 'references.d.ts'; - if (!tree.exists(filename)) { - // add references.d.ts - tree.create( - filename, - `/// - ` - ); - } - return tree; - }; - } } diff --git a/packages/nativescript/src/schematics/application/_files/references.d.ts__tmpl__ b/packages/nativescript/src/schematics/application/_files/references.d.ts__tmpl__ index 17e815e8..12ba6076 100644 --- a/packages/nativescript/src/schematics/application/_files/references.d.ts__tmpl__ +++ b/packages/nativescript/src/schematics/application/_files/references.d.ts__tmpl__ @@ -1 +1 @@ -/// +/// diff --git a/packages/nativescript/src/schematics/application/_files/tsconfig.app.json b/packages/nativescript/src/schematics/application/_files/tsconfig.app.json new file mode 100644 index 00000000..4fa8ed78 --- /dev/null +++ b/packages/nativescript/src/schematics/application/_files/tsconfig.app.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "<%= pathOffset %>dist/out-tsc", + "types": [] + }, + "files": ["./references.d.ts", "./src/app.ts"] +} diff --git a/packages/nativescript/src/schematics/application/_files/tsconfig.editor.json b/packages/nativescript/src/schematics/application/_files/tsconfig.editor.json new file mode 100644 index 00000000..20c4afdb --- /dev/null +++ b/packages/nativescript/src/schematics/application/_files/tsconfig.editor.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "include": ["**/*.ts"], + "compilerOptions": { + "types": ["jest", "node"] + } +} diff --git a/packages/nativescript/src/schematics/application/_files/tsconfig.json b/packages/nativescript/src/schematics/application/_files/tsconfig.json index 8bef8998..590f3493 100644 --- a/packages/nativescript/src/schematics/application/_files/tsconfig.json +++ b/packages/nativescript/src/schematics/application/_files/tsconfig.json @@ -1,25 +1,16 @@ { - "compilerOptions": { - "module": "ESNext", - "target": "es2017", - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "moduleResolution": "node", - "noEmitHelpers": true, - "noEmitOnError": true, - "skipLibCheck": true, - "lib": ["es2018", "es2017", "dom", "webworker", "es6"], - "baseUrl": ".", - "paths": { - "~/*": ["src/*"], - "@<%= npmScope %>/*": ["<%= pathOffset %>libs/*"], - "@<%= npmScope %>/nativescript": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/index.ts" - ], - "@<%= npmScope %>/nativescript/*": [ - "<%= pathOffset %>xplat/<%= xplatFolderName %>/*" - ] + "extends": "<%= pathOffset %>tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./tsconfig.editor.json" } - }, - "exclude": ["node_modules", "platforms"] + ] } diff --git a/packages/nativescript/src/schematics/application/_files/tsconfig.spec.json b/packages/nativescript/src/schematics/application/_files/tsconfig.spec.json new file mode 100644 index 00000000..545b78c4 --- /dev/null +++ b/packages/nativescript/src/schematics/application/_files/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "<%= pathOffset %>dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/packages/nativescript/src/schematics/application/index.spec.ts b/packages/nativescript/src/schematics/application/index.spec.ts index 8335505b..603dbfa4 100644 --- a/packages/nativescript/src/schematics/application/index.spec.ts +++ b/packages/nativescript/src/schematics/application/index.spec.ts @@ -60,7 +60,9 @@ describe('app', () => { ).toBeGreaterThanOrEqual(0); // xplat file defaults - expect(files.indexOf('/xplat/nativescript/index.ts')).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBe(-1); }); it('should create all files of an app using groupByName', async () => { @@ -102,14 +104,6 @@ describe('app', () => { expect( tree.exists('/apps/frontend/nativescript-foo/package.json') ).toBeTruthy(); - const fileContent = getFileContent( - tree, - '/apps/frontend/nativescript-foo/tsconfig.json' - ); - // console.log('tsconfig:', fileContent) - expect( - fileContent.indexOf('../../../xplat/nativescript/*') - ).toBeGreaterThanOrEqual(0); }); it('should create all files for app in directory and ignore platform naming when directory is a platform', async () => { diff --git a/packages/nativescript/src/schematics/application/index.ts b/packages/nativescript/src/schematics/application/index.ts index acdc7eb0..d23fd982 100644 --- a/packages/nativescript/src/schematics/application/index.ts +++ b/packages/nativescript/src/schematics/application/index.ts @@ -52,6 +52,7 @@ export default function (options: Schema) { prerun(options), // adjust naming convention XplatHelpers.applyAppNamingConvention(options, 'nativescript'), + XplatNativeScriptHelpers.addReferences(), // create app files (tree: Tree, context: SchematicContext) => addAppFiles(options, options.name), @@ -66,27 +67,6 @@ export default function (options: Schema) { }, { interactive: false } )(tree, context), - // adjust root tsconfig - (tree: Tree, context: SchematicContext) => { - return updateTsConfig(tree, (tsConfig: any) => { - if (tsConfig) { - if (!tsConfig.exclude) { - tsConfig.exclude = []; - } - const excludeNSApps = 'apps/nativescript-*'; - if (!tsConfig.exclude.includes(excludeNSApps)) { - tsConfig.exclude.push(excludeNSApps); - } - if (!tsConfig.includes) { - tsConfig.includes = []; - } - const platformFiles = 'xplat/**/*.{ios,android}.ts'; - if (!tsConfig.includes.includes(platformFiles)) { - tsConfig.includes.push(platformFiles); - } - } - }); - }, // add root package dependencies XplatNativeScriptHelpers.updateRootDeps(options), XplatNativeScriptHelpers.updatePrettierIgnore(), @@ -161,7 +141,7 @@ export default function (options: Schema) { ` `, `nx run ${options.name}:android`, ` `, - `You can also clean/reset the app anytime with:`, + `You can also:`, ` `, `nx run ${options.name}:clean`, ], diff --git a/packages/nativescript/src/schematics/helpers/imports/index.ts b/packages/nativescript/src/schematics/helpers/imports/index.ts index d35db768..2f6106c4 100644 --- a/packages/nativescript/src/schematics/helpers/imports/index.ts +++ b/packages/nativescript/src/schematics/helpers/imports/index.ts @@ -32,7 +32,7 @@ function addHelperFiles(options: IHelperSchema): Rule { ...(options as any), ...getDefaultTemplateOptions(), }), - move(`xplat/${xplatFolderName}/utils`), + move(`libs/xplat/${xplatFolderName}/utils/src/lib`), ]) ) ); @@ -41,7 +41,7 @@ function addHelperFiles(options: IHelperSchema): Rule { function imports(helperChains: Array, options: IHelperSchema) { return (tree: Tree, context: SchematicContext) => { const xplatFolderName = XplatHelpers.getXplatFoldername('nativescript'); - let pathRef = `xplat/${xplatFolderName}/utils/@nativescript/*`; + let pathRef = `libs/xplat/${xplatFolderName}/utils/src/lib/@nativescript/*`; // update root tsconfig helperChains.push( updateTsConfig(tree, (tsConfig: any) => { diff --git a/packages/nativescript/src/schematics/helpers/index.spec.ts b/packages/nativescript/src/schematics/helpers/index.spec.ts index 02aa7fcd..f6669e23 100644 --- a/packages/nativescript/src/schematics/helpers/index.spec.ts +++ b/packages/nativescript/src/schematics/helpers/index.spec.ts @@ -44,7 +44,7 @@ describe('helpers schematic', () => { let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect(fileContent.compilerOptions.paths['@nativescript/*'][0]).toBe( - 'xplat/nativescript/utils/@nativescript/*' + 'libs/xplat/nativescript/utils/@nativescript/*' ); filePath = '/apps/nativescript-viewer/tsconfig.json'; diff --git a/packages/nativescript/src/schematics/xplat/_files/index.ts__tmpl__ b/packages/nativescript/src/schematics/xplat/_files/index.ts__tmpl__ deleted file mode 100644 index 04bca77e..00000000 --- a/packages/nativescript/src/schematics/xplat/_files/index.ts__tmpl__ +++ /dev/null @@ -1 +0,0 @@ -export * from './utils'; diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/package.json b/packages/nativescript/src/schematics/xplat/_files/scss/package.json deleted file mode 100644 index e4c74585..00000000 --- a/packages/nativescript/src/schematics/xplat/_files/scss/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/nativescript-scss", - "version": "1.0.0" -} diff --git a/packages/nativescript/src/schematics/xplat/_files/plugins/README.md b/packages/nativescript/src/schematics/xplat/_files_plugins/README.md similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/plugins/README.md rename to packages/nativescript/src/schematics/xplat/_files_plugins/README.md diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_common.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_common.scss similarity index 97% rename from packages/nativescript/src/schematics/xplat/_files/scss/_common.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_common.scss index 5adc3496..c308bf6b 100644 --- a/packages/nativescript/src/schematics/xplat/_files/scss/_common.scss +++ b/packages/nativescript/src/schematics/xplat/_files_scss/_common.scss @@ -1,5 +1,5 @@ // shared across all platforms and apps -@import '~@<%= npmScope %>/scss/index'; +@import '~@<%= npmScope %>/xplat-scss/index'; /** * The following are common styles for both iOS and Android (used with any {N} app targets) diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_fonts.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_fonts.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_fonts.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_fonts.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_index.android.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_index.android.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_index.android.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_index.android.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_index.ios.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_index.ios.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_index.ios.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_index.ios.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_mixins.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_mixins.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_mixins.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_mixins.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_overrides.android.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_overrides.android.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_overrides.android.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_overrides.android.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_overrides.ios.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_overrides.ios.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_overrides.ios.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_overrides.ios.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_tags.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_tags.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_tags.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_tags.scss diff --git a/packages/nativescript/src/schematics/xplat/_files/scss/_variables.scss b/packages/nativescript/src/schematics/xplat/_files_scss/_variables.scss similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/scss/_variables.scss rename to packages/nativescript/src/schematics/xplat/_files_scss/_variables.scss diff --git a/packages/nativescript/src/schematics/xplat/_files_scss/package.json b/packages/nativescript/src/schematics/xplat/_files_scss/package.json new file mode 100644 index 00000000..ace1b20f --- /dev/null +++ b/packages/nativescript/src/schematics/xplat/_files_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-nativescript-scss", + "version": "1.0.0" +} diff --git a/packages/nativescript/src/schematics/xplat/_files/utils/icons.ts__tmpl__ b/packages/nativescript/src/schematics/xplat/_files_utils/icons.ts__tmpl__ similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/utils/icons.ts__tmpl__ rename to packages/nativescript/src/schematics/xplat/_files_utils/icons.ts__tmpl__ diff --git a/packages/nativescript/src/schematics/xplat/_files/utils/index.ts__tmpl__ b/packages/nativescript/src/schematics/xplat/_files_utils/index.ts__tmpl__ similarity index 100% rename from packages/nativescript/src/schematics/xplat/_files/utils/index.ts__tmpl__ rename to packages/nativescript/src/schematics/xplat/_files_utils/index.ts__tmpl__ diff --git a/packages/nativescript/src/schematics/xplat/index.spec.ts b/packages/nativescript/src/schematics/xplat/index.spec.ts index 7c5b5249..28937674 100644 --- a/packages/nativescript/src/schematics/xplat/index.spec.ts +++ b/packages/nativescript/src/schematics/xplat/index.spec.ts @@ -22,8 +22,10 @@ describe('xplat schematic', () => { appTree.create('.prettierignore', '# sample'); const tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/web/index.ts')).toBeFalsy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeFalsy(); + expect( + tree.exists('/libs/xplat/nativescript/utils/src/lib/index.ts') + ).toBeTruthy(); const packagePath = '/package.json'; const packageFile = jsonParse(getFileContent(tree, packagePath)); const hasNativeScript = packageFile.dependencies[`@nativescript/core`]; @@ -32,7 +34,7 @@ describe('xplat schematic', () => { const prettier = getFileContent(tree, '.prettierignore'); // console.log('prettier:', prettier); expect( - prettier.indexOf('**/xplat/nativescript*/plugins/**/*') + prettier.indexOf('**/libs/xplat/nativescript*/plugins/**/*') ).toBeGreaterThan(0); }); }); diff --git a/packages/nativescript/src/schematics/xplat/index.ts b/packages/nativescript/src/schematics/xplat/index.ts index c058f499..2bd09886 100644 --- a/packages/nativescript/src/schematics/xplat/index.ts +++ b/packages/nativescript/src/schematics/xplat/index.ts @@ -6,9 +6,22 @@ import { XplatNativeScriptHelpers } from '../../utils'; export default function (options: XplatHelpers.Schema) { return chain([ prerun(options), + XplatHelpers.generateLib(options, 'scss', 'xplat/nativescript', 'node', ''), + XplatHelpers.cleanupLib(options, 'scss', 'xplat/nativescript', ''), + XplatHelpers.generateLib( + options, + 'utils', + 'xplat/nativescript', + 'node', + '' + ), + XplatHelpers.cleanupLib(options, 'utils', 'xplat/nativescript', ''), options.skipDependentPlatformFiles ? noop() - : XplatHelpers.addPlatformFiles(options, 'nativescript'), + : XplatHelpers.addPlatformFiles(options, 'nativescript', 'scss'), + options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles(options, 'nativescript', 'utils'), XplatNativeScriptHelpers.updateRootDeps(options), XplatNativeScriptHelpers.updatePrettierIgnore(), ]); diff --git a/packages/nativescript/src/utils/versions.ts b/packages/nativescript/src/utils/versions.ts index c7ddeaf1..8704fa88 100644 --- a/packages/nativescript/src/utils/versions.ts +++ b/packages/nativescript/src/utils/versions.ts @@ -1,4 +1,4 @@ export const xplatVersion = '*'; export const nsCoreVersion = '~7.0.0'; export const nsThemeCoreVersion = '^1.0.4'; -export const nodeSassVersion = '^4.14.0'; +export const sassVersion = '~1.30.0'; diff --git a/packages/nativescript/src/utils/xplat.ts b/packages/nativescript/src/utils/xplat.ts index f2408ae3..989eb4fd 100644 --- a/packages/nativescript/src/utils/xplat.ts +++ b/packages/nativescript/src/utils/xplat.ts @@ -1,7 +1,7 @@ import { Tree, SchematicContext } from '@angular-devkit/schematics'; import { XplatHelpers } from '@nstudio/xplat'; import { updateFile } from '@nstudio/xplat-utils'; -import { nsCoreVersion, nsThemeCoreVersion, nodeSassVersion } from './versions'; +import { nsCoreVersion, nsThemeCoreVersion, sassVersion } from './versions'; export namespace XplatNativeScriptHelpers { export function updateRootDeps(options: XplatHelpers.Schema) { @@ -12,13 +12,29 @@ export namespace XplatNativeScriptHelpers { 'nativescript-theme-core': nsThemeCoreVersion, }, devDependencies: { - 'node-sass': nodeSassVersion, + sass: sassVersion, '@nativescript/types': nsCoreVersion, }, })(tree, context); }; } + export function addReferences() { + return (tree: Tree) => { + const filename = 'references.d.ts'; + if (!tree.exists(filename)) { + // add references.d.ts + tree.create( + filename, + `/// +/// +` + ); + } + return tree; + }; + } + export function updatePrettierIgnore() { return XplatHelpers.updatePrettierIgnore( `\n @@ -32,9 +48,9 @@ export namespace XplatNativeScriptHelpers { **/apps/*nativescript/hooks/**/* **/apps/*nativescript/tools/**/* **/apps/*nativescript/src/assets/*.css -**/xplat/nativescript/scss/fonticons/*.css -**/xplat/nativescript*/plugins/**/*`, - '**/xplat/nativescript/scss/fonticons/*.css' +**/libs/xplat/nativescript/scss/src/lib/fonticons/*.css +**/libs/xplat/nativescript*/plugins/**/*`, + '**/libs/xplat/nativescript/scss/src/lib/fonticons/*.css' ); } diff --git a/packages/schematics/migrations/update-8-0-0/update-8-0-0.ts b/packages/schematics/migrations/update-8-0-0/update-8-0-0.ts index 8251ecd7..98f3286c 100644 --- a/packages/schematics/migrations/update-8-0-0/update-8-0-0.ts +++ b/packages/schematics/migrations/update-8-0-0/update-8-0-0.ts @@ -134,28 +134,12 @@ const updateDefaultCollection = (tree: Tree, context: SchematicContext) => { }); }; -// const addXplatFrameworkIdentifier = (tree: Tree, context: SchematicContext) => { -// if (tree.exists('/xplat/web/index.ts') && !tree.exists('/xplat/web/.xplatframework')) { -// tree.create('.xplatframework', 'angular'); -// } -// if (tree.exists('/xplat/nativescript/index.ts') && !tree.exists('/xplat/nativescript/.xplatframework')) { -// tree.create('.xplatframework', 'angular'); -// } -// if (tree.exists('/xplat/ionic/index.ts') && !tree.exists('/xplat/ionic/.xplatframework')) { -// tree.create('.xplatframework', 'angular'); -// } -// if (tree.exists('/xplat/electron/index.ts') && !tree.exists('/xplat/electron/.xplatframework')) { -// tree.create('.xplatframework', 'angular'); -// } -// }; - export default function (): Rule { return chain([ displayInformation, removeOldDependencies, addDependencies(), updateDefaultCollection, - // addXplatFrameworkIdentifier, addInstallTask(), formatFiles(), ]); diff --git a/packages/schematics/package.json b/packages/schematics/package.json index 52a666cc..34cef0ed 100644 --- a/packages/schematics/package.json +++ b/packages/schematics/package.json @@ -70,7 +70,7 @@ "migrations": "./migrations/migrations.json" }, "dependencies": { - "@nrwl/angular": "~10.3.0", + "@nrwl/angular": "~11.0.0", "@nstudio/xplat-utils": "*" } } diff --git a/packages/web-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ b/packages/web-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ index 379c0d0c..192bd66c 100644 --- a/packages/web-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ +++ b/packages/web-angular/src/schematics/component/_files/__name__/__name__.component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; -<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/core';<% -} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/features';<% } %> +<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/xplat/core';<% +} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/xplat/features';<% } %> @Component({ selector: '<%= prefix %>-<%= name %>', diff --git a/packages/web-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ b/packages/web-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ index 379c0d0c..192bd66c 100644 --- a/packages/web-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ +++ b/packages/web-angular/src/schematics/feature/_component_files/components/__name__/__name__.component.ts__tmpl__ @@ -1,7 +1,7 @@ import { Component } from '@angular/core'; -<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/core';<% -} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/features';<% } %> +<% if (onlyProject || !createBase) { %>import { BaseComponent } from '@<%= npmScope %>/xplat/core';<% +} else { %>import { <%= utils.classify(name) %>BaseComponent } from '@<%= npmScope %>/xplat/features';<% } %> @Component({ selector: '<%= prefix %>-<%= name %>', diff --git a/packages/web-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ b/packages/web-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ index 1e0550be..5bd37c6e 100644 --- a/packages/web-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ +++ b/packages/web-angular/src/schematics/feature/_files/__name__.module.ts__tmpl__ @@ -1,6 +1,6 @@ import { NgModule } from '@angular/core';<% if (!onlyModule && onlyProject && routing) { %> import { RouterModule, Routes } from '@angular/router';<% } %> -<% if (!onlyProject) { %>import { <%= utils.classify(name) %>Module as Shared<%= utils.classify(name) %>Module } from '@<%= npmScope %>/features';<% } if (onlyProject) { %> +<% if (!onlyProject) { %>import { <%= utils.classify(name) %>Module as Shared<%= utils.classify(name) %>Module } from '@<%= npmScope %>/xplat/features';<% } if (onlyProject) { %> import { SharedModule } from '../shared/shared.module';<% } else { %> import { UIModule } from '../ui/ui.module';<% } if (!onlyModule) { %> import { <%= utils.sanitize(name).toUpperCase() %>_COMPONENTS<% if (onlyProject && routing) { %>, <%= utils.classify(name) %>Component<% } %> } from './components'; diff --git a/packages/web-angular/src/schematics/feature/index.ts b/packages/web-angular/src/schematics/feature/index.ts index 36682e1d..d2eba08b 100644 --- a/packages/web-angular/src/schematics/feature/index.ts +++ b/packages/web-angular/src/schematics/feature/index.ts @@ -77,7 +77,7 @@ export default function (options: XplatFeatureHelpers.Schema) { const xplatFolderName = XplatHelpers.getXplatFoldername('web', 'angular'); return XplatFeatureHelpers.adjustBarrelIndex( options, - `xplat/${xplatFolderName}/features/index.ts` + `libs/xplat/${xplatFolderName}/features/src/lib/index.ts` )(tree, context); }); // add starting component unless onlyModule diff --git a/packages/web-angular/src/schematics/xplat/_files/__dot__xplatframework b/packages/web-angular/src/schematics/xplat/_files/__dot__xplatframework deleted file mode 100644 index a7edb09b..00000000 --- a/packages/web-angular/src/schematics/xplat/_files/__dot__xplatframework +++ /dev/null @@ -1 +0,0 @@ -angular \ No newline at end of file diff --git a/packages/web-angular/src/schematics/xplat/_files/index.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files/index.ts__tmpl__ deleted file mode 100644 index 66eb70a8..00000000 --- a/packages/web-angular/src/schematics/xplat/_files/index.ts__tmpl__ +++ /dev/null @@ -1,2 +0,0 @@ -export * from './core'; -export * from './features'; diff --git a/packages/web-angular/src/schematics/xplat/_files/core/base/app.base-component.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_core/base/app.base-component.ts__tmpl__ similarity index 78% rename from packages/web-angular/src/schematics/xplat/_files/core/base/app.base-component.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_core/base/app.base-component.ts__tmpl__ index b47b70d2..e152b2da 100644 --- a/packages/web-angular/src/schematics/xplat/_files/core/base/app.base-component.ts__tmpl__ +++ b/packages/web-angular/src/schematics/xplat/_files_core/base/app.base-component.ts__tmpl__ @@ -1,7 +1,6 @@ import { Directive, Inject } from '@angular/core'; - // libs -import { BaseComponent } from '@<%= npmScope %>/core'; +import { BaseComponent } from '@<%= npmScope %>/xplat/core'; @Directive() export abstract class AppBaseComponent extends BaseComponent { diff --git a/packages/web-angular/src/schematics/xplat/_files/core/base/index.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_core/base/index.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/core/base/index.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_core/base/index.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/core/core.module.spec.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_core/core.module.spec.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/core/core.module.spec.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_core/core.module.spec.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ similarity index 93% rename from packages/web-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ index f5717556..c0243550 100644 --- a/packages/web-angular/src/schematics/xplat/_files/core/core.module.ts__tmpl__ +++ b/packages/web-angular/src/schematics/xplat/_files_core/core.module.ts__tmpl__ @@ -1,12 +1,10 @@ import { NgModule, Optional, SkipSelf } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { HttpClientModule, HttpClient } from '@angular/common/http'; - -// libs import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; -import { throwIfAlreadyLoaded } from '@<%= npmScope %>/utils'; -import { CoreModule, PlatformLanguageToken, PlatformWindowToken } from '@<%= npmScope %>/core'; +import { throwIfAlreadyLoaded } from '@<%= npmScope %>/xplat/utils'; +import { CoreModule, PlatformLanguageToken, PlatformWindowToken } from '@<%= npmScope %>/xplat/core'; // bring in custom web services here... diff --git a/packages/web-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/core/index.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_core/index.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/features/index.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_features/index.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/features/index.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_features/index.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html b/packages/web-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html similarity index 85% rename from packages/web-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html rename to packages/web-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html index 04f5abdb..ae996a9f 100644 --- a/packages/web-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.html +++ b/packages/web-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.html @@ -1,5 +1,5 @@ -
-

Welcome to an Angular CLI app built with Nrwl Nx and xplat!

+
+

Welcome to an Angular CLI app built with Nrwl Nx and xplat!

+ diff --git a/packages/web-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ similarity index 73% rename from packages/web-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ index 74b92a82..d47b53ad 100644 --- a/packages/web-angular/src/schematics/xplat/_files/features/ui/components/header/header.component.ts__tmpl__ +++ b/packages/web-angular/src/schematics/xplat/_files_features/ui/components/header/header.component.ts__tmpl__ @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { HeaderBaseComponent } from '@<%= npmScope %>/features'; +import { HeaderBaseComponent } from '@<%= npmScope %>/xplat/features'; @Component({ selector: '<%= prefix %>-header', diff --git a/packages/web-angular/src/schematics/xplat/_files/features/ui/components/index.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_features/ui/components/index.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/features/ui/components/index.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_features/ui/components/index.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/features/ui/index.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/features/ui/index.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_features/ui/index.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/features/ui/ui.module.spec.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_features/ui/ui.module.spec.ts__tmpl__ similarity index 100% rename from packages/web-angular/src/schematics/xplat/_files/features/ui/ui.module.spec.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_features/ui/ui.module.spec.ts__tmpl__ diff --git a/packages/web-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ b/packages/web-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ similarity index 88% rename from packages/web-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ rename to packages/web-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ index 929f20ed..8a546ed4 100644 --- a/packages/web-angular/src/schematics/xplat/_files/features/ui/ui.module.ts__tmpl__ +++ b/packages/web-angular/src/schematics/xplat/_files_features/ui/ui.module.ts__tmpl__ @@ -4,7 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; // libs -import { UISharedModule } from '@<%= npmScope %>/features'; +import { UISharedModule } from '@<%= npmScope %>/xplat/features'; import { UI_COMPONENTS } from './components'; const MODULES = [ diff --git a/packages/web-angular/src/schematics/xplat/_lib_files/scss/_index.scss b/packages/web-angular/src/schematics/xplat/_files_lib_scss/_index.scss similarity index 100% rename from packages/web-angular/src/schematics/xplat/_lib_files/scss/_index.scss rename to packages/web-angular/src/schematics/xplat/_files_lib_scss/_index.scss diff --git a/packages/web-angular/src/schematics/xplat/_lib_files/scss/_variables.scss b/packages/web-angular/src/schematics/xplat/_files_lib_scss/_variables.scss similarity index 100% rename from packages/web-angular/src/schematics/xplat/_lib_files/scss/_variables.scss rename to packages/web-angular/src/schematics/xplat/_files_lib_scss/_variables.scss diff --git a/packages/web-angular/src/schematics/xplat/_files_lib_scss/package.json b/packages/web-angular/src/schematics/xplat/_files_lib_scss/package.json new file mode 100644 index 00000000..55aab6dc --- /dev/null +++ b/packages/web-angular/src/schematics/xplat/_files_lib_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-scss", + "version": "1.0.0" +} diff --git a/packages/web/src/schematics/xplat/_files/scss/_index.scss b/packages/web-angular/src/schematics/xplat/_files_platform_scss/_index.scss similarity index 85% rename from packages/web/src/schematics/xplat/_files/scss/_index.scss rename to packages/web-angular/src/schematics/xplat/_files_platform_scss/_index.scss index 3e7d687c..539a4396 100644 --- a/packages/web/src/schematics/xplat/_files/scss/_index.scss +++ b/packages/web-angular/src/schematics/xplat/_files_platform_scss/_index.scss @@ -1,5 +1,5 @@ // shared across all platforms and apps -@import '~@<%= npmScope %>/scss/index'; +@import '~@<%= npmScope %>/xplat-scss/index'; /** * The following are web specific (used with any web app targets) diff --git a/packages/web-angular/src/schematics/xplat/_scss_files/_spacing.scss b/packages/web-angular/src/schematics/xplat/_files_platform_scss/_spacing.scss similarity index 100% rename from packages/web-angular/src/schematics/xplat/_scss_files/_spacing.scss rename to packages/web-angular/src/schematics/xplat/_files_platform_scss/_spacing.scss diff --git a/packages/web-angular/src/schematics/xplat/_scss_files/_tags.scss b/packages/web-angular/src/schematics/xplat/_files_platform_scss/_tags.scss similarity index 100% rename from packages/web-angular/src/schematics/xplat/_scss_files/_tags.scss rename to packages/web-angular/src/schematics/xplat/_files_platform_scss/_tags.scss diff --git a/packages/web-angular/src/schematics/xplat/_scss_files/_variables.scss b/packages/web-angular/src/schematics/xplat/_files_platform_scss/_variables.scss similarity index 100% rename from packages/web-angular/src/schematics/xplat/_scss_files/_variables.scss rename to packages/web-angular/src/schematics/xplat/_files_platform_scss/_variables.scss diff --git a/packages/web-angular/src/schematics/xplat/_files_platform_scss/package.json b/packages/web-angular/src/schematics/xplat/_files_platform_scss/package.json new file mode 100644 index 00000000..cf952e72 --- /dev/null +++ b/packages/web-angular/src/schematics/xplat/_files_platform_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-web-scss", + "version": "1.0.0" +} diff --git a/packages/web-angular/src/schematics/xplat/_lib_files/scss/package.json b/packages/web-angular/src/schematics/xplat/_lib_files/scss/package.json deleted file mode 100644 index ed711084..00000000 --- a/packages/web-angular/src/schematics/xplat/_lib_files/scss/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/scss", - "version": "1.0.0" -} diff --git a/packages/web-angular/src/schematics/xplat/_scss_files/package.json b/packages/web-angular/src/schematics/xplat/_scss_files/package.json deleted file mode 100644 index e6f85bff..00000000 --- a/packages/web-angular/src/schematics/xplat/_scss_files/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/web-scss", - "version": "1.0.0" -} diff --git a/packages/web-angular/src/schematics/xplat/index.spec.ts b/packages/web-angular/src/schematics/xplat/index.spec.ts index 3eeafa18..1718206b 100644 --- a/packages/web-angular/src/schematics/xplat/index.spec.ts +++ b/packages/web-angular/src/schematics/xplat/index.spec.ts @@ -27,13 +27,19 @@ describe('xplat schematic', () => { const options: XplatHelpers.Schema = { ...defaultOptions }; const tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/web/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeFalsy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeFalsy(); let filePath = getRootTsConfigPath(); let fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); - expect(fileContent.compilerOptions.paths['@testing/web']).toBeTruthy(); - expect(fileContent.compilerOptions.paths['@testing/web/*']).toBeTruthy(); + expect( + fileContent.compilerOptions.paths['@testing/xplat/web/core'] + ).toBeTruthy(); + expect( + fileContent.compilerOptions.paths['@testing/xplat/web/features'] + ).toBeTruthy(); filePath = '/package.json'; fileContent = jsonParse(getFileContent(tree, filePath)); // const hasScss = packageFile.dependencies[`@testing/scss`]; @@ -41,10 +47,6 @@ describe('xplat schematic', () => { // should not include these root packages const hasNativeScript = fileContent.dependencies[`nativescript-angular`]; expect(hasNativeScript).toBeUndefined(); - filePath = '/xplat/web/.xplatframework'; - fileContent = getFileContent(tree, filePath); - // console.log(fileContent); - expect(fileContent.indexOf('angular')).toBeGreaterThanOrEqual(0); }); it('should create default xplat support with framework suffix when not specifying default', async () => { @@ -53,15 +55,17 @@ describe('xplat schematic', () => { const options: XplatHelpers.Schema = { ...defaultOptions }; const tree = await runSchematic('xplat', options, appTree); - expect(tree.exists('/xplat/web-angular/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/web-angular/core/src/lib/index.ts') + ).toBeTruthy(); const filePath = getRootTsConfigPath(); const fileContent = jsonParse(getFileContent(tree, filePath)); // console.log(fileContent); expect( - fileContent.compilerOptions.paths['@testing/web-angular'] + fileContent.compilerOptions.paths['@testing/xplat/web-angular/core'] ).toBeTruthy(); expect( - fileContent.compilerOptions.paths['@testing/web-angular/*'] + fileContent.compilerOptions.paths['@testing/xplat/web-angular/features'] ).toBeTruthy(); }); }); diff --git a/packages/web-angular/src/schematics/xplat/index.ts b/packages/web-angular/src/schematics/xplat/index.ts index d21530df..dee8b3af 100644 --- a/packages/web-angular/src/schematics/xplat/index.ts +++ b/packages/web-angular/src/schematics/xplat/index.ts @@ -11,6 +11,7 @@ import { template, move, } from '@angular-devkit/schematics'; +import { XplatAngularHelpers } from '@nstudio/angular'; import { XplatHelpers, getDefaultTemplateOptions } from '@nstudio/xplat'; import { prerun } from '@nstudio/xplat-utils'; import { XplatWebAngularHelpers } from '../../utils/xplat'; @@ -18,54 +19,80 @@ import { XplatWebAngularHelpers } from '../../utils/xplat'; export default function (options: XplatHelpers.Schema) { return chain([ prerun(options, true), + // (tree: Tree, context: SchematicContext) => { + // if (tree.exists(`/libs/xplat/core/src/lib/index.ts`)) { + // return noop(); + // } else { + // return externalSchematic('@nstudio/angular', 'xplat', options, { + // interactive: false, + // })(tree, context); + // } + // }, + XplatHelpers.generateLib(options, 'core', 'xplat/web', 'jsdom'), + XplatHelpers.cleanupLib(options, 'core', 'xplat/web'), + XplatHelpers.generateLib(options, 'features', 'xplat/web', 'jsdom'), + XplatHelpers.cleanupLib(options, 'features', 'xplat/web'), + XplatHelpers.generateLib(options, 'scss', 'xplat/web', 'jsdom'), + XplatHelpers.cleanupLib(options, 'scss', 'xplat/web'), (tree: Tree, context: SchematicContext) => { const xplatFolderName = XplatHelpers.getXplatFoldername('web', 'angular'); // console.log('xplatName:', xplatName); return options.skipDependentPlatformFiles ? noop() - : XplatHelpers.addPlatformFiles(options, xplatFolderName)( - tree, - context - ); + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'core' + )(tree, context); }, (tree: Tree, context: SchematicContext) => { const xplatFolderName = XplatHelpers.getXplatFoldername('web', 'angular'); - if (tree.exists(`/xplat/${xplatFolderName}/scss/_index.scss`)) { - // may have already generated vanilla web support + // console.log('xplatName:', xplatName); + return options.skipDependentPlatformFiles + ? noop() + : XplatHelpers.addPlatformFiles( + options, + xplatFolderName, + 'features' + )(tree, context); + }, + (tree: Tree, context: SchematicContext) => { + const xplatFolderName = XplatHelpers.getXplatFoldername('web', 'angular'); + if (tree.exists(`/libs/xplat/${xplatFolderName}/scss/src/_index.scss`)) { + // may have already generated web support return noop()(tree, context); } else { return branchAndMerge( mergeWith( - apply(url(`./_scss_files`), [ + apply(url(`./_files_platform_scss`), [ template({ ...(options as any), ...getDefaultTemplateOptions(), }), - move(`xplat/${xplatFolderName}/scss`), + move(`libs/xplat/${xplatFolderName}/scss/src`), ]) ) )(tree, context); } }, (tree: Tree, context: SchematicContext) => { - if (tree.exists('/libs/scss/_index.scss')) { + if (tree.exists('/libs/xplat/scss/src/_index.scss')) { // user may have generated support already return noop()(tree, context); } else { return branchAndMerge( mergeWith( - apply(url(`./_lib_files`), [ + apply(url(`./_files_lib_scss`), [ template({ ...(options as any), ...getDefaultTemplateOptions(), }), - move('libs'), + move('libs/xplat/scss/src'), ]) ) )(tree, context); } }, - XplatHelpers.updateTsConfigPaths(options, { framework: 'angular' }), XplatWebAngularHelpers.updateRootDeps(options), ]); } diff --git a/packages/web/package.json b/packages/web/package.json index c0084aed..b0bf130e 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -30,7 +30,7 @@ "migrations": "./migrations.json" }, "dependencies": { - "@nrwl/web": "^10.3.0" + "@nrwl/web": "^11.0.0" }, "peerDependencies": { "@nstudio/xplat": "*" diff --git a/packages/web/src/schematics/xplat/_files/scss/package.json b/packages/web/src/schematics/xplat/_files/scss/package.json deleted file mode 100644 index e6f85bff..00000000 --- a/packages/web/src/schematics/xplat/_files/scss/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/web-scss", - "version": "1.0.0" -} diff --git a/packages/web/src/schematics/xplat/_lib_files/scss/_index.scss b/packages/web/src/schematics/xplat/_files_lib_scss/_index.scss similarity index 100% rename from packages/web/src/schematics/xplat/_lib_files/scss/_index.scss rename to packages/web/src/schematics/xplat/_files_lib_scss/_index.scss diff --git a/packages/web/src/schematics/xplat/_lib_files/scss/_variables.scss b/packages/web/src/schematics/xplat/_files_lib_scss/_variables.scss similarity index 100% rename from packages/web/src/schematics/xplat/_lib_files/scss/_variables.scss rename to packages/web/src/schematics/xplat/_files_lib_scss/_variables.scss diff --git a/packages/web/src/schematics/xplat/_files_lib_scss/package.json b/packages/web/src/schematics/xplat/_files_lib_scss/package.json new file mode 100644 index 00000000..55aab6dc --- /dev/null +++ b/packages/web/src/schematics/xplat/_files_lib_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-scss", + "version": "1.0.0" +} diff --git a/packages/web-angular/src/schematics/xplat/_scss_files/_index.scss b/packages/web/src/schematics/xplat/_files_scss/_index.scss similarity index 85% rename from packages/web-angular/src/schematics/xplat/_scss_files/_index.scss rename to packages/web/src/schematics/xplat/_files_scss/_index.scss index 3e7d687c..539a4396 100644 --- a/packages/web-angular/src/schematics/xplat/_scss_files/_index.scss +++ b/packages/web/src/schematics/xplat/_files_scss/_index.scss @@ -1,5 +1,5 @@ // shared across all platforms and apps -@import '~@<%= npmScope %>/scss/index'; +@import '~@<%= npmScope %>/xplat-scss/index'; /** * The following are web specific (used with any web app targets) diff --git a/packages/web/src/schematics/xplat/_files/scss/_spacing.scss b/packages/web/src/schematics/xplat/_files_scss/_spacing.scss similarity index 100% rename from packages/web/src/schematics/xplat/_files/scss/_spacing.scss rename to packages/web/src/schematics/xplat/_files_scss/_spacing.scss diff --git a/packages/web/src/schematics/xplat/_files/scss/_tags.scss b/packages/web/src/schematics/xplat/_files_scss/_tags.scss similarity index 100% rename from packages/web/src/schematics/xplat/_files/scss/_tags.scss rename to packages/web/src/schematics/xplat/_files_scss/_tags.scss diff --git a/packages/web/src/schematics/xplat/_files/scss/_variables.scss b/packages/web/src/schematics/xplat/_files_scss/_variables.scss similarity index 100% rename from packages/web/src/schematics/xplat/_files/scss/_variables.scss rename to packages/web/src/schematics/xplat/_files_scss/_variables.scss diff --git a/packages/web/src/schematics/xplat/_files_scss/package.json b/packages/web/src/schematics/xplat/_files_scss/package.json new file mode 100644 index 00000000..cf952e72 --- /dev/null +++ b/packages/web/src/schematics/xplat/_files_scss/package.json @@ -0,0 +1,4 @@ +{ + "name": "@<%= npmScope %>/xplat-web-scss", + "version": "1.0.0" +} diff --git a/packages/web/src/schematics/xplat/_lib_files/scss/package.json b/packages/web/src/schematics/xplat/_lib_files/scss/package.json deleted file mode 100644 index ed711084..00000000 --- a/packages/web/src/schematics/xplat/_lib_files/scss/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@<%= npmScope %>/scss", - "version": "1.0.0" -} diff --git a/packages/web/src/schematics/xplat/index.spec.ts b/packages/web/src/schematics/xplat/index.spec.ts index da85ed71..533dca56 100644 --- a/packages/web/src/schematics/xplat/index.spec.ts +++ b/packages/web/src/schematics/xplat/index.spec.ts @@ -22,10 +22,10 @@ describe('xplat schematic', () => { const tree = await runSchematic('xplat', options, appTree); // console.log(tree.files); - expect(tree.exists('/xplat/web/scss/_index.scss')).toBeTruthy(); + expect(tree.exists('/libs/xplat/web/scss/src/_index.scss')).toBeTruthy(); const packagePath = '/package.json'; const packageFile = jsonParse(getFileContent(tree, packagePath)); - const hasScss = packageFile.dependencies[`@testing/scss`]; + const hasScss = packageFile.dependencies[`@testing/xplat-scss`]; expect(hasScss).toBeDefined(); }); }); diff --git a/packages/web/src/schematics/xplat/index.ts b/packages/web/src/schematics/xplat/index.ts index 046dd65b..b4fb8f13 100644 --- a/packages/web/src/schematics/xplat/index.ts +++ b/packages/web/src/schematics/xplat/index.ts @@ -19,32 +19,35 @@ export default function (options: XplatHelpers.Schema) { return chain([ prerun(options), (tree: Tree, context: SchematicContext) => { - if (tree.exists('/libs/scss/_index.scss')) { + if (tree.exists('/libs/xplat/scss/src/_index.scss')) { // may have already generated support return noop()(tree, context); } else { return branchAndMerge( mergeWith( - apply(url(`./_lib_files`), [ + apply(url(`./_files_lib_scss`), [ template({ ...(options as any), ...getDefaultTemplateOptions(), }), - move(`libs`), + move(`libs/xplat/scss/src`), ]) ) )(tree, context); } }, (tree: Tree, context: SchematicContext) => { - if (tree.exists('/xplat/web/scss/_index.scss')) { + if (tree.exists('/libs/xplat/web/scss/src/_index.scss')) { // may have already generated support return noop()(tree, context); } else { - return XplatHelpers.addPlatformFiles(options, 'web')(tree, context); + return XplatHelpers.addPlatformFiles( + options, + 'web', + 'scss' + )(tree, context); } }, - XplatHelpers.updateTsConfigPaths(options), XplatWebHelpers.updateRootDeps(options), ]); } diff --git a/packages/web/src/utils/xplat.ts b/packages/web/src/utils/xplat.ts index 69a12e21..44e93d69 100644 --- a/packages/web/src/utils/xplat.ts +++ b/packages/web/src/utils/xplat.ts @@ -7,7 +7,7 @@ export namespace XplatWebHelpers { // nothing extra needed at moment return (tree: Tree, context: SchematicContext) => { const dependencies = {}; - dependencies[`@${getNpmScope()}/scss`] = 'file:libs/scss'; + dependencies[`@${getNpmScope()}/xplat-scss`] = 'file:libs/xplat/scss/src'; return XplatHelpers.updatePackageForXplat(options, { dependencies, diff --git a/packages/xplat-utils/src/utils/utils.ts b/packages/xplat-utils/src/utils/utils.ts index 7fcaa448..6f28fe51 100644 --- a/packages/xplat-utils/src/utils/utils.ts +++ b/packages/xplat-utils/src/utils/utils.ts @@ -152,25 +152,6 @@ export function getRootTsConfigPath() { return '/tsconfig.base.json'; } -export function checkRootTsConfig(tree: Tree) { - if (!tree.exists('/tsconfig.json') && tree.exists('/tsconfig.base.json')) { - // to support Nx 10.1+ - // NOTE: We may end up creating tsconfig's at libs and xplat levels in future - // This allows ts resolution to work as normal - tree.create( - '/tsconfig.json', - JSON.stringify( - { - extends: `.${getRootTsConfigPath()}`, - }, - null, - 2 - ) - ); - } - return tree; -} - export function getAppPaths( tree: Tree, type?: PlatformTypes // by default, will return all app paths (considering folder nesting) @@ -251,7 +232,6 @@ export function prerun(options?: any, init?: boolean) { if (nxJson) { npmScope = nxJson.npmScope || 'workspace'; } - tree = checkRootTsConfig(tree); // console.log('npmScope:', npmScope); const packageJson = getJsonFromFile(tree, 'package.json'); diff --git a/packages/xplat/migrations.json b/packages/xplat/migrations.json index b6911ee8..2c32f10b 100644 --- a/packages/xplat/migrations.json +++ b/packages/xplat/migrations.json @@ -5,10 +5,68 @@ "description": "Migrate workspace to 10.2.0", "factory": "./migrations/update-10-2-0/update-10-2-0" }, - "update-to-10.3.0": { - "version": "10.3.0", - "description": "Migrate workspace to 10.3.0", - "factory": "./migrations/update-10-3-0/update-10-3-0" + "update-to-11.0.0": { + "version": "11.0.7", + "description": "Migrate workspace to 11.0.0", + "factory": "./migrations/update-11-0-0/update-11-0-0" + }, + "update-to-11-imports": { + "version": "11.0.7", + "description": "Migrate workspace to use v11 import barrels", + "factory": "./migrations/update-11-0-0/update-to-11-imports" + }, + "update-to-11-env-base": { + "version": "11.0.7", + "description": "Migrate workspace to use v11 env base option", + "factory": "./migrations/update-11-0-0/update-to-11-env-base" + }, + "update-to-11-clean-old-dirs": { + "version": "11.0.7", + "description": "Remove old dirs", + "factory": "./migrations/update-11-0-0/clean-old-dirs" + } + }, + "packageJsonUpdates": { + "11.0.7": { + "version": "11.0.7", + "packages": { + "@nstudio/angular": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/electron": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/electron-angular": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/ionic": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/ionic-angular": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/nativescript": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/nativescript-angular": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/web": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + }, + "@nstudio/web-angular": { + "version": "11.0.7", + "alwaysAddToPackageJson": false + } + } } } } diff --git a/packages/xplat/migrations/update-10-2-0/update-10-2-0.ts b/packages/xplat/migrations/update-10-2-0/update-10-2-0.ts index 0d4079a0..96571bea 100644 --- a/packages/xplat/migrations/update-10-2-0/update-10-2-0.ts +++ b/packages/xplat/migrations/update-10-2-0/update-10-2-0.ts @@ -1,15 +1,15 @@ import { chain, + noop, Rule, SchematicContext, Tree, } from '@angular-devkit/schematics'; -import { checkRootTsConfig } from '@nstudio/xplat-utils'; export default function (): Rule { return chain([ (tree: Tree, context: SchematicContext) => { - return checkRootTsConfig(tree); + return noop(); }, ]); } diff --git a/packages/xplat/migrations/update-10-3-0/update-10-3-0.ts b/packages/xplat/migrations/update-10-3-0/update-10-3-0.ts deleted file mode 100644 index c201db3d..00000000 --- a/packages/xplat/migrations/update-10-3-0/update-10-3-0.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - chain, - Rule, - SchematicContext, - Tree, -} from '@angular-devkit/schematics'; -import { createOrUpdate } from '@nrwl/workspace'; -import { - checkRootTsConfig, - getJsonFromFile, - getAppPaths, -} from '@nstudio/xplat-utils'; - -export default function (): Rule { - return chain([ - updateNativeScriptApps, - (tree: Tree, context: SchematicContext) => { - return checkRootTsConfig(tree); - }, - ]); -} - -function updateNativeScriptApps(tree: Tree, context: SchematicContext) { - const nativeScriptAppsPaths = getAppPaths(tree, 'nativescript'); - - // update {N} apps and configs - for (const dirPath of nativeScriptAppsPaths) { - // console.log(dir); - // console.log('appDir:', appDir); - const relativePath = dirPath - .split('/') - .filter((p) => !!p) - .map((p) => '..') - .join('/'); - - createOrUpdate( - tree, - `${dirPath}/tsconfig.env.json`, - `{ - "extends": "./tsconfig.json", - "include": [ - "${relativePath}/libs/core/environments/*.ts" - ] -} -` - ); - } - - if ( - tree.exists('libs/core/environments/environment.ts') && - !tree.exists(`libs/core/environments/environment.prod.ts`) - ) { - createOrUpdate( - tree, - `libs/core/environments/environment.prod.ts`, - `export const environment = { - production: true -};` - ); - } - return tree; -} diff --git a/packages/xplat/migrations/update-11-0-0/clean-old-dirs.ts b/packages/xplat/migrations/update-11-0-0/clean-old-dirs.ts new file mode 100644 index 00000000..daf9adb0 --- /dev/null +++ b/packages/xplat/migrations/update-11-0-0/clean-old-dirs.ts @@ -0,0 +1,38 @@ +import { chain, Rule, SchematicContext, Tree } from "@angular-devkit/schematics"; +import { prerun } from "@nstudio/xplat-utils"; + +export default function (): Rule { + return chain([ + prerun( + { + framework: 'angular', + }, + true + ), + // cleanup old dirs + (tree: Tree, context: SchematicContext) => { + try { + // if (tree.exists('xplat')) { + tree.delete('xplat'); + // } + // if (tree.exists('testing')) { + tree.delete('testing'); + // } + // if (tree.exists('libs/core')) { + tree.delete('libs/core'); + // } + // if (tree.exists('libs/features')) { + tree.delete('libs/features'); + // } + // if (tree.exists('libs/scss')) { + tree.delete('libs/scss'); + // } + // if (tree.exists('libs/utils')) { + tree.delete('libs/utils'); + // } + } catch (err) {} + + return tree; + }, + ]); +} diff --git a/packages/xplat/migrations/update-11-0-0/update-11-0-0.ts b/packages/xplat/migrations/update-11-0-0/update-11-0-0.ts new file mode 100644 index 00000000..1f099ae6 --- /dev/null +++ b/packages/xplat/migrations/update-11-0-0/update-11-0-0.ts @@ -0,0 +1,741 @@ +import { + chain, + externalSchematic, + move, + noop, + Rule, + SchematicContext, + Tree, +} from '@angular-devkit/schematics'; +import { + createOrUpdate, + getWorkspace, + getWorkspacePath, +} from '@nrwl/workspace'; +import { + getJsonFromFile, + getAppPaths, + prerun, + getNpmScope, + getPrefix, + getGroupByName, + updateJsonFile, + updateFile, +} from '@nstudio/xplat-utils'; +import { + XplatHelpers, + findNodes, + ReplaceChange, + insert, + updateTsConfig, +} from '@nstudio/xplat'; +// import xplatAngular from '@nstudio/angular/src/schematics/xplat/index'; +import * as ts from 'typescript'; +import { join } from 'path'; +import * as fs from 'fs'; + +export interface PackageNameMapping { + [packageName: string]: string; +} + +const options: XplatHelpers.Schema = {}; +const oldDirectoriesToMove: Array = []; +const newDirectoriesToEmpty: Array = []; +let platforms: Array; +export default function (): Rule { + return chain([ + prerun( + { + framework: 'angular', + }, + true + ), + // generate new xplat libs + // NOTE: this did not work with Nx 11 - + // calling externalSchematic's from outside collections do not seem to work (not sure if expected or not from running Nx migrations) + // This may have worked better being split into a migration by itself with no other rules in the chain + // (tree: Tree, context: SchematicContext) => { + // platforms = getCurrentlyUsedPlatforms(tree); + // console.log('generating libs for platforms:', platforms); + // if (platforms.length) { + // return xplatAngular({ + // platforms: platforms.join(','), + // framework: 'angular', + // npmScope: getNpmScope(), + // prefix: getPrefix(), + // skipFormat: true, + // useXplat: true, + // groupByName: getGroupByName(), + // }); + // } else { + // return noop()(tree, context); + // } + // }, + // clear the new libs and prepare to move existing into it + emptyNewStructure(), + // move old structure into new + moveOldStructureToNew(), + // update apps + updateAppConfigs(), + // update root deps + updateRootDeps(), + // remove old testing + deleteTestingDir(), + // cleanup gitignore + cleanupGitIgnore(), + // remove old nx projects + (tree: Tree) => { + const path = 'nx.json'; + const nxJson = getJsonFromFile(tree, path); + if (nxJson && nxJson.projects) { + delete nxJson.projects['libs']; + delete nxJson.projects['xplat']; + return updateJsonFile(tree, path, nxJson); + } else { + return noop(); + } + }, + // remove old workspace projects + (tree: Tree) => { + const workspacePath = getWorkspacePath(tree); + const workspaceJson = getJsonFromFile(tree, workspacePath); + if (workspaceJson && workspaceJson.projects) { + delete workspaceJson.projects['libs']; + delete workspaceJson.projects['xplat']; + return updateJsonFile(tree, workspacePath, workspaceJson); + } else { + return noop(); + } + }, + // remove old tsconfig settings + (tree: Tree, context: SchematicContext) => { + return updateTsConfig(tree, (tsConfig: any) => { + if (tsConfig) { + if (!tsConfig.compilerOptions) { + tsConfig.compilerOptions = {}; + } + const npmScope = getNpmScope(); + delete tsConfig.compilerOptions.paths[`@${npmScope}/*`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/electron`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/electron/*`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/ionic`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/ionic/*`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/nativescript`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/nativescript/*`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/web`]; + delete tsConfig.compilerOptions.paths[`@${npmScope}/web/*`]; + if (tsConfig.includes && tsConfig.includes.length) { + // find index of xplat entries + const xplatIndex = (>tsConfig.includes).findIndex( + (v) => v.indexOf('xplat') > -1 + ); + if (xplatIndex > -1) { + (>tsConfig.includes).splice(xplatIndex, 1); + } + } + if (tsConfig.exclude && tsConfig.exclude.length) { + // find index of xplat entries + const xplatIndex = (>tsConfig.exclude).findIndex( + (v) => v.indexOf('nativescript') > -1 + ); + if (xplatIndex > -1) { + (>tsConfig.exclude).splice(xplatIndex, 1); + } + } + } + }); + } + ]); +} + +function emptyNewStructure() { + return (tree: Tree, context: SchematicContext) => { + platforms = getCurrentlyUsedPlatforms(tree); + newDirectoriesToEmpty + .map((dir) => tree.getDir(dir)) + .forEach((projectDir) => { + projectDir.visit((file) => { + // console.log('emptyNewStructure', ' DELETE ', file); + tree.delete(file); + }); + }); + + return tree; + }; +} + +function deleteTestingDir() { + return (tree: Tree, context: SchematicContext) => { + if ( + tree.exists('/testing/test.libs.ts') || + tree.exists('/testing/jest.libs.config.js') + ) { + ['testing'] + .map((dir) => tree.getDir(dir)) + .forEach((projectDir) => { + projectDir.visit((file) => { + tree.delete(file); + }); + }); + + return tree; + } else { + return noop(); + } + }; +} + +function moveOldStructureToNew() { + return (tree: Tree, context: SchematicContext) => { + oldDirectoriesToMove + .map((dir) => tree.getDir(dir)) + .forEach((projectDir) => { + projectDir.visit((file) => { + let moveTo: string; + let srcTarget = '/src'; + if (file.indexOf('/scss') === -1) { + srcTarget += '/lib'; + } + if (file.indexOf('/libs') === 0) { + const pathTarget = projectDir.path.split('/').pop(); + moveTo = file.replace( + projectDir.path, + `/libs/xplat/${pathTarget}${srcTarget}` + ); + } else if (file.indexOf('/xplat') === 0) { + if (file.indexOf('/plugins') > -1) { + moveTo = file.replace( + projectDir.path, + `/libs${projectDir.path}` + ); + } else { + moveTo = file.replace( + projectDir.path, + `/libs${projectDir.path}${srcTarget}` + ); + } + } + // console.log('moveOldStructureToNew', ' rename ', file); + // console.log('moveOldStructureToNew', ' moveTo ', moveTo); + tree.rename(file, moveTo); + }); + }); + + return tree; + }; +} + +function updateRootDeps() { + return (tree: Tree, context: SchematicContext) => { + if (tree.exists('tsconfig.json')) { + tree.delete('tsconfig.json'); + } + const packagePath = 'package.json'; + const packageJson = getJsonFromFile(tree, packagePath); + + const npmScope = getNpmScope(); + delete packageJson.dependencies[`@${npmScope}/scss`]; + packageJson.dependencies[`@${npmScope}/xplat-scss`] = + 'file:libs/xplat/scss/src'; + delete packageJson.devDependencies[`node-sass`]; + packageJson.devDependencies['sass'] = '~1.30.0'; + + // look for file ref'd plugins from xplat and update path + for (const packageName of Object.keys(packageJson.dependencies)) { + const packageVersion = packageJson.dependencies[packageName]; + if (packageVersion && packageVersion.indexOf('file:xplat') > -1) { + packageJson.dependencies[packageName] = packageVersion.replace('file:xplat', 'file:libs/xplat') + } + } + + return updateJsonFile(tree, packagePath, packageJson); + }; +} + +function updateAppConfigs() { + return (tree: Tree, context: SchematicContext) => { + const webAppsPaths = getAppPaths(tree, 'web'); + for (const dirPath of webAppsPaths) { + const relativePath = dirPath + .split('/') + .filter((p) => !!p) + .map((p) => '..') + .join('/'); + + createOrUpdate( + tree, + `${dirPath}/tsconfig.json`, + `{ + "extends": "${relativePath}/tsconfig.base.json", + "compilerOptions": { + "types": [ + "node", + "jest" + ] + }, + "include": [ + "**/*.ts" + ] + } + ` + ); + + createOrUpdate( + tree, + `${dirPath}/tsconfig.app.json`, + `{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "${relativePath}/dist/out-tsc", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/test.ts" + ], + "exclude": [ + "src/test-setup.ts", + "**/*.spec.ts" + ] + } + ` + ); + } + + const nativeScriptAppsPaths = getAppPaths(tree, 'nativescript'); + const npmScope = getNpmScope(); + // update {N} apps and configs + for (const dirPath of nativeScriptAppsPaths) { + // console.log(dir); + // console.log('{N} appDir:', dirPath); + const relativePath = dirPath + .split('/') + .filter((p) => !!p) + .map((p) => '..') + .join('/'); + + const cwd = process.cwd(); + const webpackConfigPath = join( + cwd, + 'node_modules/@nstudio/nativescript-angular/src/schematics/application/_files/webpack.config.js' + ); + // console.log('webpackConfigPath:', webpackConfigPath); + const webpackConfig = fs.readFileSync(webpackConfigPath, 'UTF-8'); + createOrUpdate(tree, `${dirPath}/webpack.config.js`, webpackConfig); + + // update {N} app deps + const packagePath = `${dirPath}/package.json`; + const packageJson = getJsonFromFile(tree, packagePath); + + if (packageJson) { + packageJson.dependencies = packageJson.dependencies || {}; + delete packageJson.dependencies[`@${npmScope}/scss`]; + delete packageJson.dependencies[`@${npmScope}/nativescript-scss`]; + delete packageJson.dependencies[`@${npmScope}/nativescript`]; + const updatedDeps: any = {}; + updatedDeps[ + `@${npmScope}/xplat-nativescript-scss` + ] = `file:${relativePath}/libs/xplat/nativescript/scss/src`; + updatedDeps[ + `@${npmScope}/xplat-scss` + ] = `file:${relativePath}/libs/xplat/scss/src`; + packageJson.dependencies = { + ...packageJson.dependencies, + ...updatedDeps, + }; + + // look for file ref'd plugins from xplat and update path + for (const packageName of Object.keys(packageJson.dependencies)) { + const packageVersion = packageJson.dependencies[packageName]; + if (packageVersion && packageVersion.indexOf('../xplat') > -1) { + packageJson.dependencies[packageName] = packageVersion.replace('../xplat', '../libs/xplat') + } + } + + // console.log('path:',path); + // console.log('packageJson overwrite:', JSON.stringify(packageJson)); + tree = updateJsonFile(tree, packagePath, packageJson); + } + + const gitIgnorePath = `${dirPath}/.gitignore`; + let gitIgnore = tree.get(gitIgnorePath).content.toString(); + if (gitIgnore) { + gitIgnore = gitIgnore.replace('*.js', '*.js\n!jest.config.js'); + tree.overwrite(gitIgnorePath, gitIgnore); + } + + if (tree.exists(`${dirPath}/src/app.android.scss`)) { + let scssUpdate = tree + .read(`${dirPath}/src/app.android.scss`)! + .toString('utf-8'); + scssUpdate = scssUpdate.replace( + '/nativescript-scss', + '/xplat-nativescript-scss' + ); + createOrUpdate(tree, `${dirPath}/src/app.android.scss`, scssUpdate); + } + if (tree.exists(`${dirPath}/src/app.ios.scss`)) { + let scssUpdate = tree + .read(`${dirPath}/src/app.ios.scss`)! + .toString('utf-8'); + scssUpdate = scssUpdate.replace( + '/nativescript-scss', + '/xplat-nativescript-scss' + ); + createOrUpdate(tree, `${dirPath}/src/app.ios.scss`, scssUpdate); + } + + if (tree.exists(`${dirPath}/tsconfig.env.json`)) { + tree.delete(`${dirPath}/tsconfig.env.json`); + } + createOrUpdate( + tree, + `${dirPath}/tsconfig.app.json`, + `{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "${relativePath}/dist/out-tsc", + "types": [] + }, + "files": [ + "./references.d.ts", + "./src/main.ts" + ] + }` + ); + createOrUpdate( + tree, + `${dirPath}/tsconfig.editor.json`, + `{ + "extends": "./tsconfig.json", + "include": ["**/*.ts"], + "compilerOptions": { + "types": ["jest", "node"] + } + } + ` + ); + createOrUpdate( + tree, + `${dirPath}/tsconfig.json`, + `{ + "extends": "${relativePath}/tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./tsconfig.editor.json" + } + ] + } + ` + ); + createOrUpdate( + tree, + `${dirPath}/tsconfig.spec.json`, + `{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "${relativePath}/dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] + } + ` + ); + createOrUpdate( + tree, + `${dirPath}/src/test-setup.ts`, + `import 'jest-preset-angular';` + ); + createOrUpdate( + tree, + `${dirPath}/references.d.ts`, + `/// ` + ); + createOrUpdate( + tree, + `${dirPath}/jest.config.js`, + `module.exports = { + preset: '${relativePath}/jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + globals: { + 'ts-jest': { + tsConfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + astTransformers: [ + 'jest-preset-angular/build/InlineFilesTransformer', + 'jest-preset-angular/build/StripStylesTransformer' + ] + } + }, + coverageDirectory: '${relativePath}/coverage${dirPath}', + snapshotSerializers: [ + 'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js', + 'jest-preset-angular/build/AngularSnapshotSerializer.js', + 'jest-preset-angular/build/HTMLCommentSerializer.js' + ], + displayName: '${dirPath.split('/').pop()}' + }; + ` + ); + createOrUpdate( + tree, + `${dirPath}/.eslintrc.json`, + `{ + "extends": "${relativePath}/.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "extends": [ + "plugin:@nrwl/nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "parserOptions": { + "project": [ + "${dirPath}/tsconfig.*?.json" + ] + }, + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "nar", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "nar", + "style": "kebab-case" + } + ] + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@nrwl/nx/angular-template" + ], + "rules": {} + } + ] + } + ` + ); + } + + return tree; + }; +} + +function cleanupGitIgnore() { + return (tree: Tree) => { + const gitIgnorePath = '.gitignore'; + let gitIgnore = tree.get(gitIgnorePath).content.toString(); + if (gitIgnore) { + gitIgnore = gitIgnore.replace('# libs', ''); + gitIgnore = gitIgnore.replace('libs/**/*.js', ''); + gitIgnore = gitIgnore.replace('libs/**/*.map', ''); + gitIgnore = gitIgnore.replace('libs/**/*.d.ts', ''); + gitIgnore = gitIgnore.replace('libs/**/*.metadata.json', ''); + gitIgnore = gitIgnore.replace('libs/**/*.ngfactory.ts', ''); + gitIgnore = gitIgnore.replace('libs/**/*.ngsummary.json', ''); + + gitIgnore = gitIgnore.replace('xplat/**/*.js', ''); + gitIgnore = gitIgnore.replace('xplat/**/*.map', ''); + gitIgnore = gitIgnore.replace('xplat/**/*.d.ts', ''); + gitIgnore = gitIgnore.replace('xplat/**/*.metadata.json', ''); + gitIgnore = gitIgnore.replace('xplat/**/*.ngfactory.ts', ''); + gitIgnore = gitIgnore.replace('xplat/**/*.ngsummary.json', ''); + } + + return updateFile(tree, gitIgnorePath, gitIgnore); + }; +} + +function getCurrentlyUsedPlatforms(tree: Tree) { + const platforms = []; + if ( + tree.exists('/libs/core/index.ts') && + tree.exists('/libs/features/index.ts') + ) { + const npmScope = getNpmScope(); + if (!oldDirectoriesToMove.includes('/libs/core')) { + oldDirectoriesToMove.push('/libs/core'); + newDirectoriesToEmpty.push('/libs/xplat/core/src/lib'); + } + if (!oldDirectoriesToMove.includes('/libs/features')) { + oldDirectoriesToMove.push('/libs/features'); + newDirectoriesToEmpty.push('/libs/xplat/features/src/lib'); + } + if (!oldDirectoriesToMove.includes('/libs/scss')) { + oldDirectoriesToMove.push('/libs/scss'); + newDirectoriesToEmpty.push('/libs/xplat/scss/src'); + createOrUpdate( + tree, + `/libs/scss/package.json`, + `{ + "name": "@${npmScope}/xplat-scss", + "version": "1.0.0" + }` + ); + } + if (!oldDirectoriesToMove.includes('/libs/utils')) { + oldDirectoriesToMove.push('/libs/utils'); + newDirectoriesToEmpty.push('/libs/xplat/utils/src/lib'); + } + // collect which platforms were currently used + if (tree.exists('/xplat/electron/index.ts')) { + if (!platforms.includes('electron')) { + platforms.push('electron'); + } + if (!oldDirectoriesToMove.includes('/xplat/electron')) { + oldDirectoriesToMove.push('/xplat/electron'); + newDirectoriesToEmpty.push('/libs/xplat/electron/core/src/lib'); + } + } + if (tree.exists('/xplat/ionic/index.ts')) { + if (!platforms.includes('ionic')) { + platforms.push('ionic'); + } + if (!oldDirectoriesToMove.includes('/xplat/ionic/core')) { + oldDirectoriesToMove.push('/xplat/ionic/core'); + newDirectoriesToEmpty.push('/libs/xplat/ionic/core/src/lib'); + } + if (!oldDirectoriesToMove.includes('/xplat/ionic/features')) { + oldDirectoriesToMove.push('/xplat/ionic/features'); + newDirectoriesToEmpty.push('/libs/xplat/ionic/features/src/lib'); + } + if (!oldDirectoriesToMove.includes('/xplat/ionic/scss')) { + oldDirectoriesToMove.push('/xplat/ionic/scss'); + newDirectoriesToEmpty.push('/libs/xplat/ionic/scss/src'); + createOrUpdate( + tree, + `/xplat/ionic/scss/package.json`, + `{ + "name": "@${npmScope}/xplat-ionic-scss", + "version": "1.0.0" + }` + ); + if (tree.exists(`/xplat/ionic/scss/_index.scss`)) { + let scssUpdate = tree + .read(`/xplat/ionic/scss/_index.scss`)! + .toString('utf-8'); + scssUpdate = scssUpdate.replace( + `@${npmScope}/scss/index`, + `@${npmScope}/xplat-scss/index` + ); + createOrUpdate(tree, `/xplat/ionic/scss/_index.scss`, scssUpdate); + } + } + } + if (tree.exists('/xplat/nativescript/index.ts')) { + if (!platforms.includes('nativescript')) { + platforms.push('nativescript'); + } + if (!oldDirectoriesToMove.includes('/xplat/nativescript/core')) { + oldDirectoriesToMove.push('/xplat/nativescript/core'); + newDirectoriesToEmpty.push('/libs/xplat/nativescript/core/src/lib'); + } + if (!oldDirectoriesToMove.includes('/xplat/nativescript/features')) { + oldDirectoriesToMove.push('/xplat/nativescript/features'); + newDirectoriesToEmpty.push('/libs/xplat/nativescript/features/src/lib'); + } + if (!oldDirectoriesToMove.includes('/xplat/nativescript/plugins')) { + oldDirectoriesToMove.push('/xplat/nativescript/plugins'); + } + if (!oldDirectoriesToMove.includes('/xplat/nativescript/scss')) { + oldDirectoriesToMove.push('/xplat/nativescript/scss'); + newDirectoriesToEmpty.push('/libs/xplat/nativescript/scss/src'); + createOrUpdate( + tree, + `/xplat/nativescript/scss/package.json`, + `{ + "name": "@${npmScope}/xplat-nativescript-scss", + "version": "1.0.0" + }` + ); + if (tree.exists(`/xplat/nativescript/scss/_common.scss`)) { + let scssUpdate = tree + .read(`/xplat/nativescript/scss/_common.scss`)! + .toString('utf-8'); + scssUpdate = scssUpdate.replace( + `@${npmScope}/scss/index`, + `@${npmScope}/xplat-scss/index` + ); + createOrUpdate( + tree, + `/xplat/nativescript/scss/_common.scss`, + scssUpdate + ); + } + } + if (!oldDirectoriesToMove.includes('/xplat/nativescript/utils')) { + oldDirectoriesToMove.push('/xplat/nativescript/utils'); + newDirectoriesToEmpty.push('/libs/xplat/nativescript/utils/src/lib'); + } + } + if (tree.exists('/xplat/web/index.ts')) { + if (!platforms.includes('web')) { + platforms.push('web'); + } + if (!oldDirectoriesToMove.includes('/xplat/web/core')) { + oldDirectoriesToMove.push('/xplat/web/core'); + newDirectoriesToEmpty.push('/libs/xplat/web/core/src/lib'); + } + if (!oldDirectoriesToMove.includes('/xplat/web/features')) { + oldDirectoriesToMove.push('/xplat/web/features'); + newDirectoriesToEmpty.push('/libs/xplat/web/features/src/lib'); + } + if (!oldDirectoriesToMove.includes('/xplat/web/plugins')) { + oldDirectoriesToMove.push('/xplat/web/plugins'); + } + if (!oldDirectoriesToMove.includes('/xplat/web/scss')) { + oldDirectoriesToMove.push('/xplat/web/scss'); + newDirectoriesToEmpty.push('/libs/xplat/web/scss/src'); + createOrUpdate( + tree, + `/xplat/web/scss/package.json`, + `{ + "name": "@${npmScope}/xplat-web-scss", + "version": "1.0.0" + }` + ); + if (tree.exists(`/xplat/web/scss/_index.scss`)) { + let scssUpdate = tree + .read(`/xplat/web/scss/_index.scss`)! + .toString('utf-8'); + scssUpdate = scssUpdate.replace( + `@${npmScope}/scss/index`, + `@${npmScope}/xplat-scss/index` + ); + createOrUpdate(tree, `/xplat/web/scss/_index.scss`, scssUpdate); + } + } + } + return platforms; + } + return platforms; +} diff --git a/packages/xplat/migrations/update-11-0-0/update-to-11-env-base.ts b/packages/xplat/migrations/update-11-0-0/update-to-11-env-base.ts new file mode 100644 index 00000000..140a5990 --- /dev/null +++ b/packages/xplat/migrations/update-11-0-0/update-to-11-env-base.ts @@ -0,0 +1,408 @@ +import { + chain, + externalSchematic, + move, + noop, + Rule, + SchematicContext, + Tree, +} from '@angular-devkit/schematics'; +import { + createOrUpdate, + getWorkspace, + getWorkspacePath, +} from '@nrwl/workspace'; +import { + getJsonFromFile, + getAppPaths, + prerun, + getNpmScope, + getPrefix, + getGroupByName, + updateJsonFile, + updateFile, +} from '@nstudio/xplat-utils'; +import { + XplatHelpers, + findNodes, + ReplaceChange, + insert, + updateTsConfig, +} from '@nstudio/xplat'; +import * as ts from 'typescript'; +import { join } from 'path'; +import * as fs from 'fs'; + +export default function (): Rule { + return chain([ + prerun( + { + framework: 'angular', + }, + true + ), + // add environment base setup to allow workspaces to start using + addEnvBase(), + // add envs to {N} apps + updateEnvsForNativeScript(), + // update workspace project fileReplacements to use new env locations + updateWorkspaceFileReplacements(), + ]); +} + +export function addEnvBase() { + return (tree: Tree, _context: SchematicContext) => { + const npmScope = getNpmScope(); + const coreIndexPath = `/libs/xplat/core/src/lib/index.ts`; + let coreIndex = tree.read(coreIndexPath)!.toString('utf-8'); + coreIndex = coreIndex.replace( + `./environments/environment`, + `./environments` + ); + createOrUpdate(tree, coreIndexPath, coreIndex); + + const envInterfacePath = `/libs/xplat/core/src/lib/environments/environment.interface.ts`; + const envInterface = `/** + * Workspace shared environment properties + */ + export interface IEnvironment { + production?: boolean; + }`; + createOrUpdate(tree, envInterfacePath, envInterface); + + const envIndexPath = `/libs/xplat/core/src/lib/environments/index.ts`; + const envIndex = `export * from './environment.interface'; + export * from './environment';`; + createOrUpdate(tree, envIndexPath, envIndex); + + const envBasePath = `/libs/xplat/core/src/lib/environments/base/environment.base.ts`; + const envBase = `import { IEnvironment } from '../environment.interface'; + + /** + * Reduce the most commonly used environment values here + */ + export const environmentBase: IEnvironment = { + production: false + };`; + createOrUpdate(tree, envBasePath, envBase); + + const envDevPath = `/libs/xplat/core/src/lib/environments/base/environment.dev.ts`; + const envDev = `import { IEnvironment } from '@${npmScope}/xplat/core'; + import { deepMerge } from '@${npmScope}/xplat/utils'; + import { environmentBase } from './environment.base'; + + export const environmentDev = deepMerge(environmentBase, { + // customizations here... + }); + `; + createOrUpdate(tree, envDevPath, envDev); + + const envProdPath = `/libs/xplat/core/src/lib/environments/base/environment.prod.ts`; + const envProd = `import { IEnvironment } from '@${npmScope}/xplat/core'; + import { deepMerge } from '@${npmScope}/xplat/utils'; + import { environmentBase } from './environment.base'; + + export const environmentProd = deepMerge(environmentBase, { + production: true, + // customizations here... + }); + `; + createOrUpdate(tree, envProdPath, envProd); + + const envBaseIndexPath = `/libs/xplat/core/src/lib/environments/base/index.ts`; + const envBaseIndex = `export * from './environment.base'; + export * from './environment.dev'; + export * from './environment.prod'; + `; + createOrUpdate(tree, envBaseIndexPath, envBaseIndex); + + const utilsObjPath = `/libs/xplat/utils/src/lib/objects.ts`; + let utilsObj = ''; + const utilsObjDeepMerge = `\n\nexport function deepMerge(target: T1, source: T2): T1 & T2 { + const result: any = {}; + Object.entries(target).forEach(([key, value]) => { + if (key in source) { + // potential overwrite + if (typeof value !== typeof source[key]) { + // value type mismatch, always take source values. + result[key] = source[key]; + } else if (isObject(value)) { + result[key] = deepMerge(value, source[key]); + } else { + result[key] = source[key]; + } + } else { + result[key] = value; + } + }); + Object.entries(source) + .filter(([key]) => !(key in target)) + .forEach(([key, value]) => { + result[key] = value; + }); + return result; + }`; + if (tree.exists(utilsObjPath)) { + utilsObj = tree.read(utilsObjPath)!.toString('utf-8'); + } + if (utilsObj.indexOf('deepMerge') === -1) { + utilsObj = utilsObj + utilsObjDeepMerge; + } + createOrUpdate(tree, utilsObjPath, utilsObj); + }; +} + +export function updateEnvsForNativeScript() { + return (tree: Tree, _context: SchematicContext) => { + const nativeScriptAppsPaths = getAppPaths(tree, 'nativescript'); + const npmScope = getNpmScope(); + // update {N} apps and configs + for (const dirPath of nativeScriptAppsPaths) { + // console.log(dir); + // console.log('{N} appDir:', dirPath); + const relativePath = dirPath + .split('/') + .filter((p) => !!p) + .map((p) => '..') + .join('/'); + + // disable xplat env base handling to make it opt in when ready + const cwd = process.cwd(); + const webpackConfigPath = join( + cwd, + 'node_modules/@nstudio/nativescript-angular/src/schematics/application/_files/webpack.config.js' + ); + // console.log('webpackConfigPath:', webpackConfigPath); + let webpackConfig = fs.readFileSync(webpackConfigPath, 'UTF-8'); + webpackConfig = webpackConfig.replace( + 'if (isXplatWorkspace) {', + `// opt in when ready to use in your workspace\n const xplatEnvBaseEnabled = false;\n if (xplatEnvBaseEnabled && isXplatWorkspace) {` + ); + createOrUpdate(tree, `${dirPath}/webpack.config.js`, webpackConfig); + + createOrUpdate( + tree, + `${dirPath}/src/environments/environment.base.ts`, + `import { IEnvironment } from '@${npmScope}/xplat/core'; + import { deepMerge } from '@${npmScope}/xplat/utils'; + + export const environmentBase = function (baseWorkspaceEnv: IEnvironment, appEnvironmentCustom: IEnvironment = {}) { + // base app environment + customizations + const appEnvironment = deepMerge( + { + production: baseWorkspaceEnv.production, + // shared app level customizations here... + }, + appEnvironmentCustom + ); + // base workspace environment + target app environment + return deepMerge(baseWorkspaceEnv, appEnvironment); + }; + ` + ); + + createOrUpdate( + tree, + `${dirPath}/src/environments/environment.dev.ts`, + `import { environmentBase } from './environment.base'; + import { IEnvironment } from '@${npmScope}/xplat/core'; + import { environmentDev } from '@${npmScope}/xplat/environments'; + + export const environment: IEnvironment = environmentBase(environmentDev, { + // app level customizations here... + }); + ` + ); + + createOrUpdate( + tree, + `${dirPath}/src/environments/environment.prod.ts`, + `import { environmentBase } from './environment.base'; + import { IEnvironment } from '@${npmScope}/xplat/core'; + import { environmentProd } from '@${npmScope}/xplat/environments'; + + export const environment: IEnvironment = environmentBase(environmentProd, { + // app level customizations here... + }); + ` + ); + } + }; +} + +export function updateWorkspaceFileReplacements() { + return (tree: Tree, _context: SchematicContext) => { + const workspacePath = getWorkspacePath(tree); + const workspaceJson = getJsonFromFile(tree, workspacePath); + if (workspaceJson && workspaceJson.projects) { + const projectNames = Object.keys(workspaceJson.projects); + for (const name of projectNames) { + if ( + workspaceJson.projects[name] && + workspaceJson.projects[name].architect + ) { + if (workspaceJson.projects[name].architect.build) { + // update style references + if ( + workspaceJson.projects[name].architect.build.options && + workspaceJson.projects[name].architect.build.options.styles + ) { + for ( + let i = 0; + i < + workspaceJson.projects[name].architect.build.options.styles + .length; + i++ + ) { + const styleEntry = + workspaceJson.projects[name].architect.build.options.styles[ + i + ]; + if ( + styleEntry.indexOf('xplat/web/scss') > -1 && + styleEntry.indexOf('libs/xplat/web') === -1 + ) { + workspaceJson.projects[name].architect.build.options.styles[ + i + ] = styleEntry.replace( + 'xplat/web/scss', + 'libs/xplat/web/scss/src' + ); + } + } + } + + // update configuration fileReplacements + if (workspaceJson.projects[name].architect.build.configurations) { + const configKeys = Object.keys( + workspaceJson.projects[name].architect.build.configurations + ); + for (const configKey of configKeys) { + if ( + workspaceJson.projects[name].architect.build.configurations[ + configKey + ].fileReplacements + ) { + let updatedFileReplace; + for ( + let i = 0; + i < + workspaceJson.projects[name].architect.build.configurations[ + configKey + ].fileReplacements.length; + i++ + ) { + const replaceOption = + workspaceJson.projects[name].architect.build + .configurations[configKey].fileReplacements[i]; + if ( + replaceOption.replace && + replaceOption.replace.indexOf('libs/core') > -1 + ) { + if (!updatedFileReplace) { + updatedFileReplace = replaceOption; + } + updatedFileReplace.replace = updatedFileReplace.replace.replace( + 'libs/core', + 'libs/xplat/core/src/lib' + ); + } + + if ( + replaceOption.with && + replaceOption.with.indexOf('libs/core') > -1 + ) { + if (!updatedFileReplace) { + updatedFileReplace = replaceOption; + } + updatedFileReplace.with = updatedFileReplace.with.replace( + 'libs/core', + 'libs/xplat/core/src/lib' + ); + } + + if (updatedFileReplace) { + workspaceJson.projects[ + name + ].architect.build.configurations[ + configKey + ].fileReplacements[i] = updatedFileReplace; + } + } + } + } + } + } + + // {N}: update configuration fileReplacements + if ( + workspaceJson.projects[name].architect.default && + workspaceJson.projects[name].architect.default.configurations + ) { + const configKeys = Object.keys( + workspaceJson.projects[name].architect.default.configurations + ); + for (const configKey of configKeys) { + if ( + workspaceJson.projects[name].architect.default.configurations[ + configKey + ].fileReplacements + ) { + let updatedFileReplace; + for ( + let i = 0; + i < + workspaceJson.projects[name].architect.default.configurations[ + configKey + ].fileReplacements.length; + i++ + ) { + const replaceOption = + workspaceJson.projects[name].architect.default + .configurations[configKey].fileReplacements[i]; + if ( + replaceOption.replace && + replaceOption.replace.indexOf('libs/core') > -1 + ) { + if (!updatedFileReplace) { + updatedFileReplace = replaceOption; + } + updatedFileReplace.replace = updatedFileReplace.replace.replace( + 'libs/core', + 'libs/xplat/core/src/lib' + ); + } + + if ( + replaceOption.with && + replaceOption.with.indexOf('libs/core') > -1 + ) { + if (!updatedFileReplace) { + updatedFileReplace = replaceOption; + } + updatedFileReplace.with = updatedFileReplace.with.replace( + 'libs/core', + 'libs/xplat/core/src/lib' + ); + } + + if (updatedFileReplace) { + workspaceJson.projects[ + name + ].architect.default.configurations[ + configKey + ].fileReplacements[i] = updatedFileReplace; + } + } + } + } + } + } + } + + return updateJsonFile(tree, workspacePath, workspaceJson); + } else { + return noop(); + } + }; +} diff --git a/packages/xplat/migrations/update-11-0-0/update-to-11-imports.ts b/packages/xplat/migrations/update-11-0-0/update-to-11-imports.ts new file mode 100644 index 00000000..8cda44ce --- /dev/null +++ b/packages/xplat/migrations/update-11-0-0/update-to-11-imports.ts @@ -0,0 +1,298 @@ +import { + chain, + externalSchematic, + move, + noop, + Rule, + SchematicContext, + Tree, +} from '@angular-devkit/schematics'; +import { + createOrUpdate, + getWorkspace, + getWorkspacePath, +} from '@nrwl/workspace'; +import { + getJsonFromFile, + getAppPaths, + prerun, + getNpmScope, + getPrefix, + getGroupByName, + updateJsonFile, + updateFile, +} from '@nstudio/xplat-utils'; +import { + XplatHelpers, + findNodes, + ReplaceChange, + insert, + updateTsConfig, +} from '@nstudio/xplat'; +// import xplatAngular from '@nstudio/angular/src/schematics/xplat/index'; +import * as ts from 'typescript'; +import { join } from 'path'; +import * as fs from 'fs'; + +export interface PackageNameMapping { + [packageName: string]: string; +} + +const options: XplatHelpers.Schema = {}; +const importsToUpdateMapping: PackageNameMapping = {}; +const importsScssToUpdateMapping: PackageNameMapping = {}; +export default function (): Rule { + return chain([ + prerun( + { + framework: 'angular', + }, + true + ), + // update imports throughout old lib architecture and apps + updateImports(), + ]); +} + +export function updateImports() { + return (tree: Tree, _context: SchematicContext) => { + const npmScope = getNpmScope(); + importsToUpdateMapping[`@${npmScope}/core`] = `@${npmScope}/xplat/core`; + importsToUpdateMapping[`@${npmScope}/core/*`] = `@${npmScope}/xplat/core`; + importsToUpdateMapping[ + `@${npmScope}/features` + ] = `@${npmScope}/xplat/features`; + importsToUpdateMapping[ + `@${npmScope}/features/*` + ] = `@${npmScope}/xplat/features`; + importsToUpdateMapping[`@${npmScope}/utils`] = `@${npmScope}/xplat/utils`; + importsToUpdateMapping[`@${npmScope}/utils/*`] = `@${npmScope}/xplat/utils`; + // collect which platforms were currently used + + importsToUpdateMapping[ + `@${npmScope}/electron` + ] = `@${npmScope}/xplat/electron/core`; + importsToUpdateMapping[ + `@${npmScope}/electron/core` + ] = `@${npmScope}/xplat/electron/core`; + importsToUpdateMapping[ + `@${npmScope}/electron/core/*` + ] = `@${npmScope}/xplat/electron/core`; + importsToUpdateMapping[ + `@${npmScope}/electron/features` + ] = `@${npmScope}/xplat/electron/features`; + importsToUpdateMapping[ + `@${npmScope}/electron/features/*` + ] = `@${npmScope}/xplat/electron/features`; + importsToUpdateMapping[ + `@${npmScope}/electron/utils` + ] = `@${npmScope}/xplat/electron/utils`; + importsToUpdateMapping[ + `@${npmScope}/electron/utils/*` + ] = `@${npmScope}/xplat/electron/utils`; + + importsToUpdateMapping[ + `@${npmScope}/ionic` + ] = `@${npmScope}/xplat/ionic/core`; + importsToUpdateMapping[ + `@${npmScope}/ionic/core` + ] = `@${npmScope}/xplat/ionic/core`; + importsToUpdateMapping[ + `@${npmScope}/ionic/core/*` + ] = `@${npmScope}/xplat/ionic/core`; + importsToUpdateMapping[ + `@${npmScope}/ionic/features` + ] = `@${npmScope}/xplat/ionic/features`; + importsToUpdateMapping[ + `@${npmScope}/ionic/features/*` + ] = `@${npmScope}/xplat/ionic/features`; + importsToUpdateMapping[ + `@${npmScope}/ionic/utils` + ] = `@${npmScope}/xplat/ionic/utils`; + importsToUpdateMapping[ + `@${npmScope}/ionic/utils/*` + ] = `@${npmScope}/xplat/ionic/utils`; + + importsToUpdateMapping[ + `@${npmScope}/nativescript` + ] = `@${npmScope}/xplat/nativescript/core`; + importsToUpdateMapping[ + `@${npmScope}/nativescript/core` + ] = `@${npmScope}/xplat/nativescript/core`; + importsToUpdateMapping[ + `@${npmScope}/nativescript/core/*` + ] = `@${npmScope}/xplat/nativescript/core`; + importsToUpdateMapping[ + `@${npmScope}/nativescript/features` + ] = `@${npmScope}/xplat/nativescript/features`; + importsToUpdateMapping[ + `@${npmScope}/nativescript/features/*` + ] = `@${npmScope}/xplat/nativescript/features`; + importsToUpdateMapping[ + `@${npmScope}/nativescript/utils` + ] = `@${npmScope}/xplat/nativescript/utils`; + importsToUpdateMapping[ + `@${npmScope}/nativescript/utils/*` + ] = `@${npmScope}/xplat/nativescript/utils`; + + importsToUpdateMapping[`@${npmScope}/web`] = `@${npmScope}/xplat/web/core`; + importsToUpdateMapping[ + `@${npmScope}/web/core` + ] = `@${npmScope}/xplat/web/core`; + importsToUpdateMapping[ + `@${npmScope}/web/core/*` + ] = `@${npmScope}/xplat/web/core`; + importsToUpdateMapping[ + `@${npmScope}/web/features` + ] = `@${npmScope}/xplat/web/features`; + importsToUpdateMapping[ + `@${npmScope}/web/features/*` + ] = `@${npmScope}/xplat/web/features`; + importsToUpdateMapping[ + `@${npmScope}/web/utils` + ] = `@${npmScope}/xplat/web/utils`; + importsToUpdateMapping[ + `@${npmScope}/web/utils/*` + ] = `@${npmScope}/xplat/web/utils`; + // console.log( + // 'updateImports', + // 'directoriesToUpdateImports:', + // directoriesToUpdateImports + // ); + + // scss imports + importsScssToUpdateMapping[ + `@${npmScope}/scss` + ] = `@${npmScope}/xplat-scss`; + importsScssToUpdateMapping[ + `@${npmScope}/ionic-scss` + ] = `@${npmScope}/xplat-ionic-scss`; + importsScssToUpdateMapping[ + `@${npmScope}/web-scss` + ] = `@${npmScope}/xplat-web-scss`; + importsScssToUpdateMapping[ + `@${npmScope}/nativescript-scss` + ] = `@${npmScope}/xplat-nativescript-scss`; + + ['/libs', '/apps'] + .map((dir) => tree.getDir(dir)) + .forEach((projectDir) => { + projectDir.visit((file) => { + // only look at .ts and .scss files + // ignore some directories in various apps + if ( + !/^.*\.(ts|scss)$/.test(file) || + file.indexOf('/node_modules/') > -1 || + file.indexOf('/platforms/ios') > -1 || + file.indexOf('/platforms/android') > -1 + ) { + return; + } + // if it doesn't contain at least 1 reference to the packages to be renamed bail out + const contents = tree.read(file).toString('utf-8'); + + if (/^.*\.scss$/.test(file)) { + if ( + !Object.keys(importsScssToUpdateMapping).some((packageName) => + contents.includes(packageName) + ) + ) { + return; + } + Object.entries(importsScssToUpdateMapping) + .forEach(([packageName, newPackageName]) => { + if (contents.indexOf(packageName) > -1) { + const regEx = new RegExp(packageName, 'ig'); + tree.overwrite(file, contents.replace(regEx, newPackageName)); + } + }); + } else { + if ( + !Object.keys(importsToUpdateMapping).some((packageName) => + contents.includes(packageName) + ) + ) { + return; + } + // console.log('updateImports', 'found old import in:', file); + + const astSource = ts.createSourceFile( + file, + contents, + ts.ScriptTarget.Latest, + true + ); + const changes = Object.entries(importsToUpdateMapping) + .map(([packageName, newPackageName]) => { + if (file.indexOf('apps/') > -1) { + // ensure core vs. shared is handled + if (file.indexOf('core.module') > -1) { + if (file.indexOf('electron') > -1) { + newPackageName = `@${npmScope}/xplat/electron/core`; + } else if (file.indexOf('ionic') > -1) { + newPackageName = `@${npmScope}/xplat/ionic/core`; + } else if (file.indexOf('nativescript') > -1) { + newPackageName = `@${npmScope}/xplat/nativescript/core`; + } else if (file.indexOf('web') > -1) { + newPackageName = `@${npmScope}/xplat/web/core`; + } + } else if (file.indexOf('shared.module') > -1) { + if (file.indexOf('electron') > -1) { + newPackageName = `@${npmScope}/xplat/electron/features`; + } else if (file.indexOf('ionic') > -1) { + newPackageName = `@${npmScope}/xplat/ionic/features`; + } else if (file.indexOf('nativescript') > -1) { + newPackageName = `@${npmScope}/xplat/nativescript/features`; + } else if (file.indexOf('web') > -1) { + newPackageName = `@${npmScope}/xplat/web/features`; + } + } + } + const nodes = findNodes( + astSource, + ts.SyntaxKind.ImportDeclaration + ) as ts.ImportDeclaration[]; + + return nodes + .filter((node) => { + // remove quotes from module name + const rawImportModuleText = node.moduleSpecifier + .getText() + .slice(1) + .slice(0, -1); + if (packageName.indexOf('*') > -1) { + // replace deep imports + return ( + rawImportModuleText.indexOf( + packageName.replace('*', '') + ) === 0 + ); + } else { + // replace exact matches + return rawImportModuleText === packageName; + } + }) + .map( + (node) => + new ReplaceChange( + file, + node.moduleSpecifier.getStart(), + node.moduleSpecifier.getText(), + `'${newPackageName}'` + ) + ); + }) + // .flatMap()/.flat() is not available? So, here's a flat poly + .reduce((acc, val) => acc.concat(val), []); + // if the reference to packageName was in fact an import statement + if (changes.length > 0) { + // update the file in the tree + insert(tree, file, changes); + } + } + }); + }); + + return tree; + }; +} diff --git a/packages/xplat/package.json b/packages/xplat/package.json index b3ec7df0..57d0146c 100644 --- a/packages/xplat/package.json +++ b/packages/xplat/package.json @@ -41,7 +41,7 @@ "postinstall": "node src/utils/postinstall.js" }, "dependencies": { - "@nrwl/workspace": "~10.3.0", + "@nrwl/workspace": "~11.0.0", "@nstudio/focus": "*", "@nstudio/xplat-utils": "*", "cosmiconfig": "~7.0.0", diff --git a/packages/xplat/src/schematics/app-generate/schema.json b/packages/xplat/src/schematics/app-generate/schema.json index e08732d9..d3738ac1 100644 --- a/packages/xplat/src/schematics/app-generate/schema.json +++ b/packages/xplat/src/schematics/app-generate/schema.json @@ -25,6 +25,7 @@ "framework": { "type": "string", "description": "Frontend framework.", + "default": "angular", "x-prompt": { "message": "Which frontend framework should it use?", "type": "list", diff --git a/packages/xplat/src/schematics/feature/index.spec.ts b/packages/xplat/src/schematics/feature/index.spec.ts index 7e24e61f..cb5ec0ed 100644 --- a/packages/xplat/src/schematics/feature/index.spec.ts +++ b/packages/xplat/src/schematics/feature/index.spec.ts @@ -37,49 +37,61 @@ xdescribe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); expect( files.indexOf('/xplat/nativescript/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); // feature in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/features/foo/base/foo.base-component.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); // feature should NOT be in projects @@ -117,7 +129,8 @@ xdescribe('feature schematic', () => { ).toBeGreaterThanOrEqual(-1); // file content - let modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -128,7 +141,7 @@ xdescribe('feature schematic', () => { `import { UIModule } from \'../ui/ui.module\'` ); - modulePath = '/xplat/web/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/web/features/src/lib/foo/foo.module.ts'; featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -157,54 +170,64 @@ xdescribe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript-angular/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript-angular/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web-angular/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web-angular/index.ts')).toBeGreaterThanOrEqual( - 0 - ); // feature in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/libs/features/foo/base/foo.base-component.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript-angular/features/foo/index.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript-angular/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript-angular/features/src/lib/foo/index.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript-angular/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript-angular/features/src/lib/foo/foo.module.ts' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript-angular/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript-angular/features/src/lib/foo/components/foo/foo.component.html' ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web-angular/features/foo/index.ts') + files.indexOf( + '/libs/xplat/nativescript-angular/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web-angular/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web-angular/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web-angular/features/foo/components/foo/foo.component.html' + '/libs/xplat/web-angular/features/src/lib/foo/foo.module.ts' ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/web-angular/features/foo/components/foo/foo.component.ts' + '/libs/xplat/web-angular/features/src/lib/foo/components/foo/foo.component.html' + ) + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/web-angular/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBeGreaterThanOrEqual(0); @@ -243,7 +266,8 @@ xdescribe('feature schematic', () => { ).toBeGreaterThanOrEqual(-1); // file content - let modulePath = '/xplat/nativescript-angular/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript-angular/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -254,7 +278,7 @@ xdescribe('feature schematic', () => { `import { UIModule } from \'../ui/ui.module\'` ); - modulePath = '/xplat/web-angular/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/web-angular/features/src/lib/foo/foo.module.ts'; featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -281,53 +305,66 @@ xdescribe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); // feature - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/features/foo/base/foo.base-component.ts')).toBe( - -1 - ); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' + ) ).toBeGreaterThanOrEqual(0); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBe(-1); // file content - let modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + let modulePath = + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -340,7 +377,7 @@ xdescribe('feature schematic', () => { expect(featureModule.indexOf('FOO_COMPONENTS')).toBe(-1); expect(featureModule.indexOf('declarations')).toBe(-1); - modulePath = '/xplat/nativescript/features/foo/foo.module.ts'; + modulePath = '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts'; featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -363,53 +400,65 @@ xdescribe('feature schematic', () => { // console.log(files.slice(85,files.length)); // shared code defaults - expect(files.indexOf('/libs/features/index.ts')).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/nativescript/index.ts') + files.indexOf('/libs/xplat/features/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf('/libs/xplat/web/core/src/lib/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/xplat/web/index.ts')).toBeGreaterThanOrEqual(0); // feature - expect(files.indexOf('/libs/features/foo/index.ts')).toBeGreaterThanOrEqual( - 0 - ); expect( - files.indexOf('/libs/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/libs/features/foo/base/foo.base-component.ts')).toBe( - -1 - ); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') + ).toBeGreaterThanOrEqual(0); + expect( + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' + ) ).toBeGreaterThanOrEqual(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBeGreaterThanOrEqual(0); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(0); // file content - let modulePath = '/xplat/web/features/foo/foo.module.ts'; + let modulePath = '/libs/xplat/web/features/src/lib/foo/foo.module.ts'; let featureModule = getFileContent(tree, modulePath); // console.log(modulePath + ':'); // console.log(featureModule); @@ -422,7 +471,8 @@ xdescribe('feature schematic', () => { expect(featureModule.indexOf('FOO_COMPONENTS')).toBeGreaterThanOrEqual(0); expect(featureModule.indexOf('declarations')).toBeGreaterThanOrEqual(0); - let compPath = '/xplat/web/features/foo/components/foo/foo.component.ts'; + let compPath = + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts'; let compContent = getFileContent(tree, compPath); // console.log(compPath + ':'); // console.log(compContent); @@ -440,10 +490,16 @@ xdescribe('feature schematic', () => { // console.log(files.slice(85,files.length)); // feature should not be in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBe(-1); - expect(files.indexOf('/libs/features/foo/foo.module.ts')).toBe(-1); - expect(files.indexOf('/xplat/nativescript/features/foo/index.ts')).toBe(-1); - expect(files.indexOf('/xplat/web/features/foo/index.ts')).toBe(-1); + expect(files.indexOf('/libs/xplat/features/src/lib/foo/index.ts')).toBe(-1); + expect( + files.indexOf('/libs/xplat/features/src/lib/foo/foo.module.ts') + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') + ).toBe(-1); + expect(files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts')).toBe( + -1 + ); // feature should be in projects only expect( @@ -480,37 +536,45 @@ xdescribe('feature schematic', () => { ).toBeGreaterThanOrEqual(0); // NOT in shared code - expect(files.indexOf('/libs/features/foo/index.ts')).toBe(-1); - expect(files.indexOf('/libs/features/foo/base/foo.base-component.ts')).toBe( - -1 - ); + expect(files.indexOf('/libs/xplat/features/src/lib/foo/index.ts')).toBe(-1); + expect( + files.indexOf( + '/libs/xplat/features/src/lib/foo/base/foo.base-component.ts' + ) + ).toBe(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/index.ts') + files.indexOf('/libs/xplat/nativescript/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/nativescript/features/foo/foo.module.ts') + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo/foo.module.ts' + ) ).toBeGreaterThanOrEqual(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.html' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.html' ) ).toBe(-1); expect( files.indexOf( - '/xplat/nativescript/features/foo/components/foo/foo.component.ts' + '/libs/xplat/nativescript/features/src/lib/foo/components/foo/foo.component.ts' ) ).toBe(-1); expect( - files.indexOf('/xplat/web/features/foo/index.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/index.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/web/features/foo/foo.module.ts') + files.indexOf('/libs/xplat/web/features/src/lib/foo/foo.module.ts') ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.html') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.html' + ) ).toBeGreaterThanOrEqual(-1); expect( - files.indexOf('/xplat/web/features/foo/components/foo/foo.component.ts') + files.indexOf( + '/libs/xplat/web/features/src/lib/foo/components/foo/foo.component.ts' + ) ).toBeGreaterThanOrEqual(-1); // file content @@ -559,13 +623,17 @@ xdescribe('feature schematic', () => { // console.log(files.slice(85,files.length)); // feature should not be in shared code - expect(files.indexOf('/libs/features/foo-with-dash/index.ts')).toBe(-1); expect( - files.indexOf('/xplat/nativescript/features/foo-with-dash/index.ts') + files.indexOf('/libs/xplat/features/src/lib/foo-with-dash/index.ts') + ).toBe(-1); + expect( + files.indexOf( + '/libs/xplat/nativescript/features/src/lib/foo-with-dash/index.ts' + ) + ).toBe(-1); + expect( + files.indexOf('/libs/xplat/web/features/src/lib/foo-with-dash/index.ts') ).toBe(-1); - expect(files.indexOf('/xplat/web/features/foo-with-dash/index.ts')).toBe( - -1 - ); // feature should be in projects only expect( diff --git a/packages/xplat/src/schematics/init/index.spec.ts b/packages/xplat/src/schematics/init/index.spec.ts index 97fb0371..a57a8e9c 100644 --- a/packages/xplat/src/schematics/init/index.spec.ts +++ b/packages/xplat/src/schematics/init/index.spec.ts @@ -23,7 +23,7 @@ describe('xplat init', () => { appTree = createEmptyWorkspace(Tree.empty()); }); - it('should init default xplat testing support', async () => { + it('should init default xplat deps', async () => { const options: XplatHelpers.Schema = { ...defaultOptions }; options.platforms = 'web'; options.framework = 'angular'; @@ -31,25 +31,6 @@ describe('xplat init', () => { const tree = await runSchematic('init', options, appTree); const files = tree.files; // console.log('files:', files); - expect( - files.indexOf('/testing/jest.libs.config.js') - ).toBeGreaterThanOrEqual(0); - expect( - files.indexOf('/testing/jest.xplat.config.js') - ).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/testing/test-setup.ts')).toBeGreaterThanOrEqual(0); - expect(files.indexOf('/testing/tsconfig.json')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/karma.conf.js')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/test.libs.ts')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/test.xplat.ts')).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/tsconfig.libs.json')).toBeGreaterThanOrEqual(0); - expect( - files.indexOf('/testing/tsconfig.libs.spec.json') - ).toBeGreaterThanOrEqual(0); - //expect(files.indexOf('/testing/tsconfig.xplat.json')).toBeGreaterThanOrEqual(0); - expect( - files.indexOf('/testing/tsconfig.xplat.spec.json') - ).toBeGreaterThanOrEqual(0); let packageJson = JSON.parse(getFileContent(tree, 'package.json')); // console.log(packageJson); @@ -77,22 +58,17 @@ describe('xplat init', () => { const tree = await runSchematic('init', options, appTree); // const files = tree.files; // console.log('files:', files); - expect(tree.exists('/testing/jest.libs.config.js')).toBeTruthy(); - expect(tree.exists('/testing/jest.xplat.config.js')).toBeTruthy(); - expect(tree.exists('/testing/test-setup.ts')).toBeTruthy(); - expect(tree.exists('/testing/tsconfig.json')).toBeTruthy(); - //expect(tree.exists('/testing/karma.conf.js')).toBeTruthy(); - //expect(tree.exists('/testing/test.libs.ts')).toBeTruthy(); - //expect(tree.exists('/testing/test.xplat.ts')).toBeTruthy(); - //expect(tree.exists('/testing/tsconfig.libs.json')).toBeTruthy(); - expect(tree.exists('/testing/tsconfig.libs.spec.json')).toBeTruthy(); - //expect(tree.exists('/testing/tsconfig.xplat.json')).toBeTruthy(); - expect(tree.exists('/testing/tsconfig.xplat.spec.json')).toBeTruthy(); - expect(tree.exists('/xplat/web/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/nativescript/index.ts')).toBeTruthy(); - expect(tree.exists('/xplat/web-angular/index.ts')).toBeFalsy(); - expect(tree.exists('/xplat/nativescript-angular/index.ts')).toBeFalsy(); + expect(tree.exists('/libs/xplat/web/core/src/lib/index.ts')).toBeTruthy(); + expect( + tree.exists('/libs/xplat/nativescript/core/src/lib/index.ts') + ).toBeTruthy(); + expect( + tree.exists('/libs/xplat/web-angular/core/src/lib/index.ts') + ).toBeFalsy(); + expect( + tree.exists('/libs/xplat/nativescript-angular/core/src/lib/index.ts') + ).toBeFalsy(); let packageJson = JSON.parse(getFileContent(tree, 'package.json')); // console.log(packageJson); diff --git a/packages/xplat/src/schematics/init/index.ts b/packages/xplat/src/schematics/init/index.ts index bd87d55b..f8ac59b9 100644 --- a/packages/xplat/src/schematics/init/index.ts +++ b/packages/xplat/src/schematics/init/index.ts @@ -6,7 +6,6 @@ import { SchematicsException, noop, } from '@angular-devkit/schematics'; -// import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; import { unsupportedPlatformError, noPlatformError } from '@nstudio/xplat'; import { prerun, diff --git a/packages/xplat/src/utils/ast.ts b/packages/xplat/src/utils/ast.ts index 985e53e2..f8d3408a 100644 --- a/packages/xplat/src/utils/ast.ts +++ b/packages/xplat/src/utils/ast.ts @@ -7,13 +7,6 @@ */ import { Rule, Tree, SchematicContext } from '@angular-devkit/schematics'; import * as ts from 'typescript'; -import * as stripJsonComments from 'strip-json-comments'; -import { - serializeJson, - updateJsonInTree, - readJsonInTree, -} from '@nrwl/workspace'; -import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; import { readWorkspaceJson } from './general'; function nodesByPosition(first: ts.Node, second: ts.Node): number { @@ -47,7 +40,7 @@ function insertAfterLastOccurrence( export function findNodes( node: ts.Node, - kind: ts.SyntaxKind, + kind: ts.SyntaxKind | ts.SyntaxKind[], max = Infinity ): ts.Node[] { if (!node || max == 0) { @@ -55,7 +48,10 @@ export function findNodes( } const arr: ts.Node[] = []; - if (node.kind === kind) { + const hasMatch = Array.isArray(kind) + ? kind.includes(node.kind) + : node.kind === kind; + if (hasMatch) { arr.push(node); max--; } @@ -171,9 +167,9 @@ export class ReplaceChange implements Change { constructor( public path: string, - private pos: number, - private oldText: string, - private newText: string + public pos: number, + public oldText: string, + public newText: string ) { if (pos < 0) { throw new Error('Negative positions are invalid'); @@ -345,22 +341,25 @@ export function addGlobal( } } -export function insert(host: Tree, modulePath: string, changes: any[]) { +export function insert(host: Tree, modulePath: string, changes: Change[]) { if (changes.length < 1) { return; } + + // sort changes so that the highest pos goes first + const orderedChanges = changes.sort((a, b) => b.order - a.order) as any; + const recorder = host.beginUpdate(modulePath); - for (const change of changes) { - if (change.type === 'insert') { + for (const change of orderedChanges) { + if (change.type == 'insert') { recorder.insertLeft(change.pos, change.toAdd); - } else if (change.type === 'remove') { - recorder.remove((change).pos - 1, (change).toRemove.length + 1); + } else if (change.type == 'remove') { + recorder.remove(change.pos - 1, change.toRemove.length + 1); + } else if (change.type == 'replace') { + recorder.remove(change.pos, change.oldText.length); + recorder.insertLeft(change.pos, change.newText); } else if (change.type === 'noop') { // do nothing - } else if (change.type === 'replace') { - const action = change; - recorder.remove(action.pos, action.oldText.length); - recorder.insertLeft(action.pos, action.newText); } else { throw new Error(`Unexpected Change '${change.constructor.name}'`); } diff --git a/packages/xplat/src/utils/postinstall.ts b/packages/xplat/src/utils/postinstall.ts index e3e3d109..64b1fa93 100644 --- a/packages/xplat/src/utils/postinstall.ts +++ b/packages/xplat/src/utils/postinstall.ts @@ -54,98 +54,6 @@ export async function updateConfig() { `An issue was detected during installation: ${configFilename} does not exist.` ); } - - try { - // Prevent Nrwl formatter from walking into {N} platforms folder - await fixFormatter(); - } catch (err) { - console.error( - 'An issue were detected during patching the nx-formatter', - err - ); - } - - try { - await makePrettierIgnore(); - } catch (err) { - console.error( - 'An issue were detected during patching the nx-formatter', - err - ); - } -} - -/** - * @nrwl/workspace formatter doesn't include files in the xplat-folder. - * This function patches their formatter cli to include the xplat-folder - */ -export async function fixFormatter() { - const formatPath = path.join( - process.cwd(), - '/../..', - '@nrwl/workspace/src/command-line/format.js' - ); - let formatContent = await fsReadFile(formatPath, 'UTF-8'); - - const patchLine = ` // PATCHED by @nstudio/xplat\n patterns.push('"xplat/**/*"');`; - if (formatContent.indexOf(patchLine) !== -1) { - console.log(`Patch for nx format have already been applied`); - return; - } - - const patchRegExp = /(^\s+const chunkList)/m; - if (!patchRegExp.test(formatContent)) { - throw new Error(`Apply couldn't patch for nx format`); - } - - const newFormatContent = formatContent.replace( - patchRegExp, - `${patchLine}\n$1` - ); - if (formatContent !== newFormatContent) { - await fsWriteFile(formatPath, newFormatContent); - console.log('Patch for nx format have been applied'); - } else { - throw new Error(`Apply couldn't patch for nx format`); - } -} - -/** - * To avoid @nrwl/workspace formatter tries to format App_Resources, platforms-files etc. - * Create a .prettierignore file at the root of the project. - */ -export async function makePrettierIgnore() { - const prettierIgnorePath = path.join( - process.cwd(), - '/../../..', - '.prettierignore' - ); - - const prettierIgnore = `**/xplat/*/.xplatframework`; - - if (await fsExists(prettierIgnorePath)) { - // console.log(`"${prettierIgnorePath}" already exists`); - - // determine if extra rules are needed - let prettierContent = await fsReadFile(prettierIgnorePath, 'UTF-8'); - if (prettierContent.indexOf('**/xplat/*/.xplatframework') === -1) { - // output.log({ - // title: 'Note:', - // bodyLines: [ - // `xplat is updating "${prettierIgnorePath}" with a few important extra rules. You may double-check the contents afterwards to ensure they meet your satisfaction.` - // ] - // }); - // update prettier to include the rules - await fsWriteFile( - prettierIgnorePath, - prettierContent + '\n' + prettierIgnore, - 'UTF-8' - ); - } - return; - } - - await fsWriteFile(prettierIgnorePath, prettierIgnore, 'UTF-8'); } updateConfig(); diff --git a/packages/xplat/src/utils/testing-utils.ts b/packages/xplat/src/utils/testing-utils.ts index 7ff93f7f..282db7a0 100644 --- a/packages/xplat/src/utils/testing-utils.ts +++ b/packages/xplat/src/utils/testing-utils.ts @@ -129,9 +129,9 @@ export function createXplatWithNativeScriptWeb( } export function createXplatLibs(tree: Tree) { - tree.create('/libs/core/index.ts', ''); + tree.create('/libs/xplat/core/src/lib/index.ts', ''); tree.create( - '/libs/core/core.module.ts', + '/libs/xplat/core/src/lib/core.module.ts', `import { NgModule } from '@angular/core'; @@ -150,15 +150,15 @@ export function createXplatLibs(tree: Tree) { export class CoreModule {}` ); tree.create( - '/libs/core/services/index.ts', + '/libs/xplat/core/src/lib/services/index.ts', `export * from './log.service'; export * from './window.service'; export * from './tokens'; ` ); - tree.create('/libs/features/index.ts', ''); + tree.create('/libs/xplat/features/src/lib/index.ts', ''); tree.create( - '/libs/features/ui/ui.module.ts', + '/libs/xplat/features/src/lib/ui/ui.module.ts', `import { NgModule } from '@angular/core'; import { TranslateModule } from '@ngx-translate/core'; import { UI_PIPES } from './pipes'; @@ -173,7 +173,7 @@ export function createXplatLibs(tree: Tree) { export class UISharedModule {} ` ); - tree.create('/libs/utils/index.ts', ''); + tree.create('/libs/xplat/utils/src/lib/index.ts', ''); } export function createXplatNativeScriptAngular( @@ -181,11 +181,14 @@ export function createXplatNativeScriptAngular( framework?: FrameworkTypes ) { const frameworkSuffix = framework === 'angular' ? '' : '-angular'; - tree.create(`/xplat/nativescript${frameworkSuffix}/index.ts`, ''); - tree.create(`/xplat/nativescript${frameworkSuffix}/package.json`, ''); - tree.create(`/xplat/nativescript${frameworkSuffix}/core/index.ts`, ''); + // tree.create(`/libs/xplat/nativescript${frameworkSuffix}/index.ts`, ''); + // tree.create(`/libs/xplat/nativescript${frameworkSuffix}/package.json`, ''); tree.create( - `/xplat/nativescript${frameworkSuffix}/core/core.module.ts`, + `/libs/xplat/nativescript${frameworkSuffix}/core/src/lib/index.ts`, + '' + ); + tree.create( + `/libs/xplat/nativescript${frameworkSuffix}/core/src/lib/core.module.ts`, `import { NgModule, Optional, SkipSelf } from '@angular/core'; // nativescript @@ -195,8 +198,8 @@ export function createXplatNativeScriptAngular( // libs import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; - import { CoreModule, PlatformLanguageToken, PlatformWindowToken } from '@<%= npmScope %>/core'; - import { throwIfAlreadyLoaded } from '@<%= npmScope %>/utils'; + import { CoreModule, PlatformLanguageToken, PlatformWindowToken } from '@<%= npmScope %>/xplat/core'; + import { throwIfAlreadyLoaded } from '@<%= npmScope %>/xplat/utils'; // app import { TNSWindowService } from './services/tns-window.service'; @@ -248,18 +251,21 @@ export function createXplatNativeScriptAngular( ` ); tree.create( - `/xplat/nativescript${frameworkSuffix}/core/services/index.ts`, + `/libs/xplat/nativescript${frameworkSuffix}/core/src/lib/services/index.ts`, `export * from './app.service';` ); - tree.create(`/xplat/nativescript${frameworkSuffix}/features/ui/index.ts`, ''); tree.create( - `/xplat/nativescript${frameworkSuffix}/features/ui/ui.module.ts`, + `/libs/xplat/nativescript${frameworkSuffix}/features/src/lib/ui/index.ts`, + '' + ); + tree.create( + `/libs/xplat/nativescript${frameworkSuffix}/features/src/lib/ui/ui.module.ts`, `import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core'; import { NativeScriptCommonModule, NativeScriptFormsModule, NativeScriptRouterModule } from '@nativescript/angular'; import { TNSFontIconModule } from 'nativescript-ngx-fonticon'; - import { UISharedModule } from '@<%= npmScope %>/features'; + import { UISharedModule } from '@<%= npmScope %>/xplat/features'; import { UI_COMPONENTS } from './components'; const MODULES = [ @@ -279,26 +285,38 @@ export function createXplatNativeScriptAngular( export class UIModule {} ` ); - tree.create(`/xplat/nativescript${frameworkSuffix}/features/index.ts`, ''); - tree.create(`/xplat/nativescript${frameworkSuffix}/scss/_variables.scss`, ''); - tree.create(`/xplat/nativescript${frameworkSuffix}/utils/index.ts`, ``); + tree.create( + `/libs/xplat/nativescript${frameworkSuffix}/features/src/lib/index.ts`, + '' + ); + tree.create( + `/libs/xplat/nativescript${frameworkSuffix}/scss/src/_variables.scss`, + '' + ); + tree.create( + `/libs/xplat/nativescript${frameworkSuffix}/utils/src/lib/index.ts`, + `` + ); } export function createXplatWebAngular(tree: Tree, framework?: FrameworkTypes) { const frameworkSuffix = framework === 'angular' ? '' : '-angular'; - tree.create(`/xplat/web${frameworkSuffix}/index.ts`, ''); - tree.create(`/xplat/web${frameworkSuffix}/package.json`, ''); - tree.create(`/xplat/web${frameworkSuffix}/core/index.ts`, ''); - tree.create(`/xplat/web${frameworkSuffix}/features/ui/index.ts`, ''); + // tree.create(`/libs/xplat/web${frameworkSuffix}/index.ts`, ''); + // tree.create(`/libs/xplat/web${frameworkSuffix}/package.json`, ''); + tree.create(`/libs/xplat/web${frameworkSuffix}/core/src/lib/index.ts`, ''); + tree.create( + `/libs/xplat/web${frameworkSuffix}/features/src/lib/ui/index.ts`, + '' + ); tree.create( - `/xplat/web${frameworkSuffix}/features/ui/ui.module.ts`, + `/libs/xplat/web${frameworkSuffix}/features/src/lib/ui/ui.module.ts`, `import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; // libs - import { UISharedModule } from '@<%= npmScope %>/features'; + import { UISharedModule } from '@<%= npmScope %>/xplat/features'; import { UI_COMPONENTS } from './components'; const MODULES = [ @@ -317,8 +335,11 @@ export function createXplatWebAngular(tree: Tree, framework?: FrameworkTypes) { export class UIModule {} ` ); - tree.create(`/xplat/web${frameworkSuffix}/features/index.ts`, ''); - tree.create(`/xplat/web${frameworkSuffix}/scss/_variables.scss`, ''); + tree.create( + `/libs/xplat/web${frameworkSuffix}/features/src/lib/index.ts`, + '' + ); + tree.create(`/libs/xplat/web${frameworkSuffix}/scss/src/_variables.scss`, ''); } export function createWebAngularApp(tree: Tree, withRouting?: boolean) { diff --git a/packages/xplat/src/utils/versions.ts b/packages/xplat/src/utils/versions.ts index 06956cdd..6c746b33 100644 --- a/packages/xplat/src/utils/versions.ts +++ b/packages/xplat/src/utils/versions.ts @@ -1,2 +1,2 @@ export const xplatVersion = '*'; -export const nxVersion = '^10.3.0'; +export const nxVersion = '^11.0.0'; diff --git a/packages/xplat/src/utils/xplat.ts b/packages/xplat/src/utils/xplat.ts index 21633bd9..853a6f63 100644 --- a/packages/xplat/src/utils/xplat.ts +++ b/packages/xplat/src/utils/xplat.ts @@ -654,10 +654,118 @@ export namespace XplatHelpers { }; } - export function addPlatformFiles(options: Schema, platform: string) { + export function generateLib( + options: XplatHelpers.Schema, + libName: string, + directory: string = '', + testEnvironment: 'jsdom' | 'node' = 'jsdom', + framework = 'angular' + ): Rule { + return (tree: Tree, context: SchematicContext) => { + if (!getFrontendFramework() && framework) { + directory = `${directory}-${framework}`; + } + if ( + tree.exists( + `libs/${directory ? directory + '/' : ''}${libName}/tsconfig.json` + ) + ) { + return noop()(tree, context); + } + + const libOptions: any = { + name: libName, + directory, + testEnvironment, + interactive: false, + }; + if (libName === 'scss') { + libOptions.skipTsConfig = true; + } + return externalSchematic('@nrwl/workspace', 'lib', libOptions); + }; + } + + export function cleanupLib( + options: XplatHelpers.Schema, + libName: string, + directory: string = '', + framework = 'angular' + ): Rule { + return (tree: Tree, context: SchematicContext) => { + if (!getFrontendFramework() && framework) { + directory = `${directory}-${framework}`; + } + // adjust index files + const defaultLibIndexFile = `libs/${ + directory ? directory + '/' : '' + }${libName}/src/lib/${directory.replace(/\//gi, '-')}-${libName}.ts`; + const defaultLibIndexSpecFile = `libs/${ + directory ? directory + '/' : '' + }${libName}/src/lib/${directory.replace(/\//gi, '-')}-${libName}.spec.ts`; + // console.log('defaultIndexFile:', defaultLibIndexFile); + if (tree.exists(defaultLibIndexFile)) { + tree.delete(defaultLibIndexFile); + } + if (tree.exists(defaultLibIndexSpecFile)) { + tree.delete(defaultLibIndexSpecFile); + } + const defaultIndexFile = `libs/${ + directory ? directory + '/' : '' + }${libName}/src/index.ts`; + if (libName === 'scss') { + if (tree.exists(defaultIndexFile)) { + tree.delete(defaultIndexFile); + } + // const libFolder = `libs/${ + // directory ? directory + '/' : '' + // }${libName}/src/lib`; + // tree.delete(libFolder); + } else { + if (tree.exists(defaultIndexFile)) { + tree.overwrite(defaultIndexFile, `export * from './lib';`); + } + } + + // adjust tsconfig to support platform specific typings + const tsConfigPath = `libs/${ + directory ? directory + '/' : '' + }${libName}/tsconfig.json`; + let tsConfig: any; + let needsTsConfigUpdate = false; + if ( + directory && + directory.indexOf('nativescript') > -1 && + tree.exists(tsConfigPath) + ) { + tsConfig = JSON.parse(tree.read(tsConfigPath)!.toString('utf-8')); + const referenceTypings = `../../../../references.d.ts`; + if (!tsConfig.files.includes(referenceTypings)) { + needsTsConfigUpdate = true; + tsConfig.files.push(referenceTypings); + } + const includeTs = `**/*.ts`; + if (!tsConfig.include.includes(includeTs)) { + needsTsConfigUpdate = true; + tsConfig.include.push(includeTs); + } + } + if (needsTsConfigUpdate && tsConfig) { + updateJsonFile(tree, tsConfigPath, tsConfig); + } + + return tree; + }; + } + + export function addPlatformFiles( + options: Schema, + platform: string, + libName: string + ) { return (tree: Tree, context: SchematicContext) => { let frontendFramework: FrameworkTypes = getFrontendFramework(); - if (tree.exists(`xplat/${platform}/index.ts`)) { + if (tree.exists(`libs/xplat/${platform}/${libName}/src/lib/index.ts`)) { // check if framework had been set frontendFramework = getFrontendFramework(); // console.log('addPlatformFiles frontendFramework:', frontendFramework) @@ -681,15 +789,18 @@ export namespace XplatHelpers { options.framework ); + // src should go into Nx library structure + const libFolder = `/${libName}/src${libName === 'scss' ? '' : '/lib'}`; + return branchAndMerge( mergeWith( - apply(url(`./_files`), [ + apply(url(`./_files_${libName}`), [ template({ ...(options as any), ...getDefaultTemplateOptions(), xplatFolderName, }), - move(`xplat/${xplatFolderName}`), + move(`libs/xplat/${xplatFolderName}${libFolder}`), ]) ) ); @@ -747,102 +858,6 @@ export namespace XplatHelpers { }; } - export function updateGitIgnore() { - return (tree: Tree) => { - const gitIgnorePath = '.gitignore'; - let gitIgnore = tree.get(gitIgnorePath).content.toString(); - if (gitIgnore) { - if (gitIgnore.indexOf('libs/**/*.js') === -1) { - gitIgnore += ` -# libs -libs/**/*.js -libs/**/*.map -libs/**/*.d.ts -libs/**/*.metadata.json -libs/**/*.ngfactory.ts -libs/**/*.ngsummary.json - `; - } - if (gitIgnore.indexOf('xplat/**/*.js') === -1) { - gitIgnore += ` -# xplat -xplat/**/*.js -xplat/**/*.map -xplat/**/*.d.ts -xplat/**/*.metadata.json -xplat/**/*.ngfactory.ts -xplat/**/*.ngsummary.json - `; - } - } - - return updateFile(tree, gitIgnorePath, gitIgnore); - }; - } - - export function updateTsConfigPaths( - options: Schema, - settings?: { - framework?: FrameworkTypes; - dependentPlatforms?: Array; - } - ) { - return (tree: Tree) => { - const nxJson = getNxWorkspaceConfig(tree); - const npmScope = nxJson.npmScope; - const platformArg = options.platforms; - // sort for consistency - const platforms = (>( - (sanitizeCommaDelimitedArg(platformArg)) - )).sort(function (a, b) { - if (a < b) return -1; - if (a > b) return 1; - return 0; - }); - const frontendFramework = getFrontendFramework(); - let frameworkSuffix: string = ''; - - if (settings) { - if (settings.framework !== frontendFramework) { - // when users have a default framework set, generation allows name to not include the default framework of choice - frameworkSuffix = `-${settings.framework}`; - } - if (settings.dependentPlatforms) { - for (const dependentPlatform of settings.dependentPlatforms) { - if (!platforms.includes(dependentPlatform)) { - // ensure dependent platform is added since these platforms depend on it - platforms.push(dependentPlatform); - } - } - } - } - - const updates: any = {}; - // ensure default Nx libs path is in place - updates[`@${npmScope}/*`] = [`libs/*`]; - for (const t of platforms) { - updates[`@${npmScope}/${t}${frameworkSuffix}`] = [ - `xplat/${t}${frameworkSuffix}/index.ts`, - ]; - updates[`@${npmScope}/${t}${frameworkSuffix}/*`] = [ - `xplat/${t}${frameworkSuffix}/*`, - ]; - } - - return updateTsConfig(tree, (tsConfig: any) => { - if (tsConfig) { - if (!tsConfig.compilerOptions) { - tsConfig.compilerOptions = {}; - } - tsConfig.compilerOptions.paths = { - ...(tsConfig.compilerOptions.paths || {}), - ...updates, - }; - } - }); - }; - } - export function updatePrettierIgnore(content: string, checkExisting: string) { return (tree: Tree) => { const prettierFileName = '.prettierignore'; @@ -1118,7 +1133,7 @@ export namespace XplatFeatureHelpers { moveTo = getMoveTo(options, target, projectName, framework); } else { target = 'lib'; - moveTo = `libs/features/${options.name.toLowerCase()}`; + moveTo = `libs/xplat/features/src/lib/${options.name.toLowerCase()}`; } if (!extra) { // make sure no `null` or `undefined` values get in the string path @@ -1200,7 +1215,7 @@ export namespace XplatFeatureHelpers { ); // console.log('getMoveTo xplatFolderName:', xplatFolderName); const featureName = options.name.toLowerCase(); - let moveTo = `xplat/${xplatFolderName}/features/${featureName}`; + let moveTo = `libs/xplat/${xplatFolderName}/features/src/lib/${featureName}`; if (projectName) { let appDir = ['web', 'web-angular'].includes(xplatFolderName) ? '/app' diff --git a/scripts/package.sh b/scripts/package.sh index d770aecb..1a9a7877 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -3,41 +3,24 @@ # This shell script is executed by xplat-release.js # ################################################## -XPLAT_VERSION=$1 -PACKAGE_VERSION=$2 +XPLAT_VERSION=$2 -if [[ $XPLAT_VERSION == "--local" ]]; then - XPLAT_VERSION="*" -fi +# if [[ $XPLAT_VERSION == "--local" ]]; then +# XPLAT_VERSION="*" +# fi ./scripts/build.sh cd build/packages if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i "" "s|exports.xplatVersion = '\*';|exports.xplatVersion = '$XPLAT_VERSION';|g" {angular,electron,electron-angular,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat}/src/utils/versions.js + sed -i "" "s|\0.0.1|$XPLAT_VERSION|g" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json - if [[ $PACKAGE_VERSION =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then - # override package version - sed -i "" "s|exports.xplatVersion = '\*';|exports.xplatVersion = '$PACKAGE_VERSION';|g" {angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/src/utils/versions.js - sed -i "" "s|\0.0.1|$PACKAGE_VERSION|g" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json - else - sed -i "" "s|exports.xplatVersion = '\*';|exports.xplatVersion = '$XPLAT_VERSION';|g" {angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/src/utils/versions.js - sed -i "" "s|\*|$XPLAT_VERSION|g" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json - fi + sed -E -i "" "s/\"@nstudio\/([^\"]+)\": \"\\*\"/\"@nstudio\/\1\": \"$XPLAT_VERSION\"/" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json else - sed -i "s|exports.xplatVersion = '\*';|exports.xplatVersion = '$XPLAT_VERSION';|g" {angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/src/utils/versions.js - sed -i "s|\*|$XPLAT_VERSION|g" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json -fi + sed -i "s|exports.xplatVersion = '\*';|exports.xplatVersion = '$XPLAT_VERSION';|g" {angular,electron,electron-angular,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat}/src/utils/versions.js + sed -i "s|\0.0.1|$XPLAT_VERSION|g" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json -if [[ $XPLAT_VERSION == "*" ]]; then - if [[ "$OSTYPE" == "darwin"* ]]; then - if [[ $PACKAGE_VERSION =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then - # override package version - sed -E -i "" "s/\"@nstudio\/([^\"]+)\": \"\\*\"/\"@nstudio\/\1\": \"$PACKAGE_VERSION\"/" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json - else - sed -E -i "" "s/\"@nstudio\/([^\"]+)\": \"\\*\"/\"@nstudio\/\1\": \"file:..\/\1\"/" {angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json - fi - else - sed -E -i "s/\"@nstudio\/([^\"]+)\": \"\\*\"/\"@nstudio\/\1\": \"file:..\/\1\"/" {angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json - fi + sed -E -i "s/\"@nstudio\/([^\"]+)\": \"\\*\"/\"@nstudio\/\1\": \"$XPLAT_VERSION\"/" {schematics,angular,electron,electron-angular,focus,ionic,ionic-angular,nativescript,nativescript-angular,web,web-angular,xplat,xplat-utils}/package.json fi diff --git a/yarn.lock b/yarn.lock index 7acd7d1d..6ede4ef3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,171 +2,145 @@ # yarn lockfile v1 -"@angular-devkit/architect@0.1000.6", "@angular-devkit/architect@~0.1000.0": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1000.6.tgz#d8143abbf1a1cef8e0ea9c80690821e8ca4cd54c" - integrity sha512-IZ8yiiW+LQ5mI3VbNHzisTIn0j6D1inQZgcZtc5W2A7fFNvBlIh6vGU3mB6Qvg678Gt6tlvnNT6/R9A9Ct7VnA== +"@angular-devkit/architect@0.1002.0": + version "0.1002.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1002.0.tgz#470b78aaf79308a23da6a0d3935f2d1f85dcb212" + integrity sha512-twM8V03ujBIGVpgV1PBlSDodUdxtUb7WakutfWafAvEHUsgwzfvQz2VtKWvjNZ9AiYjnCuwkQaclqVv0VHNo9w== dependencies: - "@angular-devkit/core" "10.0.6" - rxjs "6.5.5" - -"@angular-devkit/architect@0.1001.0", "@angular-devkit/architect@~0.1001.0": - version "0.1001.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1001.0.tgz#39250758d749b88a3867f5ef529d52ad16b6c5fd" - integrity sha512-mJYy9tqy7ZfqAJYlQPgcHVUiaAxWnxEEpiTAftsKz/yqdO45YFkzehYXJfCqbAXYr4r7hYY3KqKMgj41ixkS8Q== - dependencies: - "@angular-devkit/core" "10.1.0" + "@angular-devkit/core" "10.2.0" rxjs "6.6.2" -"@angular-devkit/build-angular@~0.1001.0": - version "0.1001.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1001.0.tgz#8257c1ce9ed4f2e31ea59cbd6939efa127e9d35c" - integrity sha512-aWAWhZd3xompC2qPiIzXOkbq8vGIb8PixMLuGUU37myRhgArCTQl+v2lu/FoETyfY15ThfeFK7EzadLmKgokAg== - dependencies: - "@angular-devkit/architect" "0.1001.0" - "@angular-devkit/build-optimizer" "0.1001.0" - "@angular-devkit/build-webpack" "0.1001.0" - "@angular-devkit/core" "10.1.0" - "@babel/core" "7.11.1" - "@babel/generator" "7.11.0" - "@babel/plugin-transform-runtime" "7.11.0" - "@babel/preset-env" "7.11.0" - "@babel/runtime" "7.11.2" +"@angular-devkit/architect@0.1100.4", "@angular-devkit/architect@~0.1100.1": + version "0.1100.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1100.4.tgz#68c2b0333daa0291ad99205862111c04e7a63020" + integrity sha512-hzTfcSUwM0jsSt9HvvSFyaoAhX9k73L7y4kmkghzIFhKhIKOp/7o3n7hAFwN/jWKKmVQpPKnYmqzm9H9OveaCQ== + dependencies: + "@angular-devkit/core" "11.0.4" + rxjs "6.6.3" + +"@angular-devkit/build-angular@~0.1100.1": + version "0.1100.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.1100.4.tgz#22596475d38b13735876a4c7e1afc199654bb9ed" + integrity sha512-qVkMbtOwlo+k8fvOBOwwfKWMx06k4I1qrdjpRYAoZCt3cdje4EBepSciLrHnTB+ouIqWxpEDfEXTYBS98tXbBg== + dependencies: + "@angular-devkit/architect" "0.1100.4" + "@angular-devkit/build-optimizer" "0.1100.4" + "@angular-devkit/build-webpack" "0.1100.4" + "@angular-devkit/core" "11.0.4" + "@babel/core" "7.12.3" + "@babel/generator" "7.12.1" + "@babel/plugin-transform-runtime" "7.12.1" + "@babel/preset-env" "7.12.1" + "@babel/runtime" "7.12.1" "@babel/template" "7.10.4" "@jsdevtools/coverage-istanbul-loader" "3.0.5" - "@ngtools/webpack" "10.1.0" + "@ngtools/webpack" "11.0.4" + ansi-colors "4.1.1" autoprefixer "9.8.6" babel-loader "8.1.0" browserslist "^4.9.1" cacache "15.0.5" caniuse-lite "^1.0.30001032" circular-dependency-plugin "5.2.0" - copy-webpack-plugin "6.0.3" - core-js "3.6.4" - css-loader "4.2.2" + copy-webpack-plugin "6.2.1" + core-js "3.6.5" + css-loader "4.3.0" cssnano "4.1.10" - file-loader "6.0.0" + file-loader "6.1.1" find-cache-dir "3.3.1" glob "7.1.6" - jest-worker "26.3.0" + inquirer "7.3.3" + jest-worker "26.5.0" karma-source-map-support "1.4.0" - less-loader "6.2.0" - license-webpack-plugin "2.3.0" + less "3.12.2" + less-loader "7.0.2" + license-webpack-plugin "2.3.1" loader-utils "2.0.0" - mini-css-extract-plugin "0.10.0" + mini-css-extract-plugin "1.2.1" minimatch "3.0.4" - open "7.2.0" - parse5 "6.0.1" - parse5-htmlparser2-tree-adapter "6.0.1" + open "7.3.0" + ora "5.1.0" + parse5-html-rewriting-stream "6.0.1" pnp-webpack-plugin "1.6.4" postcss "7.0.32" postcss-import "12.0.1" - postcss-loader "3.0.0" - raw-loader "4.0.1" + postcss-loader "4.0.4" + raw-loader "4.0.2" regenerator-runtime "0.13.7" - resolve-url-loader "3.1.1" + resolve-url-loader "3.1.2" rimraf "3.0.2" - rollup "2.26.5" - rxjs "6.6.2" - sass "1.26.10" - sass-loader "10.0.1" + rollup "2.32.1" + rxjs "6.6.3" + sass "1.27.0" + sass-loader "10.0.5" semver "7.3.2" source-map "0.7.3" - source-map-loader "1.0.2" + source-map-loader "1.1.2" source-map-support "0.5.19" speed-measure-webpack-plugin "1.3.3" - style-loader "1.2.1" + style-loader "2.0.0" stylus "0.54.8" - stylus-loader "3.0.2" - terser "5.2.1" - terser-webpack-plugin "4.1.0" + stylus-loader "4.3.1" + terser "5.3.7" + terser-webpack-plugin "4.2.3" + text-table "0.2.0" tree-kill "1.2.2" - webpack "4.44.1" + webpack "4.44.2" webpack-dev-middleware "3.7.2" webpack-dev-server "3.11.0" - webpack-merge "4.2.2" - webpack-sources "1.4.3" - webpack-subresource-integrity "1.4.1" + webpack-merge "5.2.0" + webpack-sources "2.0.1" + webpack-subresource-integrity "1.5.1" worker-plugin "5.0.0" -"@angular-devkit/build-ng-packagr@~0.1001.0": - version "0.1001.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1001.0.tgz#11c0f4f681f3fe87879bf79bbc8df128e8bf8823" - integrity sha512-zFe/pVkmrg9L/ZIP/htJDCEkg/KmuZKwWsb0YXCi4U+zoX3Sm1TJCYTbzwazU7jsEHD6KeBhrtOfOaxaxfyFjQ== +"@angular-devkit/build-ng-packagr@~0.1002.0": + version "0.1002.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.1002.0.tgz#07fd264f98f0084c2897925e094cb9bd002d34e8" + integrity sha512-JngcuLuPpu2oOhi1qBPzco+ETjDbv90zyWZELO3qXeCelug1z83E0Qi2sLgnNYayzSHfrivrRamL8CbYYT+M9Q== dependencies: - "@angular-devkit/architect" "0.1001.0" + "@angular-devkit/architect" "0.1002.0" rxjs "6.6.2" -"@angular-devkit/build-optimizer@0.1001.0", "@angular-devkit/build-optimizer@~0.1001.0": - version "0.1001.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1001.0.tgz#0e018138ec33e47b9cfbceb67ae0a5fbd5a26f08" - integrity sha512-yFHjaUAh9lphLtDLI1UojKS/Szzj9zCq8RHsDv+GWB+2WRWrXB9MID5L/CuZsUdvsu0O6ALfXkNjoWtgOL18Fw== +"@angular-devkit/build-optimizer@0.1100.4", "@angular-devkit/build-optimizer@~0.1100.1": + version "0.1100.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1100.4.tgz#dbe44ad1d4a6e95436e3bae297dafc09a8ab9190" + integrity sha512-C05y4qMb05PWR7l1gZwRQKiB6KIDq+p72r8Yr6jm0UO6raOtMM72R8nHnioMnGJcFtZDEAYXEF+X7soI3MMlfw== dependencies: loader-utils "2.0.0" source-map "0.7.3" - tslib "2.0.1" - typescript "4.0.2" - webpack-sources "1.4.3" + tslib "2.0.3" + typescript "4.0.5" + webpack-sources "2.0.1" -"@angular-devkit/build-optimizer@~0.1000.0": - version "0.1000.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.8.tgz#55023cf9e16813cc01b255e99fabb92426eeb632" - integrity sha512-esODHuTGEEMx1SmLUq03VAMly8gZUd1vRuvZeKS5HqKwDg8ZzcI7/25BuuUSlyST+6BEdjo2gnmagQnG0VBdQw== +"@angular-devkit/build-webpack@0.1100.4", "@angular-devkit/build-webpack@~0.1100.1": + version "0.1100.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1100.4.tgz#8ca4b10ce8fc739b128137c6c7c0d24377d27a76" + integrity sha512-uxe8gNSej3KF1FgqNtJmuRDbbINh3yLtXanXhRxFQLUj8IiNR8IciIVvy6RfXC5gqxcWwy1cOefJLLnuN9AOxQ== dependencies: - loader-utils "2.0.0" - source-map "0.7.3" - tslib "2.0.0" - webpack-sources "1.4.3" + "@angular-devkit/architect" "0.1100.4" + "@angular-devkit/core" "11.0.4" + rxjs "6.6.3" -"@angular-devkit/build-webpack@0.1001.0", "@angular-devkit/build-webpack@~0.1001.0": - version "0.1001.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1001.0.tgz#8ef6604ea384ffc53193e8b74b60b13c845dadd3" - integrity sha512-s/8QTlPNBH80Xg7Q2fW+GbPXyJIwW4TQx1ni8Linoxe08L4mKTp8cKo5fWaODglR/Er0X0javDFQ3gces9AIdQ== - dependencies: - "@angular-devkit/architect" "0.1001.0" - "@angular-devkit/core" "10.1.0" - rxjs "6.6.2" - -"@angular-devkit/build-webpack@~0.1000.0": - version "0.1000.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1000.6.tgz#1ec6942b4079b6cb6704b5d39af7df14102d562e" - integrity sha512-R01bJWuvckU5IdjcqoCeikLBpHRqt5fgfD0a4Hsg3evqW6xxXcSgc+YhWfeEmyU/nF/kVel8G2bFyPzhZP4QdQ== - dependencies: - "@angular-devkit/architect" "0.1000.6" - "@angular-devkit/core" "10.0.6" - rxjs "6.5.5" - -"@angular-devkit/core@10.0.6", "@angular-devkit/core@~10.0.0": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.6.tgz#cbb40a34f976f9496270efc4fbdb3ad836b9723e" - integrity sha512-mVvqSEoeErZ7bAModk95EAa6R9Nl23rvX+/TXuKVTK2dziMFBOrwHjb1DYhnZxFIH4xfUftCx+BWHjXBXCPYlA== - dependencies: - ajv "6.12.3" - fast-json-stable-stringify "2.1.0" - magic-string "0.25.7" - rxjs "6.5.5" - source-map "0.7.3" - -"@angular-devkit/core@10.0.8": - version "10.0.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.8.tgz#ca4ea9f464cfa7ff17e2dab3bcd4c59da1ea450d" - integrity sha512-d9S8VQuqaYg0c/Y2kl/MtICtZ+UKlH5bLm8y2fb2WfSL4A5XIqMGdEVxzFSiR0b1Bnt4NAoQMcBec1blHAqMSQ== +"@angular-devkit/core@10.2.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.2.0.tgz#fcde160afc2786d2da0166526f065c6cf98684c0" + integrity sha512-XAszFhSF3mZw1VjoOsYGbArr5NJLcStjOvcCGjBPl1UBM2AKpuCQXHxI9XJGYKL3B93Vp5G58d8qkHvamT53OA== dependencies: - ajv "6.12.3" + ajv "6.12.4" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.5.5" + rxjs "6.6.2" source-map "0.7.3" -"@angular-devkit/core@10.1.0", "@angular-devkit/core@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.1.0.tgz#3e4d6abc0b949f4e2fba94077d17c132eb0a673f" - integrity sha512-oNRwAX+5uEwgheS3UUc1W+AerbimqGojCOTdWWcq5XtSviZnBCp1FeMZV+eB6XgUWfbmbWBu39S3sCYmXVHLwg== +"@angular-devkit/core@11.0.4", "@angular-devkit/core@~11.0.1": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-11.0.4.tgz#4128b90bdb4d1803bb246d177b7cc6df64a0fec1" + integrity sha512-LgTvhZ3Ycz0QvNAH/zO1rpQQDn2JN8u9/Awy1gW/XeCC3FYmxeOj/2JCFzlKah3wJv16nMqro5WTppHt8Y++PA== dependencies: - ajv "6.12.4" + ajv "6.12.6" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.6.2" + rxjs "6.6.3" source-map "0.7.3" "@angular-devkit/core@9.1.7": @@ -180,23 +154,14 @@ rxjs "6.5.4" source-map "0.7.3" -"@angular-devkit/schematics@10.0.8": - version "10.0.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.8.tgz#6064d6323a1c9abc195e67ae4c88e373ce36b5e2" - integrity sha512-p2PjvrExuzOe/azyOEcBeIgwZIk4D6VeLkJf/KVjhXOVu13pjIXHX7/qWl+IYnbtj3NZGHqXM5Cr8nxsJNIMpw== +"@angular-devkit/schematics@11.0.4", "@angular-devkit/schematics@~11.0.1": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-11.0.4.tgz#0680fe038c66f2ecc3c69a293505fb02b694ce80" + integrity sha512-fFC7qW9A1bFAZgpCfkezBA4WCRzfVFgOzwPpyt65rgSrzw0+EeHjcrUIcXlhyOXAFrTHtA9oLCfEeSjSx5HBEA== dependencies: - "@angular-devkit/core" "10.0.8" - ora "4.0.4" - rxjs "6.5.5" - -"@angular-devkit/schematics@10.1.0", "@angular-devkit/schematics@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.1.0.tgz#11f12174585966984f823e1740331115f4f2958c" - integrity sha512-5Vl32bHpcB/oj0oNR8nPLXF7DwPVuzrJjosch8G+sPG2gAG6OpwjUhQjY1U6E4xJGDR6j7fX8jw+TwC2cMgUbQ== - dependencies: - "@angular-devkit/core" "10.1.0" - ora "5.0.0" - rxjs "6.6.2" + "@angular-devkit/core" "11.0.4" + ora "5.1.0" + rxjs "6.6.3" "@angular-devkit/schematics@9.1.7": version "9.1.7" @@ -207,53 +172,46 @@ ora "4.0.3" rxjs "6.5.4" -"@angular-devkit/schematics@~10.0.0": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.6.tgz#dc3486448cc34544f7076f7fe0a67b75137ae840" - integrity sha512-V3T4cf+jVKiPYyBrSVHf3ZSnk4wIc1WEaaeFta56HccEGQCQpvAFKqDurmtMHer50Hhaxhn7IC3Oi5kPnvkNyQ== - dependencies: - "@angular-devkit/core" "10.0.6" - ora "4.0.4" - rxjs "6.5.5" - -"@angular/cli@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-10.1.0.tgz#f99df22ad832f58456089c98c7684fb5757be951" - integrity sha512-sWGEVeQQ5PXKuu517fRFEQQ5qopzoWeW+8qBUTrmJt8FztiL2ASyu412iJse56wyGxZvqwUmtzpti5kWHR9XIw== - dependencies: - "@angular-devkit/architect" "0.1001.0" - "@angular-devkit/core" "10.1.0" - "@angular-devkit/schematics" "10.1.0" - "@schematics/angular" "10.1.0" - "@schematics/update" "0.1001.0" +"@angular/cli@~11.0.1": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-11.0.4.tgz#a04724f7ffb27417df59c2359e47ec54e1f61fab" + integrity sha512-VkE/gx6P80EJHg13fG+gkZfd2DJmRaDAtnamcCGM4AThzoUN9XBdxc24uMLEzBb0/mJ4vpMK9+WTNIdMmzl+Tg== + dependencies: + "@angular-devkit/architect" "0.1100.4" + "@angular-devkit/core" "11.0.4" + "@angular-devkit/schematics" "11.0.4" + "@schematics/angular" "11.0.4" + "@schematics/update" "0.1100.4" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" - debug "4.1.1" + debug "4.2.0" ini "1.3.5" inquirer "7.3.3" - npm-package-arg "8.0.1" + npm-package-arg "8.1.0" npm-pick-manifest "6.1.0" - open "7.2.0" + open "7.3.0" pacote "9.5.12" - read-package-tree "5.3.1" + resolve "1.18.1" rimraf "3.0.2" semver "7.3.2" - symbol-observable "1.2.0" + symbol-observable "2.0.3" universal-analytics "0.4.23" - uuid "8.3.0" + uuid "8.3.1" -"@angular/common@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.1.0.tgz#5d2428d9e6a25b50600186d1a87ee04f9ba25924" - integrity sha512-LdDa6adSv9b+uCSyYuH8I7LS40CdJCVMOv8Y44p/JBr9b54Datslf8nygG1RhU+HkIMzdtw6qjcHbwF+27cLZw== +"@angular/common@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-11.0.4.tgz#39cd88bfcecd895419c059c366eac2df2ca6a2e9" + integrity sha512-4R2ALj71J6EAHVCKNnHHCKL7wcosMsv3gcMXbMTE+Wpzo3khEhM0Tej+I1qmMbVmGXVlRb//4+rjE4gff6FvQw== dependencies: tslib "^2.0.0" -"@angular/compiler-cli@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-10.1.0.tgz#da79982e5b3085eb5f8fd626f5f54aae33b89122" - integrity sha512-4AvjGNNvGcBakI4djt6W8GhmuKGf3eySthVQCh0GRYErYLvXYSW+69Yi0FzbjieHZht2P3LFVbunWFksBwp+rw== +"@angular/compiler-cli@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-11.0.4.tgz#2cef7c1313538c4c29f867af2a39bc4f4796c7b0" + integrity sha512-FV010O6GAldRe5sr+qegHe7oLinTylES70NX+0PIp44/W4tPx75Zvop+FVT90I4xPcvFvteLemy8nFAnMK+x5g== dependencies: + "@babel/core" "^7.8.6" + "@babel/types" "^7.8.6" canonical-path "1.0.0" chokidar "^3.0.0" convert-source-map "^1.5.1" @@ -266,17 +224,17 @@ source-map "^0.6.1" sourcemap-codec "^1.4.8" tslib "^2.0.0" - yargs "15.3.0" + yargs "^16.1.1" "@angular/compiler@9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.0.0.tgz#87e0bef4c369b6cadae07e3a4295778fc93799d5" integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ== -"@angular/compiler@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-10.1.0.tgz#e485b7ea30c827f9ff14cb77d3a7299db6963e02" - integrity sha512-PBHH59B2yTT/h2HxrlGGm8W5taHkcEk39FXiycSBrbt3T5QiExUXMJoUERviPQCUeHCWWsi1Fpu9wK2fgnP/Qw== +"@angular/compiler@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-11.0.4.tgz#8cc4e92ac9734d707828c02c487eff2cd1a69d02" + integrity sha512-Smf8FKSjkqd522ZCdXjSnVv1lYA0b21AN3WC5L1mwtRwyl/VacqCA/YEklLneDGgI2FdSIC9+bzSQIV+CCVftA== dependencies: tslib "^2.0.0" @@ -285,52 +243,52 @@ resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e" integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w== -"@angular/core@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.1.0.tgz#000b78432be63247199d0f385c116b7f4db803bc" - integrity sha512-lENt8Wk1vVsIiHeZVzXCZoHY13BxkqmulEw/AdUOh4VQxoU5K3z1o7fC1cvPHBvBEUnhbD2pDC1UHcY1G9yLRw== +"@angular/core@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-11.0.4.tgz#8eebb6a550dc24e4d53f642c8a78a0da2830cd5b" + integrity sha512-860cTMjdCHcvEsHOsTzpg5rThxwVgtnY4yT0SgboWiphrlzX+aNoyN/cCJHxWhmOTRlrl6/+hkeRq95E2BZkKw== dependencies: tslib "^2.0.0" -"@angular/forms@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.1.0.tgz#1f55bb48b5a360cbee07c40d21840da5dec45d60" - integrity sha512-1onL5To+QAaI1v642WcjfchwwJrUqIPrJ40a4l5yvcd/iZydOBHS/bbw1nYjQDiKeGL2+gzpP04qrh4nHeG7OA== +"@angular/forms@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-11.0.4.tgz#6d77f01ecdf027a78df18d4e6cd3ad8fc8dd49e4" + integrity sha512-Fhfc4buwMZk0WumDvl/X7XBnOKFeTRTJrwKdi8LlhY6o1Og8H4e/f69u9iDJCF3YjU4qC6yGtPp9YpSVCPP7Ew== dependencies: tslib "^2.0.0" -"@angular/platform-browser-dynamic@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.1.0.tgz#9f23e6867cdf4930789587dbb8d2be8d8a5ecc64" - integrity sha512-JzGYFiv6F6upbEv3KyoktZ8UaO/3kQRrqsXmUGbl+k12aG1Lg9WeTIfpWV8eqDCEAQb7BqyqoFbbZGZfnxp/TQ== +"@angular/platform-browser-dynamic@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.4.tgz#d775f12954db689507ef98a51d8d7ed5763becd4" + integrity sha512-ZOWTZaFfZSHhMy7a0RIxipiZoiobHWrGlq8/YaMrIgzUb9Fv518FeFCCI68BP0/GuyxX74MJmzv4ZgQctKKxXw== dependencies: tslib "^2.0.0" -"@angular/platform-browser@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.1.0.tgz#edc5640adb77151f3f40176cb92b4e252ab58e1a" - integrity sha512-bYG02qt36lzCBIV6mbAuYPDKU18x9Xd3S3jwJddvoHjRupxwZtTPGWKQ/4qhv1QrLwZnvXbCavIZlrHe68XJbw== +"@angular/platform-browser@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-11.0.4.tgz#131db1115943eb9c0191080e200c1e9dbd214d4c" + integrity sha512-+uUCKJgspSghJ3R6Fk0XHA0tolbaRBi8JFS2cY+hi9s27WKB88peGvtsK6RCOPJONY6JdOuhpcZqRN8dKfPi7w== dependencies: tslib "^2.0.0" -"@angular/router@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.1.0.tgz#02bbbcf0b20aad8a6679bfab82efe6a19f738805" - integrity sha512-20xidByYytcg46pBxZtraNHFCLDg75mTYAB8cTZ5qEZghrECzECyDbSKCwaW2zsv51Tlrcpi03/0CAaw7EgZiw== +"@angular/router@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-11.0.4.tgz#324507346c508649135f56e5f2b57c60e0ba7b16" + integrity sha512-B0sqv8zMM6j88+udEZzO8wKBw61pHgWZmLopnAqA65rRPrAvMsvAHUnYqX6w5pYqhJQxCVLVeKM+0QlQh1+WnA== dependencies: tslib "^2.0.0" -"@angular/service-worker@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-10.1.0.tgz#2ff9d34559da33789ade865f9696b37499c11a12" - integrity sha512-innXUo3Z/wGOX+4c2GQ+oDwAia687rYyj2EPuBsJ76L1vj78aPw+XTE2nAxG5wKJlbILUUI6otQO9uojs6UeHw== +"@angular/service-worker@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-11.0.4.tgz#3a55c2684a5b6b5daff2009912291d3d040cb86e" + integrity sha512-guRG83kifOVeOviz+lZWgrXHrilBkAj/ovBGqWknKMOfsZPYgUJnGhMaKp/Hc+LTjAQeeZfT2EIcCcuRmfZ5gg== dependencies: tslib "^2.0.0" -"@angular/upgrade@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-10.1.0.tgz#ec58f4fa706d00545c0a61dc6bd76b1885c30b1c" - integrity sha512-WY8g+2nJJuiHDT+NbZxx5wWD05WuTHfuVgeFgnHisEuRfwIB7Hdn2Q0H1JoGpfvKjXp4OtmD8LoLsa0PZgGaBQ== +"@angular/upgrade@~11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-11.0.4.tgz#85f5f02f1ef2d80f0137bb5812561094a5a33d8a" + integrity sha512-xEZplM7qlv5Rvkwhht9yx+frVt3/9emrOLfem+Ee82L1wQ7OCwI5k2yFlK5hPo/54ahlr805x+Oo+jin6L8GMA== dependencies: tslib "^2.0.0" @@ -350,19 +308,24 @@ invariant "^2.2.4" semver "^5.5.0" -"@babel/core@7.11.1", "@babel/core@^7.0.1", "@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" - integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" + integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== + +"@babel/core@7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.1" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -394,7 +357,59 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@7.11.0", "@babel/generator@^7.11.0", "@babel/generator@^7.9.6": +"@babel/core@^7.0.1", "@babel/core@^7.1.0", "@babel/core@^7.7.5": + version "7.11.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" + integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.11.0" + "@babel/helper-module-transforms" "^7.11.0" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.11.1" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.11.0" + "@babel/types" "^7.11.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.12.3", "@babel/core@^7.8.6": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== + dependencies: + "@babel/types" "^7.12.1" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.11.0", "@babel/generator@^7.9.6": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== @@ -403,6 +418,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.12.1", "@babel/generator@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460" + integrity sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww== + dependencies: + "@babel/types" "^7.12.10" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -410,6 +434,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-annotate-as-pure@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" + integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== + dependencies: + "@babel/types" "^7.12.10" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -427,6 +458,15 @@ "@babel/helper-module-imports" "^7.10.4" "@babel/types" "^7.10.5" +"@babel/helper-builder-react-jsx-experimental@^7.12.10", "@babel/helper-builder-react-jsx-experimental@^7.12.4": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz#a58cb96a793dc0fcd5c9ed3bb36d62fdc60534c2" + integrity sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.10" + "@babel/helper-module-imports" "^7.12.5" + "@babel/types" "^7.12.10" + "@babel/helper-builder-react-jsx@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" @@ -446,7 +486,17 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5", "@babel/helper-create-class-features-plugin@^7.8.3": +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== + dependencies: + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.8.3": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== @@ -458,6 +508,17 @@ "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" @@ -467,6 +528,14 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" + integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + regexpu-core "^4.7.1" + "@babel/helper-define-map@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" @@ -514,6 +583,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.7.4", "@babel/helper-module-imports@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" @@ -521,6 +597,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0", "@babel/helper-module-transforms@^7.9.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -534,6 +617,21 @@ "@babel/types" "^7.11.0" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -564,6 +662,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + "@babel/helper-replace-supers@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" @@ -574,6 +681,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -582,6 +699,13 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-skip-transparent-expression-wrappers@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" @@ -589,6 +713,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -601,6 +732,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + "@babel/helper-wrap-function@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" @@ -620,6 +756,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.12.1", "@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -634,6 +779,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.3.tgz#9e1eae46738bcd08e23e867bab43e7b95299a8f9" integrity sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA== +"@babel/parser@^7.12.10", "@babel/parser@^7.12.3", "@babel/parser@^7.12.7": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81" + integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA== + "@babel/plugin-proposal-async-generator-functions@^7.10.4", "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" @@ -643,6 +793,15 @@ "@babel/helper-remap-async-to-generator" "^7.10.4" "@babel/plugin-syntax-async-generators" "^7.8.0" +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-proposal-class-properties@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" @@ -659,6 +818,14 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-decorators@7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz#2156860ab65c5abf068c3f67042184041066543e" @@ -676,6 +843,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-proposal-export-namespace-from@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" @@ -684,6 +859,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.10.4", "@babel/plugin-proposal-json-strings@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" @@ -692,6 +875,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-proposal-logical-assignment-operators@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" @@ -700,6 +891,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" @@ -708,6 +907,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-proposal-numeric-separator@^7.10.4", "@babel/plugin-proposal-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" @@ -716,6 +923,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" + integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread@^7.11.0", "@babel/plugin-proposal-object-rest-spread@^7.9.6": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" @@ -725,6 +940,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" +"@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding@^7.10.4", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" @@ -733,6 +957,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-proposal-optional-chaining@^7.11.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" @@ -742,6 +974,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" + integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-proposal-private-methods@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" @@ -750,6 +991,14 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" @@ -758,6 +1007,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-unicode-property-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -779,6 +1036,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" @@ -821,6 +1085,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -870,7 +1141,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-typescript@^7.10.4", "@babel/plugin-syntax-typescript@^7.3.3": +"@babel/plugin-syntax-top-level-await@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.3.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== @@ -884,6 +1169,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-async-to-generator@^7.10.4", "@babel/plugin-transform-async-to-generator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" @@ -893,6 +1185,15 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-remap-async-to-generator" "^7.10.4" +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions@^7.10.4", "@babel/plugin-transform-block-scoped-functions@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" @@ -900,6 +1201,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-block-scoping@^7.10.4", "@babel/plugin-transform-block-scoping@^7.8.3": version "7.11.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" @@ -907,6 +1215,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-classes@^7.10.4", "@babel/plugin-transform-classes@^7.9.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" @@ -921,6 +1236,20 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.10.4", "@babel/plugin-transform-computed-properties@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" @@ -928,6 +1257,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-destructuring@^7.10.4", "@babel/plugin-transform-destructuring@^7.9.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" @@ -935,6 +1271,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" @@ -943,6 +1286,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-dotall-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-duplicate-keys@^7.10.4", "@babel/plugin-transform-duplicate-keys@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" @@ -950,6 +1301,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator@^7.10.4", "@babel/plugin-transform-exponentiation-operator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" @@ -958,6 +1316,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-for-of@^7.10.4", "@babel/plugin-transform-for-of@^7.9.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" @@ -965,6 +1331,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-function-name@^7.10.4", "@babel/plugin-transform-function-name@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" @@ -973,6 +1346,14 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-literals@^7.10.4", "@babel/plugin-transform-literals@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" @@ -980,6 +1361,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.10.4", "@babel/plugin-transform-member-expression-literals@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" @@ -987,6 +1375,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-modules-amd@^7.10.4", "@babel/plugin-transform-modules-amd@^7.9.6": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" @@ -996,6 +1391,15 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.10.4", "@babel/plugin-transform-modules-commonjs@^7.9.6": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" @@ -1006,6 +1410,16 @@ "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.10.4", "@babel/plugin-transform-modules-systemjs@^7.9.6": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" @@ -1016,6 +1430,17 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-umd@^7.10.4", "@babel/plugin-transform-modules-umd@^7.9.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" @@ -1024,6 +1449,14 @@ "@babel/helper-module-transforms" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex@^7.10.4", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" @@ -1031,6 +1464,13 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.10.4" +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/plugin-transform-new-target@^7.10.4", "@babel/plugin-transform-new-target@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" @@ -1038,6 +1478,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-object-super@^7.10.4", "@babel/plugin-transform-object-super@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" @@ -1046,6 +1493,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.9.5": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" @@ -1054,6 +1509,13 @@ "@babel/helper-get-function-arity" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-property-literals@^7.10.4", "@babel/plugin-transform-property-literals@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" @@ -1061,21 +1523,44 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-constant-elements@^7.9.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz#0f485260bf1c29012bb973e7e404749eaac12c9e" - integrity sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g== +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz#4471f0851feec3231cc9aaa0dccde39947c1ac1e" + integrity sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@^7.10.4", "@babel/plugin-transform-react-display-name@^7.8.3": +"@babel/plugin-transform-react-display-name@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-development@^7.10.4", "@babel/plugin-transform-react-jsx-development@^7.9.0": +"@babel/plugin-transform-react-jsx-development@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz#4c2a647de79c7e2b16bfe4540677ba3121e82a08" + integrity sha512-Rs3ETtMtR3VLXFeYRChle5SsP/P9Jp/6dsewBQfokDSzKJThlsuFcnzLTDRALiUmTC48ej19YD9uN1mupEeEDg== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.12.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== @@ -1084,7 +1569,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx-self@^7.10.4", "@babel/plugin-transform-react-jsx-self@^7.9.0": +"@babel/plugin-transform-react-jsx-self@^7.9.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== @@ -1092,7 +1577,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.10.4", "@babel/plugin-transform-react-jsx-source@^7.9.0": +"@babel/plugin-transform-react-jsx-source@^7.9.0": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== @@ -1100,7 +1585,17 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.10.4", "@babel/plugin-transform-react-jsx@^7.9.4": +"@babel/plugin-transform-react-jsx@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz#a7af3097c73479123594c8c8fe39545abebd44e3" + integrity sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.10" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-jsx@^7.9.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== @@ -1110,10 +1605,10 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-pure-annotations@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" - integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" @@ -1132,6 +1627,13 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + "@babel/plugin-transform-reserved-words@^7.10.4", "@babel/plugin-transform-reserved-words@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" @@ -1139,12 +1641,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-runtime@7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz#e27f78eb36f19448636e05c33c90fd9ad9b8bccf" - integrity sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw== +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" resolve "^1.8.1" semver "^5.5.1" @@ -1156,6 +1665,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-spread@^7.11.0", "@babel/plugin-transform-spread@^7.8.3": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" @@ -1164,6 +1680,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-transform-sticky-regex@^7.10.4", "@babel/plugin-transform-sticky-regex@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" @@ -1172,6 +1696,13 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" +"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" + integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-template-literals@^7.10.4", "@babel/plugin-transform-template-literals@^7.8.3": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" @@ -1180,6 +1711,13 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typeof-symbol@^7.10.4", "@babel/plugin-transform-typeof-symbol@^7.8.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" @@ -1187,14 +1725,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.9.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" - integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== +"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" + integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" "@babel/plugin-transform-unicode-escapes@^7.10.4": version "7.10.4" @@ -1203,6 +1748,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-unicode-regex@^7.10.4", "@babel/plugin-transform-unicode-regex@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" @@ -1211,7 +1763,153 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@7.11.0", "@babel/preset-env@^7.0.0", "@babel/preset-env@^7.9.5": +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-env@7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== + dependencies: + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.5" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.9.5" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.9.5" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.0.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" integrity sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== @@ -1285,70 +1983,76 @@ levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-env@7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" - integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== +"@babel/preset-env@^7.12.1": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab" + integrity sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA== dependencies: - "@babel/compat-data" "^7.9.6" - "@babel/helper-compilation-targets" "^7.9.6" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.6" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/compat-data" "^7.12.7" + "@babel/helper-compilation-targets" "^7.12.5" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.7" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.7" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.5" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.9.5" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.6" - "@babel/plugin-transform-modules-commonjs" "^7.9.6" - "@babel/plugin-transform-modules-systemjs" "^7.9.6" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.9.5" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.7" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.10" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.6" - browserslist "^4.11.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" + "@babel/types" "^7.12.10" + core-js-compat "^3.8.0" semver "^5.5.0" "@babel/preset-modules@^0.1.3": @@ -1374,26 +2078,24 @@ "@babel/plugin-transform-react-jsx-self" "^7.9.0" "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@babel/preset-react@^7.9.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" - integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== +"@babel/preset-react@^7.12.5": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9" + integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.10.4" - "@babel/plugin-transform-react-jsx" "^7.10.4" - "@babel/plugin-transform-react-jsx-development" "^7.10.4" - "@babel/plugin-transform-react-jsx-self" "^7.10.4" - "@babel/plugin-transform-react-jsx-source" "^7.10.4" - "@babel/plugin-transform-react-pure-annotations" "^7.10.4" - -"@babel/preset-typescript@7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" - integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.10" + "@babel/plugin-transform-react-jsx-development" "^7.12.7" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" + integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.9.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.10.4" "@babel/runtime-corejs3@^7.10.2": version "7.11.2" @@ -1403,7 +2105,14 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.11.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": +"@babel/runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.11.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== @@ -1419,6 +2128,15 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/template@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0", "@babel/traverse@^7.9.6": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" @@ -1434,7 +2152,22 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.9.5", "@babel/types@^7.9.6": +"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a" + integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.10" + "@babel/types" "^7.12.10" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.9.6": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== @@ -1443,6 +2176,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.8.6": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260" + integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1575,93 +2317,93 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.3.0.tgz#ed04063efb280c88ba87388b6f16427c0a85c856" - integrity sha512-/5Pn6sJev0nPUcAdpJHMVIsA8sKizL2ZkcKPE5+dJrCccks7tcM7c9wbgHudBJbxXLoTbqsHkG1Dofoem4F09w== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.3.0" - jest-util "^26.3.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^26.1.0", "@jest/core@^26.4.2": - version "26.4.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.4.2.tgz#85d0894f31ac29b5bab07aa86806d03dd3d33edc" - integrity sha512-sDva7YkeNprxJfepOctzS8cAk9TOekldh+5FhVuXS40+94SHbiicRO1VV2tSoRtgIo+POs/Cdyf8p76vPTd6dg== +"@jest/core@^26.2.2", "@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: - "@jest/console" "^26.3.0" - "@jest/reporters" "^26.4.1" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^26.3.0" - jest-config "^26.4.2" - jest-haste-map "^26.3.0" - jest-message-util "^26.3.0" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-resolve-dependencies "^26.4.2" - jest-runner "^26.4.2" - jest-runtime "^26.4.2" - jest-snapshot "^26.4.2" - jest-util "^26.3.0" - jest-validate "^26.4.2" - jest-watcher "^26.3.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.1.0", "@jest/environment@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.3.0.tgz#e6953ab711ae3e44754a025f838bde1a7fd236a0" - integrity sha512-EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.3.0" + jest-mock "^26.6.2" -"@jest/fake-timers@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.3.0.tgz#f515d4667a6770f60ae06ae050f4e001126c666a" - integrity sha512-ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" - jest-message-util "^26.3.0" - jest-mock "^26.3.0" - jest-util "^26.3.0" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^26.4.2": - version "26.4.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.4.2.tgz#73c2a862ac691d998889a241beb3dc9cada40d4a" - integrity sha512-Ot5ouAlehhHLRhc+sDz2/9bmNv9p5ZWZ9LE1pXGGTCXBasmi5jnYjlgYcYt03FBwLmZXCZ7GrL29c33/XRQiow== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^26.3.0" - "@jest/types" "^26.3.0" - expect "^26.4.2" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^26.4.1": - version "26.4.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.4.1.tgz#3b4d6faf28650f3965f8b97bc3d114077fb71795" - integrity sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ== +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -1672,63 +2414,63 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^26.3.0" - jest-resolve "^26.4.0" - jest-util "^26.3.0" - jest-worker "^26.3.0" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^5.0.1" + v8-to-istanbul "^7.0.0" optionalDependencies: node-notifier "^8.0.0" -"@jest/source-map@^26.1.0", "@jest/source-map@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.3.0.tgz#0e646e519883c14c551f7b5ae4ff5f1bfe4fc3d9" - integrity sha512-hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^26.1.0", "@jest/test-result@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.3.0.tgz#46cde01fa10c0aaeb7431bf71e4a20d885bc7fdb" - integrity sha512-a8rbLqzW/q7HWheFVMtghXV79Xk+GWwOK1FrtimpI5n1la2SY0qHri3/b0/1F0Ve0/yJmV8pEhxDfVwiUBGtgg== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.4.2": - version "26.4.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.4.2.tgz#58a3760a61eec758a2ce6080201424580d97cbba" - integrity sha512-83DRD8N3M0tOhz9h0bn6Kl6dSp+US6DazuVF8J9m21WAp5x7CqSMaNycMP0aemC/SH/pDQQddbsfHRTBXVUgog== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^26.3.0" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^26.3.0" - jest-runner "^26.4.2" - jest-runtime "^26.4.2" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.3.0.tgz#c393e0e01459da8a8bfc6d2a7c2ece1a13e8ba55" - integrity sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^26.3.0" + jest-haste-map "^26.6.2" jest-regex-util "^26.0.0" - jest-util "^26.3.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" @@ -1745,7 +2487,7 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^26.1.0", "@jest/types@^26.3.0": +"@jest/types@^26.3.0": version "26.3.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== @@ -1756,6 +2498,17 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@jsdevtools/coverage-istanbul-loader@3.0.5": version "3.0.5" resolved "https://registry.yarnpkg.com/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz#2a4bc65d0271df8d4435982db4af35d81754ee26" @@ -1781,14 +2534,14 @@ "@angular-devkit/schematics" "9.1.7" fs-extra "9.0.0" -"@ngtools/webpack@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-10.1.0.tgz#70059658d4ec1966026b48ba8bc91634c0ef1381" - integrity sha512-WnWkNBrY7XgP2xc7oJEAMSIzlHyikPky9y1G6tIkSVuDZ3hM3e662C99xJxt2ZOUY9LOuxuGJ03t/phlnDafJQ== +"@ngtools/webpack@11.0.4": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-11.0.4.tgz#fd80a8b7d648ddb8e56d73404e6b673903d2d365" + integrity sha512-MAV7inQmsMISTnDcXwyRX5oJZx8F7K/tZRLJciQwkM0DqZyq8fI9KDRwBcmYeQ+J0mSJV9LUVdExmpulpkywqw== dependencies: - "@angular-devkit/core" "10.1.0" - enhanced-resolve "4.3.0" - webpack-sources "1.4.3" + "@angular-devkit/core" "11.0.4" + enhanced-resolve "5.3.1" + webpack-sources "2.0.1" "@nodelib/fs.scandir@2.1.3": version "2.1.3" @@ -1865,154 +2618,200 @@ node-gyp "^6.1.0" read-package-json-fast "^1.1.3" -"@nrwl/angular@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-10.1.0.tgz#ce7db854d6b619b58a07fa0449f0642e0763b558" - integrity sha512-gLfPLnQ0n7uNFp9SRIUI9viU23863XnBE3+RWu5yqQiwqt7ZoWikTV/serOsmzSEfseiV29wUqzwlW3Xpj6y6A== - dependencies: - "@angular-devkit/schematics" "~10.0.0" - "@nrwl/cypress" "10.1.0" - "@nrwl/jest" "10.1.0" - "@schematics/angular" "~10.0.0" +"@nrwl/angular@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-11.0.2.tgz#7a959907db2182f968f2bfadfebef31571fcdbaf" + integrity sha512-p4TbSIp+WWBkyi1ugpD34iFqhWkLHK83wNjiP+R+U7vFsKUBy10Pzra4k+xA4fdg3xxxd5XHs2GvhGZG00unVA== + dependencies: + "@angular-devkit/schematics" "~11.0.1" + "@nrwl/cypress" "11.0.2" + "@nrwl/devkit" "11.0.2" + "@nrwl/jest" "11.0.2" + "@nrwl/linter" "11.0.2" + "@schematics/angular" "~11.0.1" jasmine-marbles "~0.6.0" + tslib "^2.0.0" -"@nrwl/cli@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-10.1.0.tgz#b0b85fe875c62d6518e7be59e6bbc5d039130cb1" - integrity sha512-kzTFHZmaoC1sdDbgdLQjns6BFyHkpLaj8JIXJkamg2Rp2ZPQtUDTjbrS/pg1FYGBvV87mpX0kG+bhGZPTg1kew== +"@nrwl/cli@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-11.0.2.tgz#71d7c9af6d6e9a08238a0b503d5950568920b4b5" + integrity sha512-bjELE45kKr5jqqKr1D7PSimrOxRVaD7eFpDSNvpx7mYY7Iz2vgdnJipGpMNlb21XzyOtsyqTstimbedUL/1ntg== dependencies: - "@nrwl/tao" "10.1.0" - chalk "2.4.2" + "@nrwl/tao" "11.0.2" + chalk "4.1.0" tmp "0.0.33" - yargs "^11.0.0" - yargs-parser "10.0.0" + yargs "15.4.1" + yargs-parser "20.0.0" -"@nrwl/cypress@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-10.1.0.tgz#c448a0080ced0972d70ca097fbf9d9967c3ad49f" - integrity sha512-MaMvSN2vue3E9hRxVMr5pw1bjyr2tyWDVIQXrQ69r7TlYQLOUNxLWZ/8vlYZGkBExCUJABFjMUKZw4QB/Ave3Q== +"@nrwl/cypress@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-11.0.2.tgz#bf1a3c9225647ca615fcfadbed47eb7d16cff9ec" + integrity sha512-P4fxk2eUqig5uTs4w2lHp90Y2hJoa1KFVABs5lGLvzx9NS1igyvqDkUULTFPEovfm+2O8QEIAXHtroTfq8QAcw== dependencies: - "@angular-devkit/architect" "~0.1000.0" - "@angular-devkit/core" "~10.0.0" + "@angular-devkit/architect" "~0.1100.1" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" "@cypress/webpack-preprocessor" "~4.1.2" + "@nrwl/devkit" "11.0.2" fork-ts-checker-webpack-plugin "^3.1.1" + fs-extra "7.0.1" + rxjs "^6.5.4" tree-kill "1.2.2" - ts-loader "^5.3.1" + ts-loader "5.4.5" tsconfig-paths-webpack-plugin "3.2.0" + tslib "^2.0.0" webpack-node-externals "1.7.2" + yargs-parser "20.0.0" -"@nrwl/express@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/express/-/express-10.1.0.tgz#06e7459e20de4a742a32b566401e361bb91501d1" - integrity sha512-XO3TekI+E6cMocQCBigFc8CnkWVNRLXIkpvl5t3eBApaoiJaBjUhLeD1LH3tC+b9rsWFkga8qYW4bbBMEWLMFA== +"@nrwl/devkit@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-11.0.2.tgz#67a602d9c42d04170314123af279f96fba4caa3b" + integrity sha512-gT4nRWw/qtBGu/pKI30SH4XjwNgDvhXeXI82mHfDB8OFsp3EA2oUbAfn/i8FcFDA22nfCM9bQHBPKLdG5VETqA== dependencies: - "@angular-devkit/schematics" "~10.0.0" - "@nrwl/jest" "10.1.0" - "@nrwl/node" "10.1.0" + "@nrwl/tao" "11.0.2" + ejs "^3.1.5" + strip-json-comments "2.0.1" + tslib "^2.0.0" -"@nrwl/jest@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-10.1.0.tgz#b19c63076280da44335bdd34438e2123188a08c4" - integrity sha512-FGazorVVp0acDnGCKWej+jnWoj84whLsEwr/rbONJD9l7OgPUh2SH7KmcYKo0BHzAc/sZuYZVSKu3dSw6Re5fw== +"@nrwl/express@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/express/-/express-11.0.2.tgz#47ea0bab900a50175bdf85c1325c78100e2476f3" + integrity sha512-ihvHqJPWcL9/fDwjckH9iI8IfTnYnluNMrrS1F+DAykcL64XCRwwaLMb8FF9XbrufuGkQEQVymIzfQ1u5Iqk/g== dependencies: - "@angular-devkit/architect" "~0.1000.0" - "@angular-devkit/core" "~10.0.0" - "@angular-devkit/schematics" "~10.0.0" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" + "@nrwl/devkit" "11.0.2" + "@nrwl/jest" "11.0.2" + "@nrwl/node" "11.0.2" + +"@nrwl/jest@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-11.0.2.tgz#b211a65b3998340c4a5a5030600b8b350f52b849" + integrity sha512-c2qJe4KnRo20E6rnVw0rEROLi6LSDft4NATCFiqk+x5HG0eL0hXjF4JWV0XqmyfuxcQNKBmQI2w6qo9aqlRVCQ== + dependencies: + "@angular-devkit/architect" "~0.1100.1" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" + "@nrwl/devkit" "11.0.2" + jest-resolve "^26.6.2" + rxjs "^6.5.4" + strip-json-comments "2.0.1" + tslib "^2.0.0" -"@nrwl/linter@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-10.1.0.tgz#59cc68bba14d09dd2707c1a68a944f62ce8b9d6b" - integrity sha512-JePWJQhRi+lIoAu4tqQMUl+/Fq+dMVNHXUds0PuMXJZntuobP57DFLmX4fjit5zLm1Lv4qZfXtX4W2CoHK6eFQ== +"@nrwl/linter@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-11.0.2.tgz#7212af4f5759422f899eaace6ccd3c7f04f9ce47" + integrity sha512-ou+vvXfwUVlGUTvLwP0Sw7a9pmNSIp3v9KqlDVUn0ZihiWHQ09z0pvf0h4agVqfPTgVHSOnXvU7k4THnqPmj4A== dependencies: - "@angular-devkit/architect" "~0.1000.0" + "@angular-devkit/architect" "~0.1100.1" + glob "7.1.4" + minimatch "3.0.4" + tslib "^2.0.0" -"@nrwl/nest@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-10.1.0.tgz#b56bcc57d198073e29dd51a2901017a307b4898a" - integrity sha512-irs5vbWOrmi1IBqc4QXFVb7z4T8w0JGa3wtjgoZRaHT5/prLQB43Tf6SuSUqJuElGbRodT+RV4COocMZ6yBLVw== +"@nrwl/nest@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-11.0.2.tgz#41a9539179564604b06913b7a83d355416f18fc5" + integrity sha512-I+xxji/3coSRjmIGPyyAtXh1AabDx/Gh5P+RnkylmhRQOYEI7DxFVYXOo/EKva4+x+HDdNsEj5z7fSdDnqfDhw== dependencies: - "@angular-devkit/schematics" "~10.0.0" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" "@nestjs/schematics" "^7.0.0" - "@nrwl/jest" "10.1.0" - "@nrwl/node" "10.1.0" - -"@nrwl/node@10.1.0", "@nrwl/node@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-10.1.0.tgz#a81f18c21e9d923dc31dfb3780d30449e15cc813" - integrity sha512-IX9jR1CU9xyWCOy9sl4Q3P6cWljhHj2UOdHdUbZhtnSVUSBAo4slBWFDFArQFdJCBC5TBsJS8NkRw67ekP4zSQ== - dependencies: - "@angular-devkit/architect" "~0.1000.0" - "@angular-devkit/build-webpack" "~0.1000.0" - "@angular-devkit/core" "~10.0.0" - "@angular-devkit/schematics" "~10.0.0" - "@nrwl/jest" "10.1.0" - "@nrwl/linter" "10.1.0" + "@nrwl/devkit" "11.0.2" + "@nrwl/jest" "11.0.2" + "@nrwl/node" "11.0.2" + +"@nrwl/node@11.0.2", "@nrwl/node@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-11.0.2.tgz#2f639f2507cdff8d340bb7f3e9194c51ef9b0196" + integrity sha512-x2d4spMTSqhuLwza2WWri3urIzdrpuS7Q7PmcXkhpFbUrTeKvrIXwJPMCSMizxgSozBmAEFr7ynTidb/NLB/AA== + dependencies: + "@angular-devkit/architect" "~0.1100.1" + "@angular-devkit/build-webpack" "~0.1100.1" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" + "@nrwl/devkit" "11.0.2" + "@nrwl/jest" "11.0.2" + "@nrwl/linter" "11.0.2" circular-dependency-plugin "5.2.0" copy-webpack-plugin "6.0.3" fork-ts-checker-webpack-plugin "^3.1.1" + fs-extra "7.0.1" + glob "7.1.4" license-webpack-plugin "2.1.2" - source-map-support "0.5.12" + rxjs "^6.5.4" + source-map-support "0.5.16" tree-kill "1.2.2" ts-loader "5.4.5" tsconfig-paths-webpack-plugin "3.2.0" + tslib "^2.0.0" webpack "4.42.0" - webpack-dev-server "3.9.0" + webpack-dev-server "3.11.0" webpack-merge "4.2.1" webpack-node-externals "1.7.2" -"@nrwl/react@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/react/-/react-10.1.0.tgz#49518dad3c52a3203458af443293c8680f1f632a" - integrity sha512-LZZG6L7bSmYwQGs++f59tndDSZG1TmvQotph+kx1XGE2q8xazrGFPAsvfOoVO4KyDtDJ1hYorE5s7eZVzZOgJA== +"@nrwl/react@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/react/-/react-11.0.2.tgz#96b4a96f1d43d754f22c0053afbab4a5343bbd5f" + integrity sha512-GffLSe5GHerG3ylASLVi62WSZNRZbtRiajaQRvLXgbs0xzUha72aPjtlquElaovw7sWIzeGxEZc3wJEIeCl0Rw== dependencies: - "@angular-devkit/schematics" "~10.0.0" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" "@babel/core" "7.9.6" "@babel/preset-react" "7.9.4" - "@nrwl/cypress" "10.1.0" - "@nrwl/jest" "10.1.0" - "@nrwl/web" "10.1.0" - "@svgr/webpack" "^5.2.0" - confusing-browser-globals "^1.0.9" + "@nrwl/cypress" "11.0.2" + "@nrwl/devkit" "11.0.2" + "@nrwl/jest" "11.0.2" + "@nrwl/web" "11.0.2" + "@svgr/webpack" "^5.4.0" eslint-plugin-import "^2.20.1" eslint-plugin-jsx-a11y "^6.2.3" eslint-plugin-react "^7.18.3" eslint-plugin-react-hooks "^2.4.0" url-loader "^3.0.0" -"@nrwl/tao@10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-10.1.0.tgz#28420ae22e4cea928c002cad3a12a29587e949bd" - integrity sha512-h8q+XdEuSo2m6HK1lRXn7wrxFbM/4vJ6wFSaAETWjxSIsEP7leMrkGkoIs7lu2Ic12Ju/DfxMcCYlcFTlcbK7w== +"@nrwl/tao@11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-11.0.2.tgz#54a5ec41d51a18e2196090382ff5db8b864be611" + integrity sha512-mJ8Yy2VT71Ce7B8UiAAm4Lnbn6HQTfbkBwO8+OTaSvyPtFQ7ZkxwMSbz+tuJhQQ8gyNbdatjkaCSimkgjUjsyQ== dependencies: - "@angular-devkit/architect" "~0.1000.0" - "@angular-devkit/core" "~10.0.0" - "@angular-devkit/schematics" "~10.0.0" + "@angular-devkit/architect" "~0.1100.1" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" + chalk "4.1.0" + fs-extra "7.0.1" inquirer "^6.3.1" - minimist "^1.2.0" + minimist "^1.2.5" + rxjs "^6.5.4" + semver "6.3.0" strip-json-comments "2.0.1" + tmp "0.0.33" + tslib "^2.0.0" + yargs-parser "20.0.0" -"@nrwl/web@10.1.0", "@nrwl/web@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-10.1.0.tgz#c51338e384d221b8241700d02b82caa7cf03bfd5" - integrity sha512-YH9vj5+OF6kIEmJLbcrSc+FxEdZS4XzTIPEWpLt6PL5t6v9mSpxMJmC5nsWL9AuilpuFQmUfN9jeBsQi5awRTg== - dependencies: - "@angular-devkit/architect" "~0.1000.0" - "@angular-devkit/build-optimizer" "~0.1000.0" - "@angular-devkit/build-webpack" "~0.1000.0" - "@angular-devkit/core" "~10.0.0" - "@angular-devkit/schematics" "~10.0.0" +"@nrwl/web@11.0.2", "@nrwl/web@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-11.0.2.tgz#90fc5d51217f17b28b399179ebf417d17917a658" + integrity sha512-oycTGS5nQwy9FwndaWB1SIKtvxRCegN+LLQ1reWG4MuXjjhEgFtsdWX2I/ipMOjgDJANGkQBLp4pZq7FOdhKfQ== + dependencies: + "@angular-devkit/architect" "~0.1100.1" + "@angular-devkit/build-optimizer" "~0.1100.1" + "@angular-devkit/build-webpack" "~0.1100.1" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" "@babel/core" "7.9.6" "@babel/plugin-proposal-class-properties" "7.8.3" "@babel/plugin-proposal-decorators" "7.8.3" "@babel/plugin-transform-regenerator" "7.8.7" "@babel/preset-env" "7.9.6" - "@babel/preset-typescript" "7.9.0" - "@nrwl/cypress" "10.1.0" - "@nrwl/jest" "10.1.0" - "@nrwl/linter" "10.1.0" + "@babel/preset-typescript" "7.10.4" + "@nrwl/cypress" "11.0.2" + "@nrwl/devkit" "11.0.2" + "@nrwl/jest" "11.0.2" + "@nrwl/linter" "11.0.2" "@rollup/plugin-babel" "5.0.2" "@rollup/plugin-commonjs" "11.0.2" "@rollup/plugin-image" "2.0.4" + "@rollup/plugin-json" "^4.1.0" "@rollup/plugin-node-resolve" "7.1.1" ajv "6.10.2" autoprefixer "9.7.4" @@ -2020,9 +2819,10 @@ babel-plugin-const-enum "^1.0.1" babel-plugin-macros "^2.8.0" babel-plugin-transform-async-to-promises "^0.8.15" - browserslist "4.8.7" + browserslist "^4.14.6" cacache "12.0.2" caniuse-lite "^1.0.30001030" + chalk "4.1.0" circular-dependency-plugin "5.2.0" clean-css "4.2.1" copy-webpack-plugin "6.0.3" @@ -2031,17 +2831,22 @@ file-loader "4.2.0" find-cache-dir "3.0.0" fork-ts-checker-webpack-plugin "^3.1.1" + fs-extra "7.0.1" glob "7.1.4" + http-server "0.12.3" identity-obj-proxy "3.0.0" + ignore "^5.0.4" jest-worker "25.1.0" karma-source-map-support "1.4.0" - less "3.11.1" + less "3.12.2" less-loader "5.0.0" license-webpack-plugin "2.1.2" loader-utils "1.2.3" mini-css-extract-plugin "0.8.0" minimatch "3.0.4" + node-watch "0.7.0" open "6.4.0" + opn "^5.3.0" parse5 "4.0.0" postcss "7.0.27" postcss-import "12.0.1" @@ -2057,7 +2862,7 @@ rollup-plugin-postcss "^3.1.1" rollup-plugin-typescript2 "^0.27.1" rxjs "^6.5.4" - sass "1.22.9" + sass "^1.26.3" sass-loader "8.0.2" semver "6.3.0" source-map "0.7.3" @@ -2068,41 +2873,50 @@ stylus "0.54.5" stylus-loader "3.0.2" terser "4.3.8" - terser-webpack-plugin "2.3.1" + terser-webpack-plugin "2.3.7" tree-kill "1.2.2" ts-loader "5.4.5" tsconfig-paths-webpack-plugin "3.2.0" + tslib "^2.0.0" webpack "4.42.0" webpack-dev-middleware "3.7.0" - webpack-dev-server "3.9.0" + webpack-dev-server "3.11.0" webpack-merge "4.2.1" webpack-node-externals "1.7.2" webpack-sources "1.4.3" - webpack-subresource-integrity "1.1.0-rc.5" + webpack-subresource-integrity "^1.5.1" worker-plugin "3.2.0" -"@nrwl/workspace@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-10.1.0.tgz#56b955eca3a3bd230cb563116876b5e47779a675" - integrity sha512-mdpiWo8kDtK2ois1KVbrcxQm7+WT6smv+L1FUqDLuwrBSefp+mGP0KyInLmyo/Pb5EbaCkCmVmtC8HN6icH9Yg== - dependencies: - "@angular-devkit/core" "~10.0.0" - "@angular-devkit/schematics" "~10.0.0" - "@nrwl/cli" "10.1.0" +"@nrwl/workspace@~11.0.0": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-11.0.2.tgz#352dec1c1cc366a007998701c866b07c62f14be0" + integrity sha512-cjh8I9ulU0lJcapl3/Vh6v98Kihr+rcJ/cDvjxHYAfD/okVRagxMl390XQHxH47+0gRYqyhyMeJLIo533LyIEQ== + dependencies: + "@angular-devkit/architect" "~0.1100.1" + "@angular-devkit/core" "~11.0.1" + "@angular-devkit/schematics" "~11.0.1" + "@nrwl/cli" "11.0.2" + "@nrwl/devkit" "11.0.2" axios "0.19.2" - chalk "2.4.2" - cosmiconfig "4.0.0" - dotenv "8.2.0" - fs-extra "6.0.0" - ignore "5.0.4" - npm-run-all "4.1.5" + chalk "4.1.0" + cosmiconfig "^4.0.0" + dotenv "6.2.0" + flat "^5.0.2" + fs-extra "7.0.1" + ignore "^5.0.4" + inquirer "^6.3.1" + lodash "^4.17.20" + minimatch "3.0.4" + npm-run-all "^4.1.5" opn "^5.3.0" + resolve "1.17.0" rxjs "^6.5.4" - semver "5.4.1" + semver "6.3.0" strip-json-comments "2.0.1" tmp "0.0.33" - yargs "^11.0.0" - yargs-parser "10.0.0" + tslib "^2.0.0" + yargs "15.4.1" + yargs-parser "20.0.0" "@octokit/auth-token@^2.4.0": version "2.4.2" @@ -2241,7 +3055,7 @@ "@rollup/pluginutils" "^3.0.4" mini-svg-data-uri "^1.1.3" -"@rollup/plugin-json@^4.0.0": +"@rollup/plugin-json@^4.0.0", "@rollup/plugin-json@^4.1.0": version "4.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== @@ -2259,10 +3073,10 @@ is-module "^1.0.0" resolve "^1.14.2" -"@rollup/plugin-node-resolve@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" - integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== +"@rollup/plugin-node-resolve@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz#44064a2b98df7530e66acf8941ff262fc9b4ead8" + integrity sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -2287,30 +3101,22 @@ dependencies: any-observable "^0.3.0" -"@schematics/angular@10.1.0", "@schematics/angular@~10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.1.0.tgz#ca1282853c16c318cdee2f2b0ca63222ef84f220" - integrity sha512-kQ925yMmOwiSITY+FhuTvrl3HuEIEUrdByBNB0NlvY+DyJwPlngEOo6Iu0cYWaJcoxM1JscOWL59ZR6W7YCFIg== - dependencies: - "@angular-devkit/core" "10.1.0" - "@angular-devkit/schematics" "10.1.0" - jsonc-parser "2.3.0" - -"@schematics/angular@~10.0.0": - version "10.0.8" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.8.tgz#af730827b2de6cab7561157a8772250eb5f277e1" - integrity sha512-KNO61UGtiKMQSG+NbusqLtwLbxId0y+xpXJt9PKFwi+vaViOO+YzOPREfiFCuQ7q6X8SmNlrMj6sZ34E2YN1pQ== +"@schematics/angular@11.0.4", "@schematics/angular@~11.0.0", "@schematics/angular@~11.0.1": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-11.0.4.tgz#36268ebda718c4f395457d2eea874fda9c469402" + integrity sha512-LwBD9TIoLy9XqqInJvlN4BHtPyJExyeorNiOp6rXb/wafuDbvZ+9kY9GWZTY1auVo5PNKqErfxr74ydA3FFb9g== dependencies: - "@angular-devkit/core" "10.0.8" - "@angular-devkit/schematics" "10.0.8" + "@angular-devkit/core" "11.0.4" + "@angular-devkit/schematics" "11.0.4" + jsonc-parser "2.3.1" -"@schematics/update@0.1001.0": - version "0.1001.0" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1001.0.tgz#9b3fcc8001d1ade4cec8294ce526be3411ea39dc" - integrity sha512-LRGwo37akHe/BUl5FHj74mJ/xhM0Z7W8pWMWJ6zGihs+HNXjTgfYVgGA1TgN0amqQODa3AxxLL6aLj+hVYZi+g== +"@schematics/update@0.1100.4": + version "0.1100.4" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.1100.4.tgz#b67efdb39396ddcacef97de008100944af3d1556" + integrity sha512-YwFtgxCQQkYC89IC7dfshyGr0roE6bpp5HgpQLdS/AOjHeZKo7/SPdM0W4ddB+Fml1Fo6v4eFG/Ia9oR7qNv1A== dependencies: - "@angular-devkit/core" "10.1.0" - "@angular-devkit/schematics" "10.1.0" + "@angular-devkit/core" "11.0.4" + "@angular-devkit/schematics" "11.0.4" "@yarnpkg/lockfile" "1.1.0" ini "1.3.5" npm-package-arg "^8.0.0" @@ -2377,15 +3183,15 @@ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== -"@svgr/babel-plugin-transform-svg-component@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.4.0.tgz#a2212b4d018e6075a058bb7e220a66959ef7a03c" - integrity sha512-zLl4Fl3NvKxxjWNkqEcpdSOpQ3LGVH2BNFQ6vjaK6sFo2IrSznrhURIPI0HAphKiiIwNYjAfE0TNoQDSZv0U9A== +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== -"@svgr/babel-preset@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.4.0.tgz#da21854643e1c4ad2279239baa7d5a8b128c1f15" - integrity sha512-Gyx7cCxua04DBtyILTYdQxeO/pwfTBev6+eXTbVbxe4HTGhOUW6yo7PSbG2p6eJMl44j6XSequ0ZDP7bl0nu9A== +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" @@ -2394,55 +3200,55 @@ "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" -"@svgr/core@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.4.0.tgz#655378ee43679eb94fee3d4e1976e38252dff8e7" - integrity sha512-hWGm1DCCvd4IEn7VgDUHYiC597lUYhFau2lwJBYpQWDirYLkX4OsXu9IslPgJ9UpP7wsw3n2Ffv9sW7SXJVfqQ== +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== dependencies: - "@svgr/plugin-jsx" "^5.4.0" - camelcase "^6.0.0" - cosmiconfig "^6.0.0" + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" -"@svgr/hast-util-to-babel-ast@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.4.0.tgz#bb5d002e428f510aa5b53ec0a02377a95b367715" - integrity sha512-+U0TZZpPsP2V1WvVhqAOSTk+N+CjYHdZx+x9UBa1eeeZDXwH8pt0CrQf2+SvRl/h2CAPRFkm+Ey96+jKP8Bsgg== +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== dependencies: - "@babel/types" "^7.9.5" + "@babel/types" "^7.12.6" -"@svgr/plugin-jsx@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.4.0.tgz#ab47504c55615833c6db70fca2d7e489f509787c" - integrity sha512-SGzO4JZQ2HvGRKDzRga9YFSqOqaNrgLlQVaGvpZ2Iht2gwRp/tq+18Pvv9kS9ZqOMYgyix2LLxZMY1LOe9NPqw== +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== dependencies: - "@babel/core" "^7.7.5" - "@svgr/babel-preset" "^5.4.0" - "@svgr/hast-util-to-babel-ast" "^5.4.0" + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" svg-parser "^2.0.2" -"@svgr/plugin-svgo@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.4.0.tgz#45d9800b7099a6f7b4d85ebac89ab9abe8592f64" - integrity sha512-3Cgv3aYi1l6SHyzArV9C36yo4kgwVdF3zPQUC6/aCDUeXAofDYwE5kk3e3oT5ZO2a0N3lB+lLGvipBG6lnG8EA== +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== dependencies: - cosmiconfig "^6.0.0" - merge-deep "^3.0.2" + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" svgo "^1.2.2" -"@svgr/webpack@^5.2.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.4.0.tgz#b68bc86e29cf007292b96ced65f80971175632e0" - integrity sha512-LjepnS/BSAvelnOnnzr6Gg0GcpLmnZ9ThGFK5WJtm1xOqdBE/1IACZU7MMdVzjyUkfFqGz87eRE4hFaSLiUwYg== - dependencies: - "@babel/core" "^7.9.0" - "@babel/plugin-transform-react-constant-elements" "^7.9.0" - "@babel/preset-env" "^7.9.5" - "@babel/preset-react" "^7.9.4" - "@svgr/core" "^5.4.0" - "@svgr/plugin-jsx" "^5.4.0" - "@svgr/plugin-svgo" "^5.4.0" +"@svgr/webpack@^5.4.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" "@szmarczak/http-timer@^1.1.2": @@ -2502,6 +3308,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/babel__traverse@^7.0.4": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + "@types/body-parser@*": version "1.19.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" @@ -2583,11 +3396,6 @@ dependencies: "@types/node" "*" -"@types/history@*": - version "4.7.7" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.7.tgz#613957d900fab9ff84c8dfb24fa3eef0c2a40896" - integrity sha512-2xtoL22/3Mv6a70i4+4RB7VgbDDORoWwjcqeNysojZA0R7NK17RbY5Gof/2QiFfJgX+KkWghbwJ+d/2SB8Ndzg== - "@types/html-minifier-terser@^5.0.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880" @@ -2663,6 +3471,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -2680,7 +3493,7 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a" integrity sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q== -"@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== @@ -2720,11 +3533,6 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA== -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - "@types/q@^1.5.1": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" @@ -2740,46 +3548,6 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/react-dom@~16.9.4": - version "16.9.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== - dependencies: - "@types/react" "*" - -"@types/react-router-dom@~5.1.3": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.1.5.tgz#7c334a2ea785dbad2b2dcdd83d2cf3d9973da090" - integrity sha512-ArBM4B1g3BWLGbaGvwBGO75GNFbLDUthrDojV2vHLih/Tq8M+tgvY1DSwkuNrPSwdp/GUL93WSEpTZs8nVyJLw== - dependencies: - "@types/history" "*" - "@types/react" "*" - "@types/react-router" "*" - -"@types/react-router@*": - version "5.1.8" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-5.1.8.tgz#4614e5ba7559657438e17766bb95ef6ed6acc3fa" - integrity sha512-HzOyJb+wFmyEhyfp4D4NYrumi+LQgQL/68HvJO+q6XtuHSDvw6Aqov7sCAhjbNq3bUPgPqbdvjXC5HeB2oEAPg== - dependencies: - "@types/history" "*" - "@types/react" "*" - -"@types/react@*": - version "16.9.46" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.46.tgz#f0326cd7adceda74148baa9bff6e918632f5069e" - integrity sha512-dbHzO3aAq1lB3jRQuNpuZ/mnu+CdD3H0WVaaBQA8LTT3S33xhVBUj232T8M3tAhSWJs/D/UqORYUlJNl/8VQZg== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@~16.9.43": - version "16.9.49" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872" - integrity sha512-DtLFjSj0OYAdVLBbyjhuV9CdGVHCkHn2R+xr3XkBvK2rS1Y1tkc14XSGjYgm5Fjjr90AxH9tiSzc1pCFMGO06g== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - "@types/resolve@0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" @@ -2824,10 +3592,10 @@ resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/tapable@*", "@types/tapable@^1.0.5": version "1.0.6" @@ -2859,10 +3627,10 @@ "@types/source-list-map" "*" source-map "^0.6.1" -"@types/webpack@^4.41.8": - version "4.41.21" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" - integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== +"@types/webpack@^4.4.24": + version "4.41.25" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.25.tgz#4d3b5aecc4e44117b376280fbfd2dc36697968c4" + integrity sha512-cr6kZ+4m9lp86ytQc1jPOJXgINQyz3kLLunZ57jznW+WIAL0JqZbGubQk4GlD42MuQL5JGOABrxdpqqWeovlVQ== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -2871,10 +3639,10 @@ "@types/webpack-sources" "*" source-map "^0.6.0" -"@types/webpack@~4.41.21": - version "4.41.22" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.22.tgz#ff9758a17c6bd499e459b91e78539848c32d0731" - integrity sha512-JQDJK6pj8OMV9gWOnN1dcLCyU9Hzs6lux0wBO4lr1+gyEhIBR9U3FMrz12t2GPkg110XAxEAw2WHF6g7nZIbRQ== +"@types/webpack@^4.41.8": + version "4.41.21" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.21.tgz#cc685b332c33f153bb2f5fc1fa3ac8adeb592dee" + integrity sha512-2j9WVnNrr/8PLAB5csW44xzQSJwS26aOnICsP3pSGCEdsu6KYtfQ6QJsVUKHWRnm1bL7HziJsfh5fHqth87yKA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -2917,17 +3685,17 @@ dependencies: lockfile "1.0.4" -"@verdaccio/local-storage@9.7.2": - version "9.7.2" - resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-9.7.2.tgz#af71bc39825b5592d0a761220c94d4e3f0a8b1eb" - integrity sha512-Lsn9TR1Jnkl0y7ndQQUi0ypvS9tHT4rqMiMebt2wsiy5mAlLrZ0sjw7erI7wE5sBi/L+uoq0HXfJwLjP8bfrBg== +"@verdaccio/local-storage@9.7.4": + version "9.7.4" + resolved "https://registry.yarnpkg.com/@verdaccio/local-storage/-/local-storage-9.7.4.tgz#3ffaa41fc850758296c9f243d765372a2e5e4ea2" + integrity sha512-Wj0mJ6FTLGma+nDxpAWJkg7yY0WLh0sUm94juqY9eyWSqOWdv1QvduE9lvl0vh890/QbrlqzxPqxTxeZwsndTA== dependencies: "@verdaccio/commons-api" "^9.7.1" "@verdaccio/file-locking" "^9.7.2" "@verdaccio/streams" "^9.7.2" async "3.2.0" level "5.0.1" - lodash "4.17.19" + lodash "4.17.20" mkdirp "0.5.5" "@verdaccio/readme@9.7.3": @@ -2944,10 +3712,10 @@ resolved "https://registry.yarnpkg.com/@verdaccio/streams/-/streams-9.7.2.tgz#cd5448470d725e221629adb84c74af7dfd8c9678" integrity sha512-SoCG1btVFPxOcrs8w9wLJCfe8nfE6EaEXCXyRwGbh+Sr3NLEG0R8JOugGJbuSE+zIRuUs5JaUKjzSec+JKLvZw== -"@verdaccio/ui-theme@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-1.12.1.tgz#5bfc6ed1a222cec0b8d92ac933c3c976dbce2f3e" - integrity sha512-J9UEf6MkKugeq5sFhDfqPPGNy4dTSf3fVYK3Q2hGFQiKXvOw7hqovjz6PVOJRNMymBXb2fJuMPIXx1Br3kwD2Q== +"@verdaccio/ui-theme@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@verdaccio/ui-theme/-/ui-theme-1.14.0.tgz#22b397f399bf1dfcc8e471d1895c3f74bd340691" + integrity sha512-vTzZYnC+HpeeW6pGFBa51rwbqwjqYkgJE1DEF5fSK5V2QbHi+XPIPucm6hrnaZjMlSYbe+4DaMN1XOKLqOJlzg== "@webassemblyjs/ast@1.8.5": version "1.8.5" @@ -3268,6 +4036,11 @@ abab@^2.0.0, abab@^2.0.3: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== +abab@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -3352,16 +4125,13 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= -adjust-sourcemap-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" - integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: - assert "1.4.1" - camelcase "5.0.0" - loader-utils "1.2.3" - object-path "0.11.4" - regex-parser "2.2.10" + loader-utils "^2.0.0" + regex-parser "^2.2.11" after@0.8.2: version "0.8.2" @@ -3443,20 +4213,20 @@ ajv@6.12.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@6.12.3: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== +ajv@6.12.4, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@6.12.4, ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== +ajv@6.12.6, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -3480,7 +4250,7 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -ansi-colors@4.1.1: +ansi-colors@4.1.1, 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== @@ -3644,6 +4414,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +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-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -3727,7 +4502,12 @@ arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@^2.0.0, asap@~2.0.3: +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: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -3754,13 +4534,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -3796,6 +4569,11 @@ async-retry@1.3.1: dependencies: retry "0.12.0" +async@0.9.x: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + async@3.2.0, async@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" @@ -3892,16 +4670,16 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-jest@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463" - integrity sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.3.0" + babel-preset-jest "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -3943,10 +4721,10 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd" - integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -3967,10 +4745,10 @@ babel-plugin-transform-async-to-promises@^0.8.15: resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.15.tgz#13b6d8ef13676b4e3c576d3600b85344bb1ba346" integrity sha512-fDXP68ZqcinZO2WCiimCL9zhGjGXOnn3D33zvbh+yheZ/qOrNVVDDIBtAaM3Faz8TRvQzHiRKsu3hfrBAhEncQ== -babel-preset-current-node-syntax@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -3983,14 +4761,15 @@ babel-preset-current-node-syntax@^0.1.3: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz#ed6344506225c065fd8a0b53e191986f74890776" - integrity sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^26.2.0" - babel-preset-current-node-syntax "^0.1.3" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" backo2@1.0.2: version "1.0.2" @@ -4030,6 +4809,11 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-auth@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ= + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -4262,15 +5046,6 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.8.7: - version "4.8.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz#ec8301ff415e6a42c949d0e66b405eb539c532d0" - integrity sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA== - dependencies: - caniuse-lite "^1.0.30001027" - electron-to-chromium "^1.3.349" - node-releases "^1.1.49" - browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4.7.0, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: version "4.14.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000" @@ -4281,6 +5056,17 @@ browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.12.0, browserslist@^4 escalade "^3.0.2" node-releases "^1.1.60" +browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.15.0: + version "4.16.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b" + integrity sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ== + dependencies: + caniuse-lite "^1.0.30001165" + colorette "^1.2.1" + electron-to-chromium "^1.3.621" + escalade "^3.1.1" + node-releases "^1.1.67" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -4585,11 +5371,6 @@ camelcase-keys@^6.2.2: map-obj "^4.0.0" quick-lru "^4.0.1" -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -4610,6 +5391,11 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== +camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-api@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" @@ -4620,11 +5406,16 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001027, caniuse-lite@^1.0.30001030, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001111: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001030, caniuse-lite@^1.0.30001032, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001111: version "1.0.30001116" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001116.tgz#f3a3dea347f9294a3bdc4292309039cc84117fb8" integrity sha512-f2lcYnmAI5Mst9+g0nkMIznFGsArRmZ0qU+dnq8l91hymdc2J3SFbiPhOJEeDqC1vtE8nc1qNQyklzB8veJefQ== +caniuse-lite@^1.0.30001165: + version "1.0.30001165" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f" + integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA== + canonical-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" @@ -4767,6 +5558,11 @@ circular-dependency-plugin@5.2.0, circular-dependency-plugin@~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== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -4860,15 +5656,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4887,16 +5674,14 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" - integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - for-own "^0.1.3" - is-plain-object "^2.0.1" - kind-of "^3.0.2" - lazy-cache "^1.0.3" - shallow-clone "^0.1.2" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" clone-deep@^4.0.1: version "4.0.1" @@ -4919,7 +5704,7 @@ clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@^2.1.1, clone@^2.1.2: +clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= @@ -5197,11 +5982,6 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" -confusing-browser-globals@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== - connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -5481,6 +6261,23 @@ copy-webpack-plugin@6.0.3: serialize-javascript "^4.0.0" webpack-sources "^1.4.3" +copy-webpack-plugin@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz#8015e4d5c5e637ab7b39c76daa9e03c7a4bf1ae5" + integrity sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q== + dependencies: + cacache "^15.0.5" + fast-glob "^3.2.4" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.1" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + webpack-sources "^1.4.3" + copy-webpack-plugin@~6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.1.0.tgz#5bde7f826d87e716d8d5e761ddd34bb675448458" @@ -5506,17 +6303,20 @@ core-js-compat@^3.6.2: browserslist "^4.8.5" semver "7.0.0" +core-js-compat@^3.8.0: + version "3.8.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e" + integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ== + dependencies: + browserslist "^4.15.0" + semver "7.0.0" + core-js-pure@^3.0.0: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js@3.6.4: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" - integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== - -core-js@^3.6.5: +core-js@3.6.5, core-js@^3.6.5: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== @@ -5534,17 +6334,12 @@ cors@2.8.5: object-assign "^4" vary "^1" -cosmiconfig@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" +corser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + integrity sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c= -cosmiconfig@7.0.0: +cosmiconfig@7.0.0, cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== @@ -5555,6 +6350,16 @@ cosmiconfig@7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + cosmiconfig@^5.0.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -5689,10 +6494,10 @@ css-loader@3.4.2: postcss-value-parser "^4.0.2" schema-utils "^2.6.0" -css-loader@4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.2.2.tgz#b668b3488d566dc22ebcf9425c5f254a05808c89" - integrity sha512-omVGsTkZPVwVRpckeUnLshPp12KsmMSLqYxs12+RzM9jRR5Y+Idn/tBffjXRvOE+qW7if24cuceFJqYR5FmGBg== +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== dependencies: camelcase "^6.0.0" cssesc "^3.0.0" @@ -5704,7 +6509,7 @@ css-loader@4.2.2: postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" postcss-value-parser "^4.1.0" - schema-utils "^2.7.0" + schema-utils "^2.7.1" semver "^7.3.2" css-modules-loader-core@^1.1.0: @@ -5904,11 +6709,6 @@ cssstyle@^2.0.0, cssstyle@^2.2.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.2.tgz#ee5ff8f208c8cd613b389f7b222c9801ca62b3f7" - integrity sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw== - cuint@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -6067,10 +6867,10 @@ dateformat@^3.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -dayjs@1.8.28: - version "1.8.28" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.28.tgz#37aa6201df483d089645cb6c8f6cef6f0c4dbc07" - integrity sha512-ccnYgKC0/hPSGXxj7Ju6AV/BP4HUkXC2u15mikXT5mX9YorEaoi1bEKOmAqdkJHN4EEkmAf97SpH66Try5Mbeg== +dayjs@1.9.6: + version "1.9.6" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" + integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== debug@*, debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: version "4.1.1" @@ -6093,6 +6893,13 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" +debug@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + debug@^3.1.0, debug@^3.1.1, debug@^3.2.5: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -6113,7 +6920,7 @@ decamelize-keys@^1.0.0, decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -6164,11 +6971,6 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-freeze-strict@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-freeze-strict/-/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0" - integrity sha1-d9BYPKJKab5LvZrC+uQV1VUj5bA= - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -6358,10 +7160,10 @@ diff-sequences@^25.2.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== -diff-sequences@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" - integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== diff@^4.0.1: version "4.0.2" @@ -6523,7 +7325,12 @@ dot-prop@^5.1.0, dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv@8.2.0, dotenv@~8.2.0: +dotenv@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== + +dotenv@~8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== @@ -6575,16 +7382,38 @@ ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer "^5.0.1" +ecstatic@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48" + integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog== + dependencies: + he "^1.1.1" + mime "^1.6.0" + minimist "^1.1.0" + url-join "^2.0.5" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.349, electron-to-chromium@^1.3.523: +ejs@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.5.tgz#aed723844dc20acb4b170cd9ab1017e476a0d93b" + integrity sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w== + dependencies: + jake "^10.6.1" + +electron-to-chromium@^1.3.523: version "1.3.539" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.539.tgz#9952fb0bf3fb4295282e7df35f6e7a2a8b89d3fd" integrity sha512-rM0LWDIstdqfaRUADZetNrL6+zd/0NBmavbMEhBXgc2u/CC1d1GaDyN5hho29fFvBiOVFwrSWZkzmNcZnCEDog== +electron-to-chromium@^1.3.621: + version "1.3.625" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.625.tgz#a7bd18da4dc732c180b2e95e0e296c0bf22f3bd6" + integrity sha512-CsLk/r0C9dAzVPa9QF74HIXduxaucsaRfqiOYvIv2PRhvyC6EOqc/KbpgToQuDVgPf3sNAFZi3iBu4vpGOwGag== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -6702,7 +7531,15 @@ engine.io@~3.4.0: engine.io-parser "~2.2.0" ws "^7.1.2" -enhanced-resolve@4.3.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0, enhanced-resolve@^4.3.0: +enhanced-resolve@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz#3f988d0d7775bdc2d96ede321dc81f8249492f57" + integrity sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.0.0" + +enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0, enhanced-resolve@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== @@ -6731,10 +7568,10 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== -envinfo@7.5.1: - version "7.5.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" - integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== +envinfo@7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" + integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== err-code@^1.0.0: version "1.1.2" @@ -6824,6 +7661,11 @@ escalade@^3.0.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-goat@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" @@ -7061,6 +7903,21 @@ execa@^0.9.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" + executable@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -7098,16 +7955,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^26.1.0, expect@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.2.tgz#36db120928a5a2d7d9736643032de32f24e1b2a1" - integrity sha512-IlJ3X52Z0lDHm7gjEp+m76uX46ldH5VpqmU0006vqDju/285twh7zaWMRhs67VpQhBwjjMchk+p5aA0VkERCAA== +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" jest-get-type "^26.3.0" - jest-matcher-utils "^26.4.2" - jest-message-util "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" express@4.17.1, express@^4.17.1, express@~4.17.1: @@ -7323,19 +8180,26 @@ file-loader@4.2.0: loader-utils "^1.2.3" schema-utils "^2.0.0" -file-loader@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== +file-loader@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== dependencies: loader-utils "^2.0.0" - schema-utils "^2.6.5" + schema-utils "^3.0.0" file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filelist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" + integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + dependencies: + minimatch "^3.0.4" + filesize@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" @@ -7380,7 +8244,7 @@ find-cache-dir@3.0.0: make-dir "^3.0.0" pkg-dir "^4.1.0" -find-cache-dir@3.3.1, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: +find-cache-dir@3.3.1, find-cache-dir@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== @@ -7501,23 +8365,11 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== -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@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -7606,10 +8458,10 @@ fs-extra@4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.0.tgz#0f0afb290bb3deb87978da816fcd3c7797f3a817" - integrity sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw== +fs-extra@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -7738,12 +8590,7 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== -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" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -8208,7 +9055,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@^1.2.0: +he@^1.1.1, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -8246,6 +9093,13 @@ hosted-git-info@^3.0.2: dependencies: lru-cache "^6.0.0" +hosted-git-info@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" + integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== + dependencies: + lru-cache "^6.0.0" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -8285,7 +9139,7 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.2.1, html-entities@^1.3.1: +html-entities@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== @@ -8425,7 +9279,7 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.17.0, http-proxy@^1.18.1: +http-proxy@^1.17.0, http-proxy@^1.18.0, http-proxy@^1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -8434,6 +9288,22 @@ http-proxy@^1.17.0, http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" +http-server@0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.12.3.tgz#ba0471d0ecc425886616cb35c4faf279140a0d37" + integrity sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA== + dependencies: + basic-auth "^1.0.3" + colors "^1.4.0" + corser "^2.0.1" + ecstatic "^3.3.2" + http-proxy "^1.18.0" + minimist "^1.2.5" + opener "^1.5.1" + portfinder "^1.0.25" + secure-compare "3.0.1" + union "~0.5.0" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -8555,17 +9425,12 @@ ignore-walk@^3.0.1, ignore-walk@^3.0.3: dependencies: minimatch "^3.0.4" -ignore@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.0.4.tgz#33168af4a21e99b00c5d41cbadb6a6cb49903a45" - integrity sha512-WLsTMEhsQuXpCiG173+f3aymI43SXa+fB1rSfbzyP4GkPP+ZFVuO0/3sFUGNBtifisPeDcl/uD/Y2NxZ7xFq4g== - ignore@^3.3.7: 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.1, ignore@^5.1.4, ignore@~5.1.8: +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.4, ignore@~5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -8808,11 +9673,6 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -8881,7 +9741,7 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.0.2, is-buffer@^1.1.5: +is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -8910,6 +9770,13 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-core-module@^2.0.0, is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + 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" @@ -9096,7 +9963,7 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -9316,6 +10183,16 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.6.1: + version "10.8.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" + integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== + dependencies: + async "0.9.x" + chalk "^2.4.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jasmine-core@^3.5.0, jasmine-core@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.6.0.tgz#491f3bb23941799c353ceb7a45b38a950ebc5a20" @@ -9335,57 +10212,57 @@ jasmine-spec-reporter@~5.0.2: dependencies: colors "1.4.0" -jest-changed-files@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.3.0.tgz#68fb2a7eb125f50839dab1f5a17db3607fe195b1" - integrity sha512-1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" execa "^4.0.0" throat "^5.0.0" -jest-cli@^26.1.0: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.4.2.tgz#24afc6e4dfc25cde4c7ec4226fb7db5f157c21da" - integrity sha512-zb+lGd/SfrPvoRSC/0LWdaWCnscXc1mGYW//NP4/tmBvRPT3VntZ2jtKUONsRi59zc5JqmsSajA9ewJKFYp8Cw== +jest-cli@^26.2.2: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^26.4.2" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^26.4.2" - jest-util "^26.3.0" - jest-validate "^26.4.2" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - yargs "^15.3.1" + yargs "^15.4.1" -jest-config@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.4.2.tgz#da0cbb7dc2c131ffe831f0f7f2a36256e6086558" - integrity sha512-QBf7YGLuToiM8PmTnJEdRxyYy3mHWLh24LJZKVdXZ2PNdizSe1B/E8bVm+HYcjbEzGuVXDv/di+EzdO/6Gq80A== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.4.2" - "@jest/types" "^26.3.0" - babel-jest "^26.3.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^26.3.0" - jest-environment-node "^26.3.0" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" jest-get-type "^26.3.0" - jest-jasmine2 "^26.4.2" + jest-jasmine2 "^26.6.3" jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-util "^26.3.0" - jest-validate "^26.4.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^26.4.2" + pretty-format "^26.6.2" jest-diff@^25.2.1: version "25.5.0" @@ -9397,15 +10274,15 @@ jest-diff@^25.2.1: jest-get-type "^25.2.6" pretty-format "^25.5.0" -jest-diff@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.2.tgz#a1b7b303bcc534aabdb3bd4a7caf594ac059f5aa" - integrity sha512-6T1XQY8U28WH0Z5rGpQ+VqZSZz8EN8rZcBtfvXaOkbwxIEeRre6qnuZQlbY1AJ4MKDxQF8EkrCvK+hL/VkyYLQ== +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: chalk "^4.0.0" - diff-sequences "^26.3.0" + diff-sequences "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.4.2" + pretty-format "^26.6.2" jest-docblock@^26.0.0: version "26.0.0" @@ -9414,41 +10291,41 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.1.0, jest-each@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.4.2.tgz#bb14f7f4304f2bb2e2b81f783f989449b8b6ffae" - integrity sha512-p15rt8r8cUcRY0Mvo1fpkOGYm7iI8S6ySxgIdfh3oOIv+gHwrHTy5VWCGOecWUhDsit4Nz8avJWdT07WLpbwDA== +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" chalk "^4.0.0" jest-get-type "^26.3.0" - jest-util "^26.3.0" - pretty-format "^26.4.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" -jest-environment-jsdom@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz#3b749ba0f3a78e92ba2c9ce519e16e5dd515220c" - integrity sha512-zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.3.0" - jest-util "^26.3.0" - jsdom "^16.2.2" - -jest-environment-node@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.3.0.tgz#56c6cfb506d1597f94ee8d717072bda7228df849" - integrity sha512-c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw== - dependencies: - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.3.0" - jest-util "^26.3.0" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-get-type@^25.2.6: version "25.2.6" @@ -9460,112 +10337,90 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726" - integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" jest-regex-util "^26.0.0" - jest-serializer "^26.3.0" - jest-util "^26.3.0" - jest-worker "^26.3.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.4.2.tgz#18a9d5bec30904267ac5e9797570932aec1e2257" - integrity sha512-z7H4EpCldHN1J8fNgsja58QftxBSL+JcwZmaXIvV9WKIM+x49F4GLHu/+BQh2kzRKHAgaN/E82od+8rTOBPyPA== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.3.0" - "@jest/source-map" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.4.2" - is-generator-fn "^2.0.0" - jest-each "^26.4.2" - jest-matcher-utils "^26.4.2" - jest-message-util "^26.3.0" - jest-runtime "^26.4.2" - jest-snapshot "^26.4.2" - jest-util "^26.3.0" - pretty-format "^26.4.2" - throat "^5.0.0" - -jest-jasmine2@~26.1.0: - version "26.1.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.1.0.tgz#4dfe349b2b2d3c6b3a27c024fd4cb57ac0ed4b6f" - integrity sha512-1IPtoDKOAG+MeBrKvvuxxGPJb35MTTRSDglNdWWCndCB3TIVzbLThRBkwH9P081vXLgiJHZY8Bz3yzFS803xqQ== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.1.0" - "@jest/source-map" "^26.1.0" - "@jest/test-result" "^26.1.0" - "@jest/types" "^26.1.0" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.1.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^26.1.0" - jest-matcher-utils "^26.1.0" - jest-message-util "^26.1.0" - jest-runtime "^26.1.0" - jest-snapshot "^26.1.0" - jest-util "^26.1.0" - pretty-format "^26.1.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.4.2.tgz#c73e2fa8757bf905f6f66fb9e0070b70fa0f573f" - integrity sha512-akzGcxwxtE+9ZJZRW+M2o+nTNnmQZxrHJxX/HjgDaU5+PLmY1qnQPnMjgADPGCRPhB+Yawe1iij0REe+k/aHoA== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: jest-get-type "^26.3.0" - pretty-format "^26.4.2" + pretty-format "^26.6.2" -jest-matcher-utils@^26.1.0, jest-matcher-utils@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.2.tgz#fa81f3693f7cb67e5fc1537317525ef3b85f4b06" - integrity sha512-KcbNqWfWUG24R7tu9WcAOKKdiXiXCbMvQYT6iodZ9k1f7065k0keUOW6XpJMMvah+hTfqkhJhRXmA3r3zMAg0Q== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" - jest-diff "^26.4.2" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.4.2" + pretty-format "^26.6.2" -jest-message-util@^26.1.0, jest-message-util@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.3.0.tgz#3bdb538af27bb417f2d4d16557606fd082d5841a" - integrity sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.3.0" - "@types/stack-utils" "^1.0.1" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.3.0.tgz#ee62207c3c5ebe5f35b760e1267fee19a1cfdeba" - integrity sha512-PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -9573,7 +10428,7 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-preset-angular@~8.2.1: +jest-preset-angular@8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-8.2.1.tgz#eaf5f7f6e72c1f700fbdb4c3d812976325f26d4e" integrity sha512-6t7lavnIHnZWz6a03jpZ5L7phMefi6SoBIRZ/GQdyML8YgwMtbJszbhUE+dh5lzmeNbd6AJ1gfleetGy2Rg4cQ== @@ -9586,117 +10441,119 @@ jest-regex-util@^26.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.2.tgz#739bdb027c14befb2fe5aabbd03f7bab355f1dc5" - integrity sha512-ADHaOwqEcVc71uTfySzSowA/RdxUpCxhxa2FNLiin9vWLB1uLPad3we+JSSROq5+SrL9iYPdZZF8bdKM7XABTQ== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" jest-regex-util "^26.0.0" - jest-snapshot "^26.4.2" + jest-snapshot "^26.6.2" -jest-resolve@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.4.0.tgz#6dc0af7fb93e65b73fec0368ca2b76f3eb59a6d7" - integrity sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^26.3.0" + jest-util "^26.6.2" read-pkg-up "^7.0.1" - resolve "^1.17.0" + resolve "^1.18.1" slash "^3.0.0" -jest-runner@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.4.2.tgz#c3ec5482c8edd31973bd3935df5a449a45b5b853" - integrity sha512-FgjDHeVknDjw1gRAYaoUoShe1K3XUuFMkIaXbdhEys+1O4bEJS8Avmn4lBwoMfL8O5oFTdWYKcf3tEJyyYyk8g== +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^26.3.0" - "@jest/environment" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^26.4.2" + jest-config "^26.6.3" jest-docblock "^26.0.0" - jest-haste-map "^26.3.0" - jest-leak-detector "^26.4.2" - jest-message-util "^26.3.0" - jest-resolve "^26.4.0" - jest-runtime "^26.4.2" - jest-util "^26.3.0" - jest-worker "^26.3.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^26.1.0, jest-runtime@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.4.2.tgz#94ce17890353c92e4206580c73a8f0c024c33c42" - integrity sha512-4Pe7Uk5a80FnbHwSOk7ojNCJvz3Ks2CNQWT5Z7MJo4tX0jb3V/LThKvD9tKPNVNyeMH98J/nzGlcwc00R2dSHQ== - dependencies: - "@jest/console" "^26.3.0" - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/globals" "^26.4.2" - "@jest/source-map" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^26.4.2" - jest-haste-map "^26.3.0" - jest-message-util "^26.3.0" - jest-mock "^26.3.0" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-snapshot "^26.4.2" - jest-util "^26.3.0" - jest-validate "^26.4.2" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-serializer@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef" - integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^26.1.0, jest-snapshot@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.2.tgz#87d3ac2f2bd87ea8003602fbebd8fcb9e94104f6" - integrity sha512-N6Uub8FccKlf5SBFnL2Ri/xofbaA68Cc3MGjP/NuwgnsvWh+9hLIR/DhrxbSiKXMY9vUW5dI6EW1eHaDHqe9sg== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^26.4.2" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^26.4.2" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - jest-haste-map "^26.3.0" - jest-matcher-utils "^26.4.2" - jest-message-util "^26.3.0" - jest-resolve "^26.4.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^26.4.2" + pretty-format "^26.6.2" semver "^7.3.2" -jest-util@26.x, jest-util@^26.1.0, jest-util@^26.3.0: +jest-util@26.x: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e" integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw== @@ -9708,29 +10565,41 @@ jest-util@26.x, jest-util@^26.1.0, jest-util@^26.3.0: is-ci "^2.0.0" micromatch "^4.0.2" -jest-validate@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.4.2.tgz#e871b0dfe97747133014dcf6445ee8018398f39c" - integrity sha512-blft+xDX7XXghfhY0mrsBCYhX365n8K5wNDC4XAcNKqqjEzsRUSXP44m6PL0QJEW2crxQFLLztVnJ4j7oPlQrQ== +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" camelcase "^6.0.0" chalk "^4.0.0" jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^26.4.2" + pretty-format "^26.6.2" -jest-watcher@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.3.0.tgz#f8ef3068ddb8af160ef868400318dc4a898eed08" - integrity sha512-XnLdKmyCGJ3VoF6G/p5ohbJ04q/vv5aH9ENI+i6BL0uu9WWB6Z7Z2lhQQk0d2AVZcRGp1yW+/TsoToMhBFPRdQ== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.3.0" + jest-util "^26.6.2" string-length "^4.0.1" jest-worker@25.1.0: @@ -9741,22 +10610,31 @@ jest-worker@25.1.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@26.3.0, jest-worker@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" - integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== +jest-worker@26.5.0: + version "26.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" + integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -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== +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== dependencies: merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" + +jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" jest-worker@~26.1.0: version "26.1.0" @@ -9766,14 +10644,14 @@ jest-worker@~26.1.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@~26.1.0: - version "26.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.1.0.tgz#2f3aa7bcffb9bfd025473f83bbbf46a3af026263" - integrity sha512-LIti8jppw5BcQvmNJe4w2g1N/3V68HUfAv9zDVm7v+VAtQulGhH0LnmmiVkbNE4M4I43Bj2fXPiBGKt26k9tHw== +jest@26.2.2: + version "26.2.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.2.2.tgz#a022303887b145147204c5f66e6a5c832333c7e7" + integrity sha512-EkJNyHiAG1+A8pqSz7cXttoVa34hOEzN/MrnJhYnfp5VHxflVcf2pu3oJSrhiy6LfIutLdWo+n6q63tjcoIeig== dependencies: - "@jest/core" "^26.1.0" + "@jest/core" "^26.2.2" import-local "^3.0.2" - jest-cli "^26.1.0" + jest-cli "^26.2.2" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -9830,7 +10708,7 @@ jsdom@15.2.1: ws "^7.0.0" xml-name-validator "^3.0.0" -jsdom@^16.2.2: +jsdom@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== @@ -9926,10 +10804,10 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -jsonc-parser@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee" - integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA== +jsonc-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" + integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== jsonfile@^4.0.0: version "4.0.0" @@ -10108,13 +10986,6 @@ killable@^1.0.1: resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== -kind-of@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" - integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= - dependencies: - is-buffer "^1.0.2" - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -10139,20 +11010,20 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.0.2.tgz#57b36cc5235601f824c33e6e45db10cd5493dbf5" - integrity sha512-FGCCxczbrZuF5CtMeO0xfnjhzkVZSXfcWK90IPLucDWZwskrpYN7pmRIgvd8muU0mrPrzy4A2RBGuwCjLHI+nw== +kleur@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.3.tgz#8d262a56d79a137ee1b706e967c0b08a7fef4f4c" + integrity sha512-H1tr8QP2PxFTNwAFM74Mui2b6ovcY9FoxJefgrwxY+OCJcq01k5nvhf4M/KnizzrJvLRap5STUy7dgDV35iUBw== kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.3.tgz#98274552c513583ad7a01456a789a2a0b4a2a538" - integrity sha512-CgPOT3ZadDpXxKcfV56lEQ9OQSZ42Mk26gnozI+uN/k39vzD8toUhRQoqsX0m9Q3eMPEfsLWmtyUpK/yqST4yg== +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== language-subtag-registry@~0.3.2: version "0.3.20" @@ -10178,23 +11049,6 @@ lazy-ass@1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lazy-cache@^0.2.3: - version "0.2.7" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" - integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - less-loader@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466" @@ -10204,34 +11058,16 @@ less-loader@5.0.0: loader-utils "^1.1.0" pify "^4.0.1" -less-loader@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.2.0.tgz#8b26f621c155b342eefc24f5bd6e9dc40c42a719" - integrity sha512-Cl5h95/Pz/PWub/tCBgT1oNMFeH1WTD33piG80jn5jr12T4XbxZcjThwNXDQ7AG649WEynuIzO4b0+2Tn9Qolg== +less-loader@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-7.0.2.tgz#0d73a49ec32a9d3ff12614598e6e2b47fb2a35c4" + integrity sha512-7MKlgjnkCf63E3Lv6w2FvAEgLMx3d/tNBExITcanAq7ys5U8VPWT3F6xcRjYmdNfkoQ9udoVFb1r2azSiTnD6w== dependencies: - clone "^2.1.2" - less "^3.11.3" + klona "^2.0.4" loader-utils "^2.0.0" - schema-utils "^2.7.0" + schema-utils "^3.0.0" -less@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/less/-/less-3.11.1.tgz#c6bf08e39e02404fe6b307a3dfffafdc55bd36e2" - integrity sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g== - dependencies: - clone "^2.1.2" - tslib "^1.10.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - mime "^1.4.1" - mkdirp "^0.5.0" - promise "^7.1.1" - request "^2.83.0" - source-map "~0.6.0" - -less@^3.10.3, less@^3.11.3: +less@3.12.2, less@^3.10.3: version "3.12.2" resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== @@ -10358,7 +11194,15 @@ license-webpack-plugin@2.1.2: "@types/webpack-sources" "^0.1.5" webpack-sources "^1.2.0" -license-webpack-plugin@2.3.0, license-webpack-plugin@~2.3.0: +license-webpack-plugin@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.1.tgz#08eddb2f776c7c64c02f308a00e017d6e824d0b6" + integrity sha512-yhqTmlYIEpZWA122lf6E0G8+rkn0AzoQ1OpzUKKs/lXUqG1plmGnwmkuuPlfggzJR5y6DLOdot/Tv00CC51CeQ== + dependencies: + "@types/webpack-sources" "^0.1.5" + webpack-sources "^1.2.0" + +license-webpack-plugin@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-2.3.0.tgz#c00f70d5725ba0408de208acb9e66612cc2eceda" integrity sha512-JK/DXrtN6UeYQSgkg5q1+pgJ8aiKPL9tnz9Wzw+Ikkf+8mJxG56x6t8O+OH/tAeF/5NREnelTEMyFtbJNkjH4w== @@ -10678,7 +11522,7 @@ log4js@^6.2.1: rfdc "^1.1.4" streamroller "^2.2.4" -loglevel@^1.6.4, loglevel@^1.6.8: +loglevel@^1.6.8: version "1.6.8" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA== @@ -10846,13 +11690,6 @@ mamacro@^0.0.3: resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -10885,6 +11722,11 @@ marked@1.1.1: resolved "https://registry.yarnpkg.com/marked/-/marked-1.1.1.tgz#e5d61b69842210d5df57b05856e0c91572703e6a" integrity sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw== +marked@1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.5.tgz#a44b31f2a0b8b5bfd610f00d55d1952d1ac1dfdb" + integrity sha512-2AlqgYnVPOc9WDyWu7S5DJaEZsfk6dNh/neatQ3IHUW4QLutM/VPSH9lG7bif+XjFWc9K9XR3QvR+fXuECmfdA== + marked@^0.8.0: version "0.8.2" resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" @@ -10914,15 +11756,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memfs@^3.1.2: version "3.2.0" resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26" @@ -10999,15 +11832,6 @@ meow@^7.0.0: type-fest "^0.13.1" yargs-parser "^18.1.3" -merge-deep@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-3.0.2.tgz#f39fa100a4f1bd34ff29f7d2bf4508fbb8d83ad2" - integrity sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA== - dependencies: - arr-union "^3.1.0" - clone-deep "^0.2.4" - kind-of "^3.0.2" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -11092,7 +11916,7 @@ mime-types@2.1.27, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, m dependencies: mime-db "1.44.0" -mime@1.6.0, mime@^1.4.1: +mime@1.6.0, mime@^1.4.1, mime@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -11107,7 +11931,7 @@ mimic-fn@^1.0.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.1.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== @@ -11127,16 +11951,6 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.10.0.tgz#a0e6bfcad22a9c73f6c882a3c7557a98e2d3d27d" - integrity sha512-QgKgJBjaJhxVPwrLNqqwNS0AGkuQQ31Hp4xGXEK/P7wehEg6qmNtReHKai3zRXqY60wGVWLYcOMJK2b98aGc3A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - 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" @@ -11147,6 +11961,15 @@ mini-css-extract-plugin@0.8.0: schema-utils "^1.0.0" webpack-sources "^1.1.0" +mini-css-extract-plugin@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.2.1.tgz#30ea7dee632b3002b0c77aeed447790408cb247e" + integrity sha512-G3yw7/TQaPfkuiR73MDcyiqhyP8SnbmLhUbpC76H+wtQxA6wfKhMCQOCb6wnPK0dQbjORAeOILQqEesg4/wF7A== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + webpack-sources "^1.1.0" + mini-svg-data-uri@^1.1.3: version "1.2.3" resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.2.3.tgz#e16baa92ad55ddaa1c2c135759129f41910bc39f" @@ -11186,7 +12009,7 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@1.2.5, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@1.2.5, minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -11292,14 +12115,6 @@ 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.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -11339,7 +12154,7 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -mri@^1.1.0: +mri@^1.1.0, mri@^1.1.4: version "1.1.6" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6" integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ== @@ -11354,7 +12169,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.0.0, ms@^2.1.1: +ms@2.1.2, ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -11372,6 +12187,17 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +multimatch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" + integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== + dependencies: + "@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" @@ -11448,18 +12274,18 @@ next-tick@~1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -ng-packagr@~10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-10.1.0.tgz#a2fc0f86f5f8895f811597d33d943f93c7c77c17" - integrity sha512-KXyajkAyY/51iMJPVezDybb5Bn1rtl/JDGC4w9jjIdeL2Ip+KTMDGsqpc+5nQm/vnasZcJ/Xj2a+0VOwrbyVWg== +ng-packagr@~11.0.0: + version "11.0.3" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-11.0.3.tgz#7f76d5f424957c00146b12063bf6c010232c4265" + integrity sha512-wvXy4Xlr1atCdeuddUbLS79yv7k79ZU8R4Gcw2aywTihpt4ZaFr+I/ZoKWAPQenavYl0bykVuTLJ+hZZqNroNw== dependencies: "@rollup/plugin-commonjs" "^15.0.0" "@rollup/plugin-json" "^4.0.0" - "@rollup/plugin-node-resolve" "^9.0.0" + "@rollup/plugin-node-resolve" "^10.0.0" ajv "^6.12.3" + ansi-colors "^4.1.1" autoprefixer "^9.6.5" browserslist "^4.7.0" - chalk "^4.0.0" chokidar "^3.2.1" commander "^6.0.0" cssnano-preset-default "^4.0.7" @@ -11468,6 +12294,7 @@ ng-packagr@~10.1.0: injection-js "^2.2.1" less "^3.10.3" node-sass-tilde-importer "^1.0.0" + ora "^5.1.0" postcss "^7.0.29" postcss-url "^8.0.0" read-pkg-up "^5.0.0" @@ -11479,13 +12306,6 @@ ng-packagr@~10.1.0: stylus "^0.54.7" terser "^5.0.0" -ngrx-store-freeze@~0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/ngrx-store-freeze/-/ngrx-store-freeze-0.2.4.tgz#146687cdf7e21244eb9003c7e883f2125847076c" - integrity sha512-90awpbbMa/x2H81eWWYniyli3LJ1PZU/FaztL10d9Rp/4kw2+97pqyLjdxSPxcOv9St//m9kfuWZ7gyoVDjgcg== - dependencies: - deep-freeze-strict "^1.1.1" - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -11591,11 +12411,16 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^1.1.49, node-releases@^1.1.60: +node-releases@^1.1.60: version "1.1.60" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== +node-releases@^1.1.67: + version "1.1.67" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" + integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== + node-sass-tilde-importer@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz#1a15105c153f648323b4347693fdb0f331bad1ce" @@ -11603,6 +12428,11 @@ node-sass-tilde-importer@^1.0.0: dependencies: find-parent-dir "^0.3.0" +node-watch@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.0.tgz#033c0c04239d9348f3402b6b6f9c1e689a7edbe1" + integrity sha512-OOBiglke5SlRQT5WYfwXTmYqTfXjcTNBHpalyHLtLxDpQYVpVRkJqabcch1kmwJsjV/J4OZuzEafeb4soqtFZA== + nopt@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" @@ -11611,7 +12441,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -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.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: 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== @@ -11677,12 +12507,12 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@8.0.1, npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" - integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== +npm-package-arg@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.0.tgz#b5f6319418c3246a1c38e1a8fbaa06231bc5308f" + integrity sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig== dependencies: - hosted-git-info "^3.0.2" + hosted-git-info "^3.0.6" semver "^7.0.0" validate-npm-package-name "^3.0.0" @@ -11696,6 +12526,15 @@ npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: semver "^5.6.0" validate-npm-package-name "^3.0.0" +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" + integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== + dependencies: + hosted-git-info "^3.0.2" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + npm-packlist@^1.1.12: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" @@ -11760,7 +12599,7 @@ npm-registry-fetch@^8.1.3: minizlib "^2.0.0" npm-package-arg "^8.0.0" -npm-run-all@4.1.5, npm-run-all@~4.1.5: +npm-run-all@^4.1.5, npm-run-all@~4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== @@ -11782,6 +12621,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" + npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -11863,11 +12709,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -11979,10 +12820,10 @@ open@6.4.0: dependencies: is-wsl "^1.1.0" -open@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.2.0.tgz#212959bd7b0ce2e8e3676adc76e3cf2f0a2498b4" - integrity sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ== +open@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" + integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" @@ -11992,6 +12833,11 @@ opencollective-postinstall@^2.0.0, opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== +opener@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + opn@^5.3.0, opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" @@ -12032,24 +12878,24 @@ ora@4.0.3: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" - integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== +ora@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.0.0.tgz#4f0b34f2994877b49b452a707245ab1e9f6afccb" + integrity sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw== dependencies: - chalk "^3.0.0" + chalk "^4.1.0" cli-cursor "^3.1.0" - cli-spinners "^2.2.0" + cli-spinners "^2.4.0" is-interactive "^1.0.0" - log-symbols "^3.0.0" + log-symbols "^4.0.0" mute-stream "0.0.8" strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.0.0.tgz#4f0b34f2994877b49b452a707245ab1e9f6afccb" - integrity sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw== +ora@5.1.0, ora@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.1.0.tgz#b188cf8cd2d4d9b13fd25383bc3e5cba352c94f8" + integrity sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== dependencies: chalk "^4.1.0" cli-cursor "^3.1.0" @@ -12087,15 +12933,6 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-name@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" @@ -12132,11 +12969,6 @@ p-cancelable@^2.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -12147,10 +12979,10 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -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" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +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-limit@^1.1.0: version "1.3.0" @@ -12159,7 +12991,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -12416,10 +13248,18 @@ parse-url@^5.0.0: parse-path "^4.0.0" protocols "^1.4.0" -parse5-htmlparser2-tree-adapter@6.0.1: +parse5-html-rewriting-stream@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz#de1820559317ab4e451ea72dba05fddfd914480b" + integrity sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg== + dependencies: + parse5 "^6.0.1" + parse5-sax-parser "^6.0.1" + +parse5-sax-parser@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz#98b4d366b5b266a7cd90b4b58906667af882daba" + integrity sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg== dependencies: parse5 "^6.0.1" @@ -12438,7 +13278,7 @@ parse5@5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== -parse5@6.0.1, parse5@^6.0.1: +parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== @@ -12773,6 +13613,17 @@ postcss-loader@3.0.0: postcss-load-config "^2.0.0" schema-utils "^1.0.0" +postcss-loader@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.0.4.tgz#b2d005b52e008a44991cf8123bee207e635eb53e" + integrity sha512-pntA9zIR14drQo84yGTjQJg1m7T0DkXR4vXYHBngiRZdJtEeCrojL6lOpqUanMzG375lIJbT4Yug85zC/AJWGw== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + semver "^7.3.2" + postcss-merge-longhand@^4.0.11: version "4.0.11" resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" @@ -13189,15 +14040,27 @@ pretty-format@^26.0.0: ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^26.1.0, pretty-format@^26.4.2: - version "26.4.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.2.tgz#d081d032b398e801e2012af2df1214ef75a81237" - integrity sha512-zK6Gd8zDsEiVydOCGLkoBoZuqv8VTiHyAbKznXe/gaph/DAeZOmit9yMfgIz5adIgAMMs5XfoYSwAX3jcCO1tA== +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: - "@jest/types" "^26.3.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" + +pretty-quick@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pretty-quick/-/pretty-quick-2.0.2.tgz#4e44d6489ed513ef111bee501f63688d854584e6" + integrity sha512-aLb6vtOTEfJDwi1w+MBTeE20GwPVUYyn6IqNg6TtGpiOB1W3y6vKcsGFjqGeaaEtQgMLSPXTWONqh33UBuwG8A== + dependencies: + 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" process-nextick-args@~2.0.0: version "2.0.1" @@ -13227,13 +14090,6 @@ promise.series@^0.2.0: resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70= -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - prompts@^2.0.1: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" @@ -13360,6 +14216,11 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@^6.4.0: + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -13446,13 +14307,13 @@ raw-loader@3.1.0: loader-utils "^1.1.0" schema-utils "^2.0.1" -raw-loader@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.1.tgz#14e1f726a359b68437e183d5a5b7d33a3eba6933" - integrity sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A== +raw-loader@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: loader-utils "^2.0.0" - schema-utils "^2.6.5" + schema-utils "^3.0.0" rc@^1.2.8: version "1.2.8" @@ -13469,41 +14330,25 @@ react-is@^16.12.0, react-is@^16.8.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= - dependencies: - pify "^2.3.0" - -read-package-json-fast@^1.1.1, read-package-json-fast@^1.1.3: - version "1.2.1" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.2.1.tgz#e8518d6f37c99eb3afc26704c5cbb50d7ead82dd" - integrity sha512-OFbpwnHcv74Oa5YN5WvbOBfLw6yPmPcwvyJJw/tj9cWFBF7juQUDLDSZiOjEcgzfweWeeROOmbPpNN1qm4hcRg== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" - integrity sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" + dependencies: + pify "^2.3.0" -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== +read-package-json-fast@^1.1.1, read-package-json-fast@^1.1.3: + version "1.2.1" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.2.1.tgz#e8518d6f37c99eb3afc26704c5cbb50d7ead82dd" + integrity sha512-OFbpwnHcv74Oa5YN5WvbOBfLw6yPmPcwvyJJw/tj9cWFBF7juQUDLDSZiOjEcgzfweWeeROOmbPpNN1qm4hcRg== dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" read-pkg-up@^1.0.1: version "1.0.1" @@ -13605,7 +14450,7 @@ read-pkg@^5.0.0, read-pkg@^5.2.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: +readdir-scoped-modules@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -13704,10 +14549,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@2.2.10: - version "2.2.10" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" - integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: version "1.3.0" @@ -13729,6 +14574,18 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + registry-auth-token@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" @@ -13879,7 +14736,7 @@ request@2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@2.88.2, request@^2.83.0, request@^2.88.0, request@^2.88.2: +request@2.88.2, request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -13915,11 +14772,6 @@ require-from-string@^2.0.1: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -13979,12 +14831,12 @@ resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve-url-loader@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" - integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== +resolve-url-loader@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== dependencies: - adjust-sourcemap-loader "2.0.0" + adjust-sourcemap-loader "3.0.0" camelcase "5.3.1" compose-function "3.0.3" convert-source-map "1.7.0" @@ -14007,6 +14859,22 @@ resolve@1.17.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0 dependencies: path-parse "^1.0.6" +resolve@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" + +resolve@^1.18.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -14212,10 +15080,10 @@ rollup@1.31.1: "@types/node" "*" acorn "^7.1.0" -rollup@2.26.5: - version "2.26.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.26.5.tgz#5562ec36fcba3eed65cfd630bd78e037ad0e0307" - integrity sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA== +rollup@2.32.1: + version "2.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.32.1.tgz#625a92c54f5b4d28ada12d618641491d4dbb548c" + integrity sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw== optionalDependencies: fsevents "~2.1.2" @@ -14255,13 +15123,6 @@ rxjs@6.5.4: dependencies: tslib "^1.9.0" -rxjs@6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - rxjs@6.6.2, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.0, rxjs@^6.5.3, rxjs@^6.5.4, rxjs@^6.6.0, rxjs@~6.6.0: version "6.6.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" @@ -14269,6 +15130,13 @@ rxjs@6.6.2, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.0, rxjs@^6.5.3, rxjs@^6.5.4, rxj dependencies: tslib "^1.9.0" +rxjs@6.6.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + 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" @@ -14316,15 +15184,15 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-loader@10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.1.tgz#10c0364d8034f22fee25ddcc9eded20f99bbe3b4" - integrity sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ== +sass-loader@10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.5.tgz#f53505b5ddbedf43797470ceb34066ded82bb769" + integrity sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w== dependencies: - klona "^2.0.3" + klona "^2.0.4" loader-utils "^2.0.0" neo-async "^2.6.2" - schema-utils "^2.7.0" + schema-utils "^3.0.0" semver "^7.3.2" sass-loader@8.0.2: @@ -14338,20 +15206,27 @@ sass-loader@8.0.2: schema-utils "^2.6.1" semver "^6.3.0" -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== +sass@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.27.0.tgz#0657ff674206b95ec20dc638a93e179c78f6ada2" + integrity sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig== dependencies: chokidar ">=2.0.0 <4.0.0" -sass@1.26.10, sass@^1.23.0: +sass@^1.23.0: version "1.26.10" resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.10.tgz#851d126021cdc93decbf201d1eca2a20ee434760" integrity sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw== dependencies: chokidar ">=2.0.0 <4.0.0" +sass@^1.26.3: + version "1.30.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.30.0.tgz#60bbbbaf76ba10117e61c6c24f00161c3d60610e" + integrity sha512-26EUhOXRLaUY7+mWuRFqGeGGNmhB1vblpTENO1Z7mAzzIZeVxZr9EZoaY1kyGLFWdSOZxRMAufiN2mkbO6dAlw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + sax@0.5.x: version "0.5.8" resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" @@ -14403,6 +15278,20 @@ schema-utils@^2.7.1: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +secure-compare@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + integrity sha1-8aAymzCLIh+uN7mXTz1XjQypmeM= + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -14451,11 +15340,6 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - semver@6.3.0, semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -14490,10 +15374,12 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -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== +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" serialize-javascript@^4.0.0: version "4.0.0" @@ -14502,6 +15388,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" @@ -14568,16 +15461,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" - integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= - dependencies: - is-extendable "^0.1.1" - kind-of "^2.0.1" - lazy-cache "^0.2.3" - mixin-object "^2.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -14765,14 +15648,6 @@ sockjs-client@1.4.0: json3 "^3.3.2" url-parse "^1.4.3" -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - sockjs@0.3.20: version "0.3.20" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" @@ -14822,16 +15697,11 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -source-list-map@^2.0.0: +source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-list-map@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" - integrity sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY= - source-map-loader@0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.2.4.tgz#c18b0dc6e23bf66f6792437557c569a11e072271" @@ -14840,16 +15710,17 @@ source-map-loader@0.2.4: async "^2.5.0" loader-utils "^1.1.0" -source-map-loader@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.0.2.tgz#b0a6582b2eaa387ede1ecf8061ae0b93c23f9eb0" - integrity sha512-oX8d6ndRjN+tVyjj6PlXSyFPhDdVAPsZA30nD3/II8g4uOv8fCz0DMn5sy8KtVbDfKQxOpGwGJnK3xIW3tauDw== +source-map-loader@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.2.tgz#5b782bf08496d3a7f355e1780df0e25190a80991" + integrity sha512-bjf6eSENOYBX4JZDfl9vVLNsGAQ6Uz90fLmOazcmMcyDYOBFsGxPNn83jXezWLY9bJsVAo1ObztxPcV8HAbjVA== dependencies: - data-urls "^2.0.0" + abab "^2.0.5" iconv-lite "^0.6.2" loader-utils "^2.0.0" - schema-utils "^2.7.0" + schema-utils "^3.0.0" source-map "^0.6.1" + whatwg-mimetype "^2.3.0" source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" @@ -14870,14 +15741,6 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -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-support@0.5.16: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" @@ -14911,7 +15774,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.7.3, source-map@^0.7.3: +source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -14921,13 +15784,6 @@ source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@~0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" @@ -14971,7 +15827,7 @@ spdy-transport@^3.0.0: readable-stream "^3.0.6" wbuf "^1.7.3" -spdy@^4.0.1, spdy@^4.0.2: +spdy@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== @@ -15162,7 +16018,7 @@ string-width@^1.0.1: 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.1.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== @@ -15340,13 +16196,13 @@ style-loader@1.0.0: loader-utils "^1.2.3" schema-utils "^2.0.1" -style-loader@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" - integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== +style-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: loader-utils "^2.0.0" - schema-utils "^2.6.6" + schema-utils "^3.0.0" stylehacks@^4.0.0: version "4.0.3" @@ -15366,6 +16222,17 @@ stylus-loader@3.0.2: lodash.clonedeep "^4.5.0" when "~3.6.x" +stylus-loader@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-4.3.1.tgz#8b4e749294d9fe0729c2e5e1f04cbf87e1c941aa" + integrity sha512-apDYJEM5ZpOAWbWInWcsbtI8gHNr/XYVcSY/tWqOUPt7M5tqhtwXVsAkgyiVjhuvw2Yrjq474a9H+g4d047Ebw== + dependencies: + fast-glob "^3.2.4" + klona "^2.0.4" + loader-utils "^2.0.0" + normalize-path "^3.0.0" + schema-utils "^3.0.0" + stylus@0.54.5: version "0.54.5" resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" @@ -15457,7 +16324,12 @@ svgo@^1.0.0, svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@1.2.0, symbol-observable@^1.1.0: +symbol-observable@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + +symbol-observable@^1.1.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== @@ -15472,6 +16344,11 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" + integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== + tar@^4.4.10, tar@^4.4.12: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -15528,33 +16405,34 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.1.tgz#6a63c27debc15b25ffd2588562ee2eeabdcab923" - integrity sha512-dNxivOXmDgZqrGxOttBH6B4xaxT4zNC+Xd+2K8jwGDMK5q2CZI+KZMA1AAnSRT+BTRvuzKsDx+fpxzPAmAMVcA== +terser-webpack-plugin@2.3.7: + version "2.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.7.tgz#4910ff5d1a872168cc7fa6cd3749e2b0d60a8a0b" + integrity sha512-xzYyaHUNhzgaAdBsXxk2Yvo/x1NJdslUaussK3fdpBbvttm1iIwU+c26dj9UxJcwk2c5UWt5F55MUTIA8BE7Dg== dependencies: cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^24.9.0" - schema-utils "^2.6.1" - serialize-javascript "^2.1.2" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.1.0" source-map "^0.6.1" - terser "^4.4.3" + terser "^4.6.12" webpack-sources "^1.4.3" -terser-webpack-plugin@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz#6e9d6ae4e1a900d88ddce8da6a47507ea61f44bc" - integrity sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA== +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== dependencies: cacache "^15.0.5" find-cache-dir "^3.3.1" - jest-worker "^26.3.0" + jest-worker "^26.5.0" p-limit "^3.0.2" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^5.0.0" + terser "^5.3.4" webpack-sources "^1.4.3" terser-webpack-plugin@^1.4.3: @@ -15581,16 +16459,16 @@ terser@4.3.8: source-map "~0.6.1" source-map-support "~0.5.12" -terser@5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.2.1.tgz#40b971b8d28b4fe98c9e8c0d073ab48e7bb96cd8" - integrity sha512-/AOtjRtAMNGO0fIF6m8HfcvXTw/2AKpsOzDn36tA5RfhRdeXyb4RvHxJ5Pah7iL6dFkLk+gOnCaNHGwJPl6TrQ== +terser@5.3.7: + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.7.tgz#798a4ae2e7ff67050c3e99fcc4e00725827d97e2" + integrity sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map "~0.7.2" + source-map-support "~0.5.19" -terser@^4.1.2, terser@^4.4.3, terser@^4.6.3, terser@^4.8.0: +terser@^4.1.2, terser@^4.6.12, terser@^4.6.3, terser@^4.8.0: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -15608,6 +16486,15 @@ terser@^5.0.0: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.3.4: + version "5.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" + integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -15622,6 +16509,11 @@ 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-table@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" @@ -15834,7 +16726,7 @@ ts-jest@^26.0.0: semver "7.x" yargs-parser "18.x" -ts-loader@5.4.5, ts-loader@^5.3.1: +ts-loader@5.4.5: version "5.4.5" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.4.5.tgz#a0c1f034b017a9344cef0961bfd97cc192492b8b" integrity sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw== @@ -15896,16 +16788,16 @@ tsickle@~0.38.1: resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.38.1.tgz#30762db759d40c435943093b6972c7f2efb384ef" integrity sha512-4xZfvC6+etRu6ivKCNqMOd1FqcY/m6JY3Y+yr5+Xw+i751ciwrWINi6x/3l1ekcODH9GZhlf0ny2LpzWxnjWYA== -tslib@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" - integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== - tslib@2.0.1, tslib@^2.0.0, tslib@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== +tslib@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" + integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== + tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" @@ -16021,15 +16913,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" - integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== - -typescript@~3.9.0: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@4.0.5, typescript@~4.0.0: + version "4.0.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" + integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== ua-parser-js@0.7.21: version "0.7.21" @@ -16074,6 +16961,13 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +union@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== + dependencies: + qs "^6.4.0" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -16198,6 +17092,11 @@ url-join@4.0.1: resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== +url-join@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728" + integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg= + url-loader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-3.0.0.tgz#9f1f11b371acf6e51ed15a50db635e02eec18368" @@ -16240,13 +17139,6 @@ 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.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -16294,15 +17186,20 @@ uuid@8.3.0, uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: +uuid@8.3.1: + version "8.3.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" + integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== + +uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-to-istanbul@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5" - integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q== +v8-to-istanbul@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -16352,16 +17249,16 @@ verdaccio-htpasswd@9.7.2: http-errors "1.8.0" unix-crypt-td-js "1.1.4" -verdaccio@~4.8.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-4.8.1.tgz#49df0549d938915633797358f94ed774e294aa97" - integrity sha512-6I04bBlY4NS/MtRQismmIA+l/J0MJvBPj78s0p9QMATKDTcsdZS+zXf/Y6a/JsWYqz3fNp94YjV84bLjHrm4UA== +verdaccio@~4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/verdaccio/-/verdaccio-4.10.0.tgz#ca48c4b7a5bb967f0e2b5d38bab599a39cd0aaf1" + integrity sha512-9nCIHM9rvgwasBJvo82MiEDzS2HGWolopID8/THU0vZfa1d6MDAiuakjwQ9Z2xDonpoOoDji6xpg2i6il+gEWQ== dependencies: "@verdaccio/commons-api" "9.7.1" - "@verdaccio/local-storage" "9.7.2" + "@verdaccio/local-storage" "9.7.4" "@verdaccio/readme" "9.7.3" "@verdaccio/streams" "9.7.2" - "@verdaccio/ui-theme" "1.12.1" + "@verdaccio/ui-theme" "1.14.0" JSONStream "1.3.5" async "3.2.0" body-parser "1.19.0" @@ -16370,17 +17267,17 @@ verdaccio@~4.8.0: compression "1.7.4" cookies "0.8.0" cors "2.8.5" - dayjs "1.8.28" - envinfo "7.5.1" + dayjs "1.9.6" + envinfo "7.7.3" express "4.17.1" handlebars "4.7.6" http-errors "1.8.0" js-yaml "3.14.0" jsonwebtoken "8.5.1" - kleur "4.0.2" - lodash "4.17.19" + kleur "4.1.3" + lodash "4.17.20" lunr-mutable-indexes "2.3.2" - marked "1.1.1" + marked "1.2.5" mime "2.4.6" minimatch "3.0.4" mkdirp "0.5.5" @@ -16487,14 +17384,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-core@^0.6.8: - version "0.6.9" - resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" - integrity sha1-/FcViMhVjad76e+23r3Fo7FyvcI= - dependencies: - source-list-map "~0.1.7" - source-map "~0.4.1" - webpack-dev-middleware@3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" @@ -16555,45 +17444,6 @@ webpack-dev-server@3.11.0, webpack-dev-server@~3.11.0: ws "^6.2.1" yargs "^13.3.2" -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.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.4" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - 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.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - webpack-log@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" @@ -16609,12 +17459,13 @@ webpack-merge@4.2.1: dependencies: lodash "^4.17.5" -webpack-merge@4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== +webpack-merge@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.2.0.tgz#31cbcc954f8f89cd4b06ca8d97a38549f7f3f0c9" + integrity sha512-QBglJBg5+lItm3/Lopv8KDDK01+hjdg2azEwi/4vKJ8ZmGPdtJsTpjtNNOW3a4WiqzXdCATtTudOZJngE7RKkA== dependencies: - lodash "^4.17.15" + clone-deep "^4.0.1" + wildcard "^2.0.0" webpack-merge@~5.0.0: version "5.0.9" @@ -16642,14 +17493,29 @@ webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.2.0, webpack-s source-list-map "^2.0.0" source-map "~0.6.1" -webpack-subresource-integrity@1.1.0-rc.5: - version "1.1.0-rc.5" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.5.tgz#00e82648821175733b9af549127372ae71ff33ce" - integrity sha512-pUlU358+futuHwICLLBmkIu1dnDqZqgNGOoeSO5Y8Uy4dvo54Rp4bBtUE323kFpS5MH61dVxBuP30n6jxlFoig== +webpack-sources@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.0.1.tgz#1467f6e692ddce91e88b8044c44347b1087bbd4f" + integrity sha512-A9oYz7ANQBK5EN19rUXbvNgfdfZf5U2gP0769OXsj9CvYkCR6OHOsd6OKyEy4H38GGxpsQPKIL83NC64QY6Xmw== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-subresource-integrity@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.1.tgz#6f44ea99987266b70c4ec42ac51064d33e982277" + integrity sha512-uekbQ93PZ9e7BFB8Hl9cFIVYQyQqiXp2ExKk9Zv+qZfH/zHXHrCFAfw1VW0+NqWbTWrs/HnuDrto3+tiPXh//Q== + dependencies: + webpack-sources "^1.3.0" + +webpack-subresource-integrity@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz#e40b6578d3072e2d24104975249c52c66e9a743e" + integrity sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw== dependencies: - webpack-core "^0.6.8" + webpack-sources "^1.3.0" -webpack-subresource-integrity@1.4.1, webpack-subresource-integrity@~1.4.1: +webpack-subresource-integrity@~1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz#e8bf918b444277df46a66cd84542cbcdc5a6272d" integrity sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw== @@ -16685,7 +17551,36 @@ webpack@4.42.0: watchpack "^1.6.0" webpack-sources "^1.4.1" -webpack@4.44.1, webpack@~4.44.0: +webpack@4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +webpack@~4.44.0: version "4.44.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== @@ -16873,14 +17768,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -16907,6 +17794,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + 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" @@ -16986,16 +17882,16 @@ xxhashjs@^0.2.1: dependencies: cuint "^0.2.2" -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +y18n@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" + integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -17016,14 +17912,7 @@ yaml@1.10.0, yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.0.0.tgz#c737c93de2567657750cb1f2c00be639fd19c994" - integrity sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g== - dependencies: - camelcase "^4.1.0" - -yargs-parser@18.x, yargs-parser@^18.1.0, yargs-parser@^18.1.2, yargs-parser@^18.1.3, yargs-parser@~18.1.3: +yargs-parser@18.x, yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -17036,13 +17925,10 @@ yargs-parser@19.0.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-19.0.1.tgz#34b444580905d0f67e89f31283d8dc1f8bd53d47" integrity sha512-2UuJKZmPN9S9/0s3FSCG3aNUSyC/qz56oJsMZG0NV2B44QxTXaNySp4xXW10CizmUs0DXgPY0y114dOGLvtYHg== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.0.0.tgz#c65a1daaa977ad63cebdd52159147b789a4e19a9" + integrity sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA== yargs-parser@^13.1.2: version "13.1.2" @@ -17052,35 +17938,15 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" +yargs-parser@^20.2.2: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs@15.3.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.0.tgz#403af6edc75b3ae04bf66c94202228ba119f0976" - integrity sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA== +yargs@15.4.1, yargs@^15.3.1, yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -17092,25 +17958,7 @@ yargs@15.3.0: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.0" - -yargs@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.1.tgz#5052efe3446a4df5ed669c995886cc0f13702766" - integrity sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" + yargs-parser "^18.1.2" yargs@^13.3.2: version "13.3.2" @@ -17128,22 +17976,18 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.3.1, yargs@~15.4.0: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" + y18n "^5.0.5" + yargs-parser "^20.2.2" yauzl@2.10.0, yauzl@^2.10.0: version "2.10.0"