From 14479c518a5467d17280f66175e8919747cf21e5 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Thu, 9 Jul 2020 10:06:49 +0100 Subject: [PATCH] Merge upstream (#406) * WIP * Add theme migration * File moves * WIP * Add theme migration * Start to make core a separate library * Tweaks * WIP * Fix package imports * Fix migration script * First pass at permission effects * Fix merge issues * First pass at reducer * Tidy up logging * Fix dark theme support * Final set of cloud-foundry code out of common * TIdy up and get themable packages working * Tidy up custom build code * Tidy ups * Set defaults when no stratos.yaml file is present * FIx migrate script for when stratos.yaml not present * Remove comments * Disable scss linter from code climate * Rejig example extensions to be a package for v4 build * Renames, todos * Minor fixes * Fix frontend unit test * Fix removed e2e target * Fix unit tests * Tweaks * Finish todos * Fix transition from space summary to app summary page - an entity service for a space with no org was cached by guid - an entity service for a space requiring org used cached version - solution is to make cache id include schema key (determines with/without org) * Add comment, tidy up rootUpdatingKey * Fix issue where gitlab summary tab threw errors in console - fixes #4325 * Push combine of permission configs into checkers - overcomes some weird change of permission type * Fix issue where default add/remove setting in change role by username was incorrect - add/remove radio button default value governed by add/remove feature flags - when one is set to false the radio button should be disabled and the other selected * Fix store-test-helper * Update readme following move to Travis-ci.com * Ensure the correct key is used metacard favourite info (#4321) * Fix display of details in endpoint card in endpoint list (#4319) * Clean default/blocked logic * Rename @stratos to @stratosui * FIx references in tsconfig.json * Revert change to @stratosui in code * Revert change to @stratosui in code * Fix endpoint connect * Fix unit test * Fix e2e test * Change following review #1 * Bump github.com/gorilla/websocket from 1.4.1 to 1.4.2 in /src/jetstream (#4199) * Bump github.com/gorilla/websocket from 1.4.1 to 1.4.2 in /src/jetstream Bumps [github.com/gorilla/websocket](https://github.com/gorilla/websocket) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/gorilla/websocket/releases) - [Commits](https://github.com/gorilla/websocket/compare/v1.4.1...v1.4.2) Signed-off-by: dependabot-preview[bot] * Update go.sum Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Neil MacDougall * Fix errors in console log during setup screens * Helm: Change default image pull policy to Always * Add copy address and edit to endpoint list view * Use icon that is less confusing with refresh * Change following review #2 - Fix cf package module file name - Make CUSTOM_USER_PERMISSION_CHECKERS optional - Remove need to inject CUSTOM_USER_PERMISSION_CHECKERS in multiple cf modules * Add newline at end for codeclimate * Tidy up code and add some more comments * Fix for buildpack filename wrapping on card * Fix code climate issue * Fix compilation issues * Update endpoint-list.helpers.ts * Improve naming * Tidy up * Update .gitignore * Tidy up. Build tools in dist/tools * Change following review * Rename tools to devkit. Add schematics * More improvements and theme schematic added. * Bump gopkg.in/yaml.v2 from 2.2.8 to 2.3.0 in /src/jetstream (#4336) * Bump gopkg.in/yaml.v2 from 2.2.8 to 2.3.0 in /src/jetstream Bumps [gopkg.in/yaml.v2](https://github.com/go-yaml/yaml) from 2.2.8 to 2.3.0. - [Release notes](https://github.com/go-yaml/yaml/releases) - [Commits](https://github.com/go-yaml/yaml/compare/v2.2.8...v2.3.0) Signed-off-by: dependabot-preview[bot] * CI bump Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Neil MacDougall * Remove unused import * Remove unused import * [Security] Bump websocket-extensions from 0.1.3 to 0.1.4 (#4356) Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4. **This update includes a security fix.** - [Release notes](https://github.com/faye/websocket-extensions-node/releases) - [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md) - [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> * Hide deployment info card if not space developer - fixes #4322 * Only space developers can create/unmap/delete routes in app routes table - fixes #4324 * Only Space Developers should be able to change count, terminate or ssh to instances - fixes #4330 * Permissions: Only Space Developers should be able to create/edit/delete an Autoscaler policy - fixes #4323 * Users with no developer roles could click on add app button - fixes #4361 * Fix tests * Fail CI build if imagelist generation fails * Org Managers: Disable org role checkboxes in roles stepper if not admin/org manager - fixes #4332 * Routes List: Filter by org breaks when user is an org auditor - fixes #4343 * Rename the e2e cf helper file * Fix autoscaler tab * Changes following review * A few minor tidy-ups to help with review * Fix several space developer permission bugs (#4362) * Hide deployment info card if not space developer - fixes #4322 * Only space developers can create/unmap/delete routes in app routes table - fixes #4324 * Only Space Developers should be able to change count, terminate or ssh to instances - fixes #4330 * Permissions: Only Space Developers should be able to create/edit/delete an Autoscaler policy - fixes #4323 * Users with no developer roles could click on add app button - fixes #4361 * Fix tests * Fix autoscaler tab * Changes following review * Fix service stepper navigation (#4366) * Fix service stepper navigation on create/edit cancel/sumbit - create service stepper from app service tab, marketplace service summary, service wall - edit service stepper from marketplace service instances, service wall instances, space service instances and app service instances lists - fixes #4052, contrinbutes to #4079, #4051 * Fix subscription leak - fixes #4295 - code no-longer needed * Force return location of service stepper, fix table edit of upsi and other improvements * Fix unit tests * Fix e2e tests * Fix e2e tests, add search to marketplace service instances table * Changes following review * Move base-entity-* to store package * Add snackbar * Remove pathget * Remove more store -> core dependencies * Move extension-types to store * Move favourite mgr and helper from core to store * Move user fav manager and helper to store package * More references * Fix logger service removal * Fix build * Address PR feedback * Fix LoggerService after code moves * Fix logger service ref * Fix build issues * Fix health check import * Move sortStringify (only used once) * NonOptionalKeys - only used once * Move KnownKeys * Move BrowserStandardEncoder * Remove last environment link * Move favourite config mapper * Remove dependency on StratosScopeStrings * Move BaseEndpointAuth * Move StratosTheme * Move ThemeService * Move types from utils.service that are only used once in store * Move PermissionValues * Move http and jetstream helpers * Move StyleService * Move MetricQueryType * Move getFullEndpointApiUrl * Move StratosStatus * Move generateStratosEntities back to core * Finish store -> core sep * Address PR feedback * Fix compilation issue * Fix merge weirdness * Merge downstream (#4369) * src based changes * changes to ./build * ./docs * ./ * Changes following review * Address PR feedback * fix build * whitespace changes * Fix in core public-api after merge * Fix duplicated k8s docs * Typed access to actions and entities via catalog entity: Core Stratos Entities (#4387) * WIP * WIP * WIP * Endpoint changes * Fix failure handling during connect on stepper * Fix favourites * Removed some TODOs * Fixes & todos * Unit test fixes * Fixes following merge * Fix cf unit tests * Changes following review * Theming improvements for header * Tweaks, Migration Script Docs & Notes on others (#4389) Co-authored-by: Neil MacDougall * Build devkit outside of dist folder * Add dist-devkit to git ignore * Ignore example packages when there's a stratos config file (#4399) * Fix CF App Restage (#4393) * Remove action entityLocation (not used) * Fix restage - fixes #4392 * Remove RequestEntityLocation * Update icons (#4404) * Update icons * Update docker icon and optimize other pngs * Improve resolution of container icon * Update e2e test for new icons * Improve theming to reduce need to override in a hacky way (#4407) * Reduce icon size in page sub-header (#4411) * Move out remaining items in cf & autoscaler from core to own packages, improve code splitting (#4412) * Move out cf themese from _all-theme & remove custom cf table sort/filter field widths * Move cf routes out of app.routing & move out cf route modules from cf package module (fixes code splitting) * Fix autoscaler e2e test * Split out CF modules and router imports into custom module * Create cf-autoscaler package & routing modules - note - CfAutoscalerModule is imported in CfAutoscalerPackageModule - note - AutoscalerModule should be brought back into CfAutoscalerModule (stepper is lazy loaded.. but content missing elsewhere) * Fix autoscaler e2e test #2 * Fix app autoscaler tab widgets, import using package name * Move CfAutoscalerModule (app AS tab) out of always loaded AS package into lazy loaded app module * Add comments, fix e2e test following app-running-instance change * Allow routes to be applied to stratos navigation root without appearing in side nav * Fix app-card-app-usage on app AS tab - only seen when policy does not contain metrics restrictions - fixes by bringing in CloudFoundrySharedModule again to CfAutoscalerModule - means an also use app-running-instances again - i've checked the chunks & sizes, they're similar as before * Move CloudFoundrySharedModule out of CloudFoundryPackageModule * Add comments * Bring back in smaller search/sort input fields in main lists * Bring back lost styling * Use smaller page header on desktop browsers (#4418) * Use smaller page header on desktop browsers * Change tooltip appear time * Fix issue where theming is not applied to extensions (#4420) * Allow ng build to be un from any subfolder (#4422) * Fix responsiveness of app instances card (#4423) * Fix script to work in Jenkins (#4425) * Build: Add support for packages in orgs (#4427) * Allow ng build to be un from any subfolder * Add support for packages in orgs * Fixes after merge * Fix build Co-authored-by: Neil MacDougall Co-authored-by: Neil MacDougall Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Neil MacDougall --- angular.json | 1 - package-lock.json | 234 ++++++++++++------ .../packages/cf-autoscaler/package.json | 7 +- .../cf-autoscaler/sass/_all-theme.scss | 8 + .../src/cf-autoscaler-package.module.ts | 17 ++ .../src/cf-autoscaler-routing.module.ts | 23 ++ .../cf-autoscaler/src/cf-autoscaler.module.ts | 36 +-- .../src/core/autoscaler.module.ts | 13 +- .../edit-autoscaler-policy-step4.theme.scss} | 0 .../packages/cf-autoscaler/src/public_api.ts | 5 +- .../packages/cloud-foundry/package.json | 7 +- .../cloud-foundry/sass/_all-theme.scss | 15 ++ .../packages/cloud-foundry/sass/mixins.scss | 20 ++ .../src/cloud-foundry-package.module.ts | 18 +- .../src/cloud-foundry-routing.module.ts | 64 +++++ .../src/cloud-foundry-test.module.ts | 2 +- .../application-wall.component.theme.scss | 11 +- .../application-base.component.theme.scss | 5 - .../applications/applications.module.ts | 6 +- ...ule.ts => cloud-foundry-section.module.ts} | 11 +- ...ng.ts => cloud-foundry-section.routing.ts} | 2 +- .../manage-users/cf-roles.service.spec.ts | 6 +- .../service-catalog-page.component.theme.scss | 11 +- .../service-catalog/service-catalog.module.ts | 5 +- .../services-wall.component.theme.scss | 10 +- .../src/features/services/services.module.ts | 5 +- .../packages/cloud-foundry/src/public_api.ts | 5 +- .../src/shared/cf-shared.module.ts | 7 - .../card-app-instances.component.scss | 1 - .../card-cf-info/card-cf-info.component.ts | 4 +- .../src/store/cloud-foundry.store.module.ts | 7 + .../packages/core/sass/_all-theme.scss | 14 -- .../packages/core/sass/mat-desktop.scss | 36 ++- src/frontend/packages/core/sass/theme.scss | 5 + src/frontend/packages/core/src/app.module.ts | 4 - src/frontend/packages/core/src/app.routing.ts | 51 ---- .../src/core/extension/extension-service.ts | 2 +- .../side-nav/side-nav.component.html | 1 + .../dashboard/side-nav/side-nav.component.ts | 2 +- .../packages/core/src/shared/shared.module.ts | 4 +- src/frontend/packages/devkit/build.sh | 11 +- .../packages/devkit/package-lock.json | 2 +- src/frontend/packages/devkit/package.json | 2 +- .../packages/devkit/src/build/extensions.ts | 4 +- .../packages/devkit/src/lib/packages.ts | 7 +- .../packages/devkit/src/lib/stratos.config.ts | 15 +- .../theme/files/package.json.template | 8 +- .../kubernetes/workloads/workloads.module.ts | 5 +- src/jetstream/go.sum | 8 +- .../po/card-autoscaler-default.po.ts | 3 +- src/test-e2e/e2e.ts | 2 +- src/tsconfig.json | 4 +- 52 files changed, 465 insertions(+), 291 deletions(-) create mode 100644 src/frontend/packages/cf-autoscaler/sass/_all-theme.scss create mode 100644 src/frontend/packages/cf-autoscaler/src/cf-autoscaler-package.module.ts create mode 100644 src/frontend/packages/cf-autoscaler/src/cf-autoscaler-routing.module.ts rename src/frontend/packages/cf-autoscaler/src/{styles.scss => features/edit-autoscaler-policy/edit-autoscaler-policy-step4/edit-autoscaler-policy-step4.theme.scss} (100%) create mode 100644 src/frontend/packages/cloud-foundry/sass/mixins.scss create mode 100644 src/frontend/packages/cloud-foundry/src/cloud-foundry-routing.module.ts delete mode 100644 src/frontend/packages/cloud-foundry/src/features/applications/application/application-base.component.theme.scss rename src/frontend/packages/cloud-foundry/src/features/cloud-foundry/{cloud-foundry.module.ts => cloud-foundry-section.module.ts} (97%) rename src/frontend/packages/cloud-foundry/src/features/cloud-foundry/{cloud-foundry.routing.ts => cloud-foundry-section.routing.ts} (99%) diff --git a/angular.json b/angular.json index caa3bceaa9..b557dc7a20 100644 --- a/angular.json +++ b/angular.json @@ -32,7 +32,6 @@ ], "styles": [ "src/frontend/packages/core/src/styles.scss", - "src/frontend/packages/cf-autoscaler/src/styles.scss", "node_modules/xterm/css/xterm.css" ], "scripts": [] diff --git a/package-lock.json b/package-lock.json index 348215c0d1..eec8e18f4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2512,9 +2512,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.10.3", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz", - "integrity": "sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", "dev": true }, "@babel/types": { @@ -4060,7 +4060,8 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "arr-filter": { "version": "1.1.2", @@ -4074,7 +4075,8 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, "arr-map": { "version": "2.0.2", @@ -4088,7 +4090,8 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, "array-each": { "version": "1.0.1", @@ -4180,7 +4183,8 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true }, "arraybuffer.slice": { "version": "0.0.7", @@ -4264,7 +4268,8 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true }, "ast-types-flow": { "version": "0.0.7", @@ -4335,7 +4340,8 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true }, "autoprefixer": { "version": "9.7.4", @@ -4526,6 +4532,7 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -4540,6 +4547,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -4548,6 +4556,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -4556,6 +4565,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -4564,6 +4574,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -5180,6 +5191,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -5448,6 +5460,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -5459,6 +5472,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -5683,6 +5697,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -5771,7 +5786,8 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true }, "component-inherit": { "version": "0.0.3", @@ -5941,7 +5957,8 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true }, "copy-props": { "version": "2.0.4", @@ -6104,7 +6121,8 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "5.2.1", @@ -6687,6 +6705,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -6705,7 +6724,8 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true }, "decompress-response": { "version": "3.3.0", @@ -6833,6 +6853,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -6842,6 +6863,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -6850,6 +6872,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -6858,6 +6881,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -7923,6 +7947,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -7937,6 +7962,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -7945,6 +7971,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -8022,6 +8049,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -8031,6 +8059,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -8052,6 +8081,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -8067,6 +8097,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -8075,6 +8106,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -8083,6 +8115,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -8091,6 +8124,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -8099,6 +8133,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -8566,7 +8601,8 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true }, "for-own": { "version": "1.0.0", @@ -8657,6 +8693,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, "requires": { "map-cache": "^0.2.2" } @@ -8745,32 +8782,6 @@ "requires": { "yallist": "^4.0.0" } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "repeat-string": "^1.6.1" - } } } }, @@ -8867,7 +8878,8 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true }, "getpass": { "version": "0.1.7", @@ -9235,7 +9247,8 @@ "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true }, "graphlib": { "version": "2.1.8", @@ -9509,6 +9522,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -9519,6 +9533,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -9528,6 +9543,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -9536,6 +9552,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -9546,6 +9563,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -9969,7 +9987,8 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "ini": { "version": "1.3.5", @@ -10156,6 +10175,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -10164,6 +10184,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -10200,7 +10221,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-callable": { "version": "1.1.4", @@ -10235,6 +10257,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -10243,6 +10266,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -10259,6 +10283,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -10268,7 +10293,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -10287,7 +10313,8 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, "is-extglob": { "version": "2.1.1", @@ -10412,6 +10439,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, "requires": { "isobject": "^3.0.1" } @@ -10528,7 +10556,8 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, "is-wsl": { "version": "2.2.0", @@ -10548,7 +10577,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isbinaryfile": { "version": "4.0.6", @@ -10564,7 +10594,8 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isstream": { "version": "0.1.2", @@ -11418,11 +11449,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11449,11 +11475,6 @@ "ansi-regex": "^5.0.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11707,7 +11728,8 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "klaw-sync": { "version": "2.1.0", @@ -12214,7 +12236,8 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true }, "map-stream": { "version": "0.1.0", @@ -12226,6 +12249,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, "requires": { "object-visit": "^1.0.0" } @@ -12485,6 +12509,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -12505,6 +12530,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -12522,6 +12548,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -12532,6 +12559,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -12543,6 +12571,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -12553,6 +12582,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -12561,6 +12591,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -12571,6 +12602,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -12832,6 +12864,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -12841,6 +12874,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -12900,7 +12934,8 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "multicast-dns": { "version": "6.2.3", @@ -12945,6 +12980,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -13983,6 +14019,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -13993,6 +14030,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -14001,6 +14039,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -14114,6 +14153,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, "requires": { "isobject": "^3.0.0" } @@ -14247,6 +14287,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, "requires": { "isobject": "^3.0.1" } @@ -14939,7 +14980,8 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true }, "path-browserify": { "version": "0.0.1", @@ -15194,7 +15236,8 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true }, "postcss": { "version": "7.0.27", @@ -15908,7 +15951,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "process-on-spawn": { "version": "1.0.0", @@ -16508,6 +16552,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -16608,6 +16653,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -16792,17 +16838,20 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "replace-ext": { "version": "1.0.0", @@ -17171,7 +17220,8 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true }, "responselike": { "version": "1.0.2", @@ -17195,7 +17245,8 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true }, "retry": { "version": "0.12.0", @@ -17527,12 +17578,14 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, "requires": { "ret": "~0.1.10" } @@ -17918,6 +17971,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -17929,6 +17983,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -18029,6 +18084,7 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -18044,6 +18100,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -18052,6 +18109,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -18062,6 +18120,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -18072,6 +18131,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -18080,6 +18140,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -18088,6 +18149,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -18096,6 +18158,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -18108,6 +18171,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, "requires": { "kind-of": "^3.2.0" }, @@ -18116,6 +18180,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -18371,6 +18436,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, "requires": { "atob": "^2.1.2", "decode-uri-component": "^0.2.0", @@ -18400,7 +18466,8 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true }, "sourcemap-codec": { "version": "1.4.8", @@ -18588,6 +18655,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, "requires": { "extend-shallow": "^3.0.0" } @@ -18665,6 +18733,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -18674,6 +18743,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -19082,6 +19152,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -19789,6 +19860,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -19797,6 +19869,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -19813,6 +19886,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -20106,6 +20180,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -20212,6 +20287,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -20221,6 +20297,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -20231,6 +20308,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -20240,7 +20318,8 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true } } }, @@ -20334,7 +20413,8 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true }, "url": { "version": "0.11.0", @@ -20390,7 +20470,8 @@ "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, "user-home": { "version": "2.0.0", @@ -20421,7 +20502,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util-promisify": { "version": "2.1.0", diff --git a/src/frontend/packages/cf-autoscaler/package.json b/src/frontend/packages/cf-autoscaler/package.json index 5258e6ebc3..0c833ab0ae 100644 --- a/src/frontend/packages/cf-autoscaler/package.json +++ b/src/frontend/packages/cf-autoscaler/package.json @@ -1,8 +1,13 @@ { - "name": "cf-autoscaler", + "name": "@stratosui/cf-autoscaler", "version": "0.0.1", "peerDependencies": { "@angular/common": "^6.0.0-rc.0 || ^6.0.0", "@angular/core": "^6.0.0-rc.0 || ^6.0.0" + }, + "stratos": { + "module": "CfAutoscalerPackageModule", + "routingModule": "CfAutoscalerRoutingModule", + "theming": "sass/_all-theme#apply-theme-stratos-autoscaler" } } diff --git a/src/frontend/packages/cf-autoscaler/sass/_all-theme.scss b/src/frontend/packages/cf-autoscaler/sass/_all-theme.scss new file mode 100644 index 0000000000..8a54bf0ff5 --- /dev/null +++ b/src/frontend/packages/cf-autoscaler/sass/_all-theme.scss @@ -0,0 +1,8 @@ +@import '../src/features/edit-autoscaler-policy/edit-autoscaler-policy-step4/edit-autoscaler-policy-step4.theme'; + +@mixin apply-theme-stratos-autoscaler($stratos-theme) { + + $theme: map-get($stratos-theme, theme); + $app-theme: map-get($stratos-theme, app-theme); + +} diff --git a/src/frontend/packages/cf-autoscaler/src/cf-autoscaler-package.module.ts b/src/frontend/packages/cf-autoscaler/src/cf-autoscaler-package.module.ts new file mode 100644 index 0000000000..adf5c8b4cb --- /dev/null +++ b/src/frontend/packages/cf-autoscaler/src/cf-autoscaler-package.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { EffectsModule } from '@ngrx/effects'; + +import { EntityCatalogModule } from '../../store/src/entity-catalog.module'; +import { generateASEntities } from './store/autoscaler-entity-generator'; +import { AutoscalerEffects } from './store/autoscaler.effects'; + +@NgModule({ + imports: [ + EntityCatalogModule.forFeature(generateASEntities), + EffectsModule.forFeature([ + AutoscalerEffects + ]), + ], +}) +export class CfAutoscalerPackageModule { } + diff --git a/src/frontend/packages/cf-autoscaler/src/cf-autoscaler-routing.module.ts b/src/frontend/packages/cf-autoscaler/src/cf-autoscaler-routing.module.ts new file mode 100644 index 0000000000..85f4dcbb8e --- /dev/null +++ b/src/frontend/packages/cf-autoscaler/src/cf-autoscaler-routing.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +// Things in this path include add/edit policy stepper, policy metrics page and policy events page +// They're include like this to ensure those parts are lazy loaded. +// The core application policy tab is included via CfAutoscalerModule, which is imported in the Application Module +const customRoutes: Routes = [ + { + path: 'autoscaler', + loadChildren: () => import('./core/autoscaler.module').then(m => m.AutoscalerModule), + data: { + // Required to place content in the mat-drawer-content/.page-content container + stratosNavigationPage: true + }, + }, +]; + +@NgModule({ + imports: [ + RouterModule.forRoot(customRoutes), + ], +}) +export class CfAutoscalerRoutingModule { } diff --git a/src/frontend/packages/cf-autoscaler/src/cf-autoscaler.module.ts b/src/frontend/packages/cf-autoscaler/src/cf-autoscaler.module.ts index e470be161e..95b411929b 100644 --- a/src/frontend/packages/cf-autoscaler/src/cf-autoscaler.module.ts +++ b/src/frontend/packages/cf-autoscaler/src/cf-autoscaler.module.ts @@ -1,36 +1,15 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { EffectsModule } from '@ngrx/effects'; import { NgxChartsModule } from '@swimlane/ngx-charts'; -import { of } from 'rxjs'; +import { ExtensionService } from 'frontend/packages/core/src/core/extension/extension-service'; import { CloudFoundrySharedModule } from '../../cloud-foundry/src/shared/cf-shared.module'; import { CoreModule } from '../../core/src/core/core.module'; import { MDAppModule } from '../../core/src/core/md.module'; import { SharedModule } from '../../core/src/shared/shared.module'; -import { EntityCatalogModule } from '../../store/src/entity-catalog.module'; -import { AutoscalerModule } from './core/autoscaler.module'; import { AutoscalerTabExtensionComponent } from './features/autoscaler-tab-extension/autoscaler-tab-extension.component'; -import { generateASEntities } from './store/autoscaler-entity-generator'; -import { AutoscalerEffects } from './store/autoscaler.effects'; -import { ExtensionService } from 'frontend/packages/core/src/core/extension/extension-service'; +import { CardAutoscalerDefaultComponent } from './shared/card-autoscaler-default/card-autoscaler-default.component'; -// FIXME Work out why we need this and remove it. -const customRoutes: Routes = [ - { - path: 'autoscaler', - loadChildren: () => import('./core/autoscaler.module').then(m => m.AutoscalerModule), - data: { - stratosNavigation: { - text: 'Applications', - matIcon: 'apps', - position: 20, - hidden: of(true) - } - }, - }, -]; @NgModule({ imports: [ @@ -38,20 +17,15 @@ const customRoutes: Routes = [ CommonModule, SharedModule, MDAppModule, - NgxChartsModule, CloudFoundrySharedModule, - AutoscalerModule, - RouterModule.forRoot(customRoutes), - EntityCatalogModule.forFeature(generateASEntities), - EffectsModule.forFeature([ - AutoscalerEffects - ]), + NgxChartsModule, ExtensionService.declare([ AutoscalerTabExtensionComponent, ]) ], declarations: [ - AutoscalerTabExtensionComponent + CardAutoscalerDefaultComponent, + AutoscalerTabExtensionComponent, ] }) export class CfAutoscalerModule { } diff --git a/src/frontend/packages/cf-autoscaler/src/core/autoscaler.module.ts b/src/frontend/packages/cf-autoscaler/src/core/autoscaler.module.ts index cb76b829f2..4a92214407 100644 --- a/src/frontend/packages/cf-autoscaler/src/core/autoscaler.module.ts +++ b/src/frontend/packages/cf-autoscaler/src/core/autoscaler.module.ts @@ -1,7 +1,11 @@ +import { DatePipe } from '@angular/common'; import { NgModule } from '@angular/core'; import { NgxChartsModule } from '@swimlane/ngx-charts'; import { ApplicationService } from '../../../cloud-foundry/src/features/applications/application.service'; +import { + ApplicationEnvVarsHelper, +} from '../../../cloud-foundry/src/features/applications/application/application-tabs-base/tabs/build-tab/application-env-vars.service'; import { CloudFoundrySharedModule } from '../../../cloud-foundry/src/shared/cf-shared.module'; import { CoreModule } from '../../../core/src/core/core.module'; import { SharedModule } from '../../../core/src/shared/shared.module'; @@ -26,7 +30,6 @@ import { EditAutoscalerPolicyStep4Component, } from '../features/edit-autoscaler-policy/edit-autoscaler-policy-step4/edit-autoscaler-policy-step4.component'; import { EditAutoscalerPolicyComponent } from '../features/edit-autoscaler-policy/edit-autoscaler-policy.component'; -import { CardAutoscalerDefaultComponent } from '../shared/card-autoscaler-default/card-autoscaler-default.component'; import { TableCellAutoscalerEventChangeIconPipe, } from '../shared/list-types/app-autoscaler-event/table-cell-autoscaler-event-change/table-cell-autoscaler-event-change-icon.pipe'; @@ -69,7 +72,6 @@ import { AutoscalerRoutingModule } from './autoscaler.routing'; EditAutoscalerPolicyStep3Component, EditAutoscalerPolicyStep4Component, EditAutoscalerCredentialComponent, - CardAutoscalerDefaultComponent, AppAutoscalerMetricChartCardComponent, AppAutoscalerComboChartComponent, AppAutoscalerComboSeriesVerticalComponent, @@ -78,11 +80,10 @@ import { AutoscalerRoutingModule } from './autoscaler.routing'; TableCellAutoscalerEventStatusIconPipe, TableCellAutoscalerEventChangeIconPipe, ], - exports: [ - CardAutoscalerDefaultComponent - ], providers: [ - ApplicationService + ApplicationService, + ApplicationEnvVarsHelper, + DatePipe ] }) export class AutoscalerModule { } diff --git a/src/frontend/packages/cf-autoscaler/src/styles.scss b/src/frontend/packages/cf-autoscaler/src/features/edit-autoscaler-policy/edit-autoscaler-policy-step4/edit-autoscaler-policy-step4.theme.scss similarity index 100% rename from src/frontend/packages/cf-autoscaler/src/styles.scss rename to src/frontend/packages/cf-autoscaler/src/features/edit-autoscaler-policy/edit-autoscaler-policy-step4/edit-autoscaler-policy-step4.theme.scss diff --git a/src/frontend/packages/cf-autoscaler/src/public_api.ts b/src/frontend/packages/cf-autoscaler/src/public_api.ts index 24160374d0..56ee5fc0d6 100644 --- a/src/frontend/packages/cf-autoscaler/src/public_api.ts +++ b/src/frontend/packages/cf-autoscaler/src/public_api.ts @@ -2,5 +2,6 @@ * Public API Surface of cloud-foundry */ -// export * from './lib/cloud-foundry.service'; -export * from './lib/cf-autoscaler.module'; +export * from './cf-autoscaler-package.module'; +export * from './cf-autoscaler-routing.module'; +export * from './core/autoscaler-helpers/autoscaler-available'; diff --git a/src/frontend/packages/cloud-foundry/package.json b/src/frontend/packages/cloud-foundry/package.json index 844bc32e3a..370dd15236 100644 --- a/src/frontend/packages/cloud-foundry/package.json +++ b/src/frontend/packages/cloud-foundry/package.json @@ -1,12 +1,13 @@ { - "name": "cloud-foundry", + "name": "@stratosui/cloud-foundry", "version": "0.0.1", "peerDependencies": { "@angular/common": "^6.0.0-rc.0 || ^6.0.0", "@angular/core": "^6.0.0-rc.0 || ^6.0.0" }, "stratos": { + "module": "CloudFoundryPackageModule", + "routingModule": "CloudFoundryRoutingModule", "theming": "sass/_all-theme#apply-theme-stratos-cloud-foundry" } - -} \ No newline at end of file +} diff --git a/src/frontend/packages/cloud-foundry/sass/_all-theme.scss b/src/frontend/packages/cloud-foundry/sass/_all-theme.scss index fd92ae1354..b344095253 100644 --- a/src/frontend/packages/cloud-foundry/sass/_all-theme.scss +++ b/src/frontend/packages/cloud-foundry/sass/_all-theme.scss @@ -1,7 +1,16 @@ // Theming for the copmponents in the Cloud Foundry package + @import '../src/features/applications/application-wall/application-wall.component.theme'; +@import '../src/features/services/services-wall/services-wall.component.theme'; +@import '../src/features/service-catalog/service-catalog-page/service-catalog-page.component.theme'; + @import '../src/shared/components/list/list-types/cf-security-groups/cf-security-groups-card/cf-security-groups-card.component.theme'; +@import '../src/shared/components/schema-form/schema-form.component.theme'; +@import '../src/features/cloud-foundry/tabs/cf-admin-add-user-warning/cf-admin-add-user-warning.component.theme'; +@import '../src/features/applications/deploy-application/deploy-application.component.theme'; +@import '../src/features/applications/deploy-application/deploy-application-step2/deploy-application-fs/deploy-application-fs.component.theme'; +@import '../src/features/cloud-foundry/tabs/cloud-foundry-firehose/cloud-foundry-firehose.component.theme'; @mixin apply-theme-stratos-cloud-foundry($stratos-theme) { @@ -9,4 +18,10 @@ $app-theme: map-get($stratos-theme, app-theme); @include cf-security-group-theme($theme); + @include app-schema-form-theme($theme, $app-theme); + @include cf-admin-add-user-warning($theme, $app-theme); + @include app-deploy-app-theme($theme, $app-theme); + @include app-deploy-app-fs-component-theme($theme, $app-theme); + @include app-cloud-foundry-firehose-theme($theme, $app-theme); + } diff --git a/src/frontend/packages/cloud-foundry/sass/mixins.scss b/src/frontend/packages/cloud-foundry/sass/mixins.scss new file mode 100644 index 0000000000..6d4ec43454 --- /dev/null +++ b/src/frontend/packages/cloud-foundry/sass/mixins.scss @@ -0,0 +1,20 @@ +@mixin apply-smaller-list-input { + + @include breakpoint(phablet) { + .list-component__header__right-filter { + width: 140px; + } + .list-component__header__right-sort { + width: 120px; + } + } + + @include breakpoint(laptop) { + .list-component__header__right-filter { + width: inherit; + } + .list-component__header__right-sort { + width: inherit; + } + } +} diff --git a/src/frontend/packages/cloud-foundry/src/cloud-foundry-package.module.ts b/src/frontend/packages/cloud-foundry/src/cloud-foundry-package.module.ts index 6e088679f4..410bbe7b18 100644 --- a/src/frontend/packages/cloud-foundry/src/cloud-foundry-package.module.ts +++ b/src/frontend/packages/cloud-foundry/src/cloud-foundry-package.module.ts @@ -5,14 +5,10 @@ import { MDAppModule } from '../../core/src/core/md.module'; import { SharedModule } from '../../core/src/shared/shared.module'; import { EntityCatalogModule } from '../../store/src/entity-catalog.module'; import { generateCFEntities } from './cf-entity-generator'; -import { ApplicationsModule } from './features/applications/applications.module'; -import { CloudFoundryModule } from './features/cloud-foundry/cloud-foundry.module'; -import { ServiceCatalogModule } from './features/service-catalog/service-catalog.module'; -import { ServicesModule } from './features/services/services.module'; -import { CloudFoundrySharedModule } from './shared/cf-shared.module'; import { CfUserService } from './shared/data-services/cf-user.service'; import { CloudFoundryService } from './shared/data-services/cloud-foundry.service'; import { LongRunningCfOperationsService } from './shared/data-services/long-running-cf-op.service'; +import { GitSCMService } from './shared/data-services/scm/scm.service'; import { ServiceActionHelperService } from './shared/data-services/service-action-helper.service'; import { CloudFoundryUserProvidedServicesService } from './shared/services/cloud-foundry-user-provided-services.service'; import { CloudFoundryStoreModule } from './store/cloud-foundry.store.module'; @@ -24,18 +20,7 @@ import { cfCurrentUserPermissionsService } from './user-permissions/cf-user-perm CommonModule, SharedModule, MDAppModule, - ApplicationsModule, - CloudFoundryModule, - ServiceCatalogModule, - ServicesModule, CloudFoundryStoreModule, - // FIXME: Ensure that anything lazy loaded is not included here - #3675 - CloudFoundrySharedModule, - // FIXME: Move cf effects into cf module - #3675 - // EffectsModule.for Root([ - // PermissionsEffects, - // PermissionEffects - // ]) ], providers: [ ...cfCurrentUserPermissionsService, @@ -44,6 +29,7 @@ import { cfCurrentUserPermissionsService } from './user-permissions/cf-user-perm ServiceActionHelperService, LongRunningCfOperationsService, CloudFoundryUserProvidedServicesService, + GitSCMService, ] }) export class CloudFoundryPackageModule { } diff --git a/src/frontend/packages/cloud-foundry/src/cloud-foundry-routing.module.ts b/src/frontend/packages/cloud-foundry/src/cloud-foundry-routing.module.ts new file mode 100644 index 0000000000..0266310650 --- /dev/null +++ b/src/frontend/packages/cloud-foundry/src/cloud-foundry-routing.module.ts @@ -0,0 +1,64 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const customRoutes: Routes = [ + { + path: 'applications', + loadChildren: () => import('./features/applications/applications.module').then(m => m.ApplicationsModule), + data: { + stratosNavigation: { + label: 'Applications', + matIcon: 'apps', + requiresEndpointType: 'cf', + position: 20 + } + }, + }, + { + path: 'marketplace', + loadChildren: () => import('./features/service-catalog/service-catalog.module') + .then(m => m.ServiceCatalogModule), + data: { + stratosNavigation: { + label: 'Marketplace', + matIcon: 'store', + requiresEndpointType: 'cf', + position: 30 + } + }, + }, + { + path: 'services', + loadChildren: () => import('./features/services/services.module').then(m => m.ServicesModule), + data: { + stratosNavigation: { + label: 'Services', + matIcon: 'service', + matIconFont: 'stratos-icons', + requiresEndpointType: 'cf', + position: 40 + } + }, + }, + { + path: 'cloud-foundry', + loadChildren: () => import('./features/cloud-foundry/cloud-foundry-section.module').then(m => m.CloudFoundrySectionModule), + data: { + stratosNavigation: { + label: 'Cloud Foundry', + matIcon: 'cloud_foundry', + matIconFont: 'stratos-icons', + requiresEndpointType: 'cf', + position: 50 + } + }, + }, +] + +@NgModule({ + imports: [ + RouterModule.forRoot(customRoutes), + ], + declarations: [] +}) +export class CloudFoundryRoutingModule { } \ No newline at end of file diff --git a/src/frontend/packages/cloud-foundry/src/cloud-foundry-test.module.ts b/src/frontend/packages/cloud-foundry/src/cloud-foundry-test.module.ts index 99bfc37bbd..5bb932f851 100644 --- a/src/frontend/packages/cloud-foundry/src/cloud-foundry-test.module.ts +++ b/src/frontend/packages/cloud-foundry/src/cloud-foundry-test.module.ts @@ -29,7 +29,7 @@ import { CloudFoundryStoreModule } from './store/cloud-foundry.store.module'; return [ ...generateCFEntities(), ...generateStratosEntities(), - ...generateASEntities(), // FIXME: CF should not depend on autoscaler. See #3916 + ...generateASEntities(), // FIXME: Remove hard link between cf and autoscaler packages #4416 ]; } } diff --git a/src/frontend/packages/cloud-foundry/src/features/applications/application-wall/application-wall.component.theme.scss b/src/frontend/packages/cloud-foundry/src/features/applications/application-wall/application-wall.component.theme.scss index 81840ebdad..053873e20b 100644 --- a/src/frontend/packages/cloud-foundry/src/features/applications/application-wall/application-wall.component.theme.scss +++ b/src/frontend/packages/cloud-foundry/src/features/applications/application-wall/application-wall.component.theme.scss @@ -1,9 +1,6 @@ -// For the App Wall, reduce the size of the filter and sort +@import '../../../../sass/mixins'; + .app-wall { - .list-component__header__right-filter { - width: 140px; - } - .list-component__header__right-sort { - width: 120px; - } + @include apply-smaller-list-input; } + diff --git a/src/frontend/packages/cloud-foundry/src/features/applications/application/application-base.component.theme.scss b/src/frontend/packages/cloud-foundry/src/features/applications/application/application-base.component.theme.scss deleted file mode 100644 index 8d1f7fa03d..0000000000 --- a/src/frontend/packages/cloud-foundry/src/features/applications/application/application-base.component.theme.scss +++ /dev/null @@ -1,5 +0,0 @@ -@mixin app-base-page-theme($theme, $app-theme) { - .summary__nav { - //background-color: map-get($app-theme, app-background-color); - } -} diff --git a/src/frontend/packages/cloud-foundry/src/features/applications/applications.module.ts b/src/frontend/packages/cloud-foundry/src/features/applications/applications.module.ts index ce3afe8842..ce590dbaa6 100644 --- a/src/frontend/packages/cloud-foundry/src/features/applications/applications.module.ts +++ b/src/frontend/packages/cloud-foundry/src/features/applications/applications.module.ts @@ -1,6 +1,7 @@ import { DatePipe } from '@angular/common'; import { NgModule } from '@angular/core'; +import { CfAutoscalerModule } from '../../../../cf-autoscaler/src/cf-autoscaler.module'; import { CoreModule } from '../../../../core/src/core/core.module'; import { SharedModule } from '../../../../core/src/shared/shared.module'; import { CloudFoundrySharedModule } from '../../shared/cf-shared.module'; @@ -38,12 +39,15 @@ import { AddRoutesComponent } from './routes/add-routes/add-routes.component'; import { MapRoutesComponent } from './routes/map-routes/map-routes.component'; import { SshApplicationComponent } from './ssh-application/ssh-application.component'; + @NgModule({ imports: [ CoreModule, SharedModule, ApplicationsRoutingModule, - CloudFoundrySharedModule + CloudFoundrySharedModule, + // FIXME: Remove hard link between cf and autoscaler packages #4416 + CfAutoscalerModule ], declarations: [ ApplicationWallComponent, diff --git a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry.module.ts b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry-section.module.ts similarity index 97% rename from src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry.module.ts rename to src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry-section.module.ts index 76e9e15ff3..ca523e3b30 100644 --- a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry.module.ts +++ b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry-section.module.ts @@ -1,8 +1,10 @@ +import { CommonModule, DatePipe } from '@angular/common'; import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { NgxChartsModule } from '@swimlane/ngx-charts'; import { CoreModule } from '../../../../core/src/core/core.module'; +import { MDAppModule } from '../../../../core/src/public-api'; import { SharedModule } from '../../../../core/src/shared/shared.module'; import { CloudFoundrySharedModule } from '../../shared/cf-shared.module'; import { @@ -21,8 +23,8 @@ import { CreateSpaceStepComponent } from './add-space/create-space-step/create-s import { ActiveRouteCfCell, ActiveRouteCfOrgSpace } from './cf-page.types'; import { CliInfoCloudFoundryComponent } from './cli-info-cloud-foundry/cli-info-cloud-foundry.component'; import { CloudFoundryBaseComponent } from './cloud-foundry-base/cloud-foundry-base.component'; +import { CloudFoundrySectionRoutingModule } from './cloud-foundry-section.routing'; import { CloudFoundryTabsBaseComponent } from './cloud-foundry-tabs-base/cloud-foundry-tabs-base.component'; -import { CloudFoundryRoutingModule } from './cloud-foundry.routing'; import { CloudFoundryComponent } from './cloud-foundry/cloud-foundry.component'; import { EditOrganizationStepComponent } from './edit-organization/edit-organization-step/edit-organization-step.component'; import { EditOrganizationComponent } from './edit-organization/edit-organization.component'; @@ -135,9 +137,11 @@ import { RemoveUserComponent } from './users/remove-user/remove-user.component'; @NgModule({ imports: [ + CommonModule, CoreModule, SharedModule, - CloudFoundryRoutingModule, + MDAppModule, + CloudFoundrySectionRoutingModule, RouterModule, NgxChartsModule, CloudFoundrySharedModule @@ -228,9 +232,10 @@ import { RemoveUserComponent } from './users/remove-user/remove-user.component'; CloudFoundryCellService, UserInviteService, UserInviteConfigureService, + DatePipe ], entryComponents: [ UserInviteConfigurationDialogComponent ] }) -export class CloudFoundryModule { } +export class CloudFoundrySectionModule { } diff --git a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry.routing.ts b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry-section.routing.ts similarity index 99% rename from src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry.routing.ts rename to src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry-section.routing.ts index cdfcacbe8b..258d2b2163 100644 --- a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry.routing.ts +++ b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/cloud-foundry-section.routing.ts @@ -427,4 +427,4 @@ const cloudFoundry: Routes = [{ @NgModule({ imports: [RouterModule.forChild(cloudFoundry)] }) -export class CloudFoundryRoutingModule { } +export class CloudFoundrySectionRoutingModule { } diff --git a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/cf-roles.service.spec.ts b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/cf-roles.service.spec.ts index 14e0a46dd7..90e369eeec 100644 --- a/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/cf-roles.service.spec.ts +++ b/src/frontend/packages/cloud-foundry/src/features/cloud-foundry/users/manage-users/cf-roles.service.spec.ts @@ -1,12 +1,12 @@ +import { HttpClientModule } from '@angular/common/http'; import { inject, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { SharedModule } from '../../../../../../core/src/shared/shared.module'; import { generateCfStoreModules } from '../../../../../test-framework/cloud-foundry-endpoint-service.helper'; import { CfUserService } from '../../../../shared/data-services/cf-user.service'; -import { CloudFoundryModule } from '../../cloud-foundry.module'; +import { CloudFoundrySectionModule } from '../../cloud-foundry-section.module'; import { CfRolesService } from './cf-roles.service'; -import { HttpClientModule } from '@angular/common/http'; describe('CfRolesService', () => { beforeEach(() => { @@ -14,7 +14,7 @@ describe('CfRolesService', () => { imports: [ ...generateCfStoreModules(), SharedModule, - CloudFoundryModule, + CloudFoundrySectionModule, HttpClientModule, RouterTestingModule ], diff --git a/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog-page/service-catalog-page.component.theme.scss b/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog-page/service-catalog-page.component.theme.scss index d2b75ca4fd..34874c1bd6 100644 --- a/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog-page/service-catalog-page.component.theme.scss +++ b/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog-page/service-catalog-page.component.theme.scss @@ -1,9 +1,6 @@ -// For the Services Catalog, reduce the size of the filter and sort +@import '../../../../sass/mixins'; + .marketplace { - .list-component__header__right-filter { - width: 140px; - } - .list-component__header__right-sort { - width: 120px; - } + @include apply-smaller-list-input; } + diff --git a/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog.module.ts b/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog.module.ts index a959216d92..f2d5dec61b 100644 --- a/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog.module.ts +++ b/src/frontend/packages/cloud-foundry/src/features/service-catalog/service-catalog.module.ts @@ -1,4 +1,4 @@ -import { CommonModule } from '@angular/common'; +import { CommonModule, DatePipe } from '@angular/common'; import { NgModule } from '@angular/core'; import { CoreModule } from '../../../../core/src/core/core.module'; @@ -33,6 +33,9 @@ import { ServiceTabsBaseComponent } from './service-tabs-base/service-tabs-base. ], exports: [ ServiceTabsBaseComponent, + ], + providers: [ + DatePipe ] }) export class ServiceCatalogModule { } diff --git a/src/frontend/packages/cloud-foundry/src/features/services/services-wall/services-wall.component.theme.scss b/src/frontend/packages/cloud-foundry/src/features/services/services-wall/services-wall.component.theme.scss index 73f218c996..ef6a14c026 100644 --- a/src/frontend/packages/cloud-foundry/src/features/services/services-wall/services-wall.component.theme.scss +++ b/src/frontend/packages/cloud-foundry/src/features/services/services-wall/services-wall.component.theme.scss @@ -1,9 +1,5 @@ -// For the Services Wall, reduce the size of the filter and sort +@import '../../../../sass/mixins'; + .services-wall { - .list-component__header__right-filter { - width: 140px; - } - .list-component__header__right-sort { - width: 120px; - } + @include apply-smaller-list-input; } diff --git a/src/frontend/packages/cloud-foundry/src/features/services/services.module.ts b/src/frontend/packages/cloud-foundry/src/features/services/services.module.ts index 628dced999..0680c4e2ff 100644 --- a/src/frontend/packages/cloud-foundry/src/features/services/services.module.ts +++ b/src/frontend/packages/cloud-foundry/src/features/services/services.module.ts @@ -1,4 +1,4 @@ -import { CommonModule } from '@angular/common'; +import { CommonModule, DatePipe } from '@angular/common'; import { NgModule } from '@angular/core'; import { @@ -27,6 +27,9 @@ import { ServicesRoutingModule } from './services.routing'; ServicesWallComponent, DetachServiceInstanceComponent, DetachAppsComponent + ], + providers: [ + DatePipe ] }) export class ServicesModule { } diff --git a/src/frontend/packages/cloud-foundry/src/public_api.ts b/src/frontend/packages/cloud-foundry/src/public_api.ts index dbe7a16cbd..0d517d9617 100644 --- a/src/frontend/packages/cloud-foundry/src/public_api.ts +++ b/src/frontend/packages/cloud-foundry/src/public_api.ts @@ -2,8 +2,7 @@ * Public API Surface of cloud-foundry */ -// export * from './lib/cloud-foundry.service'; -export * from './lib/cloud-foundry.component'; -export * from './lib/cloud-foundry.module'; +export * from './cloud-foundry-package.module'; +export * from './cloud-foundry-routing.module'; export * from './cf-api-svc.types'; \ No newline at end of file diff --git a/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts b/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts index aeef92fd78..faca9700ab 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/cf-shared.module.ts @@ -202,15 +202,11 @@ import { ServiceIconComponent } from './components/service-icon/service-icon.com import { ServiceInstanceLastOpComponent } from './components/service-instance-last-op/service-instance-last-op.component'; import { ServicePlanPriceComponent } from './components/service-plan-price/service-plan-price.component'; import { ServicePlanPublicComponent } from './components/service-plan-public/service-plan-public.component'; -import { GitSCMService } from './data-services/scm/scm.service'; import { AppNameUniqueDirective } from './directives/app-name-unique.directive/app-name-unique.directive'; import { CfUserPermissionDirective } from './directives/cf-user-permission/cf-user-permission.directive'; import { ApplicationStateService } from './services/application-state.service'; import { CloudFoundryUserProvidedServicesService } from './services/cloud-foundry-user-provided-services.service'; -// tslint:disable:max-line-length -// tslint:enable:max-line-length - const cfListTableCells: Type>[] = [ TableCellServiceInstanceAppsAttachedComponent, TableCellServiceComponent, @@ -267,8 +263,6 @@ const cfListCards: Type>[] = [ UserProvidedServiceInstanceCardComponent, ]; -// listTableCells.push(); - @NgModule({ imports: [ CommonModule, @@ -378,7 +372,6 @@ const cfListCards: Type>[] = [ ], providers: [ ApplicationStateService, - GitSCMService, CloudFoundryUserProvidedServicesService ] }) diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-app-instances/card-app-instances.component.scss b/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-app-instances/card-app-instances.component.scss index 968da2d3a6..0678a84db3 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-app-instances/card-app-instances.component.scss +++ b/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-app-instances/card-app-instances.component.scss @@ -5,7 +5,6 @@ &__compact { margin-bottom: 0; - position: absolute; } &__actions { diff --git a/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-cf-info/card-cf-info.component.ts b/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-cf-info/card-cf-info.component.ts index 503ac52c40..89afc74d73 100644 --- a/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-cf-info/card-cf-info.component.ts +++ b/src/frontend/packages/cloud-foundry/src/shared/components/cards/card-cf-info/card-cf-info.component.ts @@ -1,10 +1,10 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; +import { fetchAutoscalerInfo } from '@stratosui/cf-autoscaler'; import { APIResource, EntityInfo } from 'frontend/packages/store/src/types/api.types'; import { Observable, Subscription } from 'rxjs'; import { map, tap } from 'rxjs/operators'; -import { fetchAutoscalerInfo } from '../../../../../../cf-autoscaler/src/core/autoscaler-helpers/autoscaler-available'; import { EntityServiceFactory } from '../../../../../../store/src/entity-service-factory.service'; import { ICfV2Info } from '../../../../cf-api.types'; import { CloudFoundryEndpointService } from '../../../../features/cloud-foundry/services/cloud-foundry-endpoint.service'; @@ -16,7 +16,6 @@ import { UserInviteService, } from '../../../../features/cloud-foundry/user-invites/user-invite.service'; - @Component({ selector: 'app-card-cf-info', templateUrl: './card-cf-info.component.html', @@ -50,6 +49,7 @@ export class CardCfInfoComponent implements OnInit, OnDestroy { ); // FIXME: CF should not depend on autoscaler. See #3916 + // FIXME: Remove hard link between cf and autoscaler packages #4416 this.autoscalerVersion$ = fetchAutoscalerInfo(this.cfEndpointService.cfGuid, this.esf).pipe( map(e => e.entityRequestInfo.error ? null : diff --git a/src/frontend/packages/cloud-foundry/src/store/cloud-foundry.store.module.ts b/src/frontend/packages/cloud-foundry/src/store/cloud-foundry.store.module.ts index f2c9b707bd..700bf7c0a7 100644 --- a/src/frontend/packages/cloud-foundry/src/store/cloud-foundry.store.module.ts +++ b/src/frontend/packages/cloud-foundry/src/store/cloud-foundry.store.module.ts @@ -1,6 +1,7 @@ import { NgModule } from '@angular/core'; import { EffectsModule } from '@ngrx/effects'; +import { ActiveRouteCfOrgSpace } from '../features/cloud-foundry/cf-page.types'; import { CloudFoundryReducersModule } from './cloud-foundry.reducers.module'; import { AppVariablesEffect } from './effects/app-variables.effects'; import { AppEffects } from './effects/app.effects'; @@ -30,6 +31,12 @@ import { UsersRolesEffects } from './effects/users-roles.effects'; CfValidateEffects, UsersRolesEffects ]) + ], + providers: [ + { + provide: ActiveRouteCfOrgSpace, + useValue: {} + }, ] }) export class CloudFoundryStoreModule { } diff --git a/src/frontend/packages/core/sass/_all-theme.scss b/src/frontend/packages/core/sass/_all-theme.scss index 950f0d84f3..c611d62d9a 100644 --- a/src/frontend/packages/core/sass/_all-theme.scss +++ b/src/frontend/packages/core/sass/_all-theme.scss @@ -55,14 +55,6 @@ @import '../src/shared/components/favorites-global-list/favorites-global-list.component.theme'; @import '../src/shared/components/favorites-meta-card/favorites-meta-card.component.theme'; -@import '../../cloud-foundry/src/shared/components/schema-form/schema-form.component.theme'; -@import '../../cloud-foundry/src/features/services/services-wall/services-wall.component.theme'; -@import '../../cloud-foundry/src/features/cloud-foundry/tabs/cf-admin-add-user-warning/cf-admin-add-user-warning.component.theme'; -@import '../../cloud-foundry/src/features/applications/application/application-base.component.theme'; -@import '../../cloud-foundry/src/features/applications/deploy-application/deploy-application.component.theme'; -@import '../../cloud-foundry/src/features/applications/deploy-application/deploy-application-step2/deploy-application-fs/deploy-application-fs.component.theme'; -@import '../../cloud-foundry/src/features/cloud-foundry/tabs/cloud-foundry-firehose/cloud-foundry-firehose.component.theme'; -@import '../../cloud-foundry/src/features/service-catalog/service-catalog-page/service-catalog-page.component.theme'; @import '../../core/src/features/error-page/error-page/error-page.component.theme'; @import '../../core/src/features/endpoints/backup-restore/restore-endpoints/restore-endpoints.component.theme'; @import '../../core/src/features/metrics/metrics/metrics.component.theme'; @@ -88,7 +80,6 @@ @include display-value-theme($theme, $app-theme); @include steppers-theme($theme, $app-theme); @include list-theme($theme, $app-theme); - @include app-base-page-theme($theme, $app-theme); @include app-mat-snack-bar-theme($theme, $app-theme); @include ngx-charts-gauge($theme, $app-theme); @include app-text-status-theme($theme, $app-theme); @@ -101,8 +92,6 @@ @include app-boolean-indicator-theme($theme, $app-theme); @include loading-page-theme($theme, $app-theme); @include app-log-viewer-theme($theme, $app-theme); - @include app-deploy-app-theme($theme, $app-theme); - @include app-cloud-foundry-firehose-theme($theme, $app-theme); @include app-card-number-metric-theme($theme, $app-theme); @include app-card-boolean-metric-theme($theme, $app-theme); @include app-dot-content($theme, $app-theme); @@ -111,12 +100,10 @@ @include app-page-header-events($theme, $app-theme); @include app-user-profile-banner-component-theme($theme, $app-theme); @include action-monitor-icon-theme($theme, $app-theme); - @include app-deploy-app-fs-component-theme($theme, $app-theme); @include app-upload-progress-indicator-component-theme($theme, $app-theme); @include page-404($theme, $app-theme); @include about-page-theme($theme, $app-theme); @include meta-card-component($theme, $app-theme); - @include app-schema-form-theme($theme, $app-theme); @include start-end-theme($theme, $app-theme); @include metrics-chart-theme($theme, $app-theme); @include metrics-range-selector-theme($theme, $app-theme); @@ -130,7 +117,6 @@ @include favorites-global-list-theme($theme, $app-theme); @include favorites-meta-card-theme($theme, $app-theme); @include page-side-nav-theme($theme, $app-theme); - @include cf-admin-add-user-warning($theme, $app-theme); @include entity-summary-title-theme($theme, $app-theme); @include app-meta-card-item-theme($theme, $app-theme); @include error-page-theme($theme, $app-theme); diff --git a/src/frontend/packages/core/sass/mat-desktop.scss b/src/frontend/packages/core/sass/mat-desktop.scss index ba52598bfd..f47438d989 100644 --- a/src/frontend/packages/core/sass/mat-desktop.scss +++ b/src/frontend/packages/core/sass/mat-desktop.scss @@ -2,8 +2,9 @@ // See: https://material.io/guidelines/components/menus.html#menus-specs $desktop-font-size: 14px; -$desktop-menu-item-height: 36px; +$desktop-menu-item-height: 32px; $desktop-menu-vertical-padding: 8px; +$desktop-page-header-height: 48px; // Remove 1px border $desktop-toggle-button-item-height: $desktop-menu-item-height - 2px; @@ -73,4 +74,37 @@ $desktop-toggle-button-item-height: $desktop-menu-item-height - 2px; font-size: $desktop-font-size; height: 56px; } + + // Smaller icons in the Toolbars in the page sub-nav + .page-header-sub-nav { + mat-icon { + font-size: 18px; + height: 18px; + width: 18px; + } + + .mat-icon-button { + line-height: 34px; + height: 34px; + width: 34px; + mat-icon { + // Also stops the wobble on the refresh icon + line-height: normal; + } + } + } + + // Smaller page header + .page-header .page-header__toolbar { + height: $desktop-page-header-height; + } + + .dashboard .dashboard__inner { + height: calc(100% - #{$desktop-page-header-height}); + } + + .side-nav .side-nav__top { + flex: 0 0 $desktop-page-header-height; + height: $desktop-page-header-height; + } } diff --git a/src/frontend/packages/core/sass/theme.scss b/src/frontend/packages/core/sass/theme.scss index 11ba592a9f..87818dfd16 100644 --- a/src/frontend/packages/core/sass/theme.scss +++ b/src/frontend/packages/core/sass/theme.scss @@ -18,6 +18,7 @@ $stratos-themes: stratos-theme(); } // Import any custom scss that the theme defines +// This import defines the mixin 'apply-theme' @import '~@stratosui/theme/extensions'; // Default theme ( = light theme) @@ -33,6 +34,8 @@ $theme: map-get($stratos-theme, theme); .dark-theme { @include angular-material-theme($dark-theme); @include app-theme($dark-stratos-theme); + // Apply theme to extensions + @include apply-theme($dark-stratos-theme); } } } @@ -40,6 +43,8 @@ $theme: map-get($stratos-theme, theme); .default { @include angular-material-theme($theme); @include app-theme($stratos-theme); + // Apply theme to extensions + @include apply-theme($stratos-theme); } // Import mat-core diff --git a/src/frontend/packages/core/src/app.module.ts b/src/frontend/packages/core/src/app.module.ts index 24bfcbbe56..37614cdb52 100644 --- a/src/frontend/packages/core/src/app.module.ts +++ b/src/frontend/packages/core/src/app.module.ts @@ -7,8 +7,6 @@ import { Store } from '@ngrx/store'; import { StoreDevtoolsModule } from '@ngrx/store-devtools'; import { debounceTime, filter, withLatestFrom } from 'rxjs/operators'; -import { CfAutoscalerModule } from '../../cf-autoscaler/src/cf-autoscaler.module'; -import { CloudFoundryPackageModule } from '../../cloud-foundry/src/cloud-foundry-package.module'; import { SetRecentlyVisitedEntityAction } from '../../store/src/actions/recently-visited.actions'; import { GeneralEntityAppState, GeneralRequestDataState } from '../../store/src/app-state'; import { EntityCatalogModule } from '../../store/src/entity-catalog.module'; @@ -103,7 +101,6 @@ class AppStoreDebugModule { } imports: [ EntityCatalogModule.forFeature(generateStratosEntities), RouteModule, - CloudFoundryPackageModule, AppStoreModule, AppStoreDebugModule, BrowserModule, @@ -118,7 +115,6 @@ class AppStoreDebugModule { } AboutModule, CustomImportModule, XSRFModule, - CfAutoscalerModule ], providers: [ CustomizationService, diff --git a/src/frontend/packages/core/src/app.routing.ts b/src/frontend/packages/core/src/app.routing.ts index acd2e1ae0d..9441eb4583 100644 --- a/src/frontend/packages/core/src/app.routing.ts +++ b/src/frontend/packages/core/src/app.routing.ts @@ -59,18 +59,6 @@ const appRoutes: Routes = [ } }, { path: 'entity-list', loadChildren: () => import('./api-driven-views/api-driven-views.module').then(m => m.ApiDrivenViewsModule) }, - { - path: 'applications', - loadChildren: () => import('../../cloud-foundry/src/features/applications/applications.module').then(m => m.ApplicationsModule), - data: { - stratosNavigation: { - label: 'Applications', - matIcon: 'apps', - requiresEndpointType: 'cf', - position: 20 - } - }, - }, { path: 'endpoints', data: { @@ -90,45 +78,6 @@ const appRoutes: Routes = [ path: '', loadChildren: () => import('./features/endpoints/endpoints.module').then(m => m.EndpointsModule), }] - }, - { - path: 'marketplace', - loadChildren: () => import('../../cloud-foundry/src/features/service-catalog/service-catalog.module') - .then(m => m.ServiceCatalogModule), - data: { - stratosNavigation: { - label: 'Marketplace', - matIcon: 'store', - requiresEndpointType: 'cf', - position: 30 - } - }, - }, - { - path: 'services', - loadChildren: () => import('../../cloud-foundry/src/features/services/services.module').then(m => m.ServicesModule), - data: { - stratosNavigation: { - label: 'Services', - matIcon: 'service', - matIconFont: 'stratos-icons', - requiresEndpointType: 'cf', - position: 40 - } - }, - }, - { - path: 'cloud-foundry', - loadChildren: () => import('../../cloud-foundry/src/features/cloud-foundry/cloud-foundry.module').then(m => m.CloudFoundryModule), - data: { - stratosNavigation: { - label: 'Cloud Foundry', - matIcon: 'cloud_foundry', - matIconFont: 'stratos-icons', - requiresEndpointType: 'cf', - position: 50 - } - }, }, { path: 'about', loadChildren: () => import('./features/about/about.module').then(m => m.AboutModule) }, { path: 'user-profile', loadChildren: () => import('./features/user-profile/user-profile.module').then(m => m.UserProfileModule) }, diff --git a/src/frontend/packages/core/src/core/extension/extension-service.ts b/src/frontend/packages/core/src/core/extension/extension-service.ts index c71151f5b7..b43f57a0bf 100644 --- a/src/frontend/packages/core/src/core/extension/extension-service.ts +++ b/src/frontend/packages/core/src/core/extension/extension-service.ts @@ -178,7 +178,7 @@ export class ExtensionService { } private moveExtensionRoute(routeConfig: Route[], dashboardRoute: Route): boolean { - const index = routeConfig.findIndex(r => !!r.data && !!r.data.stratosNavigation); + const index = routeConfig.findIndex(r => !!r.data && (!!r.data.stratosNavigation || r.data.stratosNavigationPage)); if (index >= 0) { const removed = routeConfig.splice(index, 1); dashboardRoute.children = dashboardRoute.children.concat(removed); diff --git a/src/frontend/packages/core/src/features/dashboard/side-nav/side-nav.component.html b/src/frontend/packages/core/src/features/dashboard/side-nav/side-nav.component.html index 688f7b37a6..42b179688b 100644 --- a/src/frontend/packages/core/src/features/dashboard/side-nav/side-nav.component.html +++ b/src/frontend/packages/core/src/features/dashboard/side-nav/side-nav.component.html @@ -15,6 +15,7 @@