From 6e147fc78c91ff173aa2998c11d913442a71e939 Mon Sep 17 00:00:00 2001 From: Wouter Termont Date: Tue, 28 Sep 2021 17:00:34 +0200 Subject: [PATCH] feat: refactor entire shared libraries Signed-off-by: Wouter Termont --- .editorconfig | 14 - .github/workflows/ci.yml | 106 + .gitignore | 177 +- .husky/.gitignore | 1 + .husky/commit-msg | 96 + .husky/pre-commit | 6 + .husky/pre-push | 27 + .npmrc | 5 + .nvmrc | 1 + .../snippets.code-snippets | 0 README.md | 27 - angular.json | 223 - custom-webpack.config.js | 21 - dgt-shared.code-workspace | 38 + lerna.json | 60 + package-lock.json | 14040 ++++++++++++++++ package.json | 165 +- packages/dgt-components/.npmrc | 5 + packages/dgt-components/Dockerfile | 16 + .../dgt-components/demo/data/payslips.txt | 203 + packages/dgt-components/demo/data/profile.txt | 245 + .../demo/data/singlePayslip.txt | 16 + packages/dgt-components/demo/demo.ts | 55 + packages/dgt-components/demo/index.html | 22 + .../dgt-components/demo/styles.module.css | 23 + .../lib/alerts/alert.component.spec.ts | 161 + .../lib/alerts/alert.component.ts | 125 + packages/dgt-components/lib/alerts/alert.ts | 4 + .../dgt-components/lib/base/base.component.ts | 142 + .../lib/cards/card.component.spec.ts | 81 + .../lib/cards/card.component.ts | 99 + .../lib/forms/form-element.component.spec.ts | 269 + .../lib/forms/form-element.component.ts | 320 + .../lib/forms/form-submitter.ts | 7 + .../lib/forms/form-validator-result.ts | 14 + .../lib/forms/form-validator.ts | 9 + .../dgt-components/lib/forms/form.events.ts | 65 + .../lib/forms/form.machine.spec.ts | 163 + .../dgt-components/lib/forms/form.machine.ts | 231 + .../header/content-header.component.spec.ts | 67 + .../lib/header/content-header.component.ts | 129 + packages/dgt-components/lib/index.ts | 27 + .../lib/profile/credential.component.ts | 135 + .../lib/profile/profile-contact.component.ts | 185 + .../lib/profile/profile-name.component.ts | 177 + .../lib/profile/profile-payslip.component.ts | 142 + .../lib/separator/separator.component.ts | 61 + .../lib/sidebar/sidebar-component.spec.ts | 13 + .../sidebar/sidebar-item-component.spec.ts | 35 + .../lib/sidebar/sidebar-item.component.ts | 59 + .../sidebar/sidebar-list-component.spec.ts | 59 + .../sidebar-list-item-component.spec.ts | 36 + .../sidebar/sidebar-list-item.component.ts | 115 + .../lib/sidebar/sidebar-list.component.ts | 82 + .../lib/sidebar/sidebar.component.ts | 66 + packages/dgt-components/lib/state/event.ts | 11 + packages/dgt-components/lib/state/schema.ts | 13 + packages/dgt-components/lib/state/state.ts | 16 + packages/dgt-components/package-lock.json | 6132 +++++++ packages/dgt-components/package.json | 106 + packages/dgt-components/tests/setup.ts | 20 + packages/dgt-components/tsconfig.json | 22 + packages/dgt-components/tsconfig.spec.json | 18 + packages/dgt-components/vite.config.ts | 62 + packages/dgt-theme/.DS_Store | Bin 0 -> 6148 bytes packages/dgt-theme/.npmrc | 5 + packages/dgt-theme/.stylelintrc | 6 + packages/dgt-theme/lib/.DS_Store | Bin 0 -> 6148 bytes packages/dgt-theme/lib/common/colors.css | 33 + packages/dgt-theme/lib/common/measures.css | 50 + packages/dgt-theme/lib/common/typography.css | 23 + packages/dgt-theme/lib/elements/buttons.css | 56 + packages/dgt-theme/lib/elements/forms.css | 48 + packages/dgt-theme/lib/elements/grids.css | 17 + packages/dgt-theme/lib/elements/svg.css | 5 + packages/dgt-theme/lib/icons/Bell.svg | 10 + packages/dgt-theme/lib/icons/Collection.svg | 12 + packages/dgt-theme/lib/icons/Connect.svg | 3 + packages/dgt-theme/lib/icons/Cross.svg | 10 + packages/dgt-theme/lib/icons/Doccle.svg | 36 + packages/dgt-theme/lib/icons/Dots.svg | 5 + packages/dgt-theme/lib/icons/Dropdown.svg | 3 + packages/dgt-theme/lib/icons/Edit.svg | 3 + packages/dgt-theme/lib/icons/Empty.svg | 42 + packages/dgt-theme/lib/icons/Identity.svg | 18 + packages/dgt-theme/lib/icons/Image.svg | 13 + packages/dgt-theme/lib/icons/Itsme.svg | 4 + packages/dgt-theme/lib/icons/Loading.svg | 9 + packages/dgt-theme/lib/icons/Login.svg | 4 + packages/dgt-theme/lib/icons/Logo.svg | 93 + packages/dgt-theme/lib/icons/Logout.svg | 4 + packages/dgt-theme/lib/icons/Object.svg | 10 + packages/dgt-theme/lib/icons/Picture.svg | 13 + packages/dgt-theme/lib/icons/Plus.svg | 11 + packages/dgt-theme/lib/icons/Podspaces.svg | 98 + packages/dgt-theme/lib/icons/Save.svg | 3 + packages/dgt-theme/lib/icons/Search.svg | 4 + packages/dgt-theme/lib/icons/Trash.svg | 6 + packages/dgt-theme/lib/icons/vault.svg | 70 + packages/dgt-theme/lib/index.ts | 32 + packages/dgt-theme/lib/theme.css | 19 + packages/dgt-theme/package-lock.json | 2450 +++ packages/dgt-theme/package.json | 53 + packages/dgt-theme/tsconfig.json | 18 + packages/dgt-theme/vite.config.ts | 14 + packages/dgt-utils/.componentsignore | 20 + packages/dgt-utils/.eslintignore | 4 + packages/dgt-utils/.gitignore | 47 + packages/dgt-utils/.npmrc | 5 + packages/dgt-utils/CHANGELOG.md | 190 + packages/dgt-utils/config/config-test.json | 17 + packages/dgt-utils/config/presets/crypto.json | 14 + packages/dgt-utils/config/presets/logger.json | 19 + .../dgt-utils/config/presets/parameters.json | 11 + .../lib/cache/models/dgt-cache-type.model.ts | 4 + .../lib/collections/models/dgt-map.model.ts | 151 + .../services/dgt-connectivity.service.ts | 53 + .../models/dgt-crypto-key-pair.model.ts | 6 +- .../lib/crypto/models/dgt-crypto-key.model.ts | 1 + .../dgt-crypto-browser.service.spec.ts | 31 + .../services/dgt-crypto-browser.service.ts | 65 + .../lib/crypto/services/dgt-crypto.service.ts | 11 + .../errors/models/dgt-error-argument.model.ts | 15 + .../errors/models/dgt-error-config.model.ts | 15 + .../lib/errors/models/dgt-error-http.model.ts | 15 + .../models/dgt-error-not-implemented.model.ts | 15 + .../lib/errors/models/dgt-error.model.ts | 13 + .../lib/errors/services/dgt-error.service.ts | 10 +- .../http/models/dgt-http-response.model.ts | 6 + .../http/services/dgt-http-mock.service.ts | 49 + .../lib/http/services/dgt-http.service.ts | 8 +- .../lib/i8n/memory-translator.spec.ts | 86 + .../dgt-utils/lib/i8n/memory-translator.ts | 54 + packages/dgt-utils/lib/i8n/translation.ts | 19 + packages/dgt-utils/lib/i8n/translator.ts | 15 + .../logging/models/dgt-logger-level.model.ts | 12 + .../dgt-logger-console.service.spec.ts | 108 + .../services/dgt-logger-console.service.ts | 79 + .../logging/services/dgt-logger.service.ts | 129 + .../services/dgt-origin-mock.service.ts | 19 + .../lib/origin/services/dgt-origin.service.ts | 8 + .../services/parameter-checker.service.ts | 32 +- packages/dgt-utils/lib/public-api.ts | 31 + packages/dgt-utils/lib/utils/debounce.ts | 47 + .../lib/utils/fulltext-match.spec.ts | 29 + .../dgt-utils/lib/utils/fulltext-match.ts | 33 + packages/dgt-utils/lib/utils/is-equal.ts | 1 + packages/dgt-utils/package-lock.json | 6889 ++++++++ packages/dgt-utils/package.json | 101 + packages/dgt-utils/tsconfig.json | 22 + packages/dgt-utils/tsconfig.spec.json | 18 + packages/dgt-utils/vite.config.ts | 14 + projects/dgt-shared-connectors/README.md | 24 - projects/dgt-shared-connectors/karma.conf.js | 32 - .../dgt-shared-connectors/ng-package.json | 17 - projects/dgt-shared-connectors/package.json | 44 - .../src/lib/dgt-shared-connectors.module.ts | 25 - .../dgt-source-gravatar.connector.ts | 107 - ...connection-gravatar-configuration.model.ts | 3 - ...dgt-source-gravatar-configuration.model.ts | 5 - .../dgt-source-gravatar-response.model.ts | 6 - .../connectors/dgt-source-mssql.connector.ts | 235 - ...gt-connection-mssql-configuration.model.ts | 3 - .../dgt-source-mssql-configuration.model.ts | 12 - .../dgt-source-solid.connector.spec.ts | 99 - .../connectors/dgt-source-solid.connector.ts | 769 - .../models/dgt-source-solid-login.model.ts | 6 - ...dgt-source-solid-trusted-app-mode.model.ts | 9 - .../dgt-source-solid-trusted-app.model.ts | 10 - ...e-solid-trusted-app-transformer.service.ts | 121 - .../dgt-shared-connectors/src/polyfills.ts | 2 - .../dgt-shared-connectors/src/public-api.ts | 15 - .../src/test.configuration.ts | 28 - projects/dgt-shared-connectors/src/test.ts | 22 - .../dgt-shared-connectors/tsconfig.lib.json | 34 - .../dgt-shared-connectors/tsconfig.spec.json | 16 - projects/dgt-shared-connectors/tslint.json | 17 - projects/dgt-shared-data/README.md | 24 - projects/dgt-shared-data/karma.conf.js | 32 - projects/dgt-shared-data/ng-package.json | 14 - projects/dgt-shared-data/package.json | 36 - .../lib/cache/models/DGTCacheType.model.ts | 4 - .../services/dgt-cache-in-memory.service.ts | 70 - .../cache/services/dgt-cache-solid.service.ts | 114 - .../lib/cache/services/dgt-cache.service.ts | 13 - .../categories/models/dgt-category.model.ts | 10 - .../services/dgt-category.service.ts | 13 - .../dgt-configuration-base-web.model.ts | 25 - ...gt-connection-solid-configuration.model.ts | 12 - .../models/dgt-connection-solid.model.ts | 4 - .../models/dgt-connection-state.model.ts | 5 - .../connection/models/dgt-connection.model.ts | 9 - .../dgt-connection-abstract.service.ts | 15 - .../connector/models/dgt-connector.model.ts | 17 - .../services/dgt-connector.service.ts | 144 - .../lib/consents/models/dgt-consent.model.ts | 8 - .../services/dgt-consent-solid.service.ts | 118 - .../dgt-consent-transformer.service.ts | 198 - .../consents/services/dgt-consent.service.ts | 11 - .../data-interface-host.directive.ts | 43 - .../models/data-category-interface.model.ts | 11 - .../lib/data-value/models/data-group.model.ts | 4 - .../lib/data-value/models/data-value.model.ts | 6 - .../data-transformer-value.service.ts | 43 - .../data-value/services/data-value.service.ts | 126 - .../src/lib/dgt-shared-data.module.ts | 57 - .../src/lib/events/models/dgt-event.model.ts | 27 - .../events/services/dgt-event-mock.service.ts | 25 - .../services/dgt-event-solid.service.ts | 116 - .../services/dgt-event-transformer.service.ts | 208 - .../lib/events/services/dgt-event.service.ts | 35 - .../exchanges/models/dgt-exchange.model.ts | 8 - .../services/dgt-exchange.service.ts | 12 - .../lib/file/models/dgt-file-type.model.ts | 6 - .../src/lib/file/models/dgt-file.model.ts | 201 - .../src/lib/file/services/dgt-file.service.ts | 9 - .../src/lib/holder/models/dgt-holder.model.ts | 4 - .../services/dgt-holder-abstract.service.ts | 12 - .../invite/models/dgt-invite-state.model.ts | 6 - .../src/lib/invite/models/dgt-invite.model.ts | 9 - .../services/dgt-invite-abstract.service.ts | 13 - .../models/dgt-ld-data-type.model.ts | 5 - .../models/dgt-ld-filter-bgp.model.ts | 5 - .../dgt-ld-filter-combination-type.model.ts | 3 - .../models/dgt-ld-filter-combination.model.ts | 7 - .../models/dgt-ld-filter-connection.model.ts | 6 - .../models/dgt-ld-filter-exchange.model.ts | 6 - .../models/dgt-ld-filter-holder.model.ts | 6 - .../models/dgt-ld-filter-runners.model.ts | 7 - .../models/dgt-ld-filter-sparql.model.ts | 5 - .../models/dgt-ld-filter-type.model.ts | 8 - .../linked-data/models/dgt-ld-filter.model.ts | 5 - .../linked-data/models/dgt-ld-node.model.ts | 8 - .../models/dgt-ld-resource.model.ts | 7 - .../models/dgt-ld-term-type.model.ts | 3 - .../models/dgt-ld-transformer.model.ts | 7 - .../linked-data/models/dgt-ld-triple.model.ts | 7 - .../models/dgt-ld-type-registration.model.ts | 8 - .../dgt-ld-filter-runner-bgp.service.spec.ts | 145 - .../dgt-ld-filter-runner-bgp.service.ts | 42 - ...gt-ld-filter-runner-combination.service.ts | 45 - ...dgt-ld-filter-runner-connection.service.ts | 41 - .../dgt-ld-filter-runner-exchange.service.ts | 27 - ...gt-ld-filter-runner-holder.service.spec.ts | 1 - .../dgt-ld-filter-runner-holder.service.ts | 44 - ...gt-ld-filter-runner-sparql.service.spec.ts | 196 - .../dgt-ld-filter-runner-sparql.service.ts | 63 - .../services/dgt-ld-filter-runner.service.ts | 9 - .../services/dgt-ld-filter.service.spec.ts | 217 - .../services/dgt-ld-filter.service.ts | 55 - .../dgt-ld-resource-transformer.service.ts | 35 - .../services/dgt-ld-resource.service.ts | 9 - .../services/dgt-ld-triple-factory.service.ts | 150 - .../dgt-ld-type-registration-mock.service.ts | 31 - .../dgt-ld-type-registration-solid.service.ts | 177 - ...d-type-registration-transformer.service.ts | 177 - .../dgt-ld-type-registration.service.ts | 12 - .../services/dgt-ld-utils.service.ts | 9 - .../linked-data/services/dgt-ld.service.ts | 56 - .../models/dgt-function-result-state.model.ts | 3 - .../logic/models/dgt-function-result.model.ts | 7 - .../lib/logic/services/dgt-logic.service.ts | 5 - .../models/dgt-activity-type.model.ts | 4 - .../models/dgt-activity-visibility.model.ts | 4 - .../models/dgt-mock-database.model.ts | 8 - .../dgt-query-condition-operator.model.ts | 1 - .../models/dgt-query-condition.model.ts | 7 - .../models/dgt-query-pagination.model.ts | 4 - .../lib/metadata/models/dgt-query.model.ts | 7 - .../services/dgt-query.service.spec.ts | 105 - .../metadata/services/dgt-query.service.ts | 58 - .../lib/profile/models/dgt-profile.model.ts | 12 - .../services/dgt-profile-solid.service.ts | 67 - .../dgt-profile-transformer.service.ts | 159 - .../profile/services/dgt-profile.service.ts | 8 - .../lib/purpose/models/dgt-purpose.model.ts | 9 - .../purpose/services/dgt-purpose.service.ts | 13 - ...rt-strategy-solid-jwt-extractor.service.ts | 127 - ...ecurity-passport-strategy-solid.service.ts | 159 - .../dgt-source-solid-configuration.model.ts | 57 - .../source/models/dgt-source-solid.model.ts | 6 - .../source/models/dgt-source-state.model.ts | 4 - .../source/models/dgt-source-type.model.ts | 5 - .../src/lib/source/models/dgt-source.model.ts | 11 - .../lib/source/services/dgt-source.service.ts | 62 - .../models/dgt-sparql-dataset-memory.model.ts | 8 - .../models/dgt-sparql-dataset-type.model.ts | 3 - .../sparql/models/dgt-sparql-dataset.model.ts | 5 - .../sparql/models/dgt-sparql-result.model.ts | 14 - .../services/dgt-sparql-communica.service.ts | 113 - .../services/dgt-sparql-query.service.ts | 145 - .../lib/sparql/services/dgt-sparql.service.ts | 8 - .../actions/dgt-map-field.workflow-action.ts | 37 - .../dgt-remove-prefix.workflow-action.ts | 37 - .../models/dgt-workflow-action-type.model.ts | 3 - .../models/dgt-workflow-action.model.ts | 8 - .../lib/workflow/models/dgt-workflow.model.ts | 9 - .../services/dgt-workflow.service.spec.ts | 29 - .../workflow/services/dgt-workflow.service.ts | 69 - projects/dgt-shared-data/src/public-api.ts | 108 - .../dgt-shared-data/src/test.configuration.ts | 28 - projects/dgt-shared-data/src/test.ts | 22 - projects/dgt-shared-data/tsconfig.lib.json | 34 - projects/dgt-shared-data/tsconfig.spec.json | 16 - projects/dgt-shared-data/tslint.json | 17 - projects/dgt-shared-test/README.md | 24 - projects/dgt-shared-test/karma.conf.js | 32 - projects/dgt-shared-test/ng-package.json | 12 - projects/dgt-shared-test/package.json | 17 - .../models/dgt-test-configuration.model.ts | 5 - .../dgt-test-runner-component.service.ts | 33 - .../dgt-test-runner-service.service.ts | 28 - .../services/dgt-test-runner.service.ts | 5 - projects/dgt-shared-test/src/public-api.ts | 8 - projects/dgt-shared-test/src/test.ts | 22 - projects/dgt-shared-test/tsconfig.lib.json | 35 - projects/dgt-shared-test/tsconfig.spec.json | 16 - projects/dgt-shared-test/tslint.json | 17 - projects/dgt-shared-utils/README.md | 24 - projects/dgt-shared-utils/karma.conf.js | 32 - projects/dgt-shared-utils/ng-package.json | 13 - projects/dgt-shared-utils/package.json | 34 - .../lib/collections/models/dgt-map.model.ts | 99 - .../models/dgt-configuration-base.model.ts | 8 - .../services/dgt-configuration.service.ts | 5 - .../services/dgt-connectivity.service.ts | 41 - .../lib/crypto/models/dgt-crypto-key.model.ts | 1 - .../dgt-crypto-browser.service.spec.ts | 28 - .../services/dgt-crypto-browser.service.ts | 55 - .../lib/crypto/services/dgt-crypto.service.ts | 10 - .../src/lib/decorators/dgt-injectable.ts | 18 - .../src/lib/decorators/dgt-project-type.ts | 4 - .../src/lib/dgt-shared-utils.module.ts | 39 - .../errors/models/dgt-error-argument.model.ts | 11 - .../errors/models/dgt-error-config.model.ts | 11 - .../lib/errors/models/dgt-error-http.model.ts | 11 - .../models/dgt-error-not-implemented.model.ts | 11 - .../src/lib/errors/models/dgt-error.model.ts | 9 - .../http/models/dgt-http-response.model.ts | 8 - .../http/services/dgt-http-angular.service.ts | 143 - .../logging/models/dgt-logger-level.model.ts | 8 - .../services/dgt-logger.service.spec.ts | 21 - .../logging/services/dgt-logger.service.ts | 71 - .../services/dgt-origin-config.service.ts | 15 - .../lib/origin/services/dgt-origin.service.ts | 7 - .../models/dgt-platform-type.model.ts | 3 - .../platform/services/dgt-platform.service.ts | 20 - .../solid/dgt-source-solid-token.model.ts | 88 - projects/dgt-shared-utils/src/public-api.ts | 30 - .../src/test.configuration.ts | 16 - projects/dgt-shared-utils/src/test.ts | 22 - projects/dgt-shared-utils/tsconfig.lib.json | 34 - projects/dgt-shared-utils/tsconfig.spec.json | 16 - projects/dgt-shared-utils/tslint.json | 17 - projects/dgt-shared-venture/README.md | 24 - projects/dgt-shared-venture/karma.conf.js | 32 - projects/dgt-shared-venture/ng-package.json | 21 - projects/dgt-shared-venture/package.json | 34 - .../src/lib/dgt-shared-venture.module.ts | 56 - .../models/dgt-acknowledgement-type.model.ts | 5 - .../models/dgt-acknowledgement.model.ts | 6 - .../lib/domain/models/dgt-address.model.ts | 16 - .../domain/models/dgt-brand-state.model.ts | 4 - .../src/lib/domain/models/dgt-brand.model.ts | 16 - .../lib/domain/models/dgt-category.model.ts | 8 - .../lib/domain/models/dgt-date-type.model.ts | 5 - .../src/lib/domain/models/dgt-date.model.ts | 7 - .../lib/domain/models/dgt-identity.model.ts | 11 - .../lib/domain/models/dgt-individual.model.ts | 5 - .../src/lib/domain/models/dgt-invite.model.ts | 6 - .../models/dgt-milestone-state.model.ts | 6 - .../lib/domain/models/dgt-milestone.model.ts | 18 - .../lib/domain/models/dgt-partner.model.ts | 8 - .../lib/domain/models/dgt-postcard.model.ts | 7 - .../domain/models/dgt-profile-gender.model.ts | 5 - .../domain/models/dgt-profile-type.model.ts | 5 - .../lib/domain/models/dgt-profile.model.ts | 12 - .../dgt-reset-password-request.model.ts | 7 - .../domain/models/dgt-update-state.model.ts | 6 - .../domain/models/dgt-update-type.model.ts | 4 - .../src/lib/domain/models/dgt-update.model.ts | 28 - .../models/dgt-validation-state.model.ts | 8 - .../models/dgt-validation-type.model.ts | 4 - .../lib/domain/models/dgt-validation.model.ts | 12 - .../models/dgt-email-attachment.model.ts | 5 - .../dgt-email-template-profile.model.ts | 3 - .../models/dgt-email-template-type.model.ts | 8 - .../src/lib/email/models/dgt-email.model.ts | 12 - .../file/services/dgt-venture-file.service.ts | 45 - .../services/dgt-client-data.service.ts | 198 - .../services/dgt-client-logic.service.ts | 21 - .../services/dgt-firebase-auth.service.ts | 177 - .../src/lib/state/models/dgt-actions.model.ts | 23 - .../dgt-firebase-base-app-state.model.ts | 9 - projects/dgt-shared-venture/src/public-api.ts | 40 - .../src/test.configuration.ts | 16 - projects/dgt-shared-venture/src/test.ts | 22 - projects/dgt-shared-venture/tsconfig.lib.json | 34 - .../dgt-shared-venture/tsconfig.spec.json | 16 - projects/dgt-shared-venture/tslint.json | 17 - projects/dgt-shared-web/README.md | 24 - projects/dgt-shared-web/karma.conf.js | 32 - projects/dgt-shared-web/ng-package.json | 32 - projects/dgt-shared-web/package.json | 46 - .../services/dgt-category-remote.service.ts | 52 - .../services/dgt-connection-remote.service.ts | 117 - .../services/dgt-connection-state.service.ts | 68 - .../dgt-data-category.component.html | 34 - .../dgt-data-category.component.scss | 34 - .../dgt-data-category.component.spec.ts | 107 - .../dgt-data-category.component.ts | 89 - .../dgt-data-field.component.html | 11 - .../dgt-data-field.component.scss | 10 - .../dgt-data-field.component.spec.ts | 62 - .../dgt-data-field.component.ts | 60 - .../dgt-data-group.component.html | 11 - .../dgt-data-group.component.scss | 7 - .../dgt-data-group.component.spec.ts | 53 - .../dgt-data-group.component.ts | 112 - .../dgt-data-interface-descent.component.html | 34 - .../dgt-data-interface-descent.component.scss | 1 - ...t-data-interface-descent.component.spec.ts | 12 - .../dgt-data-interface-descent.component.ts | 137 - ...-data-interface-email-value.component.html | 15 - ...-data-interface-email-value.component.scss | 1 - ...ta-interface-email-value.component.spec.ts | 12 - ...gt-data-interface-email-value.component.ts | 116 - .../dgt-data-interface-email.component.html | 11 - .../dgt-data-interface-email.component.scss | 1 - ...dgt-data-interface-email.component.spec.ts | 48 - .../dgt-data-interface-email.component.ts | 111 - ...-data-interface-phone-value.component.html | 16 - ...-data-interface-phone-value.component.scss | 1 - ...ta-interface-phone-value.component.spec.ts | 12 - ...gt-data-interface-phone-value.component.ts | 119 - .../dgt-data-interface-phone.component.html | 11 - .../dgt-data-interface-phone.component.scss | 1 - ...dgt-data-interface-phone.component.spec.ts | 48 - .../dgt-data-interface-phone.component.ts | 110 - ...dgt-data-interface-standard.component.html | 7 - ...dgt-data-interface-standard.component.scss | 1 - ...-data-interface-standard.component.spec.ts | 50 - .../dgt-data-interface-standard.component.ts | 97 - .../dgt-data-interface-surveys.component.html | 7 - .../dgt-data-interface-surveys.component.scss | 1 - .../dgt-data-interface-surveys.component.ts | 109 - .../dgt-data-value.component.html | 39 - .../dgt-data-value.component.scss | 10 - .../dgt-data-value.component.spec.ts | 89 - .../dgt-data-value.component.ts | 71 - .../dgt-data-interface-factory.service.ts | 33 - .../dgt-data-interface-resolver.service.ts | 8 - .../services/dgt-date-to-label.service.ts | 66 - .../src/lib/dgt-shared-web.module.ts | 201 - .../events/models/dgt-events-actions.model.ts | 98 - .../services/dgt-exchange-remote.service.ts | 53 - .../services/dgt-exchange-state.service.ts | 48 - .../dgt-form-control.component.html | 4 - .../dgt-form-control.component.ts | 25 - .../dgt-form-date.component.html | 19 - .../dgt-form-date.component.scss | 0 .../dgt-form-date.component.spec.ts | 95 - .../dgt-form-date/dgt-form-date.component.ts | 218 - .../dgt-form-element.component.html | 6 - .../dgt-form-element.component.scss | 11 - .../dgt-form-element.component.ts | 66 - .../dgt-form-file.component.html | 11 - .../dgt-form-file.component.scss | 0 .../dgt-form-file/dgt-form-file.component.ts | 175 - .../dgt-form-label.component.html | 1 - .../dgt-form-label.component.scss | 0 .../dgt-form-label.component.ts | 15 - .../dgt-form-validation.component.html | 3 - .../dgt-form-validation.component.scss | 7 - .../dgt-form-validation.component.ts | 44 - .../dgt-form/dgt-form.component.html | 3 - .../dgt-form/dgt-form.component.scss | 5 - .../components/dgt-form/dgt-form.component.ts | 42 - .../validators/dgt-form-after.validator.ts | 26 - .../validators/dgt-form-before.validator.ts | 26 - .../services/dgt-holder-remote.service.ts | 55 - .../lib/i8n/models/dgt-i8n-locale.model.ts | 17 - .../src/lib/i8n/services/dgt-i8n.service.ts | 102 - .../dgt-button-confirm.component.html | 18 - .../dgt-button-confirm.component.scss | 17 - .../dgt-button-confirm.component.ts | 22 - .../dgt-button/dgt-button.component.html | 14 - .../dgt-button/dgt-button.component.scss | 7 - .../dgt-button/dgt-button.component.ts | 61 - .../dgt-charm/dgt-charm.component.html | 5 - .../dgt-charm/dgt-charm.component.scss | 18 - .../dgt-charm/dgt-charm.component.ts | 12 - .../dgt-chip/dgt-chip.component.html | 9 - .../dgt-chip/dgt-chip.component.scss | 48 - .../components/dgt-chip/dgt-chip.component.ts | 27 - .../dgt-dialog-action.component.html | 1 - .../dgt-dialog-action.component.scss | 0 .../dgt-dialog-action.component.ts | 15 - .../dgt-dialog-content.component.html | 1 - .../dgt-dialog-content.component.scss | 0 .../dgt-dialog-content.component.ts | 15 - .../dgt-dialog/dgt-dialog.component.html | 11 - .../dgt-dialog/dgt-dialog.component.scss | 25 - .../dgt-dialog/dgt-dialog.component.ts | 15 - .../dgt-link/dgt-link.component.html | 3 - .../dgt-link/dgt-link.component.scss | 3 - .../components/dgt-link/dgt-link.component.ts | 29 - .../dgt-loading-page.component.html | 4 - .../dgt-loading-page.component.scss | 6 - .../dgt-loading-page.component.ts | 13 - .../dgt-menu/dgt-menu.component.html | 4 - .../dgt-menu/dgt-menu.component.scss | 1 - .../dgt-menu/dgt-menu.component.spec.ts | 40 - .../components/dgt-menu/dgt-menu.component.ts | 24 - .../dgt-notification.component.css | 29 - .../dgt-notification.component.html | 7 - .../dgt-notification.component.ts | 20 - .../dgt-notifications.component.css | 3 - .../dgt-notifications.component.html | 6 - .../dgt-notifications.component.ts | 20 - ...t-page-content-group-header.component.html | 1 - ...t-page-content-group-header.component.scss | 10 - ...dgt-page-content-group-header.component.ts | 14 - ...age-content-header-subtitle.component.html | 1 - ...age-content-header-subtitle.component.scss | 0 ...-page-content-header-subtitle.component.ts | 14 - ...t-page-content-header-title.component.html | 1 - ...t-page-content-header-title.component.scss | 0 ...dgt-page-content-header-title.component.ts | 14 - .../dgt-page-content-header.component.html | 8 - .../dgt-page-content-header.component.scss | 29 - .../dgt-page-content-header.component.ts | 14 - .../dgt-page-content.component.html | 1 - .../dgt-page-content.component.scss | 0 .../dgt-page-content.component.ts | 15 - .../dgt-page-header-controls.component.html | 1 - .../dgt-page-header-controls.component.scss | 0 .../dgt-page-header-controls.component.ts | 12 - .../dgt-page-header-logo.component.html | 1 - .../dgt-page-header-logo.component.scss | 8 - .../dgt-page-header-logo.component.ts | 12 - .../dgt-page-header-profile.component.html | 16 - .../dgt-page-header-profile.component.scss | 25 - .../dgt-page-header-profile.component.spec.ts | 39 - .../dgt-page-header-profile.component.ts | 17 - .../dgt-page-header-title.component.html | 1 - .../dgt-page-header-title.component.scss | 0 .../dgt-page-header-title.component.ts | 12 - .../dgt-page-header.component.html | 1 - .../dgt-page-header.component.scss | 0 .../dgt-page-header.component.ts | 12 - .../dgt-page-pane.component.html | 1 - .../dgt-page-pane.component.scss | 5 - .../dgt-page-pane/dgt-page-pane.component.ts | 13 - .../dgt-page-rail-item.component.html | 3 - .../dgt-page-rail-item.component.scss | 30 - .../dgt-page-rail-item.component.ts | 17 - .../dgt-page-rail.component.html | 1 - .../dgt-page-rail.component.scss | 10 - .../dgt-page-rail/dgt-page-rail.component.ts | 15 - .../dgt-page-sidenav.component.html | 1 - .../dgt-page-sidenav.component.scss | 0 .../dgt-page-sidenav.component.ts | 15 - .../dgt-page-sub-header.component.html | 1 - .../dgt-page-sub-header.component.scss | 0 .../dgt-page-sub-header.component.ts | 15 - .../dgt-page/dgt-page.component.html | 94 - .../dgt-page/dgt-page.component.scss | 130 - .../components/dgt-page/dgt-page.component.ts | 87 - .../dgt-section-action.component.html | 1 - .../dgt-section-action.component.scss | 0 .../dgt-section-action.component.ts | 15 - .../dgt-section-avatar.component.html | 1 - .../dgt-section-avatar.component.scss | 0 .../dgt-section-avatar.component.ts | 15 - .../dgt-section-content.component.html | 1 - .../dgt-section-content.component.scss | 0 .../dgt-section-content.component.ts | 15 - .../dgt-section-help-title.component.html | 1 - .../dgt-section-help-title.component.scss | 0 .../dgt-section-help-title.component.ts | 15 - .../dgt-section-help.component.html | 17 - .../dgt-section-help.component.scss | 46 - .../dgt-section-help.component.ts | 14 - .../dgt-section-icon.component.html | 1 - .../dgt-section-icon.component.scss | 3 - .../dgt-section-icon.component.ts | 15 - .../dgt-section-image.component.html | 1 - .../dgt-section-image.component.scss | 0 .../dgt-section-image.component.ts | 15 - .../dgt-section-reset.component.html | 1 - .../dgt-section-reset.component.scss | 0 .../dgt-section-reset.component.ts | 15 - .../dgt-section-subtitle.component.html | 1 - .../dgt-section-subtitle.component.scss | 5 - .../dgt-section-subtitle.component.ts | 15 - .../dgt-section-summary.component.html | 1 - .../dgt-section-summary.component.scss | 0 .../dgt-section-summary.component.ts | 15 - .../dgt-section-title.component.html | 1 - .../dgt-section-title.component.scss | 7 - .../dgt-section-title.component.ts | 15 - .../dgt-section/dgt-section.component.html | 49 - .../dgt-section/dgt-section.component.scss | 31 - .../dgt-section/dgt-section.component.ts | 64 - .../guards/dgt-browser-is-supported.guard.ts | 40 - .../lib/interface/models/dgt-color.model.ts | 6 - .../models/dgt-notification-type.model.ts | 6 - .../models/dgt-notification.model.ts | 5 - .../models/dgt-section-container.model.ts | 5 - .../models/dgt-section-style.model.ts | 9 - .../models/dgt-smart-element.model.ts | 29 - .../interface/models/dgt-smart-form.model.ts | 31 - .../interface/services/dgt-title.service.ts | 37 - .../services/dgt-invite-remote.service.ts | 60 - .../models/dgt-profile-actions.model.ts | 30 - .../services/dgt-purpose-remote.service.ts | 54 - .../services/dgt-source-remote.service.ts | 55 - .../services/dgt-source-state.service.ts | 52 - .../state/models/dgt-abstract-action.model.ts | 7 - .../src/lib/state/models/dgt-action.model.ts | 7 - .../src/lib/state/models/dgt-actions.model.ts | 117 - .../lib/state/models/dgt-app-root.model.ts | 34 - .../state/models/dgt-base-app-state.model.ts | 13 - .../state/models/dgt-base-root-state.model.ts | 5 - .../models/dgt-feature-definition.model.ts | 10 - .../src/lib/state/models/dgt-feature.model.ts | 5 - .../state/models/dgt-reducer-method.model.ts | 7 - .../state/models/dgt-reducer-reduce.model.ts | 22 - .../src/lib/state/models/dgt-reducer.model.ts | 7 - .../state/models/dgt-state-selector.model.ts | 5 - .../dgt-state-effects-base-web.service.ts | 190 - .../dgt-state-selector-filter.model.ts | 12 - .../dgt-state-selector-query.model.ts | 12 - .../services/dgt-state-store-ngrx.service.ts | 34 - .../state/services/dgt-state-store.service.ts | 10 - .../dgt-robot-verification-response.model.ts | 3 - .../validators/dgt-compare.validator.ts | 17 - .../validators/dgt-phone.validator.ts | 37 - .../services/dgt-value-remote.service.ts | 63 - projects/dgt-shared-web/src/public-api.ts | 107 - .../dgt-shared-web/src/test.configuration.ts | 16 - projects/dgt-shared-web/src/test.ts | 22 - .../theme/components/_alert.scss | 9 - .../theme/components/_button.scss | 99 - .../theme/components/_form.scss | 169 - .../theme/components/_loading.scss | 22 - .../theme/components/_other.scss | 110 - .../theme/components/_text.scss | 40 - projects/dgt-shared-web/theme/styles.scss | 35 - .../theme/utilities/_colors.scss | 140 - .../theme/utilities/_measures.scss | 16 - projects/dgt-shared-web/tsconfig.lib.json | 26 - projects/dgt-shared-web/tsconfig.spec.json | 16 - projects/dgt-shared-web/tslint.json | 17 - scripts/build.sh | 7 - scripts/cloneAll.sh | 23 - scripts/link.sh | 13 - scripts/linkAndBuild.sh | 55 - scripts/publish.sh | 7 - tsconfig.json | 72 - tslint.json | 75 - 662 files changed, 36452 insertions(+), 17088 deletions(-) delete mode 100644 .editorconfig create mode 100644 .github/workflows/ci.yml create mode 100644 .husky/.gitignore create mode 100755 .husky/commit-msg create mode 100755 .husky/pre-commit create mode 100644 .husky/pre-push create mode 100644 .npmrc create mode 100644 .nvmrc rename projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.scss => .vscode/snippets.code-snippets (100%) delete mode 100644 README.md delete mode 100644 angular.json delete mode 100644 custom-webpack.config.js create mode 100644 dgt-shared.code-workspace create mode 100644 lerna.json create mode 100644 package-lock.json create mode 100644 packages/dgt-components/.npmrc create mode 100644 packages/dgt-components/Dockerfile create mode 100644 packages/dgt-components/demo/data/payslips.txt create mode 100644 packages/dgt-components/demo/data/profile.txt create mode 100644 packages/dgt-components/demo/data/singlePayslip.txt create mode 100644 packages/dgt-components/demo/demo.ts create mode 100644 packages/dgt-components/demo/index.html create mode 100644 packages/dgt-components/demo/styles.module.css create mode 100644 packages/dgt-components/lib/alerts/alert.component.spec.ts create mode 100644 packages/dgt-components/lib/alerts/alert.component.ts create mode 100644 packages/dgt-components/lib/alerts/alert.ts create mode 100644 packages/dgt-components/lib/base/base.component.ts create mode 100644 packages/dgt-components/lib/cards/card.component.spec.ts create mode 100644 packages/dgt-components/lib/cards/card.component.ts create mode 100644 packages/dgt-components/lib/forms/form-element.component.spec.ts create mode 100644 packages/dgt-components/lib/forms/form-element.component.ts create mode 100644 packages/dgt-components/lib/forms/form-submitter.ts create mode 100644 packages/dgt-components/lib/forms/form-validator-result.ts create mode 100644 packages/dgt-components/lib/forms/form-validator.ts create mode 100644 packages/dgt-components/lib/forms/form.events.ts create mode 100644 packages/dgt-components/lib/forms/form.machine.spec.ts create mode 100644 packages/dgt-components/lib/forms/form.machine.ts create mode 100644 packages/dgt-components/lib/header/content-header.component.spec.ts create mode 100644 packages/dgt-components/lib/header/content-header.component.ts create mode 100644 packages/dgt-components/lib/index.ts create mode 100644 packages/dgt-components/lib/profile/credential.component.ts create mode 100644 packages/dgt-components/lib/profile/profile-contact.component.ts create mode 100644 packages/dgt-components/lib/profile/profile-name.component.ts create mode 100644 packages/dgt-components/lib/profile/profile-payslip.component.ts create mode 100644 packages/dgt-components/lib/separator/separator.component.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-component.spec.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-item-component.spec.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-item.component.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-list-component.spec.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-list-item-component.spec.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-list-item.component.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar-list.component.ts create mode 100644 packages/dgt-components/lib/sidebar/sidebar.component.ts create mode 100644 packages/dgt-components/lib/state/event.ts create mode 100644 packages/dgt-components/lib/state/schema.ts create mode 100644 packages/dgt-components/lib/state/state.ts create mode 100644 packages/dgt-components/package-lock.json create mode 100644 packages/dgt-components/package.json create mode 100644 packages/dgt-components/tests/setup.ts create mode 100644 packages/dgt-components/tsconfig.json create mode 100644 packages/dgt-components/tsconfig.spec.json create mode 100644 packages/dgt-components/vite.config.ts create mode 100644 packages/dgt-theme/.DS_Store create mode 100644 packages/dgt-theme/.npmrc create mode 100644 packages/dgt-theme/.stylelintrc create mode 100644 packages/dgt-theme/lib/.DS_Store create mode 100644 packages/dgt-theme/lib/common/colors.css create mode 100644 packages/dgt-theme/lib/common/measures.css create mode 100644 packages/dgt-theme/lib/common/typography.css create mode 100644 packages/dgt-theme/lib/elements/buttons.css create mode 100644 packages/dgt-theme/lib/elements/forms.css create mode 100644 packages/dgt-theme/lib/elements/grids.css create mode 100644 packages/dgt-theme/lib/elements/svg.css create mode 100644 packages/dgt-theme/lib/icons/Bell.svg create mode 100644 packages/dgt-theme/lib/icons/Collection.svg create mode 100644 packages/dgt-theme/lib/icons/Connect.svg create mode 100644 packages/dgt-theme/lib/icons/Cross.svg create mode 100644 packages/dgt-theme/lib/icons/Doccle.svg create mode 100644 packages/dgt-theme/lib/icons/Dots.svg create mode 100644 packages/dgt-theme/lib/icons/Dropdown.svg create mode 100644 packages/dgt-theme/lib/icons/Edit.svg create mode 100644 packages/dgt-theme/lib/icons/Empty.svg create mode 100644 packages/dgt-theme/lib/icons/Identity.svg create mode 100644 packages/dgt-theme/lib/icons/Image.svg create mode 100644 packages/dgt-theme/lib/icons/Itsme.svg create mode 100644 packages/dgt-theme/lib/icons/Loading.svg create mode 100644 packages/dgt-theme/lib/icons/Login.svg create mode 100644 packages/dgt-theme/lib/icons/Logo.svg create mode 100644 packages/dgt-theme/lib/icons/Logout.svg create mode 100644 packages/dgt-theme/lib/icons/Object.svg create mode 100644 packages/dgt-theme/lib/icons/Picture.svg create mode 100644 packages/dgt-theme/lib/icons/Plus.svg create mode 100644 packages/dgt-theme/lib/icons/Podspaces.svg create mode 100644 packages/dgt-theme/lib/icons/Save.svg create mode 100644 packages/dgt-theme/lib/icons/Search.svg create mode 100644 packages/dgt-theme/lib/icons/Trash.svg create mode 100644 packages/dgt-theme/lib/icons/vault.svg create mode 100644 packages/dgt-theme/lib/index.ts create mode 100644 packages/dgt-theme/lib/theme.css create mode 100644 packages/dgt-theme/package-lock.json create mode 100644 packages/dgt-theme/package.json create mode 100644 packages/dgt-theme/tsconfig.json create mode 100644 packages/dgt-theme/vite.config.ts create mode 100644 packages/dgt-utils/.componentsignore create mode 100644 packages/dgt-utils/.eslintignore create mode 100644 packages/dgt-utils/.gitignore create mode 100644 packages/dgt-utils/.npmrc create mode 100644 packages/dgt-utils/CHANGELOG.md create mode 100644 packages/dgt-utils/config/config-test.json create mode 100644 packages/dgt-utils/config/presets/crypto.json create mode 100644 packages/dgt-utils/config/presets/logger.json create mode 100644 packages/dgt-utils/config/presets/parameters.json create mode 100644 packages/dgt-utils/lib/cache/models/dgt-cache-type.model.ts create mode 100644 packages/dgt-utils/lib/collections/models/dgt-map.model.ts create mode 100644 packages/dgt-utils/lib/connectivity/services/dgt-connectivity.service.ts rename {projects/dgt-shared-utils/src => packages/dgt-utils}/lib/crypto/models/dgt-crypto-key-pair.model.ts (60%) create mode 100644 packages/dgt-utils/lib/crypto/models/dgt-crypto-key.model.ts create mode 100644 packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.spec.ts create mode 100644 packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.ts create mode 100644 packages/dgt-utils/lib/crypto/services/dgt-crypto.service.ts create mode 100644 packages/dgt-utils/lib/errors/models/dgt-error-argument.model.ts create mode 100644 packages/dgt-utils/lib/errors/models/dgt-error-config.model.ts create mode 100644 packages/dgt-utils/lib/errors/models/dgt-error-http.model.ts create mode 100644 packages/dgt-utils/lib/errors/models/dgt-error-not-implemented.model.ts create mode 100644 packages/dgt-utils/lib/errors/models/dgt-error.model.ts rename {projects/dgt-shared-utils/src => packages/dgt-utils}/lib/errors/services/dgt-error.service.ts (54%) create mode 100644 packages/dgt-utils/lib/http/models/dgt-http-response.model.ts create mode 100644 packages/dgt-utils/lib/http/services/dgt-http-mock.service.ts rename {projects/dgt-shared-utils/src => packages/dgt-utils}/lib/http/services/dgt-http.service.ts (85%) create mode 100644 packages/dgt-utils/lib/i8n/memory-translator.spec.ts create mode 100644 packages/dgt-utils/lib/i8n/memory-translator.ts create mode 100644 packages/dgt-utils/lib/i8n/translation.ts create mode 100644 packages/dgt-utils/lib/i8n/translator.ts create mode 100644 packages/dgt-utils/lib/logging/models/dgt-logger-level.model.ts create mode 100644 packages/dgt-utils/lib/logging/services/dgt-logger-console.service.spec.ts create mode 100644 packages/dgt-utils/lib/logging/services/dgt-logger-console.service.ts create mode 100644 packages/dgt-utils/lib/logging/services/dgt-logger.service.ts create mode 100644 packages/dgt-utils/lib/origin/services/dgt-origin-mock.service.ts create mode 100644 packages/dgt-utils/lib/origin/services/dgt-origin.service.ts rename {projects/dgt-shared-utils/src => packages/dgt-utils}/lib/parameters/services/parameter-checker.service.ts (66%) create mode 100644 packages/dgt-utils/lib/public-api.ts create mode 100644 packages/dgt-utils/lib/utils/debounce.ts create mode 100644 packages/dgt-utils/lib/utils/fulltext-match.spec.ts create mode 100644 packages/dgt-utils/lib/utils/fulltext-match.ts create mode 100644 packages/dgt-utils/lib/utils/is-equal.ts create mode 100644 packages/dgt-utils/package-lock.json create mode 100644 packages/dgt-utils/package.json create mode 100644 packages/dgt-utils/tsconfig.json create mode 100644 packages/dgt-utils/tsconfig.spec.json create mode 100644 packages/dgt-utils/vite.config.ts delete mode 100644 projects/dgt-shared-connectors/README.md delete mode 100644 projects/dgt-shared-connectors/karma.conf.js delete mode 100644 projects/dgt-shared-connectors/ng-package.json delete mode 100644 projects/dgt-shared-connectors/package.json delete mode 100644 projects/dgt-shared-connectors/src/lib/dgt-shared-connectors.module.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/gravatar/connectors/dgt-source-gravatar.connector.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-connection-gravatar-configuration.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-configuration.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-response.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/mssql/connectors/dgt-source-mssql.connector.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/mssql/models/dgt-connection-mssql-configuration.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/mssql/models/dgt-source-mssql-configuration.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.spec.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-login.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app-mode.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app.model.ts delete mode 100644 projects/dgt-shared-connectors/src/lib/solid/services/dgt-source-solid-trusted-app-transformer.service.ts delete mode 100644 projects/dgt-shared-connectors/src/polyfills.ts delete mode 100644 projects/dgt-shared-connectors/src/public-api.ts delete mode 100644 projects/dgt-shared-connectors/src/test.configuration.ts delete mode 100644 projects/dgt-shared-connectors/src/test.ts delete mode 100644 projects/dgt-shared-connectors/tsconfig.lib.json delete mode 100644 projects/dgt-shared-connectors/tsconfig.spec.json delete mode 100644 projects/dgt-shared-connectors/tslint.json delete mode 100644 projects/dgt-shared-data/README.md delete mode 100644 projects/dgt-shared-data/karma.conf.js delete mode 100644 projects/dgt-shared-data/ng-package.json delete mode 100644 projects/dgt-shared-data/package.json delete mode 100644 projects/dgt-shared-data/src/lib/cache/models/DGTCacheType.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/cache/services/dgt-cache-in-memory.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/cache/services/dgt-cache-solid.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/cache/services/dgt-cache.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/categories/models/dgt-category.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/categories/services/dgt-category.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/configuration/models/dgt-configuration-base-web.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid-configuration.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/connection/models/dgt-connection-state.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/connection/models/dgt-connection.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/connection/services/dgt-connection-abstract.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/connector/models/dgt-connector.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/connector/services/dgt-connector.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/consents/models/dgt-consent.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/consents/services/dgt-consent-solid.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/consents/services/dgt-consent-transformer.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/consents/services/dgt-consent.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/data-value/directives/data-interface-host.directive.ts delete mode 100644 projects/dgt-shared-data/src/lib/data-value/models/data-category-interface.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/data-value/models/data-group.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/data-value/models/data-value.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/data-value/services/data-transformer-value.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/data-value/services/data-value.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/dgt-shared-data.module.ts delete mode 100644 projects/dgt-shared-data/src/lib/events/models/dgt-event.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/events/services/dgt-event-mock.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/events/services/dgt-event-solid.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/events/services/dgt-event-transformer.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/events/services/dgt-event.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/exchanges/models/dgt-exchange.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/exchanges/services/dgt-exchange.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/file/models/dgt-file-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/file/models/dgt-file.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/file/services/dgt-file.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/holder/models/dgt-holder.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/holder/services/dgt-holder-abstract.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/invite/models/dgt-invite-state.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/invite/models/dgt-invite.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/invite/services/dgt-invite-abstract.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-data-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-bgp.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-connection.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-exchange.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-holder.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-runners.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-sparql.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-node.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-resource.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-term-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-transformer.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-triple.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-type-registration.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.spec.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-combination.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-connection.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-exchange.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.spec.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.spec.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.spec.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource-transformer.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-triple-factory.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-mock.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-solid.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-transformer.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-utils.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/logic/models/dgt-function-result-state.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/logic/models/dgt-function-result.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/logic/services/dgt-logic.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-visibility.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-mock-database.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition-operator.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-query-pagination.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/models/dgt-query.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.spec.ts delete mode 100644 projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/profile/models/dgt-profile.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/profile/services/dgt-profile-solid.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/profile/services/dgt-profile-transformer.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/profile/services/dgt-profile.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/purpose/models/dgt-purpose.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/purpose/services/dgt-purpose.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid-jwt-extractor.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/source/models/dgt-source-solid-configuration.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/source/models/dgt-source-solid.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/source/models/dgt-source-state.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/source/models/dgt-source-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/source/models/dgt-source.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/source/services/dgt-source.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-memory.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-result.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-communica.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-query.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql.service.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/actions/dgt-map-field.workflow-action.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/actions/dgt-remove-prefix.workflow-action.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action-type.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow.model.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.spec.ts delete mode 100644 projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.ts delete mode 100644 projects/dgt-shared-data/src/public-api.ts delete mode 100644 projects/dgt-shared-data/src/test.configuration.ts delete mode 100644 projects/dgt-shared-data/src/test.ts delete mode 100644 projects/dgt-shared-data/tsconfig.lib.json delete mode 100644 projects/dgt-shared-data/tsconfig.spec.json delete mode 100644 projects/dgt-shared-data/tslint.json delete mode 100644 projects/dgt-shared-test/README.md delete mode 100644 projects/dgt-shared-test/karma.conf.js delete mode 100644 projects/dgt-shared-test/ng-package.json delete mode 100644 projects/dgt-shared-test/package.json delete mode 100644 projects/dgt-shared-test/src/lib/configuration/models/dgt-test-configuration.model.ts delete mode 100644 projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-component.service.ts delete mode 100644 projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-service.service.ts delete mode 100644 projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner.service.ts delete mode 100644 projects/dgt-shared-test/src/public-api.ts delete mode 100644 projects/dgt-shared-test/src/test.ts delete mode 100644 projects/dgt-shared-test/tsconfig.lib.json delete mode 100644 projects/dgt-shared-test/tsconfig.spec.json delete mode 100644 projects/dgt-shared-test/tslint.json delete mode 100644 projects/dgt-shared-utils/README.md delete mode 100644 projects/dgt-shared-utils/karma.conf.js delete mode 100644 projects/dgt-shared-utils/ng-package.json delete mode 100644 projects/dgt-shared-utils/package.json delete mode 100644 projects/dgt-shared-utils/src/lib/collections/models/dgt-map.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/configuration/models/dgt-configuration-base.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/configuration/services/dgt-configuration.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/connectivity/services/dgt-connectivity.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.spec.ts delete mode 100644 projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/decorators/dgt-injectable.ts delete mode 100644 projects/dgt-shared-utils/src/lib/decorators/dgt-project-type.ts delete mode 100644 projects/dgt-shared-utils/src/lib/dgt-shared-utils.module.ts delete mode 100644 projects/dgt-shared-utils/src/lib/errors/models/dgt-error-argument.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/errors/models/dgt-error-config.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/errors/models/dgt-error-http.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/errors/models/dgt-error-not-implemented.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/errors/models/dgt-error.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/http/models/dgt-http-response.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/http/services/dgt-http-angular.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/logging/models/dgt-logger-level.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.spec.ts delete mode 100644 projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/origin/services/dgt-origin-config.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/origin/services/dgt-origin.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/platform/models/dgt-platform-type.model.ts delete mode 100644 projects/dgt-shared-utils/src/lib/platform/services/dgt-platform.service.ts delete mode 100644 projects/dgt-shared-utils/src/lib/tokens/solid/dgt-source-solid-token.model.ts delete mode 100644 projects/dgt-shared-utils/src/public-api.ts delete mode 100644 projects/dgt-shared-utils/src/test.configuration.ts delete mode 100644 projects/dgt-shared-utils/src/test.ts delete mode 100644 projects/dgt-shared-utils/tsconfig.lib.json delete mode 100644 projects/dgt-shared-utils/tsconfig.spec.json delete mode 100644 projects/dgt-shared-utils/tslint.json delete mode 100644 projects/dgt-shared-venture/README.md delete mode 100644 projects/dgt-shared-venture/karma.conf.js delete mode 100644 projects/dgt-shared-venture/ng-package.json delete mode 100644 projects/dgt-shared-venture/package.json delete mode 100644 projects/dgt-shared-venture/src/lib/dgt-shared-venture.module.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement-type.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-address.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-brand-state.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-brand.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-category.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-date-type.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-date.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-identity.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-individual.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-invite.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone-state.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-partner.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-postcard.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-gender.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-type.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-profile.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-reset-password-request.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-update-state.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-update-type.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-update.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-state.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-type.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/domain/models/dgt-validation.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/email/models/dgt-email-attachment.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-profile.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-type.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/email/models/dgt-email.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/file/services/dgt-venture-file.service.ts delete mode 100644 projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-data.service.ts delete mode 100644 projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-logic.service.ts delete mode 100644 projects/dgt-shared-venture/src/lib/security/services/dgt-firebase-auth.service.ts delete mode 100644 projects/dgt-shared-venture/src/lib/state/models/dgt-actions.model.ts delete mode 100644 projects/dgt-shared-venture/src/lib/state/models/dgt-firebase-base-app-state.model.ts delete mode 100644 projects/dgt-shared-venture/src/public-api.ts delete mode 100644 projects/dgt-shared-venture/src/test.configuration.ts delete mode 100644 projects/dgt-shared-venture/src/test.ts delete mode 100644 projects/dgt-shared-venture/tsconfig.lib.json delete mode 100644 projects/dgt-shared-venture/tsconfig.spec.json delete mode 100644 projects/dgt-shared-venture/tslint.json delete mode 100644 projects/dgt-shared-web/README.md delete mode 100644 projects/dgt-shared-web/karma.conf.js delete mode 100644 projects/dgt-shared-web/ng-package.json delete mode 100644 projects/dgt-shared-web/package.json delete mode 100644 projects/dgt-shared-web/src/lib/categories/services/dgt-category-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/connection/services/dgt-connection-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/connection/services/dgt-connection-state.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.html delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-factory.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-resolver.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/date/services/dgt-date-to-label.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/dgt-shared-web.module.ts delete mode 100644 projects/dgt-shared-web/src/lib/events/models/dgt-events-actions.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-state.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.html delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/validators/dgt-form-after.validator.ts delete mode 100644 projects/dgt-shared-web/src/lib/form/validators/dgt-form-before.validator.ts delete mode 100644 projects/dgt-shared-web/src/lib/holders/services/dgt-holder-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/i8n/models/dgt-i8n-locale.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/i8n/services/dgt-i8n.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.css delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.css delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.spec.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.html delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.scss delete mode 100644 projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/guards/dgt-browser-is-supported.guard.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-color.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-notification-type.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-notification.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-section-container.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-section-style.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-smart-element.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/models/dgt-smart-form.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/interface/services/dgt-title.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/invites/services/dgt-invite-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/profile/models/dgt-profile-actions.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/purposes/services/dgt-purpose-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/source/services/dgt-source-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/source/services/dgt-source-state.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-abstract-action.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-action.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-actions.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-app-root.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-base-app-state.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-base-root-state.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-feature-definition.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-feature.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-reducer-method.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-reducer-reduce.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-reducer.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/models/dgt-state-selector.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/services/dgt-state-effects-base-web.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-filter.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-query.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/services/dgt-state-store-ngrx.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/state/services/dgt-state-store.service.ts delete mode 100644 projects/dgt-shared-web/src/lib/validation/models/dgt-robot-verification-response.model.ts delete mode 100644 projects/dgt-shared-web/src/lib/validation/validators/dgt-compare.validator.ts delete mode 100644 projects/dgt-shared-web/src/lib/validation/validators/dgt-phone.validator.ts delete mode 100644 projects/dgt-shared-web/src/lib/values/services/dgt-value-remote.service.ts delete mode 100644 projects/dgt-shared-web/src/public-api.ts delete mode 100644 projects/dgt-shared-web/src/test.configuration.ts delete mode 100644 projects/dgt-shared-web/src/test.ts delete mode 100644 projects/dgt-shared-web/theme/components/_alert.scss delete mode 100644 projects/dgt-shared-web/theme/components/_button.scss delete mode 100644 projects/dgt-shared-web/theme/components/_form.scss delete mode 100644 projects/dgt-shared-web/theme/components/_loading.scss delete mode 100644 projects/dgt-shared-web/theme/components/_other.scss delete mode 100644 projects/dgt-shared-web/theme/components/_text.scss delete mode 100644 projects/dgt-shared-web/theme/styles.scss delete mode 100644 projects/dgt-shared-web/theme/utilities/_colors.scss delete mode 100644 projects/dgt-shared-web/theme/utilities/_measures.scss delete mode 100644 projects/dgt-shared-web/tsconfig.lib.json delete mode 100644 projects/dgt-shared-web/tsconfig.spec.json delete mode 100644 projects/dgt-shared-web/tslint.json delete mode 100755 scripts/build.sh delete mode 100755 scripts/cloneAll.sh delete mode 100755 scripts/link.sh delete mode 100755 scripts/linkAndBuild.sh delete mode 100755 scripts/publish.sh delete mode 100644 tsconfig.json delete mode 100644 tslint.json diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 3961fd82..00000000 --- a/.editorconfig +++ /dev/null @@ -1,14 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -quote_type = single -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..2db0c04f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,106 @@ +name: CI + +on: + push: + branches: + - master + - develop + - release + - release/* + - feature/* + - feat/* + - fix/* + - test/* + - chore/* + - build/* + + tags: + - '*' + +env: + NPM_TOKEN: ${{secrets.GA_TOKEN}} + +jobs: + test: + name: Run tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Extract tag + id: extract-tag + run: echo "::set-output name=tag::${GITHUB_REF/refs\/tags\//}" + + - name: Check tag + run: echo ${{ steps.extract-tag.outputs.tag }} + + - name: Extract branch + id: extract-branch + run: echo "::set-output name=branch::${GITHUB_REF/refs\/heads\//}" + + - name: Check branch + run: echo ${{ steps.extract-branch.outputs.branch }} + + - uses: actions/setup-node@v1 + with: + node-version: 14 + + - run: npm run bootstrap + + - run: npm run build:all + + - run: npm run lint:all + + - run: npm run test:all + + release: + name: Create release + needs: test + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + body_path: CHANGELOG.md + draft: false + prerelease: false + + publish-npm: + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + needs: release + steps: + - uses: actions/checkout@v2 + + - uses: actions/setup-node@v1 + with: + node-version: 14 + registry-url: https://npm.pkg.github.com/ + + - run: npm run bootstrap + + - run: npm run build:all + + - run: npm publish packages/dgt-components + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - run: npm publish packages/dgt-theme + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - run: npm publish packages/dgt-utils + env: + NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + diff --git a/.gitignore b/.gitignore index c5d6a750..03aee21f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,61 +1,116 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out - -# dependencies -/node_modules -/projects/dgt-shared-utils/node_modules -/projects/dgt-shared-web/node_modules -/projects/dgt-shared-data/node_modules -/projects/dgt-shared-venture/node_modules -/projects/dgt-shared-connectors/node_modules -/projects/dgt-shared-test/node_modules - -# profiling files -chrome-profiler-events.json -speed-measure-plugin.json - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings - -# System Files -.DS_Store -Thumbs.db - -package-lock.json -yarn.lock -projects/dgt-shared-web/yarn.lock -projects/dgt-shared-test/yarn.lock -projects/dgt-shared-utils/yarn.lock -projects/dgt-shared-data/yarn.lock -projects/dgt-shared-connectors/yarn.lock -projects/dgt-shared-venture/yarn.lock -.npmrc +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Error files +componentsjs-error-state.json + +# Static assets +assets + +# jest coverage files +coverage-summary.json + +# pod data +rundata \ No newline at end of file diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 00000000..31354ec1 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 00000000..f7607656 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,96 @@ +#!/bin/sh + +. "$(dirname $0)/_/husky.sh" + +## List changed files +STATUS=$(git status --porcelain) +STAGED=$(echo "$STATUS" | grep -E '^(M|A|D|R|C) ' | sed -E 's/^(M|A|D|R|C) ([^ ]+).*$/\2/g') +#MODIFIED=$(echo "$STATUS" | grep -E '^ (M|A|D|R|C)' | sed -E 's/^ (M|A|D|R|C) ([^ ]+).*$/\2/g') +#UNTRACKED=$(echo "$STATUS" | grep -E '^??' | sed -E 's/^?? //g') +#CHANGED=$(echo "$STAGED" && echo "$MODIFIED" && echo "$UNTRACKED") + +## Check for ongoing merge +MERGE=$(git rev-parse -q --verify MERGE_HEAD || echo "") +M_MSG=$([[ -f .git/MERGE_MSG ]] && cat .git/MERGE_MSG || echo '') + +## Check for empty commits +if [[ -z "$STAGED" && -z "$MERGE" ]] ; then + + echo "[COMMIT-MSG Hook] No staged changes && no ongoing merge => aborting commit" + exit 1 + +fi + +## Lint commit message +echo "[COMMIT-MSG Hook] Linting commit message" && ./node_modules/.bin/commitlint --edit $1 + +## Check for WIP mention +if (grep -qe "WIP" $1); then + + ## If WIP, skip tests + echo "[COMMIT-MSG Hook] Found WIP mention => Skipping tests" + +else + + ## If no WIP, run tests + echo "[COMMIT-MSG Hook] No WIP mention found" + + if [[ -n "$MERGE" ]] ; then + echo "[COMMIT-MSG Hook] Saved ongoing merge status" + fi + + if [[ -n "$STAGED" ]] ; then + echo "[COMMIT-MSG Hook] Stashing working tree" + STASH="pre-commit hook test on $(date '+%F %T')" && git stash push -qukm "$STASH" + fi + + echo "[COMMIT-MSG Hook] Running tests" + + ## Build list of previous WIP changes + LIST="" + NEW=$(git rev-parse HEAD) + while [[ -n "$NEW" ]] ; do + LIST=$(echo "$LIST" ; echo "$NEW") + NEW=$(echo "$NEW" | sed -e 's/^\(.*\)$/\1\^@/g' | xargs git rev-list --no-walk -E --grep="WIP") + done + + RELEVANT="$(echo "$LIST" | xargs -L1 git diff-tree --no-commit-id --name-only -r | sort -u ; echo "$STAGED")" + + ## Install root dependencies if package.json changed + echo "$RELEVANT" | grep -q "^package.json$" && npm i + + ## Bootstrap packages with changed package.json + PACKAGES=$(echo "$RELEVANT" | grep "package.json$" | grep -v "^package.json$" | xargs cat | grep name + echo "$PACKAGES" | sed 's/.*"name": "\(.*\)".*/--scope "\1"/g') | xargs ./node_modules/.bin/lerna bootstrap --since HEAD + + ## Run tests related to staged files + echo "$RELEVANT" | xargs ./node_modules/.bin/jest --bail --coverage --silent --passWithNoTests --findRelatedTests + + if [[ $? -ne 0 ]] ; then + echo "[COMMIT-MSG Hook] You tried to commit changes without a WIP mention," + echo "[COMMIT-MSG Hook] but tests related to staged files or yet untested WIP commits are failing." + echo "[COMMIT-MSG Hook] Resolve the remaining issues or commit current changes as WIP." + fi + + echo "[COMMIT-MSG Hook] Resetting the stage" + + ## Reset tracked files & clean untracked files + git reset --hard + git clean -df + + if [[ -n "$STAGED" ]] ; then + echo "[COMMIT-MSG Hook] Restoring working tree" + git stash list | grep -q "$STASH" && git stash pop -q --index + fi + + if [[ -n "$MERGE" ]] ; then + echo "[COMMIT-MSG Hook] Restoring ongoing merge status" + git update-ref MERGE_HEAD "$MERGE" + if [[ -n "$M_MSG" ]] ; then + echo "$M_MSG" > .git/MERGE_MSG + fi + fi + + exit $TESTS + +fi diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..8482424b --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,6 @@ +#!/bin/sh + +. "$(dirname $0)/_/husky.sh" + +## Run specified linters on staged files, automatically adding fixes +npm run lint:staged \ No newline at end of file diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 00000000..de32ebab --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,27 @@ +#!/bin/sh + +. "$(dirname $0)/_/husky.sh" + +REGEX="^(master|develop|(release|feat|fix|docs|test|chore|build|docs)\/[a-zA-Z0-9\-]+)$" + +REMOTE="$1" +URL="$2" + +while read L_REF L_SHA R_REF R_SHA +do + + BRANCH=$(git rev-parse --abbrev-ref "$L_REF") + + if [[ "$R_SHA" = "$(printf "%040d")" ]] ; then + + # Check branch name convention + if ! (echo "$BRANCH" | grep -qE "$REGEX") ; then + + echo "[PRE-PUSH Hook] Please name your new branch in accordance with the coding conventions" >&2 + exit 1 + + fi + + fi + +done \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..afdc90d6 --- /dev/null +++ b/.npmrc @@ -0,0 +1,5 @@ +registry=https://registry.npmjs.org/ + +@digita-ai:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=${NPM_TOKEN} +always-auth=true \ No newline at end of file diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..da2d3988 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +14 \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.scss b/.vscode/snippets.code-snippets similarity index 100% rename from projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.scss rename to .vscode/snippets.code-snippets diff --git a/README.md b/README.md deleted file mode 100644 index 9f26578c..00000000 --- a/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# DgtShared - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.3. - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/angular.json b/angular.json deleted file mode 100644 index eb7587f7..00000000 --- a/angular.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "dgt-shared-utils": { - "root": "projects/dgt-shared-utils", - "sourceRoot": "projects/dgt-shared-utils/src", - "projectType": "library", - "prefix": "dgt", - "architect": { - "build": { - "builder": "@angular-devkit/build-ng-packagr:build", - "options": { - "tsConfig": "projects/dgt-shared-utils/tsconfig.lib.json", - "project": "projects/dgt-shared-utils/ng-package.json" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "projects/dgt-shared-utils/src/test.ts", - "tsConfig": "projects/dgt-shared-utils/tsconfig.spec.json", - "karmaConfig": "projects/dgt-shared-utils/karma.conf.js" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "projects/dgt-shared-utils/tsconfig.lib.json", - "projects/dgt-shared-utils/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, - "dgt-shared-web": { - "root": "projects/dgt-shared-web", - "sourceRoot": "projects/dgt-shared-web/src", - "projectType": "library", - "prefix": "dgt", - "architect": { - "build": { - "builder": "@angular-devkit/build-ng-packagr:build", - "options": { - "tsConfig": "projects/dgt-shared-web/tsconfig.lib.json", - "project": "projects/dgt-shared-web/ng-package.json", - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "projects/dgt-shared-web/src/test.ts", - "tsConfig": "projects/dgt-shared-web/tsconfig.spec.json", - "karmaConfig": "projects/dgt-shared-web/karma.conf.js" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "projects/dgt-shared-web/tsconfig.lib.json", - "projects/dgt-shared-web/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, - "dgt-shared-data": { - "root": "projects/dgt-shared-data", - "sourceRoot": "projects/dgt-shared-data/src", - "projectType": "library", - "prefix": "dgt", - "architect": { - "build": { - "builder": "@angular-devkit/build-ng-packagr:build", - "options": { - "tsConfig": "projects/dgt-shared-data/tsconfig.lib.json", - "project": "projects/dgt-shared-data/ng-package.json" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "projects/dgt-shared-data/src/test.ts", - "tsConfig": "projects/dgt-shared-data/tsconfig.spec.json", - "karmaConfig": "projects/dgt-shared-data/karma.conf.js" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "projects/dgt-shared-data/tsconfig.lib.json", - "projects/dgt-shared-data/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, - "dgt-shared-venture": { - "root": "projects/dgt-shared-venture", - "sourceRoot": "projects/dgt-shared-venture/src", - "projectType": "library", - "prefix": "dgt", - "architect": { - "build": { - "builder": "@angular-devkit/build-ng-packagr:build", - "options": { - "tsConfig": "projects/dgt-shared-venture/tsconfig.lib.json", - "project": "projects/dgt-shared-venture/ng-package.json" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "projects/dgt-shared-venture/src/test.ts", - "tsConfig": "projects/dgt-shared-venture/tsconfig.spec.json", - "karmaConfig": "projects/dgt-shared-venture/karma.conf.js" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "projects/dgt-shared-venture/tsconfig.lib.json", - "projects/dgt-shared-venture/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, - "dgt-shared-connectors": { - "root": "projects/dgt-shared-connectors", - "sourceRoot": "projects/dgt-shared-connectors/src", - "projectType": "library", - "prefix": "dgt", - "architect": { - "build": { - "builder": "@angular-devkit/build-ng-packagr:build", - "options": { - "tsConfig": "projects/dgt-shared-connectors/tsconfig.lib.json", - "project": "projects/dgt-shared-connectors/ng-package.json" - } - }, - "test": { - "builder": "@angular-builders/custom-webpack:karma", - "options": { - "customWebpackConfig": { - "path": "./custom-webpack.config.js", - "replaceDuplicatePlugins": true - }, - "preserveSymlinks": true, - "main": "projects/dgt-shared-connectors/src/test.ts", - "tsConfig": "projects/dgt-shared-connectors/tsconfig.spec.json", - "karmaConfig": "projects/dgt-shared-connectors/karma.conf.js" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "projects/dgt-shared-connectors/tsconfig.lib.json", - "projects/dgt-shared-connectors/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - } - } - }, - "dgt-shared-test": { - "root": "projects/dgt-shared-test", - "sourceRoot": "projects/dgt-shared-test/src", - "projectType": "library", - "prefix": "dgt", - "architect": { - "build": { - "builder": "@angular-devkit/build-ng-packagr:build", - "options": { - "tsConfig": "projects/dgt-shared-test/tsconfig.lib.json", - "project": "projects/dgt-shared-test/ng-package.json" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "projects/dgt-shared-test/src/test.ts", - "tsConfig": "projects/dgt-shared-test/tsconfig.spec.json", - "karmaConfig": "projects/dgt-shared-test/karma.conf.js" - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "projects/dgt-shared-test/tsconfig.lib.json", - "projects/dgt-shared-test/tsconfig.spec.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - } - } - } - }, - "defaultProject": "dgt-shared-utils" -} \ No newline at end of file diff --git a/custom-webpack.config.js b/custom-webpack.config.js deleted file mode 100644 index f7fda185..00000000 --- a/custom-webpack.config.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - externals: { - 'node-fetch': 'fetch', - 'text-encoding': 'TextEncoder', - 'whatwg-url': 'window', - 'isomorphic-fetch': 'fetch', - '@trust/webcrypto': 'crypto', - '@sinonjs/text-encoding': 'TextEncoder', - 'isomorphic-webcrypto': 'crypto' - }, - node: { - buffer: true, - Buffer: true, - fs: 'empty', - tls: 'empty', - dns: 'empty', - net: 'empty', - dgram: 'empty', - child_process: 'empty' - } -} \ No newline at end of file diff --git a/dgt-shared.code-workspace b/dgt-shared.code-workspace new file mode 100644 index 00000000..80273633 --- /dev/null +++ b/dgt-shared.code-workspace @@ -0,0 +1,38 @@ +{ + "folders": [ + { + "name": "root", + "path": "." + }, + { + "name": "dgt-components", + "path": "packages/dgt-components" + }, + { + "name": "dgt-theme", + "path": "packages/dgt-theme" + }, + { + "name": "dgt-utils", + "path": "packages/dgt-utils" + } + ], + "settings": { + "eslint.format.enable": true, + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + }, + "typescript.preferences.importModuleSpecifier": "relative", + "files.eol": "\n", + "cSpell.words": [ + ] + }, + "extensions": { + "recommendations": [ + "dbaeumer.vscode-eslint", + "folke.vscode-monorepo-workspace", + "humao.rest-client", + ] + } +} \ No newline at end of file diff --git a/lerna.json b/lerna.json new file mode 100644 index 00000000..847fcac1 --- /dev/null +++ b/lerna.json @@ -0,0 +1,60 @@ +{ + "packages": [ + "packages/*" + ], + "command": { + "bootstrap": { + "ignorePrepublish": true + }, + "version": { + "allowBranch": [ + "master", + "develop" + ], + "conventionalCommits": true, + "exact": true, + "forcePublish": true, + "message": "chore: release %s", + "granularPathspec": false, + "tag-version-prefix": "", + "changelogPreset": { + "name": "conventionalcommits", + "types": [ + { + "type": "feat", + "section": "**Features**" + }, + { + "type": "fix", + "section": "**Bug Fixes**" + }, + { + "type": "docs", + "section": "**Documentation**" + }, + { + "type": "chore", + "hidden": true + }, + { + "type": "build", + "hidden": true + }, + { + "type": "test", + "hidden": true + } + ], + "releaseCommitMessageFormat": "chore: release v{{currentTag}}", + "issuePrefixes": [ + "#" + ], + "issueUrlFormat": "{{host}}/{{owner}}/{{repository}}/issues/{{id}}", + "commitUrlFormat": "{{host}}/{{owner}}/{{repository}}/commit/{{hash}}", + "compareUrlFormat": "{{host}}/{{owner}}/{{repository}}/compare/{{previousTag}}...{{currentTag}}", + "userUrlFormat": "{{host}}/{{user}}" + } + } + }, + "version": "0.4.0" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..0323900a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14040 @@ +{ + "name": "root", + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, + "@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.8" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "dev": true, + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "dev": true, + "optional": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.3.tgz", + "integrity": "sha512-30A3lP+sRL6ml8uhoJSs+8jwpKzbw8CqBvDc1laeptxPm5FahumJxirigcbD2qTs71Sonvj1cyZB0OKGAmxQ+A==", + "dev": true, + "optional": true, + "requires": { + "core-js-pure": "^3.16.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@commitlint/cli": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.4.tgz", + "integrity": "sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg==", + "dev": true, + "requires": { + "@commitlint/format": "^12.1.4", + "@commitlint/lint": "^12.1.4", + "@commitlint/load": "^12.1.4", + "@commitlint/read": "^12.1.4", + "@commitlint/types": "^12.1.4", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^16.2.0" + } + }, + "@commitlint/config-conventional": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.4.tgz", + "integrity": "sha512-ZIdzmdy4o4WyqywMEpprRCrehjCSQrHkaRTVZV411GyLigFQHlEBSJITAihLAWe88Qy/8SyoIe5uKvAsV5vRqQ==", + "dev": true, + "requires": { + "conventional-changelog-conventionalcommits": "^4.3.1" + } + }, + "@commitlint/config-lerna-scopes": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/config-lerna-scopes/-/config-lerna-scopes-12.1.4.tgz", + "integrity": "sha512-D/VqvATs8fYi2CFpFdjLYeOHGm/KkxUSehGqwIPJfYXHHua19V5UqmUOeXTNAJaD+bTpiHvoBTK75NcmWpBQSg==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "import-from": "3.0.0", + "resolve-pkg": "2.0.0", + "semver": "7.3.5" + } + }, + "@commitlint/ensure": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.4.tgz", + "integrity": "sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.4", + "lodash": "^4.17.19" + } + }, + "@commitlint/execute-rule": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz", + "integrity": "sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg==", + "dev": true + }, + "@commitlint/format": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.4.tgz", + "integrity": "sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.4", + "chalk": "^4.0.0" + } + }, + "@commitlint/is-ignored": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz", + "integrity": "sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.4", + "semver": "7.3.5" + } + }, + "@commitlint/lint": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.4.tgz", + "integrity": "sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA==", + "dev": true, + "requires": { + "@commitlint/is-ignored": "^12.1.4", + "@commitlint/parse": "^12.1.4", + "@commitlint/rules": "^12.1.4", + "@commitlint/types": "^12.1.4" + } + }, + "@commitlint/load": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.4.tgz", + "integrity": "sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA==", + "dev": true, + "requires": { + "@commitlint/execute-rule": "^12.1.4", + "@commitlint/resolve-extends": "^12.1.4", + "@commitlint/types": "^12.1.4", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + } + }, + "@commitlint/message": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.4.tgz", + "integrity": "sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA==", + "dev": true + }, + "@commitlint/parse": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.4.tgz", + "integrity": "sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw==", + "dev": true, + "requires": { + "@commitlint/types": "^12.1.4", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.0.0" + } + }, + "@commitlint/read": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.4.tgz", + "integrity": "sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg==", + "dev": true, + "requires": { + "@commitlint/top-level": "^12.1.4", + "@commitlint/types": "^12.1.4", + "fs-extra": "^9.0.0", + "git-raw-commits": "^2.0.0" + } + }, + "@commitlint/resolve-extends": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz", + "integrity": "sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg==", + "dev": true, + "requires": { + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + } + }, + "@commitlint/rules": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.4.tgz", + "integrity": "sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg==", + "dev": true, + "requires": { + "@commitlint/ensure": "^12.1.4", + "@commitlint/message": "^12.1.4", + "@commitlint/to-lines": "^12.1.4", + "@commitlint/types": "^12.1.4" + } + }, + "@commitlint/to-lines": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.4.tgz", + "integrity": "sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw==", + "dev": true + }, + "@commitlint/top-level": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.4.tgz", + "integrity": "sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "@commitlint/types": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.4.tgz", + "integrity": "sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "@digita-ai/commitlint-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/commitlint-config/0.3.4/5028a6f144168868eecb9056d7c9d39442229f144e17ca4832f000bb27bfcc2a", + "integrity": "sha512-eRMeArTRbAFu5hxTSzNyQ5WmC4UWbDQ79Scm4lPmUE5S1HVfajM9O3pjbcMlJ+kRCzaWFxuwdghfAi8pGxuxPg==", + "dev": true, + "requires": { + "@commitlint/config-conventional": "^12.0.1", + "@commitlint/config-lerna-scopes": "^12.0.1" + } + }, + "@digita-ai/eslint-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/eslint-config/0.3.4/2a1f254108b533e91bae80f1c649f4ccd6b2ad22959e52beb28abf87e1d9fc17", + "integrity": "sha512-D5/Ee3DIbypEoSRpt/uMhWKXOnoctPHMYjmqEvCq/C9iqZCv6VwgkEeZQrGx4AWw0BacoQVTc57fH6GdF/quLw==", + "dev": true, + "requires": { + "@typescript-eslint/parser": "^4.19.0", + "typescript": "^4.2.4" + } + }, + "@digita-ai/jest-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/jest-config/0.3.4/f799f4910afc4ef7a827bfe8fb399cef5fb0f1951e4b75f54e755b5718bb838d", + "integrity": "sha512-fdL9aZn5nF+DFJFCnHCHndsDXp1ZqeRneJk4xMuAkw80OOk+G3v+Iu0VTxhSr3pk6gvKgMMTR602UHW28cO39A==", + "dev": true, + "requires": { + "@testing-library/jest-dom": "^5.12.0", + "jest-fetch-mock": "^3.0.3", + "merge": "^2.1.1", + "ts-jest": "^26.5.5", + "typescript": "^4.2.3" + } + }, + "@digita-ai/lerna-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/lerna-config/0.3.4/f418961437e86f316f96c46282c96c778fef527b847f72599a48d8a0f34453b5", + "integrity": "sha512-idC2HhQUSdulnoQZfKnGeX7+hf2AWQc5E1xHy6JMilxefob4liB9jzjcQpbtzSlXDsas3zOXrhRFb6W/clwnrA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@evocateur/libnpmaccess": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz", + "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + } + } + }, + "@evocateur/libnpmpublish": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz", + "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@evocateur/npm-registry-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz", + "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@evocateur/pacote": { + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz", + "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "bluebird": "^3.5.3", + "cacache": "^12.0.3", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.5.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.4.4", + "npm-pick-manifest": "^3.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.3", + "safe-buffer": "^5.2.0", + "semver": "^5.7.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@lerna/add": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz", + "integrity": "sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==", + "dev": true, + "requires": { + "@evocateur/pacote": "^9.6.3", + "@lerna/bootstrap": "3.21.0", + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "npm-package-arg": "^6.1.0", + "p-map": "^2.1.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/bootstrap": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz", + "integrity": "sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==", + "dev": true, + "requires": { + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/has-npm-version": "3.16.5", + "@lerna/npm-install": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/symlink-binary": "3.17.0", + "@lerna/symlink-dependencies": "3.17.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "get-port": "^4.2.0", + "multimatch": "^3.0.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0", + "read-package-tree": "^5.1.6", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/changed": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.21.0.tgz", + "integrity": "sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==", + "dev": true, + "requires": { + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.21.0", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" + } + }, + "@lerna/check-working-tree": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz", + "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", + "dev": true, + "requires": { + "@lerna/collect-uncommitted": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "@lerna/validation-error": "3.13.0" + } + }, + "@lerna/child-process": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz", + "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "execa": "^1.0.0", + "strong-log-transformer": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@lerna/clean": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz", + "integrity": "sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==", + "dev": true, + "requires": { + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0" + } + }, + "@lerna/cli": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz", + "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==", + "dev": true, + "requires": { + "@lerna/global-options": "3.13.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^14.2.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", + "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@lerna/collect-uncommitted": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz", + "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "chalk": "^2.3.1", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@lerna/collect-updates": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz", + "integrity": "sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@lerna/command": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.21.0.tgz", + "integrity": "sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/project": "3.21.0", + "@lerna/validation-error": "3.13.0", + "@lerna/write-log-file": "3.13.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^1.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/conventional-commits": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz", + "integrity": "sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==", + "dev": true, + "requires": { + "@lerna/validation-error": "3.13.0", + "conventional-changelog-angular": "^5.0.3", + "conventional-changelog-core": "^3.1.6", + "conventional-recommended-bump": "^5.0.0", + "fs-extra": "^8.1.0", + "get-stream": "^4.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "semver": "^6.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/create": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.22.0.tgz", + "integrity": "sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==", + "dev": true, + "requires": { + "@evocateur/pacote": "^9.6.3", + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "camelcase": "^5.0.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "globby": "^9.2.0", + "init-package-json": "^1.10.3", + "npm-package-arg": "^6.1.0", + "p-reduce": "^1.0.0", + "pify": "^4.0.1", + "semver": "^6.2.0", + "slash": "^2.0.0", + "validate-npm-package-license": "^3.0.3", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "braces": { + "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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fill-range": { + "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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "micromatch": { + "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", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "@lerna/create-symlink": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz", + "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==", + "dev": true, + "requires": { + "@zkochan/cmd-shim": "^3.1.0", + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/describe-ref": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz", + "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2" + } + }, + "@lerna/diff": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.21.0.tgz", + "integrity": "sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/validation-error": "3.13.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/exec": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.21.0.tgz", + "integrity": "sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/profiler": "3.20.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" + } + }, + "@lerna/filter-options": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz", + "integrity": "sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==", + "dev": true, + "requires": { + "@lerna/collect-updates": "3.20.0", + "@lerna/filter-packages": "3.18.0", + "dedent": "^0.7.0", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" + } + }, + "@lerna/filter-packages": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz", + "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==", + "dev": true, + "requires": { + "@lerna/validation-error": "3.13.0", + "multimatch": "^3.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/get-npm-exec-opts": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz", + "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/get-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz", + "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "ssri": "^6.0.1", + "tar": "^4.4.8" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/github-client": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.22.0.tgz", + "integrity": "sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@octokit/plugin-enterprise-rest": "^6.0.1", + "@octokit/rest": "^16.28.4", + "git-url-parse": "^11.1.2", + "npmlog": "^4.1.2" + } + }, + "@lerna/gitlab-client": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz", + "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==", + "dev": true, + "requires": { + "node-fetch": "^2.5.0", + "npmlog": "^4.1.2", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "@lerna/global-options": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz", + "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==", + "dev": true + }, + "@lerna/has-npm-version": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz", + "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/import": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.22.0.tgz", + "integrity": "sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "p-map-series": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/info": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/info/-/info-3.21.0.tgz", + "integrity": "sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==", + "dev": true, + "requires": { + "@lerna/command": "3.21.0", + "@lerna/output": "3.13.0", + "envinfo": "^7.3.1" + } + }, + "@lerna/init": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.21.0.tgz", + "integrity": "sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.21.0", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/link": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.21.0.tgz", + "integrity": "sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==", + "dev": true, + "requires": { + "@lerna/command": "3.21.0", + "@lerna/package-graph": "3.18.5", + "@lerna/symlink-dependencies": "3.17.0", + "p-map": "^2.1.0", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@lerna/list": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.21.0.tgz", + "integrity": "sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==", + "dev": true, + "requires": { + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" + } + }, + "@lerna/listable": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz", + "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==", + "dev": true, + "requires": { + "@lerna/query-graph": "3.18.5", + "chalk": "^2.3.1", + "columnify": "^1.5.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@lerna/log-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz", + "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==", + "dev": true, + "requires": { + "byte-size": "^5.0.1", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + } + }, + "@lerna/npm-conf": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz", + "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "@lerna/npm-dist-tag": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz", + "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "@lerna/otplease": "3.18.5", + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/npm-install": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz", + "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.2", + "write-pkg": "^3.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/npm-publish": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz", + "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==", + "dev": true, + "requires": { + "@evocateur/libnpmpublish": "^1.2.2", + "@lerna/otplease": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "read-package-json": "^2.0.13" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/npm-run-script": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz", + "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/otplease": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz", + "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==", + "dev": true, + "requires": { + "@lerna/prompt": "3.18.5", + "figgy-pudding": "^3.5.1" + } + }, + "@lerna/output": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz", + "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/pack-directory": { + "version": "3.16.4", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz", + "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==", + "dev": true, + "requires": { + "@lerna/get-packed": "3.16.0", + "@lerna/package": "3.16.0", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "npm-packlist": "^1.4.4", + "npmlog": "^4.1.2", + "tar": "^4.4.10", + "temp-write": "^3.4.0" + } + }, + "@lerna/package": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz", + "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==", + "dev": true, + "requires": { + "load-json-file": "^5.3.0", + "npm-package-arg": "^6.1.0", + "write-pkg": "^3.1.0" + }, + "dependencies": { + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "@lerna/package-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz", + "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==", + "dev": true, + "requires": { + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/validation-error": "3.13.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/prerelease-id-from-version": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz", + "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==", + "dev": true, + "requires": { + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/profiler": { + "version": "3.20.0", + "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz", + "integrity": "sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "upath": "^1.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/project": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.21.0.tgz", + "integrity": "sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==", + "dev": true, + "requires": { + "@lerna/package": "3.16.0", + "@lerna/validation-error": "3.13.0", + "cosmiconfig": "^5.1.0", + "dedent": "^0.7.0", + "dot-prop": "^4.2.0", + "glob-parent": "^5.0.0", + "globby": "^9.2.0", + "load-json-file": "^5.3.0", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "resolve-from": "^4.0.0", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "braces": { + "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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fill-range": { + "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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "micromatch": { + "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", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "@lerna/prompt": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz", + "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==", + "dev": true, + "requires": { + "inquirer": "^6.2.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/publish": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.22.1.tgz", + "integrity": "sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==", + "dev": true, + "requires": { + "@evocateur/libnpmaccess": "^3.1.2", + "@evocateur/npm-registry-fetch": "^4.0.0", + "@evocateur/pacote": "^9.6.3", + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.21.0", + "@lerna/describe-ref": "3.16.5", + "@lerna/log-packed": "3.16.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/npm-dist-tag": "3.18.5", + "@lerna/npm-publish": "3.18.5", + "@lerna/otplease": "3.18.5", + "@lerna/output": "3.13.0", + "@lerna/pack-directory": "3.16.4", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "@lerna/version": "3.22.1", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", + "semver": "^6.2.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/pulse-till-done": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz", + "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/query-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz", + "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==", + "dev": true, + "requires": { + "@lerna/package-graph": "3.18.5", + "figgy-pudding": "^3.5.1" + } + }, + "@lerna/resolve-symlink": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz", + "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^1.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/rimraf-dir": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz", + "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2", + "path-exists": "^3.0.0", + "rimraf": "^2.6.2" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@lerna/run": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.21.0.tgz", + "integrity": "sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==", + "dev": true, + "requires": { + "@lerna/command": "3.21.0", + "@lerna/filter-options": "3.20.0", + "@lerna/npm-run-script": "3.16.5", + "@lerna/output": "3.13.0", + "@lerna/profiler": "3.20.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/timer": "3.13.0", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" + } + }, + "@lerna/run-lifecycle": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz", + "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==", + "dev": true, + "requires": { + "@lerna/npm-conf": "3.16.0", + "figgy-pudding": "^3.5.1", + "npm-lifecycle": "^3.1.2", + "npmlog": "^4.1.2" + } + }, + "@lerna/run-topologically": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz", + "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==", + "dev": true, + "requires": { + "@lerna/query-graph": "3.18.5", + "figgy-pudding": "^3.5.1", + "p-queue": "^4.0.0" + } + }, + "@lerna/symlink-binary": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz", + "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==", + "dev": true, + "requires": { + "@lerna/create-symlink": "3.16.2", + "@lerna/package": "3.16.0", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/symlink-dependencies": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz", + "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==", + "dev": true, + "requires": { + "@lerna/create-symlink": "3.16.2", + "@lerna/resolve-symlink": "3.16.0", + "@lerna/symlink-binary": "3.17.0", + "fs-extra": "^8.1.0", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@lerna/timer": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz", + "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==", + "dev": true + }, + "@lerna/validation-error": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz", + "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/version": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.22.1.tgz", + "integrity": "sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.20.0", + "@lerna/command": "3.21.0", + "@lerna/conventional-commits": "3.22.0", + "@lerna/github-client": "3.22.0", + "@lerna/gitlab-client": "3.15.0", + "@lerna/output": "3.13.0", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "chalk": "^2.3.1", + "dedent": "^0.7.0", + "load-json-file": "^5.3.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", + "p-reduce": "^1.0.0", + "p-waterfall": "^1.0.0", + "semver": "^6.2.0", + "slash": "^2.0.0", + "temp-write": "^3.4.0", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "@lerna/write-log-file": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz", + "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==", + "dev": true, + "requires": { + "npmlog": "^4.1.2", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@octokit/auth-token": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.5.tgz", + "integrity": "sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/openapi-types": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-9.7.0.tgz", + "integrity": "sha512-TUJ16DJU8mekne6+KVcMV5g6g/rJlrnIKn7aALG9QrNpnEipFc1xjoarh0PKaAWf2Hf+HwthRKYt+9mCm5RsRg==", + "dev": true + }, + "@octokit/plugin-enterprise-rest": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz", + "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/request": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.1.tgz", + "integrity": "sha512-Ls2cfs1OfXaOKzkcxnqw5MR6drMA/zWX/LIS/p8Yjdz7QKTPQLMsB3R+OvoxE6XnXeXEE2X7xe4G4l4X0gRiKQ==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/rest": { + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.25.0.tgz", + "integrity": "sha512-bNvyQKfngvAd/08COlYIN54nRgxskmejgywodizQNyiKoXmWRAjKup2/LYwm+T9V0gsKH6tuld1gM0PzmOiB4Q==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^9.5.0" + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@testing-library/jest-dom": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz", + "integrity": "sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^4.2.2", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/node": { + "version": "14.17.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz", + "integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz", + "integrity": "sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw==", + "dev": true, + "optional": true, + "requires": { + "@types/jest": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.1.tgz", + "integrity": "sha512-AHqIU+SqZZgBEiWOrtN94ldR3ZUABV5dUG94j8Nms9rQnHFc8fvDOue/58K4CFz6r8OtDDc35Pw9NQPWo0Ayrw==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.29.1", + "@typescript-eslint/scope-manager": "4.29.1", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.1.tgz", + "integrity": "sha512-kl6QG6qpzZthfd2bzPNSJB2YcZpNOrP6r9jueXupcZHnL74WiuSjaft7WSu17J9+ae9zTlk0KJMXPUj0daBxMw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.29.1", + "@typescript-eslint/types": "4.29.1", + "@typescript-eslint/typescript-estree": "4.29.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.1.tgz", + "integrity": "sha512-3fL5iN20hzX3Q4OkG7QEPFjZV2qsVGiDhEwwh+EkmE/w7oteiOvUNzmpu5eSwGJX/anCryONltJ3WDmAzAoCMg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.29.1", + "@typescript-eslint/types": "4.29.1", + "@typescript-eslint/typescript-estree": "4.29.1", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.1.tgz", + "integrity": "sha512-Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.29.1", + "@typescript-eslint/visitor-keys": "4.29.1" + } + }, + "@typescript-eslint/types": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.1.tgz", + "integrity": "sha512-Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.1.tgz", + "integrity": "sha512-lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.29.1", + "@typescript-eslint/visitor-keys": "4.29.1", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.1.tgz", + "integrity": "sha512-zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.29.1", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@zkochan/cmd-shim": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz", + "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==", + "dev": true, + "requires": { + "is-windows": "^1.0.0", + "mkdirp-promise": "^5.0.1", + "mz": "^2.5.0" + } + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "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==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", + "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-includes": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "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", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz", + "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001248", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.793", + "escalade": "^3.1.1", + "node-releases": "^1.1.73" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true + }, + "byte-size": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz", + "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "cache-base": { + "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", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001251", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", + "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "class-utils": { + "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", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "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" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "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" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", + "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", + "dev": true + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "comment-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz", + "integrity": "sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA==", + "dev": true + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "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==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz", + "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz", + "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==", + "dev": true, + "requires": { + "conventional-changelog-writer": "^4.0.6", + "conventional-commits-parser": "^3.0.3", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "2.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^2.0.3", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "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==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "string_decoder": { + "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" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz", + "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz", + "integrity": "sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0", + "trim-off-newlines": "^1.0.0" + } + }, + "conventional-recommended-bump": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz", + "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.1.1", + "conventional-commits-filter": "^2.0.2", + "conventional-commits-parser": "^3.0.3", + "git-raw-commits": "2.0.0", + "git-semver-tags": "^2.0.3", + "meow": "^4.0.0", + "q": "^1.5.1" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "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==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + } + }, + "string_decoder": { + "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" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js-pure": { + "version": "3.16.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.1.tgz", + "integrity": "sha512-TyofCdMzx0KMhi84mVRS8rL1XsRk2SPUNz2azmth53iRN0/08Uim9fdhQTaZTG1LqaXHYVci4RDHka6WrXfnvg==", + "dev": true, + "optional": true + }, + "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=", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "dev": true, + "optional": true, + "requires": { + "node-fetch": "2.6.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true, + "optional": true + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "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=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "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" + }, + "dependencies": { + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz", + "integrity": "sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA==", + "dev": true, + "optional": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.3.806", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.806.tgz", + "integrity": "sha512-AH/otJLAAecgyrYp0XK1DPiGVWcOgwPeJBOLeuFQ5l//vhQhwC9u6d+GijClqJAmsHG4XDue81ndSQPohUu0xA==", + "dev": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", + "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.5.tgz", + "integrity": "sha512-XMoPKjSpXbkeJ7ZZ9icLnJMTY5Mc1kZbCakHquaFsXPpyWOwK0TK6CODO+0ca54UoM9LKOxyUNnoVZRl8TeaAg==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz", + "integrity": "sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "resolve": "^1.17.0", + "tsconfig-paths": "^3.9.0" + } + }, + "eslint-module-utils": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", + "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.0.tgz", + "integrity": "sha512-Kc6xqT9hiYi2cgybOc0I2vC9OgAYga5o/rAFinam/yF/t5uBqxQbauNPMC6fgb640T/89P0gFoO27FOilJ/Cqg==", + "dev": true, + "requires": { + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.5", + "eslint-module-utils": "^2.6.2", + "find-up": "^2.0.0", + "has": "^1.0.3", + "is-core-module": "^2.4.0", + "minimatch": "^3.0.4", + "object.values": "^1.1.3", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "debug": { + "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" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-plugin-jsdoc": { + "version": "32.3.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.4.tgz", + "integrity": "sha512-xSWfsYvffXnN0OkwLnB7MoDDDDjqcp46W7YlY1j7JyfAQBQ+WnGCfLov3gVNZjUGtK9Otj8mEhTZTqJu4QtIGA==", + "dev": true, + "requires": { + "comment-parser": "1.1.5", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.21", + "regextras": "^0.7.1", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1" + } + }, + "eslint-plugin-prefer-arrow": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", + "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "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", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "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" + } + }, + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "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" + }, + "dependencies": { + "is-extendable": { + "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" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "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", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "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" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "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==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "string_decoder": { + "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" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-raw-commits": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", + "dev": true, + "requires": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "git-semver-tags": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz", + "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==", + "dev": true, + "requires": { + "meow": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "git-up": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz", + "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^6.0.0" + } + }, + "git-url-parse": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.5.0.tgz", + "integrity": "sha512-TZYSMDeM37r71Lqg1mbnMlOqlHd7BSij9qN7XwTkRqSAYFMihGLGhfHwgqQob3GUhEneKnV4nskN9rbQw2KGxA==", + "dev": true, + "requires": { + "git-up": "^4.0.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "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", + "isobject": "^3.0.0" + } + }, + "has-values": { + "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" + }, + "dependencies": { + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "kind-of": { + "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" + } + } + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "husky": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-5.2.0.tgz", + "integrity": "sha512-AM8T/auHXRBxlrfPVLKP6jt49GCM2Zz47m8G3FOMsLmTv8Dj/fKVWE0Rh2d4Qrvmy131xEsdQnb3OXRib67PGg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz", + "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "is-accessor-descriptor": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "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", + "kind-of": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "optional": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "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" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-ssh": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz", + "integrity": "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==", + "dev": true, + "requires": { + "protocols": "^1.1.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "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==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", + "dev": true, + "optional": true, + "requires": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "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==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lerna": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz", + "integrity": "sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==", + "dev": true, + "requires": { + "@lerna/add": "3.21.0", + "@lerna/bootstrap": "3.21.0", + "@lerna/changed": "3.21.0", + "@lerna/clean": "3.21.0", + "@lerna/cli": "3.18.5", + "@lerna/create": "3.22.0", + "@lerna/diff": "3.21.0", + "@lerna/exec": "3.21.0", + "@lerna/import": "3.22.0", + "@lerna/info": "3.21.0", + "@lerna/init": "3.21.0", + "@lerna/link": "3.21.0", + "@lerna/list": "3.21.0", + "@lerna/publish": "3.22.1", + "@lerna/run": "3.21.0", + "@lerna/version": "3.22.1", + "import-local": "^2.0.0", + "npmlog": "^4.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "lint-staged": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", + "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "commander": "^6.2.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "dedent": "^0.7.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", + "listr2": "^3.2.2", + "log-symbols": "^4.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "^3.3.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "listr2": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.11.0.tgz", + "integrity": "sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^1.2.2", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.7", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "macos-release": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "dev": true + }, + "map-visit": { + "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" + } + }, + "meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "dev": true + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dev": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "mixin-deep": { + "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" + }, + "dependencies": { + "is-extendable": { + "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" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "dev": true, + "requires": { + "mkdirp": "*" + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz", + "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==", + "dev": true, + "requires": { + "array-differ": "^2.0.3", + "array-union": "^1.0.2", + "arrify": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanomatch": { + "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", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-gyp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz", + "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "1.1.74", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz", + "integrity": "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw==", + "dev": true + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "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", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "kind-of": { + "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" + } + } + } + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "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" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "object.pick": { + "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" + } + }, + "object.values": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.2" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-map-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", + "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "p-queue": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz", + "integrity": "sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==", + "dev": true, + "requires": { + "eventemitter3": "^3.1.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "p-waterfall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz", + "integrity": "sha1-ftlLPOszMngjU69qrhGqn8I1uwA=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-path": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz", + "integrity": "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0", + "qs": "^6.9.4", + "query-string": "^6.13.8" + }, + "dependencies": { + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "parse-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz", + "integrity": "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^6.1.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "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=", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "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==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", + "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", + "dev": true, + "optional": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "dev": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz", + "integrity": "sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true, + "optional": true + }, + "regex-not": { + "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" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, + "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=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "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=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "dev": true, + "requires": { + "global-dirs": "^0.1.1" + } + }, + "resolve-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz", + "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "fill-range": { + "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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "micromatch": { + "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", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "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=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "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", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snapdragon": { + "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", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "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" + } + }, + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "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", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "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", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "optional": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true + }, + "split-string": { + "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" + } + }, + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "requires": { + "readable-stream": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "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" + }, + "dependencies": { + "define-property": { + "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" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=", + "dev": true + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "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=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "tar": { + "version": "4.4.17", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.17.tgz", + "integrity": "sha512-q7OwXq6NTdcYIa+k58nEMV3j1euhDhGCs/VRw9ymx/PbH0jtIM2+VTgDE/BW3rbLkrBUXs5fzEKgic5oUciu7g==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "temp-write": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz", + "integrity": "sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "is-stream": "^1.1.0", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "requires": { + "readable-stream": "3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "to-regex": { + "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", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "dependencies": { + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + } + }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "tsconfig-paths": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", + "integrity": "sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==", + "dev": true, + "requires": { + "json5": "^2.2.0", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "uglify-js": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.1.tgz", + "integrity": "sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true + }, + "umask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "union-value": { + "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", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "dev": true, + "requires": { + "os-name": "^3.1.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unset-value": { + "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" + }, + "dependencies": { + "has-value": { + "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", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "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" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "windows-release": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", + "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "dev": true, + "requires": { + "execa": "^1.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "write-pkg": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" + } + } + } + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json index 38d7b694..95e9879a 100644 --- a/package.json +++ b/package.json @@ -1,117 +1,64 @@ { - "name": "dgt-shared", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "./scripts/build.sh", - "publish": "./scripts/publish.sh", - "build:utils": "ng build dgt-shared-utils", - "build:data": "ng build dgt-shared-data", - "build:test": "ng build dgt-shared-test", - "build:web": "ng build dgt-shared-web", - "build:connectors": "ng build dgt-shared-connectors", - "publish:utils": "npm publish dist/dgt-shared-utils", - "publish:web": "npm publish dist/dgt-shared-web", - "reinstall": "rm -rf node_modules yarn.lock && yarn install && ./scripts/linkAndBuild.sh;", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" - }, + "name": "root", "private": true, - "dependencies": { - "@angular/animations": "~7.2.0", - "@angular/cdk": "7.3.7", - "@angular/common": "~7.2.0", - "@angular/compiler": "~7.2.0", - "@angular/core": "~7.2.0", - "@angular/flex-layout": "7.0.0-beta.23", - "@angular/forms": "~7.2.0", - "@angular/material": "7.3.7", - "@angular/service-worker": "^7.2.7", - "@angular/platform-browser": "~7.2.0", - "@angular/platform-browser-dynamic": "~7.2.0", - "@angular/router": "~7.2.0", - "@comunica/actor-init-sparql": "^1.16.2", - "@comunica/actor-init-sparql-rdfjs": "^1.16.2", - "@comunica/bus-sparql-serialize": "^1.16.0", - "@nestjs/common": "^7.0.0", - "@ngrx/effects": "^7.3.0", - "@solid/jose": "^0.6.0", - "awesome-phonenumber": "^2.5.0", - "base64url": "^3.0.1", - "buffer": "^5.4.3", - "core-js": "^2.5.4", - "jsonwebtoken": "^8.2.0", - "locale2": "^2.3.1", - "lodash": "4.17.11", - "moment": "^2.23.0", - "mssql": "5.1.0", - "n3": "^1.4.0", - "passport-strategy": "^1.0.0", - "redux-beacon": "^2.0.3", - "rxjs": "6.3.3", - "sparqljs": "2.1.0", - "store2": "2.9.0", - "ts-md5": "^1.2.7", - "tslib": "^1.9.0", - "uuid": "^3.4.0", - "whatwg-url": "6.5.0", - "zone.js": "~0.8.26" + "scripts": { + "start": "lerna run start --parallel --no-bail", + "start:watch": "lerna run start:watch --parallel --no-bail", + "postinstall": "husky install", + "release": "lerna version --no-private", + "bootstrap": "npm ci && lerna bootstrap", + "bootstrap:no-ci": "npm i && lerna bootstrap --no-ci", + "build": "lerna run build --since HEAD", + "build:all": "lerna run build", + "lint": "lerna run lint --since HEAD --parallel", + "lint:all": "lerna run lint --parallel", + "lint:fix": "lerna run lint:fix --since HEAD --parallel", + "lint:fix:all": "lerna run lint:fix --parallel", + "lint:staged": "lerna run lint:staged --since HEAD --stream --concurrency 1", + "test": "lerna run test --since HEAD --parallel", + "test:all": "lerna run test --parallel", + "test:ci": "lerna run test:ci" }, "devDependencies": { - "@angular-builders/custom-webpack": "7.5.2", - "@angular-devkit/build-angular": "~0.13.0", - "@angular-devkit/build-ng-packagr": "~0.13.0", - "@angular/cli": "~7.3.3", - "@angular/compiler-cli": "~7.2.0", - "@angular/language-service": "~7.2.0", - "@ngrx/store": "^7.3.0", - "@ngx-translate/core": "11.0.1", - "@ngx-translate/http-loader": "4.0.0", - "@types/jasmine": "~2.8.8", - "@types/jasminewd2": "~2.0.3", - "@types/mocha": "^7.0.2", - "@types/n3": "^1.4.0", - "@types/passport-strategy": "^0.2.35", - "@types/solid-auth-client": "^2.3.1", - "@types/sparqljs": "2.1.0", - "@types/uuid": "3.4.3", - "@types/mssql": "6.0.1", - "angularfire2": "5.1.1", - "codelyzer": "~4.5.0", - "firebase": "5.8.4", - "jasmine-core": "~2.99.1", - "jasmine-spec-reporter": "~4.2.1", - "karma": "~4.0.0", - "karma-chrome-launcher": "~2.2.0", - "karma-coverage-istanbul-reporter": "~2.0.1", - "karma-jasmine": "~1.1.2", - "karma-jasmine-html-reporter": "^0.2.2", - "ng-packagr": "^5.5.0", - "protractor": "~5.4.0", - "rdflib": "^1.0.4", - "ts-node": "~7.0.0", - "tsickle": "0.34.0", - "tslib": "^1.9.0", - "tslint": "~5.11.0", - "typescript": "3.8.3" + "@commitlint/cli": "^12.0.1", + "@digita-ai/commitlint-config": "^0.3.2", + "@digita-ai/eslint-config": "^0.3.2", + "@digita-ai/jest-config": "^0.3.2", + "@digita-ai/lerna-config": "^0.3.2", + "@types/jest": "^26.0.22", + "@types/node": "^14.14.41", + "@typescript-eslint/eslint-plugin": "^4.19.0", + "eslint": "^7.22.0", + "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jsdoc": "^32.3.0", + "eslint-plugin-prefer-arrow": "^1.2.3", + "husky": "^5.2.0", + "jest": "^26.6.3", + "lerna": "^3.22.1", + "lint-staged": "^10.5.4", + "ts-jest": "^26.5.5", + "ts-node": "^9.1.1", + "typescript": "^4.2.3" + }, + "commitlint": { + "extends": [ + "@digita-ai/commitlint-config" + ] + }, + "eslintConfig": { + "extends": [ + "@digita-ai/eslint-config" + ] }, - "browser": { - "http": false, - "https": false, - "net": false, - "path": false, - "stream": false, - "tls": false, - "fs": false, - "crypto": false, - "fetch": false, - "window": false + "lint-staged": { + "**/*.(js|ts)": [ + "eslint --fix" + ] }, - "peerDependencies": { - "@angular/cdk": "7.3.7", - "@angular/material": "7.3.7", - "@types/node": "~11.9.5" + "jest": { + "projects": [ + "./packages/*/package.json" + ] } } diff --git a/packages/dgt-components/.npmrc b/packages/dgt-components/.npmrc new file mode 100644 index 00000000..afdc90d6 --- /dev/null +++ b/packages/dgt-components/.npmrc @@ -0,0 +1,5 @@ +registry=https://registry.npmjs.org/ + +@digita-ai:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=${NPM_TOKEN} +always-auth=true \ No newline at end of file diff --git a/packages/dgt-components/Dockerfile b/packages/dgt-components/Dockerfile new file mode 100644 index 00000000..eccebf98 --- /dev/null +++ b/packages/dgt-components/Dockerfile @@ -0,0 +1,16 @@ +FROM node:14-alpine AS build +ARG NPM_TOKEN +WORKDIR /usr/src/app +COPY package*.json ./ +COPY .npmrc ./ +RUN echo "//npm.pkg.github.com/:_authToken=$NPM_TOKEN" >> .npmrc && \ + npm install && \ + rm -f .npmrc +COPY . . +RUN npm run build + +FROM nginx:stable-alpine +LABEL org.opencontainers.image.source=https://github.com/digita-ai/dgt-platform +COPY --from=build /usr/src/app/dist /usr/share/nginx/html +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/packages/dgt-components/demo/data/payslips.txt b/packages/dgt-components/demo/data/payslips.txt new file mode 100644 index 00000000..2a1b71f6 --- /dev/null +++ b/packages/dgt-components/demo/data/payslips.txt @@ -0,0 +1,203 @@ +@prefix pay: . +@prefix XML: . +@prefix : <#>. + +:payslip-jan-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1609459200"; + pay:until "1612051200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". + + +:payslip-feb-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1612137600"; + pay:until "1614470400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". + + +:payslip-mar-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1614556800"; + pay:until "1617148800"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". + + +:payslip-apr-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1616976000"; + pay:until "1617494400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-apr-2021-w2 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1617580800"; + pay:until "1618099200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-apr-2021-w3 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1618185600"; + pay:until "1618704000"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-apr-2021-w4 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1618790400"; + pay:until "1619308800"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + + +:payslip-may-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1620000000"; + pay:until "1620518400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-may-2021-w2 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1620604800"; + pay:until "1621123200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-may-2021-w3 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1621209600"; + pay:until "1621728000"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-may-2021-w4 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1621814400"; + pay:until "1622332800"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + + +:payslip-jun-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1622419200"; + pay:until "1622937600"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-jun-2021-w2 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1623024000"; + pay:until "1623542400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-jun-2021-w3 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1623628800"; + pay:until "1624147200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-jun-2021-w4 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1624233600"; + pay:until "1624752000"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". diff --git a/packages/dgt-components/demo/data/profile.txt b/packages/dgt-components/demo/data/profile.txt new file mode 100644 index 00000000..52d4cffe --- /dev/null +++ b/packages/dgt-components/demo/data/profile.txt @@ -0,0 +1,245 @@ +@prefix : <#>. +@prefix solid: . +@prefix foaf: . +@prefix pim: . +@prefix schema: . +@prefix ldp: . +@prefix c0: . +@prefix c1: . +@prefix prof: <./>. +@prefix n3: . +@prefix in: . +@prefix n4: . +@prefix c: . +@prefix n: . +@prefix pay: . + +prof:card a foaf:PersonalProfileDocument; foaf:maker :me; foaf:primaryTopic :me. + +:id1601909945358 + n:country-name "Belgium"; + n:locality "Brussels"; + n:postal-code "1000"; + n:region "Brusssels"; + n:street-address "Country Road 69". + +:id1589374025993 a n:Work; n:value . +:id1589374027282 a n:Home; n:value . + +:id1601214413622 a n:Work; n:value . +:id1601214413645 a n:Home; n:value . + +:me + a schema:Person, foaf:Person; + n:hasPhoto ; + n:note "I enjoy nettle soup!"; + n:organization-name "Cynalco Medics"; + n:role "Janitor & Maintenance"; + solid:privateTypeIndex ; + solid:publicTypeIndex ; + n:hasEmail :id1589374025993, :id1589374027282; + n:hasAddress :id1601909945358; + n:hasTelephone :id1601214413622, :id1601214413645; + foaf:nick "tonyp"; + n:honorific-prefix "Mr."; + foaf:name "Tony Paillard". + +:payslip-jan-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1609459200"; + pay:until "1612051200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". + + +:payslip-feb-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1612137600"; + pay:until "1614470400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". + + +:payslip-mar-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1614556800"; + pay:until "1617148800"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". + + +:payslip-apr-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1616976000"; + pay:until "1617494400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-apr-2021-w2 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1617580800"; + pay:until "1618099200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-apr-2021-w3 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1618185600"; + pay:until "1618704000"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-apr-2021-w4 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1618790400"; + pay:until "1619308800"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + + +:payslip-may-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1620000000"; + pay:until "1620518400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-may-2021-w2 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1620604800"; + pay:until "1621123200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-may-2021-w3 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1621209600"; + pay:until "1621728000"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-may-2021-w4 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1621814400"; + pay:until "1622332800"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + + +:payslip-jun-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1622419200"; + pay:until "1622937600"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-jun-2021-w2 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1623024000"; + pay:until "1623542400"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-jun-2021-w3 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1623628800"; + pay:until "1624147200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". + +:payslip-jun-2021-w4 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1624233600"; + pay:until "1624752000"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "750"; + pay:taxableAmount "650"; + pay:netAmount "550". diff --git a/packages/dgt-components/demo/data/singlePayslip.txt b/packages/dgt-components/demo/data/singlePayslip.txt new file mode 100644 index 00000000..3f167805 --- /dev/null +++ b/packages/dgt-components/demo/data/singlePayslip.txt @@ -0,0 +1,16 @@ +@prefix pay: . +@prefix XML: . +@prefix : <#>. + +:payslip-jan-2021-w1 + a pay:payslip; + pay:employer ; + pay:employee ; + pay:from "1609459200"; + pay:until "1612051200"; + pay:stature "White Collar"; + pay:dependent "1"; + pay:wageUnit ; + pay:grossAmount "2600"; + pay:taxableAmount "2200"; + pay:netAmount "1500". diff --git a/packages/dgt-components/demo/demo.ts b/packages/dgt-components/demo/demo.ts new file mode 100644 index 00000000..5f4b9e7c --- /dev/null +++ b/packages/dgt-components/demo/demo.ts @@ -0,0 +1,55 @@ +import { Parser } from 'n3'; +import { ComponentEventType, ComponentReadEvent, ComponentResponseEvent, ComponentWriteEvent } from '@digita-ai/semcom-sdk'; +import {ProfileNameComponent} from '../lib/profile/profile-name.component'; +import {FormElementComponent} from '../lib/forms/form-element.component'; +import {ContentHeaderComponent} from '../lib/header/content-header.component'; +import {CardComponent} from '../lib/cards/card.component'; +import { ProfileContactComponent } from '../lib/profile/profile-contact.component'; +import { ProfilePayslipComponent } from '../lib/profile/profile-payslip.component'; + +customElements.define('nde-form-element', FormElementComponent); +customElements.define('nde-content-header', ContentHeaderComponent); +customElements.define('nde-card', CardComponent); +customElements.define('profile-name-component', ProfileNameComponent); +customElements.define('profile-contact-component', ProfileContactComponent); +customElements.define('profile-payslip-component',  ProfilePayslipComponent); + +const parser = new Parser(); + +document.addEventListener(ComponentEventType.READ, (event: ComponentReadEvent) => { + + console.log('reading', event); + + if (!event || !event.detail || !event.detail.uri) { + + throw new Error('Argument event || !event.detail || !event.detail.uri should be set.'); + + } + + fetch(event.detail.uri).then((response) => response.text().then((profileText) => { + + const quads = parser.parse(profileText); + + event.target?.dispatchEvent(new ComponentResponseEvent({ + detail: { uri: event.detail.uri, cause: event, data: quads, success: true }, + })); + + })); + +}); + +document.addEventListener(ComponentEventType.WRITE, (event: ComponentWriteEvent) => { + + console.log('writing', event); + + if (!event || !event.detail || !event.detail.uri) { + + throw new Error('Argument event || !event.detail || !event.detail.uri should be set.'); + + } + + setTimeout(() => event.target?.dispatchEvent(new ComponentResponseEvent({ + detail: { ...event.detail, cause: event, success: true }, + })), 2000); + +}); diff --git a/packages/dgt-components/demo/index.html b/packages/dgt-components/demo/index.html new file mode 100644 index 00000000..7081cd5f --- /dev/null +++ b/packages/dgt-components/demo/index.html @@ -0,0 +1,22 @@ + + + + + SemCom Components + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-components/demo/styles.module.css b/packages/dgt-components/demo/styles.module.css new file mode 100644 index 00000000..767619aa --- /dev/null +++ b/packages/dgt-components/demo/styles.module.css @@ -0,0 +1,23 @@ +@import '../node_modules/@digita-ai/dgt-theme/dist/style.css'; + +html { + height: 100% +} + +body { + height: 100%; + background-color: var(--colors-background-normal); + display: flex; + flex-direction: column; + align-items: stretch; +} + +body > * { + margin-bottom: var(--gap-large); + max-width: 600px; +} + +:global(.content) { + flex: 1 0; + padding: 80px; +} diff --git a/packages/dgt-components/lib/alerts/alert.component.spec.ts b/packages/dgt-components/lib/alerts/alert.component.spec.ts new file mode 100644 index 00000000..86a65720 --- /dev/null +++ b/packages/dgt-components/lib/alerts/alert.component.spec.ts @@ -0,0 +1,161 @@ +import { DGTErrorArgument, MemoryTranslator } from '@digita-ai/dgt-utils'; +import { Alert } from './alert'; +import { AlertComponent } from './alert.component'; + +describe('AlertComponent', () => { + + let component: AlertComponent; + + beforeEach(() => { + + component = window.document.createElement('nde-alert') as AlertComponent; + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + it('should print message when no translator is set', async () => { + + component.alert = { + type: 'success', + message: 'Foo', + }; + + window.document.body.appendChild(component); + await component.updateComplete; + + const message = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.message').innerHTML.replace(//g, ''); + + expect(message).toBe('Foo'); + + }); + + it('should translate message when translator is set and translation is found', async () => { + + component.alert = { + type: 'success', + message: 'foo', + }; + + component.translator = new MemoryTranslator([ { key: 'foo', value:'bar', locale:'en-GB' } ], 'en-GB'); + + window.document.body.appendChild(component); + await component.updateComplete; + + const message = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.message').innerHTML.replace(//g, ''); + + expect(message).toBe('bar'); + + }); + + it('should not print message when translator is set but translation is not found', async () => { + + component.alert = { + type: 'success', + message: 'foo', + }; + + component.translator = new MemoryTranslator([ { key: 'lorem', value:'bar', locale:'en-GB' } ], 'en-GB'); + + window.document.body.appendChild(component); + await component.updateComplete; + + const message = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.message').innerHTML.replace(//g, ''); + + expect(message.trim()).toBe(component.alert.message); + + }); + + it.each([ 'success', 'warning', 'danger' ])('should be assigned the appropriate class when %s', async (type: 'success' | 'warning' | 'danger') => { + + component.alert = { + type, + message: 'Foo', + }; + + window.document.body.appendChild(component); + await component.updateComplete; + + const alert = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector(`.alert.${type}`); + + expect(alert).toBeTruthy(); + + }); + + it('should be assigned the appropriate class when no type set', async () => { + + component.alert = { + type: null, + message: 'Foo', + }; + + window.document.body.appendChild(component); + await component.updateComplete; + + const alert = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.alert.warning'); + + expect(alert).toBeTruthy(); + + }); + + it('should call dismiss when dismiss is clicked', async () => { + + component.alert = { + type: 'success', + message: 'Foo', + }; + + component.dismiss = jest.fn(); + + window.document.body.appendChild(component); + await component.updateComplete; + + const dismiss = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.dismiss') as HTMLElement; + dismiss.click(); + + expect(component.dismiss).toHaveBeenCalledTimes(1); + + }); + + it('should dispatch event when dismiss is clicked', async () => { + + component.alert = { + type: 'success', + message: 'Foo', + }; + + component.dispatchEvent = jest.fn(); + + window.document.body.appendChild(component); + await component.updateComplete; + + const dismiss = window.document.body.getElementsByTagName('nde-alert')[0].shadowRoot.querySelector('.dismiss') as HTMLElement; + dismiss.click(); + + expect(component.dispatchEvent).toHaveBeenCalledTimes(1); + expect(component.dispatchEvent).toHaveBeenCalledWith(new CustomEvent('dismiss', { detail: component.alert })); + + }); + + it('should throw error when dismiss is clicked when no alert is set', async () => { + + component.alert = null; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(() => component.dismiss()).toThrow(DGTErrorArgument); + + }); + +}); diff --git a/packages/dgt-components/lib/alerts/alert.component.ts b/packages/dgt-components/lib/alerts/alert.component.ts new file mode 100644 index 00000000..4179d333 --- /dev/null +++ b/packages/dgt-components/lib/alerts/alert.component.ts @@ -0,0 +1,125 @@ +import { css, html, LitElement, property, unsafeCSS } from 'lit-element'; +import { DGTErrorArgument, DGTLoggerService, Translator } from '@digita-ai/dgt-utils'; +import { Bell, Cross, Theme } from '@digita-ai/dgt-theme'; +import { unsafeSVG } from 'lit-html/directives/unsafe-svg'; +import { Alert } from './alert'; + +/** + * A component which shows the details of a single alert. + */ +export class AlertComponent extends LitElement { + + /** + * The component's logger. + */ + @property({ type: DGTLoggerService }) + public logger: DGTLoggerService; + + /** + * The component's translator. + */ + @property({ type: Translator }) + public translator: Translator; + + /** + * The collection which will be rendered by the component. + */ + @property({ type: Object }) + public alert: Alert; + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + :host { + display: block; + } + + .alert { + padding: var(--gap-normal) var(--gap-small); + display: flex; + align-items: center; + } + .alert div { + margin: 0 var(--gap-small); + } + .alert.success { + background-color: var(--colors-status-success); + } + .alert.warning { + background-color: var(--colors-status-warning); + } + .alert.danger { + background-color: var(--colors-status-danger); + color: var(--colors-foreground-inverse); + } + .alert.danger svg { + fill: var(--colors-foreground-inverse); + } + .alert .icon { + height: 25px; + } + .alert .icon svg { + max-height: 25px; + max-width: 25px; + } + .alert .dismiss { + cursor: pointer; + padding: 0px var(--gap-small); + } + .alert .dismiss svg { + max-height: var(--gap-small); + max-width: var(--gap-small); + } + .alert .message { + flex: 1 0; + } + `, + ]; + + } + + /** + * Dispatches an event to dismiss the alert. + */ + dismiss() { + + this.logger?.debug(AlertComponent.name, 'Dismissing alert', this.alert); + + if (!this.alert) { + + throw new DGTErrorArgument('Argument this.alert should be set.', this.alert); + + } + + this.dispatchEvent(new CustomEvent('dismiss', { detail:this.alert })); + + } + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + const message = this.translator ? this.translator.translate(this.alert?.message) : this.alert?.message; + const type = this.alert && this.alert.type ? this.alert.type : 'warning'; + + return html` +
+
${ unsafeSVG(Bell) }
+
${ message }
+
${ unsafeSVG(Cross) }
+
+ `; + + } + +} + +export default AlertComponent; diff --git a/packages/dgt-components/lib/alerts/alert.ts b/packages/dgt-components/lib/alerts/alert.ts new file mode 100644 index 00000000..e0c96938 --- /dev/null +++ b/packages/dgt-components/lib/alerts/alert.ts @@ -0,0 +1,4 @@ +export interface Alert { + message: string; + type: 'success' | 'warning' | 'danger'; +} diff --git a/packages/dgt-components/lib/base/base.component.ts b/packages/dgt-components/lib/base/base.component.ts new file mode 100644 index 00000000..a3d952b7 --- /dev/null +++ b/packages/dgt-components/lib/base/base.component.ts @@ -0,0 +1,142 @@ +/* eslint-disable no-console */ +import { Component } from '@digita-ai/semcom-core'; +import { ComponentAppendEvent, ComponentEventType, ComponentReadEvent, ComponentResponseEvent, ComponentWriteEvent } from '@digita-ai/semcom-sdk'; +import { property } from 'lit-element'; +import { Quad } from 'rdf-js'; +import { RxLitElement } from 'rx-lit'; + +/** + * A base component which implements the Semcom-standard by using Lit. + */ +export abstract class BaseComponent extends RxLitElement implements Component { + + @property({ type: String }) entry?: string; + + /** + * Instantiates a `BaseComponent`, and add an event listener to handle `ComponentResponseEvent`s. + */ + constructor() { + + super(); + + this.addEventListener(ComponentEventType.RESPONSE, this.handleResponse); + + } + + /** + * Handles a response event. Can be used to update the component's properties based on the data in the response. + * + * @param event The response event to handle. + */ + abstract handleResponse(event: ComponentResponseEvent): void; + + /** + * Send a `ComponentReadEvent` to the component's parent to request data of a given resource. + * + * @param uri The uri of the resource to read. + */ + readData(uri: string): void { + + if (!uri) { + + throw new Error('Argument uri should be set.'); + + } + + this.dispatchEvent(new ComponentReadEvent({ + detail: { uri }, + bubbles: true, + composed: true, + })); + + } + + /** + * Send a `ComponentWriteEvent` to the component's parent to write data to a given resource. + * + * @param uri The uri of the resource to read. + * @param data The data which should be written to the resource. + */ + writeData(uri: string, data: Quad[]): void { + + if (!uri) { + + throw new Error('Argument uri should be set.'); + + } + + if (!data) { + + throw new Error('Argument data should be set.'); + + } + + this.dispatchEvent(new ComponentWriteEvent({ + detail: { uri, data }, + })); + + } + + /** + * Send a `ComponentAppendEvent` to the component's parent to append data to a given resource. + * + * @param uri The uri of the resource to read. + * @param data The data which should be appended to the resource. + */ + appendData(uri: string, data: Quad[]): void { + + if (!uri) { + + throw new Error('Argument uri should be set.'); + + } + + if (!data) { + + throw new Error('Argument data should be set.'); + + } + + this.dispatchEvent(new ComponentAppendEvent({ + detail: { uri, data }, + })); + + } + + /* + * W3C Custom Element Specification (from MDN) + */ + + // Invoked each time the element is appended into a DOM (i.e. when node is added or moved). + connectedCallback() { + + super.connectedCallback(); + console.debug(`[${this.tagName}] Element connected`); + + } + + // Invoked each time the element is disconnected from a DOM. + disconnectedCallback() { + + super.disconnectedCallback(); + console.debug(`[${this.tagName}] Element disconnected`); + + } + + // Invoked each time the custom element is moved to a new DOM. + adoptedCallback() { + + // super.adoptedCallback(); + console.debug(`[${this.tagName}] Element moved to other DOM`); + + } + + // Invoked each time one of the element's attributes specified in observedAttributes is changed. + attributeChangedCallback(name: string, oldValue: string, newValue: string) { + + super.attributeChangedCallback(name, oldValue, newValue); + console.debug(`[${this.tagName}] Changed ${name} attribute from "${oldValue}" to "${newValue}"`); + + } + +} diff --git a/packages/dgt-components/lib/cards/card.component.spec.ts b/packages/dgt-components/lib/cards/card.component.spec.ts new file mode 100644 index 00000000..290f145d --- /dev/null +++ b/packages/dgt-components/lib/cards/card.component.spec.ts @@ -0,0 +1,81 @@ +import { CardComponent } from './card.component'; + +describe('CardComponent', () => { + + let component: CardComponent; + const tag = 'nde-large-card'; + + beforeEach(() => { + + component = window.document.createElement(tag) as CardComponent; + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + it('should display header, image and content', async () => { + + window.document.body.appendChild(component); + await component.updateComplete; + + const largeCard = window.document.body.getElementsByTagName(tag)[0].shadowRoot; + + expect(largeCard.querySelector('nde-content-header')).toBeTruthy(); + expect(largeCard.querySelector('.image')).toBeTruthy(); + expect(largeCard.querySelector('.content')).toBeTruthy(); + + }); + + it('should not display header when showHeader is false', async () => { + + component.showHeader = false; + window.document.body.appendChild(component); + await component.updateComplete; + + const largeCard = window.document.body.getElementsByTagName(tag)[0].shadowRoot; + + expect(largeCard.querySelector('nde-content-header')).not.toBeTruthy(); + expect(largeCard.querySelector('.image')).toBeTruthy(); + expect(largeCard.querySelector('.content')).toBeTruthy(); + + }); + + it('should not display image when showImage is false', async () => { + + component.showImage = false; + window.document.body.appendChild(component); + await component.updateComplete; + + const largeCard = window.document.body.getElementsByTagName(tag)[0].shadowRoot; + + expect(largeCard.querySelector('nde-content-header')).toBeTruthy(); + expect(largeCard.querySelector('.image')).not.toBeTruthy(); + expect(largeCard.querySelector('.content')).toBeTruthy(); + + }); + + it('should not display content when showContent is false', async () => { + + component.showContent = false; + window.document.body.appendChild(component); + await component.updateComplete; + + const largeCard = window.document.body.getElementsByTagName(tag)[0].shadowRoot; + + expect(largeCard.querySelector('nde-content-header')).toBeTruthy(); + expect(largeCard.querySelector('.image')).toBeTruthy(); + expect(largeCard.querySelector('.content')).not.toBeTruthy(); + + }); + +}); diff --git a/packages/dgt-components/lib/cards/card.component.ts b/packages/dgt-components/lib/cards/card.component.ts new file mode 100644 index 00000000..59ec61e7 --- /dev/null +++ b/packages/dgt-components/lib/cards/card.component.ts @@ -0,0 +1,99 @@ +import { Theme } from '@digita-ai/dgt-theme'; +import { css, html, LitElement, property, unsafeCSS } from 'lit-element'; + +/** + * A large card component + */ +export class CardComponent extends LitElement { + + /** Determine whether the header of the card should be shown */ + @property({ type: Boolean }) + public showHeader = true; + + /** Determine whether the image of the card should be shown */ + @property({ type: Boolean }) + public showImage = true; + + /** Determine whether the content of the card should be shown */ + @property({ type: Boolean }) + public showContent = true; + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + .large-card { + display: flex; + flex-direction: column; + gap: 0; + } + .content { + background-color: var(--colors-foreground-inverse); + padding: var(--gap-large); + } + .image { + flex: 0 0 200px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: var(--colors-foreground-inverse); + } + .image slot[name="image"]::slotted(*) { + height: 200px; + width: 100%; + object-fit: cover; + } + .reduced-top-padding { + padding-top: var(--gap-normal); + } + `, + ]; + + } + + render() { + + return html` +
+ + ${this.showHeader + ? html` + + + + + + ` + : html`` +} + ${this.showImage + ? html` +
+ +
+ ` + : html`` +} + + ${this.showContent + ? html` +
+ +
+ ` + : html`` +} + +
+ `; + + } + +} + +export default CardComponent; diff --git a/packages/dgt-components/lib/forms/form-element.component.spec.ts b/packages/dgt-components/lib/forms/form-element.component.spec.ts new file mode 100644 index 00000000..4ffc2d97 --- /dev/null +++ b/packages/dgt-components/lib/forms/form-element.component.spec.ts @@ -0,0 +1,269 @@ +import { DGTErrorArgument } from '@digita-ai/dgt-utils'; +import { Observable, of } from 'rxjs'; +import { interpret, Interpreter } from 'xstate'; +import { FormElementComponent } from './form-element.component'; +import { FormValidatorResult } from './form-validator-result'; +import { FormEvent, FormEvents } from './form.events'; +import { FormContext, formMachine } from './form.machine'; + +interface TData { + name: string; + uri: string; + description: string; +} + +describe('FormElementComponent', () => { + + let component: FormElementComponent; + let machine: Interpreter>; + let input; + + beforeEach(() => { + + machine = interpret( + formMachine( + (context: FormContext, event: FormEvent): Observable => of([ + ...context.data && context.data.name ? [] : [ { field: 'name', message: 'demo-form.name.required' } ], + ...context.data && context.data.uri ? [] : [ { field: 'uri', message: 'demo-form.uri.required' } ], + ]), + ) + .withContext({ + data: { uri: '', name: 'Test', description: 'description' }, + original: { uri: '', name: 'Test', description: 'description' }, + validation: [], + }), + ); + + component = window.document.createElement('nde-form-element') as FormElementComponent; + + component.actor = machine; + component.field = 'name'; + component.data = { uri: '', name: 'Test', description: 'description' }; + + const label = window.document.createElement('label'); + label.innerHTML = 'Foo'; + label.slot = 'label'; + component.appendChild(label); + + const help = window.document.createElement('div'); + help.innerHTML = 'Bar'; + help.slot = 'help'; + component.appendChild(help); + + const icon = window.document.createElement('div'); + icon.innerHTML = 'x'; + icon.slot = 'icon'; + component.appendChild(icon); + + const action = window.document.createElement('button'); + action.innerHTML = 'go'; + action.slot = 'action'; + component.appendChild(action); + + input = window.document.createElement('input'); + input.type = 'text'; + input.slot = 'input'; + component.appendChild(input); + + jest.clearAllMocks(); + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + it('should set default value on slotted input field', async () => { + + window.document.body.appendChild(component); + await component.updateComplete; + + expect((window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelector('.field slot').assignedElements()[0] as HTMLInputElement).value).toBe('Test'); + + }); + + xit('should send SUBMITTED event when enter keypress', async (done) => { + + machine.onEvent(((event) => { + + if(event.type === FormEvents.FORM_SUBMITTED) { + + done(); + + } + + })); + + window.document.body.appendChild(component); + await component.updateComplete; + + input.dispatchEvent(new KeyboardEvent('keypress', { key: 'Enter' })); + + }); + + xit('should send event when updating slotted input field', async (done) => { + + machine.onEvent(((event) => { + + if(event.type === FormEvents.FORM_UPDATED) { + + done(); + + } + + })); + + window.document.body.appendChild(component); + await component.updateComplete; + + // const input = window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelector('.input slot').assignedElements()[0] as HTMLInputElement; + + input.value = 'Lorem'; + input.dispatchEvent(new Event('input')); + + }); + + it('should show validation results', async () => { + + component.validationResults = [ { field: 'name', message: 'lorem' } ]; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelectorAll('.results .result').length).toBe(1); + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelectorAll('.help[hidden]').length).toBe(1); + + }); + + it('should show static slotted content', async () => { + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelector('.help slot').assignedElements().length).toBe(1); + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelector('.label slot').assignedElements().length).toBe(1); + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelector('.icon slot').assignedElements().length).toBe(1); + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelector('.action slot').assignedElements().length).toBe(1); + + }); + + it('should show loading when validating is true', async () => { + + component.showLoading = true; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelectorAll('.icon .loading').length).toEqual(1); + + }); + + it('should not show loading when validating is false', async () => { + + component.showLoading = false; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelectorAll('.icon .loading').length).toEqual(0); + + }); + + it('should show icon when not loading', async () => { + + component.showLoading = false; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelectorAll('.icon slot[name="icon"]').length).toEqual(1); + + }); + + it('should not show icon when loading', async () => { + + component.showLoading = true; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-form-element')[0].shadowRoot.querySelectorAll('.icon slot[name="icon"]').length).toEqual(0); + + }); + + it('should disable input when locked', async () => { + + component.lockInput = true; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(input.disabled).toBeTruthy(); + + }); + + it('should enable input when not locked', async () => { + + component.lockInput = false; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(input.disabled).toBeFalsy(); + + }); + + describe('bindActorToInput', () => { + + const slot: HTMLSlotElement = { + ...window.document.createElement('input'), + assignedElements: jest.fn(), + assignedNodes: jest.fn(), + }; + + const actor = interpret(formMachine((context, event): any => of([]))); + const data = { name: '', description: '', uri: '' }; + + it('should throw when slot in undefined', async() => { + + expect(() => component.bindActorToInput( + undefined, actor, 'name', data, + )).toThrow(DGTErrorArgument); + + }); + + it('should throw when actor in undefined', async() => { + + expect(() => component.bindActorToInput( + slot, undefined, 'name', data, + )).toThrow(DGTErrorArgument); + + }); + + it('should throw when field in undefined', async() => { + + expect(() => component.bindActorToInput( + slot, actor, undefined, data, + )).toThrow(DGTErrorArgument); + + }); + + it('should throw when data in undefined', async() => { + + expect(() => component.bindActorToInput( + slot, actor, 'name', undefined, + )).toThrow(DGTErrorArgument); + + }); + + }); + +}); diff --git a/packages/dgt-components/lib/forms/form-element.component.ts b/packages/dgt-components/lib/forms/form-element.component.ts new file mode 100644 index 00000000..afb73d97 --- /dev/null +++ b/packages/dgt-components/lib/forms/form-element.component.ts @@ -0,0 +1,320 @@ +import { css, html, internalProperty, property, PropertyValues, query, unsafeCSS } from 'lit-element'; +import { unsafeSVG } from 'lit-html/directives/unsafe-svg'; +import { DGTErrorArgument, Translator, debounce } from '@digita-ai/dgt-utils'; +import { SpawnedActorRef, State } from 'xstate'; +import { RxLitElement } from 'rx-lit'; +import { from } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { Loading, Theme } from '@digita-ai/dgt-theme'; +import { FormContext, FormRootStates, FormSubmissionStates, FormValidationStates } from './form.machine'; +import { FormValidatorResult } from './form-validator-result'; +import { FormEvent, FormEvents, FormUpdatedEvent } from './form.events'; + +/** + * A component which shows the details of a single collection. + */ +export class FormElementComponent extends RxLitElement { + + /** + * All input elements slotted in the form element. + */ + @internalProperty() + inputs: HTMLInputElement[]; + + /** + * The slot element which contains the input field. + */ + @query('slot[name="input"]') + inputSlot: HTMLSlotElement; + + /** + * Decides whether a border should be shown around the content + */ + @property() + public inverse = false; + + /** + * Decides whether the label should be shown + */ + @property() + public showLabel = true; + + /** + * The component's translator. + */ + @property({ type: Translator }) + public translator: Translator; + + /** + * The name of the data attribute edited by the form element. + */ + @property({ type: String }) + public field: keyof T; + + /** + * The element's form validation results. + */ + @internalProperty() + public validationResults: FormValidatorResult[]; + + /** + * Indicates if the element's loading icon should be shown. + */ + @internalProperty() + public showLoading = false; + + /** + * Indicates if the form should submit on keypress = enter. + */ + @internalProperty() + public submitOnEnter = true; + + /** + * Indicates if the form's input should be locked. + */ + @internalProperty() + public lockInput = false; + + /** + * Timeout to use when debouncing input. + */ + @property() + public debounceTimeout = 500; + + /** + * The element's data. + */ + @internalProperty() + public data: T; + + /** + * The actor controlling this component. + */ + @property({ type: Object }) + public actor: SpawnedActorRef>>; + + /** + * Hook called on every update after connection to the DOM. + */ + updated(changed: PropertyValues) { + + super.updated(changed); + + if(changed.has('actor') && this.actor) { + + // Subscribes to the field's validation results. + this.subscribe('validationResults', from(this.actor).pipe( + map((state) => state.context?.validation?.filter((result) => result.field === this.field)), + )); + + // Subscribes to data in the actor's context. + this.subscribe('data', from(this.actor).pipe( + map((state) => state.context?.data), + )); + + // Subscribes to data in the actor's context. + this.subscribe('showLoading', from(this.actor).pipe( + map((state) => state.matches(FormSubmissionStates.SUBMITTING) || state.matches({ + [FormSubmissionStates.NOT_SUBMITTED]:{ + [FormRootStates.VALIDATION]: FormValidationStates.VALIDATING, + }, + })), + )); + + // Subscribes to data in the actor's context. + this.subscribe('lockInput', from(this.actor).pipe( + map((state) => state.matches(FormSubmissionStates.SUBMITTING) || state.matches(FormSubmissionStates.SUBMITTED)), + )); + + this.bindActorToInput(this.inputSlot, this.actor, this.field, this.data); + + } + + /** + * Update the disabled state of the input elements. + */ + if(changed.has('lockInput')) { + + this.inputs?.forEach((element) => element.disabled = this.lockInput); + + } + + } + + /** + * Binds default data and event listener for input form. + */ + bindActorToInput( + slot: HTMLSlotElement, + actor: SpawnedActorRef>>, + field: keyof T, + data: T, + ) { + + if (!slot) { + + throw new DGTErrorArgument('Argument slot should be set.', slot); + + } + + if (!actor) { + + throw new DGTErrorArgument('Argument actor should be set.', actor); + + } + + if (!field) { + + throw new DGTErrorArgument('Argument field should be set.', field); + + } + + if (!data) { + + throw new DGTErrorArgument('Argument data should be set.', data); + + } + + this.inputs = slot.assignedNodes({ flatten: true })?.filter( + (element) => element instanceof HTMLInputElement, + ).map((element) => element as HTMLInputElement); + + this.inputs?.forEach((element) => { + + // Set the input field's default value. + const fieldData = data[this.field]; + element.value = typeof fieldData === 'string' ? fieldData : ''; + + // Send event when input field's value changes. + element.addEventListener('input', debounce(() => actor.send({ type: FormEvents.FORM_UPDATED, value: element.value, field } as FormUpdatedEvent), this.debounceTimeout)); + + // Listen for Enter presses to submit + if (this.submitOnEnter) { + + element.addEventListener('keypress', (event) => { + + if (event.key === 'Enter') { + + actor.send({ type: FormEvents.FORM_SUBMITTED }); + + } + + }); + + } + + }); + + } + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` +
+ ${this.showLabel + ? html` +
+ +
+ ` : '' +} +
+
+ +
+ ${this.showLoading ? html`
${ unsafeSVG(Loading) }
` : html``} +
+
+
+ +
+
+
+ +
+
+ ${this.validationResults?.map((result) => html`
${this.translator ? this.translator.translate(result.message) : result.message}
`)} +
+
+ `; + + } + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + :root { + display: block; + } + + .loading svg .loadCircle { + stroke: var(--colors-primary-normal); + } + + .no-border, .no-border ::slotted(*) { + border: none !important; + } + .form-element { + display: flex; + flex-direction: column; + align-items: stretch; + } + .form-element .label { + font-weight: var(--font-weight-bold); + margin-bottom: var(--gap-small); + } + .form-element .content { + display: flex; + flex-direction: row; + align-items: stretch; + background-color: var(--colors-background-light) + } + .form-element .content .action ::slotted(button){ + height: 100%; + } + .form-element .content .field { + display: flex; + flex-direction: row; + align-items: stretch; + justify-content: space-between; + flex: 1 0; + border: var(--border-normal) solid var(--colors-foreground-normal); + } + .form-element .content .field ::slotted(input) { + padding: 0 var(--gap-normal); + flex: 1 0; + height: 44px; + } + .form-element .content .field .icon { + height: 100%; + display: flex; + align-items: center; + } + .form-element .content .field .icon ::slotted(*), .form-element .content .field .icon div svg { + padding-right: var(--gap-normal); + max-height: var(--gap-normal); + max-width: var(--gap-normal); + height: var(--gap-normal); + width: var(--gap-normal); + } + .form-element .results .result { + background-color: var(--colors-status-warning); + padding: var(--gap-tiny) var(--gap-normal); + font-size: var(--font-size-small); + } + `, + ]; + + } + +} diff --git a/packages/dgt-components/lib/forms/form-submitter.ts b/packages/dgt-components/lib/forms/form-submitter.ts new file mode 100644 index 00000000..7bc3d2e1 --- /dev/null +++ b/packages/dgt-components/lib/forms/form-submitter.ts @@ -0,0 +1,7 @@ +import { FormEvent } from './form.events'; +import { FormContext } from './form.machine'; + +/** + * Validates the form and returns validator results. + */ +export type FormSubmitter = (context: FormContext, event: FormEvent) => Promise; diff --git a/packages/dgt-components/lib/forms/form-validator-result.ts b/packages/dgt-components/lib/forms/form-validator-result.ts new file mode 100644 index 00000000..19385b83 --- /dev/null +++ b/packages/dgt-components/lib/forms/form-validator-result.ts @@ -0,0 +1,14 @@ +/** + * Represents a result of a form validation. + */ +export interface FormValidatorResult { + /** + * The field which was validated. + */ + field: string; + + /** + * A message which indicate what's wrong. + */ + message: string; +} diff --git a/packages/dgt-components/lib/forms/form-validator.ts b/packages/dgt-components/lib/forms/form-validator.ts new file mode 100644 index 00000000..02c8e8ed --- /dev/null +++ b/packages/dgt-components/lib/forms/form-validator.ts @@ -0,0 +1,9 @@ +import { Observable } from 'rxjs'; +import { FormValidatorResult } from './form-validator-result'; +import { FormEvent } from './form.events'; +import { FormContext } from './form.machine'; + +/** + * Validates the form and returns validator results. + */ +export type FormValidator = (context: FormContext, event: FormEvent) => Observable; diff --git a/packages/dgt-components/lib/forms/form.events.ts b/packages/dgt-components/lib/forms/form.events.ts new file mode 100644 index 00000000..08b86c28 --- /dev/null +++ b/packages/dgt-components/lib/forms/form.events.ts @@ -0,0 +1,65 @@ +import { Action, assign } from 'xstate'; +import { Event } from '../state/event'; +import { FormValidatorResult } from './form-validator-result'; +import { FormContext } from './form.machine'; + +/** + * Event references for the form machine, with readable log format. + */ +export enum FormEvents { + FORM_UPDATED = '[FormEvent: Updated element]', + FORM_SUBMITTED = '[FormEvent: Submitted]', + FORM_VALIDATED = '[FormEvent: Validated]', +} + +/** + * Event interfaces for the form machine, with their payloads. + */ + +/** + * Event dispatched when a form element was updated. + */ +export interface FormUpdatedEvent extends Event { + type: FormEvents.FORM_UPDATED; + field: string; + value: string; +} + +/** + * Event dispatched when a form was submitted. + */ +export interface FormSubmittedEvent extends Event { + type: FormEvents.FORM_SUBMITTED; +} + +/** + * Event dispatched when a form was validated. + */ +export interface FormValidatedEvent extends Event { + type: FormEvents.FORM_VALIDATED; + results: FormValidatorResult[]; +} + +/** + * Union type for all form events. + */ +export type FormEvent = FormUpdatedEvent | FormSubmittedEvent | FormValidatedEvent; + +/** + * Actions for the form component. + */ + +/** + * Updates the data in context. + */ +export const update = assign, FormUpdatedEvent>({ + data: (context: FormContext, event: FormUpdatedEvent) => + (typeof context.data === 'object' ? { ...context.data ? context.data : {}, [event.field]: event.value } : event.value), +}); + +/** + * Adds validation data to context. + */ +export const addValidationResults = assign, FormValidatedEvent>({ + validation: (context, event: FormValidatedEvent) => [ ...event.results ], +}); diff --git a/packages/dgt-components/lib/forms/form.machine.spec.ts b/packages/dgt-components/lib/forms/form.machine.spec.ts new file mode 100644 index 00000000..3d58084d --- /dev/null +++ b/packages/dgt-components/lib/forms/form.machine.spec.ts @@ -0,0 +1,163 @@ +import { of } from 'rxjs'; +import { interpret, Interpreter } from 'xstate'; +import { State } from '../state/state'; +import { FormEvent, FormEvents } from './form.events'; +import { FormCleanlinessStates, FormContext, formMachine, FormRootStates, FormStates, FormSubmissionStates, FormValidationStates } from './form.machine'; + +interface TData { + name: string; + uri: string; +} + +describe('FormMachine', () => { + + let machine: Interpreter, any, FormEvent, State>>; + + beforeEach(() => { + + machine = interpret( + formMachine( + (context: FormContext, event: FormEvent) => of([ + ...context.data && context.data.name ? [] : [ { field: 'name', message: 'demo-form.name.required' } ], + ...context.data && context.data.uri ? [] : [ { field: 'uri', message: 'demo-form.uri.required' } ], + ]), + ) + .withContext({ + data: { uri: '', name: 'Test' }, + original: { uri: '', name: 'Test' }, + validation: [], + }), + ); + + }); + + it('should be correctly instantiated', () => { + + expect(machine).toBeTruthy(); + + }); + + it.each([ + [ [ ], FormCleanlinessStates.PRISTINE, FormSubmissionStates.NOT_SUBMITTED, FormValidationStates.NOT_VALIDATED, [], { uri: '', name: 'Test' } ], + [ [ { field: 'uri', value: 'foo' } ], FormCleanlinessStates.DIRTY, FormSubmissionStates.NOT_SUBMITTED, FormValidationStates.VALID, [], { uri: 'foo', name: 'Test' } ], + [ [ { field: 'uri', value: '' } ], FormCleanlinessStates.PRISTINE, FormSubmissionStates.NOT_SUBMITTED, FormValidationStates.INVALID, [ { field: 'uri', message: 'demo-form.uri.required' } ], { uri: '', name: 'Test' } ], + [ [ { field: 'name', value: '' } ], FormCleanlinessStates.DIRTY, FormSubmissionStates.NOT_SUBMITTED, FormValidationStates.INVALID, [ { field: 'name', message: 'demo-form.name.required' }, { field: 'uri', message: 'demo-form.uri.required' } ], { uri: '', name: '' } ], + ])('should handle form updates correctly', (updates, cleanliness, submission, validation, results, data) => { + + machine.start(); + + // Send updates + for(const update of updates) { + + machine.send(FormEvents.FORM_UPDATED, update); + + } + + // Validation rules should be set correctly + expect(machine.state.context.validation).toEqual(results); + + // Data should be updated + expect(machine.state.context.data).toEqual(data); + + // States should be updated + expect(machine.state.matches( + submission === FormSubmissionStates.SUBMITTED ? + FormSubmissionStates.SUBMITTED : + { + [FormSubmissionStates.NOT_SUBMITTED]:{ + [FormRootStates.CLEANLINESS]: cleanliness, + [FormRootStates.VALIDATION]: validation, + }, + }, + )).toBeTruthy(); + + }); + + it('should submit when form is valid', async (done) => { + + machine.start(); + + machine.onTransition((state) => { + + if(state.matches(FormSubmissionStates.NOT_SUBMITTED)){ + + done(); + + } + + }); + + machine.send(FormEvents.FORM_UPDATED, { field: 'uri', value: 'foo' }); + machine.send(FormEvents.FORM_SUBMITTED); + + }); + + it('should not change original data when form is updated', () => { + + machine.start(); + + machine.send(FormEvents.FORM_UPDATED, { field: 'uri', value: 'foo' }); + + expect(machine.state.context.original).toEqual({ uri: '', name: 'Test' }); + + }); + + it('should not be submitted if form is invalid', async (done) => { + + machine.start(); + + machine.onTransition((state) => { + + if(state.matches({ + [FormSubmissionStates.NOT_SUBMITTED]:{ + [FormRootStates.CLEANLINESS]: FormCleanlinessStates.PRISTINE, + [FormRootStates.VALIDATION]: FormValidationStates.NOT_VALIDATED, + }, + })){ + + done(); + + } + + }); + + machine.send(FormEvents.FORM_UPDATED, { field: 'uri', value: null }); + machine.send(FormEvents.FORM_SUBMITTED); + + }); + + it('should run submitter when submitting', async (done) => { + + const submitter = jest.fn().mockResolvedValue({ uri: 'bla', name: 'Test' }); + + machine = interpret( + formMachine( + (context: FormContext, event: FormEvent) => of([]), + submitter, + ) + .withContext({ + data: { uri: '', name: 'Test' }, + original: { uri: '', name: 'Test' }, + validation: [], + }), + ); + + machine.start(); + + machine.onTransition((state) => { + + if(state.matches(FormSubmissionStates.SUBMITTED)){ + + expect(submitter).toHaveBeenCalledTimes(1); + done(); + + } + + }); + + machine.send(FormEvents.FORM_UPDATED, { field: 'uri', value: 'bla' }); + machine.send(FormEvents.FORM_SUBMITTED); + + }); + +}); diff --git a/packages/dgt-components/lib/forms/form.machine.ts b/packages/dgt-components/lib/forms/form.machine.ts new file mode 100644 index 00000000..d7bec019 --- /dev/null +++ b/packages/dgt-components/lib/forms/form.machine.ts @@ -0,0 +1,231 @@ +import { createMachine } from 'xstate'; +import { map } from 'rxjs/operators'; +import { State } from '../state/state'; +import { FormValidatorResult } from './form-validator-result'; +import { FormValidator } from './form-validator'; +import { addValidationResults, FormEvent, FormEvents, FormValidatedEvent, update } from './form.events'; +import { FormSubmitter } from './form-submitter'; + +/** + * The context of a form. + */ +export interface FormContext { + data?: TData; + original?: TData; + validation?: FormValidatorResult[]; +} + +/** + * Actor references for this machine config. + */ +export enum FormActors { + FORM_MACHINE = 'FormMachine', +} + +/** + * State references of the root parallel states of the form machine. + */ +export enum FormRootStates { + CLEANLINESS = '[FormState: Cleanliness]', + VALIDATION = '[FormState: Validation]', +} + +/** + * State references of the submission sub-state. + */ +export enum FormSubmissionStates { + NOT_SUBMITTED = '[FormState: Not submitted]', + SUBMITTING = '[FormState: Submitting]', + SUBMITTED = '[FormState: Submitted]', +} + +/** + * State references of the cleanliness sub-state. + */ +export enum FormCleanlinessStates { + PRISTINE = '[FormState: Pristine]', + CHECKING_CLEANLINESS = '[FormState: Checking cleanliness]', + DIRTY = '[FormState: Dirty]', +} + +/** + * State references of the validation sub-state. + */ +export enum FormValidationStates { + NOT_VALIDATED = '[FormState: Not validated]', + VALIDATING = '[FormState: Validating]', + VALID = '[FormState: Valid]', + INVALID = '[FormState: Invalid]', +} + +/** + * Union type of all valid states used in the form machine. + */ +export type FormStates = FormRootStates | FormSubmissionStates | FormCleanlinessStates | FormValidationStates; + +/** + * Function which generates a form machine. + * + * @param validator A function which validates the form. + * @param submitter A function which submits the form. + * @returns A form machine. + */ +export const formMachine = ( + validator: FormValidator, + submitter: FormSubmitter = async (context) => context.data, +) => createMachine, FormEvent, State>>( + { + id: FormActors.FORM_MACHINE, + initial: FormSubmissionStates.NOT_SUBMITTED, + states: { + /** + * The form has not been submitted. + */ + [FormSubmissionStates.NOT_SUBMITTED]: { + type: 'parallel', + on: { + [FormEvents.FORM_SUBMITTED]: { + target: FormSubmissionStates.SUBMITTING, + }, + }, + states: { + /** + * State which determines if form has changed. + */ + [FormRootStates.CLEANLINESS]: { + initial: FormCleanlinessStates.PRISTINE, + states: { + /** + * The form has not changed. + */ + [FormCleanlinessStates.PRISTINE]: { + on: { + [FormEvents.FORM_UPDATED]: { + target: FormCleanlinessStates.CHECKING_CLEANLINESS, + }, + }, + }, + /** + * Transient state while checking if form was changed. + */ + [FormCleanlinessStates.CHECKING_CLEANLINESS]: { + entry: update, + always: [ + { + target: FormCleanlinessStates.PRISTINE, + cond: (context: FormContext) => + JSON.stringify(context.data) === JSON.stringify(context.original), + }, + { + target: FormCleanlinessStates.DIRTY, + }, + ], + }, + /** + * The form has been changed. + */ + [FormCleanlinessStates.DIRTY]: { + on: { + [FormEvents.FORM_UPDATED]: { + target: FormCleanlinessStates.CHECKING_CLEANLINESS, + }, + }, + }, + }, + }, + + /** + * State which determines if the form is validated. + */ + [FormRootStates.VALIDATION]: { + initial: FormValidationStates.NOT_VALIDATED, + states: { + /** + * The form has not yet been validated. + */ + [FormValidationStates.NOT_VALIDATED]: { + on: { + [FormEvents.FORM_UPDATED]: { + target: FormValidationStates.VALIDATING, + }, + [FormEvents.FORM_SUBMITTED]: { + target: FormValidationStates.VALIDATING, + }, + }, + }, + /** + * Transient state while validating. + */ + [FormValidationStates.VALIDATING]: { + entry: update, + invoke: { + src: (context, event) => validator(context, event).pipe( + map((results) => ({ type: FormEvents.FORM_VALIDATED, results })), + ), + }, + on: { + [FormEvents.FORM_VALIDATED]: [ + { + cond: (_, event: FormValidatedEvent) => !event.results || event.results.length === 0, + actions: addValidationResults, + target: FormValidationStates.VALID, + }, + { + cond: (_, event: FormValidatedEvent) => event.results && event.results.length > 0, + actions: addValidationResults, + target: FormValidationStates.INVALID, + }, + ], + }, + }, + /** + * The form is valid, based on the provided validator function. + */ + [FormValidationStates.VALID]: { + on: { + [FormEvents.FORM_UPDATED]: { + target: FormValidationStates.VALIDATING, + }, + }, + }, + /** + * The form is invalid, based on the provided validator function. + */ + [FormValidationStates.INVALID]: { + on: { + [FormEvents.FORM_UPDATED]: { + target: FormValidationStates.VALIDATING, + }, + }, + }, + }, + }, + }, + }, + /** + * Transient state while submitting form. Invokes the machine's submitter. + */ + [FormSubmissionStates.SUBMITTING]: { + entry: update, + invoke: { + src: (context, event) => submitter(context, event), + onDone: { + target: FormSubmissionStates.SUBMITTED, + }, + onError: { + target: FormSubmissionStates.NOT_SUBMITTED, + }, + }, + }, + /** + * The form has been submitted. + */ + [FormSubmissionStates.SUBMITTED]: { + data: { + data: (context: FormContext) => context.data, + }, + type: 'final', + }, + }, + }, +); diff --git a/packages/dgt-components/lib/header/content-header.component.spec.ts b/packages/dgt-components/lib/header/content-header.component.spec.ts new file mode 100644 index 00000000..a31d7b27 --- /dev/null +++ b/packages/dgt-components/lib/header/content-header.component.spec.ts @@ -0,0 +1,67 @@ +import { ContentHeaderComponent } from './content-header.component'; + +describe('ContentHeaderComponent', () => { + + let component: ContentHeaderComponent; + + beforeEach(() => { + + component = window.document.createElement('nde-content-header') as ContentHeaderComponent; + + const title = window.document.createElement('div'); + title.innerHTML = 'Foo'; + title.slot = 'title'; + component.appendChild(title); + + const subtitle = window.document.createElement('div'); + subtitle.innerHTML = 'Bar'; + subtitle.slot = 'subtitle'; + component.appendChild(subtitle); + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + it('should show title and subtitle', async () => { + + window.document.body.appendChild(component); + await component.updateComplete; + + const titleSlot = window.document.body.getElementsByTagName('nde-content-header')[0].shadowRoot.querySelector('slot[name="title"]'); + expect(titleSlot.assignedElements()[0].innerHTML).toEqual('Foo'); + + const subtitleSlot = window.document.body.getElementsByTagName('nde-content-header')[0].shadowRoot.querySelector('slot[name="subtitle"]'); + expect(subtitleSlot.assignedElements()[0].innerHTML).toEqual('Bar'); + + }); + + it.each([ true, false ])('should show set inverse class', async (inverse) => { + + component.inverse = inverse; + + window.document.body.appendChild(component); + await component.updateComplete; + + if(inverse) { + + expect(window.document.body.getElementsByTagName('nde-content-header')[0].shadowRoot.querySelector('.header.inverse')).toBeFalsy(); + + } else { + + expect(window.document.body.getElementsByTagName('nde-content-header')[0].shadowRoot.querySelector('.header.inverse')).toBeTruthy(); + + } + + }); + +}); diff --git a/packages/dgt-components/lib/header/content-header.component.ts b/packages/dgt-components/lib/header/content-header.component.ts new file mode 100644 index 00000000..b34e8193 --- /dev/null +++ b/packages/dgt-components/lib/header/content-header.component.ts @@ -0,0 +1,129 @@ +import { css, html, LitElement, property, unsafeCSS } from 'lit-element'; +import { Theme } from '@digita-ai/dgt-theme'; + +/** + * A component which represents a content header. + */ +export class ContentHeaderComponent extends LitElement { + + /** + * Decides the color variant of this component (dark/light) + */ + @property({ type: Boolean }) + public inverse = false; + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ `; + + } + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + :host { + display: block; + height: 99px; + min-height: 99px; + } + .header.inverse { + background-color: var(--colors-primary-dark); + color: var(--colors-foreground-inverse); + fill: var(--colors-foreground-inverse); + } + .header { + height: 100%; + padding: 0px var(--gap-large); + background-color: var( --colors-background-light); + color: var(--colors-foreground-normal); + fill: var(--colors-foreground-normal); + border-bottom: 1px solid var(--colors-primary-normal); + display: flex; + flex-direction: row; + align-items: center; + } + .header .icon { + font-size: 25px; + } + .header.inverse .icon ::slotted(svg) { + fill: var(--colors-foreground-inverse); + } + .header .icon ::slotted(*) { + height: 25px; + width: 25px; + } + .header .content { + flex: 1 0; + margin: 0 var(--gap-normal); + } + .header .content slot[name="title"]::slotted(*) { + overflow: hidden; + font-weight: var(--font-weight-bold); + font-size: var(--font-size-normal); + height: var(--gap-normal); + line-height: var(--gap-normal); + } + .header .content slot[name="subtitle"]::slotted(*) { + overflow: hidden; + margin-top: var(--gap-tiny); + font-size: var(--font-size-small); + height: var(--gap-normal); + line-height: var(--gap-normal); + } + .header .actions { + margin-right: var(--gap-normal); + display: flex; + flex-direction: row; + } + .header .actions:last-child { + margin-right: 0px; + } + .header .actions ::slotted(*) { + max-height: var(--gap-normal); + max-width: var(--gap-normal); + height: var(--gap-normal); + width: var(--gap-normal); + fill: var(--colors-primary-light); + color: var(--colors-primary-light); + cursor: pointer; + margin-left: var(--gap-normal); + } + .header.inverse .actions ::slotted(*) { + fill: var(--colors-foreground-inverse); + color: var(--colors-foreground-inverse); + } + `, + ]; + + } + +} + +export default ContentHeaderComponent; diff --git a/packages/dgt-components/lib/index.ts b/packages/dgt-components/lib/index.ts new file mode 100644 index 00000000..f912c9ff --- /dev/null +++ b/packages/dgt-components/lib/index.ts @@ -0,0 +1,27 @@ +/** + * Exports the modules of the package. + */ +export * from './alerts/alert'; +export * from './alerts/alert.component'; +export * from './alerts/alert.component'; +export * from './base/base.component'; +export * from './cards/card.component'; +export * from './forms/form-element.component'; +export * from './forms/form-submitter'; +export * from './forms/form-validator-result'; +export * from './forms/form-validator'; +export * from './forms/form.machine'; +export * from './forms/form.events'; +export * from './profile/profile-contact.component'; +export * from './profile/profile-name.component'; +export * from './profile/profile-payslip.component'; +export * from './profile/credential.component'; +export * from './sidebar/sidebar.component'; +export * from './sidebar/sidebar-list-item.component'; +export * from './sidebar/sidebar-list.component'; +export * from './sidebar/sidebar-item.component'; +export * from './state/event'; +export * from './state/schema'; +export * from './state/state'; +export * from './header/content-header.component'; +export * from './separator/separator.component'; diff --git a/packages/dgt-components/lib/profile/credential.component.ts b/packages/dgt-components/lib/profile/credential.component.ts new file mode 100644 index 00000000..761fa668 --- /dev/null +++ b/packages/dgt-components/lib/profile/credential.component.ts @@ -0,0 +1,135 @@ + +import { NamedNode, Store } from 'n3'; +import { css, html, property, PropertyValues, TemplateResult, unsafeCSS } from 'lit-element'; +import { ComponentResponseEvent } from '@digita-ai/semcom-sdk'; +import { unsafeSVG } from 'lit-html/directives/unsafe-svg'; +import { Image, Theme } from '@digita-ai/dgt-theme'; +import { BaseComponent } from '../base/base.component'; + +export interface Credential { + uri: string; + type: string; + document: string; + owner: string; +} + +export class CredentialComponent extends BaseComponent { + + readonly schema = 'https://schema.org/'; + readonly digita = 'http://digita.ai/voc/example#'; + readonly rdf = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'; + + @property() credentials?: Credential[] = []; + + /** + * Is executed when a property value is updated. + * + * @param changed Map of changes properties. + */ + update(changed: PropertyValues): void { + + super.update(changed); + + if (changed.has('entry') && this.entry) { + + this.readData(this.entry); + + } + + } + + /** + * Handles a response event. Can be used to update the component's properties based on the data in the response. + * + * @param event The response event to handle. + */ + handleResponse(event: ComponentResponseEvent): void { + + if (!event || !event.detail || !event.detail.data) { + + throw new Error('Argument event || !event.detail || !event.detail.quads should be set.'); + + } + + const store = new Store(event.detail.data); + const tempCredentials: Credential[] = []; + + store.getQuads(null, new NamedNode(`${this.schema}hasCredential`), null, null).map((credential) => { + + const owner = credential?.subject.value; + const uri = credential?.object.value; + const type = store.getQuads(uri, new NamedNode(`${this.rdf}type`), null, null)[0]?.object.value; + const document = store.getQuads(uri, new NamedNode(`${this.schema}uri`), null, null)[0]?.object.value; + + tempCredentials.push({ owner, uri, type, document }); + + }); + + this.credentials = tempCredentials; + + } + + static get styles() { + + return [ + unsafeCSS(Theme), + css` + div[slot="content"] { + display: flex; + flex-direction: column; + } + + div[slot="content"] > * { + margin-bottom: var(--gap-small); + } + + .credential { + display: flex; + flex-direction: row; + background-color: #eee; + padding: 10px; + } + + .credential .type { + margin-left: 20px; + margin-right: é0px; + flex: 1 1; + } + .credential .document a { + font-weight: bold; + } + `, + ]; + + } + + render(): TemplateResult { + + return this.credentials && this.credentials.length > 0 ? html` + + +
Credentials
+
Your credentials
+
+ ${unsafeSVG(Image)} +
+
+ ${this.credentials.map((credential) => html` +
+
+ ${credential.type} +
+
+ Download +
+
+ `)} +
+
+ ` : html``; + + } + +} + +export default CredentialComponent; diff --git a/packages/dgt-components/lib/profile/profile-contact.component.ts b/packages/dgt-components/lib/profile/profile-contact.component.ts new file mode 100644 index 00000000..a1db4508 --- /dev/null +++ b/packages/dgt-components/lib/profile/profile-contact.component.ts @@ -0,0 +1,185 @@ +import { NamedNode, Store } from 'n3'; +import { css, html, property, PropertyValues, TemplateResult, unsafeCSS } from 'lit-element'; +import { ComponentResponseEvent } from '@digita-ai/semcom-sdk'; +import { unsafeSVG } from 'lit-html/directives/unsafe-svg'; +import { Image, Theme } from '@digita-ai/dgt-theme'; +import { from, Observable, of } from 'rxjs'; +import { interpret, Interpreter } from 'xstate'; +import { map } from 'rxjs/operators'; +import { DGTErrorNotImplemented } from '@digita-ai/dgt-utils'; +import { FormCleanlinessStates, FormContext, formMachine, FormRootStates, FormSubmissionStates, FormValidationStates } from '../forms/form.machine'; +import { BaseComponent } from '../base/base.component'; +import { FormValidatorResult } from '../forms/form-validator-result'; + +export interface ProfileContactComponentForm { + email: string; + phone: string; +} + +export class ProfileContactComponent extends BaseComponent { + + readonly foaf = 'http://xmlns.com/foaf/0.1/'; + readonly n = 'http://www.w3.org/2006/vcard/ns#'; + + @property() formActor: Interpreter>; + @property() canSave = false; + + /** + * Is executed when a property value is updated. + * + * @param changed Map of changes properties. + */ + update(changed: PropertyValues): void { + + super.update(changed); + + if (changed.has('entry') && this.entry) { + + this.readData(this.entry); + + } + + if(changed.has('formActor') && this.formActor){ + + this.subscribe('canSave', from(this.formActor).pipe( + map((state) => state.matches({ + [FormSubmissionStates.NOT_SUBMITTED]:{ + [FormRootStates.CLEANLINESS]: FormCleanlinessStates.DIRTY, + [FormRootStates.VALIDATION]: FormValidationStates.VALID, + }, + })), + )); + + } + + } + + /** + * Handles a response event. Can be used to update the component's properties based on the data in the response. + * + * @param event The response event to handle. + */ + handleResponse(event: ComponentResponseEvent): void { + + if (!event || !event.detail || !event.detail.data) { + + throw new Error('Argument event || !event.detail || !event.detail.quads should be set.'); + + } + + const store = new Store(event.detail.data); + + const phones: string[] = []; + const emails: string[] = []; + + store.getQuads(null, new NamedNode(`${this.n}hasTelephone`), null, null).map((tele) => { + + if(tele.object?.value.startsWith('tel:')) { + + phones.push(tele.object?.value.split(':')[1]); + + } else { + + phones.push(store.getQuads(new NamedNode(tele.object.value), new NamedNode(`${this.n}value`), null, null)[0]?.object.value.split(':')[1]); + + } + + }); + + store.getQuads(null, new NamedNode(`${this.n}hasEmail`), null, null).map((mail) => { + + if(mail.object?.value.startsWith('mailto:')) { + + emails.push(mail.object?.value.split(':')[1]); + + } else { + + emails.push(store.getQuads(new NamedNode(mail.object.value), new NamedNode(`${this.n}value`), null, null)[0]?.object.value.split(':')[1]); + + } + + }); + + this.formActor = interpret(formMachine( + /** + * Validates the form. + */ + (formContext): Observable => of([ + ...formContext.data.email ? [] : [ { field: 'email', message: 'Field is required' } as FormValidatorResult ], + ...formContext.data.phone ? [] : [ { field: 'phone', message: 'Field is required' } as FormValidatorResult ], + ]), + ) + .withContext({ + data: { phone: phones[0], email: emails[0] }, + original: { phone: phones[0], email: emails[0] }, + })); + + this.formActor.start(); + + } + + static get styles() { + + return [ + unsafeCSS(Theme), + css` + div[slot="content"] { + display: flex; + flex-direction: column; + } + + div[slot="content"] > * { + margin-bottom: var(--gap-large); + } + `, + ]; + + } + + private handleSave() { + + throw new DGTErrorNotImplemented(); + + // this.formActor.send(FormEvents.FORM_SUBMITTED); + // this.writeData(this.entry, [ + // new Quad(new NamedNode(this.entry), new NamedNode(`${this.foaf}name`), new Literal(this.formActor.state.context.data.fullName)), + // new Quad(new NamedNode(this.entry), new NamedNode(`${this.foaf}nick`), new Literal(this.formActor.state.context.data.nick)), + // new Quad(new NamedNode(this.entry), new NamedNode(`${this.n}honorific-prefix`), new Literal(this.formActor.state.context.data.honorific)), + // new Quad(new NamedNode(this.entry), new NamedNode(`${this.n}hasPhoto`), new Literal(this.formActor.state.context.data.image)), + // ]) + + } + + render(): TemplateResult { + + return this.formActor ? html` + + +
Contact information
+
Your email address and phone number
+
+ ${unsafeSVG(Image)} +
+
+ + + + + + + + + +
+
+ ` : html``; + + } + +} + +export default ProfileContactComponent; diff --git a/packages/dgt-components/lib/profile/profile-name.component.ts b/packages/dgt-components/lib/profile/profile-name.component.ts new file mode 100644 index 00000000..c32f40b9 --- /dev/null +++ b/packages/dgt-components/lib/profile/profile-name.component.ts @@ -0,0 +1,177 @@ +import { Literal, NamedNode, Quad, Store } from 'n3'; +import { css, html, property, PropertyValues, TemplateResult, unsafeCSS } from 'lit-element'; +import { ComponentResponseEvent } from '@digita-ai/semcom-sdk'; +import { unsafeSVG } from 'lit-html/directives/unsafe-svg'; +import { Image, Theme } from '@digita-ai/dgt-theme'; +import { from, Observable, of } from 'rxjs'; +import { interpret, Interpreter } from 'xstate'; +import { map } from 'rxjs/operators'; +import { FormCleanlinessStates, FormContext, formMachine, FormRootStates, FormSubmissionStates, FormValidationStates } from '../forms/form.machine'; +import { BaseComponent } from '../base/base.component'; +import { FormValidatorResult } from '../forms/form-validator-result'; +import { FormEvents } from '../forms/form.events'; + +export interface ProfileNameComponentForm { + image: string; + fullName: string; + nick: string; + honorific: string; +} + +export class ProfileNameComponent extends BaseComponent { + + readonly foaf = 'http://xmlns.com/foaf/0.1/'; + readonly n = 'http://www.w3.org/2006/vcard/ns#'; + + @property() image?: string; + @property() formActor: Interpreter>; + @property() canSave = false; + + /** + * Is executed when a property value is updated. + * + * @param changed Map of changes properties. + */ + update(changed: PropertyValues): void { + + super.update(changed); + + if (changed.has('entry') && this.entry) { + + this.readData(this.entry); + + } + + if(changed.has('formActor') && this.formActor){ + + this.subscribe('canSave', from(this.formActor).pipe( + map((state) => state.matches({ + [FormSubmissionStates.NOT_SUBMITTED]:{ + [FormRootStates.CLEANLINESS]: FormCleanlinessStates.DIRTY, + [FormRootStates.VALIDATION]: FormValidationStates.VALID, + }, + })), + )); + + } + + } + + /** + * Handles a response event. Can be used to update the component's properties based on the data in the response. + * + * @param event The response event to handle. + */ + handleResponse(event: ComponentResponseEvent): void { + + if (!event || !event.detail || !event.detail.data) { + + throw new Error('Argument event || !event.detail || !event.detail.quads should be set.'); + + } + + const store = new Store(event.detail.data); + + const fullName = store.getQuads(null, new NamedNode(`${this.foaf}name`), null, null)[0]?.object.value; + const nick = store.getQuads(null, new NamedNode(`${this.foaf}nick`), null, null)[0]?.object.value; + const honorific = store.getQuads(null, new NamedNode(`${this.n}honorific-prefix`), null, null)[0]?.object.value; + const image = store.getQuads(null, new NamedNode(`${this.n}hasPhoto`), null, null)[0]?.object.value; + this.image = image; + + this.formActor = interpret(formMachine( + /** + * Validates the form. + */ + (formContext): Observable => of([ + ...formContext.data.fullName ? [] : [ { field: 'fullName', message: 'Field is required' } as FormValidatorResult ], + ...formContext.data.image ? [] : [ { field: 'image', message: 'Field is required' } as FormValidatorResult ], + ...formContext.data.nick ? [] : [ { field: 'nick', message: 'Field is required' } as FormValidatorResult ], + ...formContext.data.honorific ? [] : [ { field: 'honorific', message: 'Field is required' } as FormValidatorResult ], + ]), + ) + .withContext({ + data: { image, fullName, nick, honorific }, + original: { image, fullName, nick, honorific }, + })); + + this.formActor.start(); + + } + + static get styles() { + + return [ + unsafeCSS(Theme), + css` + div[slot="content"] { + display: flex; + flex-direction: column; + } + + div[slot="content"] > * { + margin-bottom: var(--gap-large); + } + `, + ]; + + } + + private handleSave() { + + this.formActor.send(FormEvents.FORM_SUBMITTED); + + this.writeData(this.entry, [ + new Quad(new NamedNode(this.entry), new NamedNode(`${this.foaf}name`), new Literal(this.formActor.state.context.data.fullName)), + new Quad(new NamedNode(this.entry), new NamedNode(`${this.foaf}nick`), new Literal(this.formActor.state.context.data.nick)), + new Quad(new NamedNode(this.entry), new NamedNode(`${this.n}honorific-prefix`), new Literal(this.formActor.state.context.data.honorific)), + new Quad(new NamedNode(this.entry), new NamedNode(`${this.n}hasPhoto`), new Literal(this.formActor.state.context.data.image)), + ]); + + } + + render(): TemplateResult { + + return this.formActor ? html` + + +
Names
+
Your names
+
+ ${unsafeSVG(Image)} +
+ ${this.image ? html `` : ''} +
+ + + + + + + + + + + + + + + + + +
+
+ ` : html``; + + } + +} + +export default ProfileNameComponent; diff --git a/packages/dgt-components/lib/profile/profile-payslip.component.ts b/packages/dgt-components/lib/profile/profile-payslip.component.ts new file mode 100644 index 00000000..d21d1370 --- /dev/null +++ b/packages/dgt-components/lib/profile/profile-payslip.component.ts @@ -0,0 +1,142 @@ +import { NamedNode, Store } from 'n3'; +import { css, html, property, PropertyValues, TemplateResult, unsafeCSS } from 'lit-element'; +import { ComponentResponseEvent } from '@digita-ai/semcom-sdk'; +import { unsafeSVG } from 'lit-html/directives/unsafe-svg'; +import { Image, Theme } from '@digita-ai/dgt-theme'; +import { BaseComponent } from '../base/base.component'; + +export interface ProfilePayslip { + employer: string; + amount: string; + from: string; +} + +export class ProfilePayslipComponent extends BaseComponent { + + readonly foaf = 'http://xmlns.com/foaf/0.1/'; + readonly n = 'http://www.w3.org/2006/vcard/ns#'; + readonly pay = 'http://digita.ai/voc/payslip#'; + + @property() payslips?: ProfilePayslip[] = []; + @property() canSave = false; + + /** + * Is executed when a property value is updated. + * + * @param changed Map of changes properties. + */ + update(changed: PropertyValues): void { + + super.update(changed); + + if (changed.has('entry') && this.entry) { + + this.readData(this.entry); + + } + + } + + /** + * Handles a response event. Can be used to update the component's properties based on the data in the response. + * + * @param event The response event to handle. + */ + handleResponse(event: ComponentResponseEvent): void { + + if (!event || !event.detail || !event.detail.data) { + + throw new Error('Argument event || !event.detail || !event.detail.quads should be set.'); + + } + + const store = new Store(event.detail.data); + const tempPayslips: ProfilePayslip[] = []; + + store.getQuads(null, null, new NamedNode(`${this.pay}payslip`), null).map((payslip) => { + + const employer = store.getQuads(new NamedNode(payslip.subject.value), new NamedNode(`${this.pay}employer`), null, null)[0]?.object.value; + const amount = store.getQuads(new NamedNode(payslip.subject.value), new NamedNode(`${this.pay}netAmount`), null, null)[0]?.object.value; + const from = store.getQuads(new NamedNode(payslip.subject.value), new NamedNode(`${this.pay}from`), null, null)[0]?.object.value; + + const date = new Date(+from * 1000); + + tempPayslips.push({ + employer, + amount, + from: `${date.getDay()}/${date.getMonth()}/${date.getFullYear()}`, + }); + + }); + + this.payslips = tempPayslips; + + } + + static get styles() { + + return [ + unsafeCSS(Theme), + css` + div[slot="content"] { + display: flex; + flex-direction: column; + } + + div[slot="content"] > * { + margin-bottom: var(--gap-small); + } + + .payslip { + display: flex; + flex-direction: row; + background-color: #eee; + padding: 10px; + } + + .payslip .employer { + margin-left: 20px; + margin-right: é0px; + flex: 1 1; + } + .payslip .amount { + font-weight: bold; + } + `, + ]; + + } + + render(): TemplateResult { + + return this.payslips && this.payslips.length > 0 ? html` + + +
Payslips
+
Your payslips
+
+ ${unsafeSVG(Image)} +
+
+ ${this.payslips.map((payslip) => html` +
+
+ ${payslip.from} +
+
+ ${payslip.employer} +
+
+ €${payslip.amount} +
+
+ `)} +
+
+ ` : html``; + + } + +} + +export default ProfilePayslipComponent; diff --git a/packages/dgt-components/lib/separator/separator.component.ts b/packages/dgt-components/lib/separator/separator.component.ts new file mode 100644 index 00000000..9918370d --- /dev/null +++ b/packages/dgt-components/lib/separator/separator.component.ts @@ -0,0 +1,61 @@ +import { css, html, LitElement, unsafeCSS } from 'lit-element'; +import { Theme } from '@digita-ai/dgt-theme'; + +export class SeparatorComponent extends LitElement { + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + :host { + display: block; + } + + .separator { + display: flex; + align-items: center; + text-align: center; + color: var(--colors-foreground-light); + } + + .separator::before, + .separator::after { + content: ''; + flex: 1; + border-bottom: 1px solid var(--colors-foreground-light); + } + + .separator:not(:empty)::before { + margin-right: .25em; + } + + .separator:not(:empty)::after { + margin-left: .25em; + } + `, + ]; + + } + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` +
+ +
+ `; + + } + +} + +export default SeparatorComponent; diff --git a/packages/dgt-components/lib/sidebar/sidebar-component.spec.ts b/packages/dgt-components/lib/sidebar/sidebar-component.spec.ts new file mode 100644 index 00000000..6ef97169 --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-component.spec.ts @@ -0,0 +1,13 @@ +import { SidebarComponent } from './sidebar.component'; + +describe('SidebarComponent', () => { + + const component = new SidebarComponent(); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + +}); diff --git a/packages/dgt-components/lib/sidebar/sidebar-item-component.spec.ts b/packages/dgt-components/lib/sidebar/sidebar-item-component.spec.ts new file mode 100644 index 00000000..fc0ac083 --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-item-component.spec.ts @@ -0,0 +1,35 @@ +import { SidebarItemComponent } from './sidebar-item.component'; + +describe('SidebarItemComponent', () => { + + let component = new SidebarItemComponent(); + + beforeEach(() => { + + component = window.document.createElement('nde-sidebar-item') as SidebarItemComponent; + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + it('should add border and padding class automatically', async () => { + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-sidebar-item')[0].shadowRoot.querySelectorAll('.padding').length).toEqual(1); + expect(window.document.body.getElementsByTagName('nde-sidebar-item')[0].shadowRoot.querySelectorAll('.border').length).toEqual(1); + + }); + +}); diff --git a/packages/dgt-components/lib/sidebar/sidebar-item.component.ts b/packages/dgt-components/lib/sidebar/sidebar-item.component.ts new file mode 100644 index 00000000..c8424f66 --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-item.component.ts @@ -0,0 +1,59 @@ +import { css, html, property, unsafeCSS } from 'lit-element'; +import { RxLitElement } from 'rx-lit'; +import { Theme } from '@digita-ai/dgt-theme'; + +/** + * A component which represents a sidebar item. + */ +export class SidebarItemComponent extends RxLitElement { + + /** + * Indicate wether padding should be automatically applied + */ + @property({ type: Boolean }) + public padding = true; + + /** + * Indicate wether the bottom border should be shown + */ + @property({ type: Boolean }) + public showBorder = true; + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` +
+ +
+ `; + + } + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + div.content-container { + height: 100%; + } + .border { + border-bottom: 1px solid var(--colors-primary-normal); + } + .padding { + padding: var(--gap-normal) var(--gap-large); + } + `, + ]; + + } + +} diff --git a/packages/dgt-components/lib/sidebar/sidebar-list-component.spec.ts b/packages/dgt-components/lib/sidebar/sidebar-list-component.spec.ts new file mode 100644 index 00000000..fc40e5c7 --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-list-component.spec.ts @@ -0,0 +1,59 @@ +import { SidebarListComponent } from './sidebar-list.component'; + +describe('SidebarListComponent', () => { + + let component = new SidebarListComponent(); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + beforeEach(() => { + + component = window.document.createElement('nde-sidebar-list') as SidebarListComponent; + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should call select when select is clicked', async () => { + + const event = document.createEvent('MouseEvent'); + const el = document.createElement('nde-sidebar-list-item'); + + expect(el.hasAttribute('selected')).toBeFalsy(); + + const selectSpy = spyOn(component, 'select').and.callThrough(); + + window.document.body.appendChild(component); + await component.updateComplete; + + event.composedPath = jest.fn(() => [ el ]); + component.select(event); + + expect(selectSpy).toHaveBeenCalledTimes(1); + expect(el.hasAttribute('selected')).toBeTruthy(); + + }); + + it('should call select when select is clicked', async () => { + + const selectSpy = spyOn(component, 'select'); + + window.document.body.appendChild(component); + await component.updateComplete; + + const select = window.document.body.getElementsByTagName('nde-sidebar-list')[0].shadowRoot.querySelector('slot[name="item"]') as HTMLElement; + select.click(); + + expect(selectSpy).toHaveBeenCalledTimes(1); + + }); + +}); diff --git a/packages/dgt-components/lib/sidebar/sidebar-list-item-component.spec.ts b/packages/dgt-components/lib/sidebar/sidebar-list-item-component.spec.ts new file mode 100644 index 00000000..022aede6 --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-list-item-component.spec.ts @@ -0,0 +1,36 @@ +import { SidebarListItemComponent } from './sidebar-list-item.component'; + +describe('SidebarListItemComponent', () => { + + let component = new SidebarListItemComponent(); + + beforeEach(() => { + + component = window.document.createElement('nde-sidebar-list-item') as SidebarListItemComponent; + + }); + + afterEach(() => { + + document.getElementsByTagName('html')[0].innerHTML = ''; + + }); + + it('should be correctly instantiated', () => { + + expect(component).toBeTruthy(); + + }); + + it('should add select class when selected', async () => { + + component.selected = true; + + window.document.body.appendChild(component); + await component.updateComplete; + + expect(window.document.body.getElementsByTagName('nde-sidebar-list-item')[0].shadowRoot.querySelectorAll('.item.selected').length).toEqual(1); + + }); + +}); diff --git a/packages/dgt-components/lib/sidebar/sidebar-list-item.component.ts b/packages/dgt-components/lib/sidebar/sidebar-list-item.component.ts new file mode 100644 index 00000000..2951860b --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-list-item.component.ts @@ -0,0 +1,115 @@ +import { css, html, internalProperty, property, unsafeCSS } from 'lit-element'; +import { RxLitElement } from 'rx-lit'; +import { Theme } from '@digita-ai/dgt-theme'; +import { classMap } from 'lit-html/directives/class-map'; + +/** + * A component which represents a sidebar list item. + */ +export class SidebarListItemComponent extends RxLitElement { + + @property({ type: Boolean }) + public inverse = false; + + @property({ type: Boolean }) + public selected = false; + + @property({ type: Boolean }) + public isTitle = false; + + @internalProperty() + private classes = () => ({ inverse: this.inverse, selected: this.selected, title: this.isTitle }); + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` +
  • + +
    + +
    +
  • + `; + + } + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + .item.inverse { + background-color: var(--colors-primary-dark); + color: var(--colors-foreground-inverse); + fill: var(--colors-foreground-inverse); + } + + .item { + background-color: var( --colors-background-light); + color: var(--colors-foreground-normal); + fill: var(--colors-foreground-normal); + height: 45px; + display: flex; + flex-direction: row; + align-items: center; + cursor: pointer; + justify-content: space-between; + padding: 0 var(--gap-large); + } + + .item.selected, .item:hover:not(.title) { + background-color: var(--colors-primary-normal); + display: flex; + } + + .item slot[name="title"]::slotted(*) { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .item.selected slot[name="title"]::slotted(*), .item:hover:not(.title) slot[name="title"]::slotted(*) { + color: var(--colors-foreground-inverse); + } + + .item.title slot[name="title"]::slotted(*) { + font-weight: var( --font-weight-bold); + } + + .item.title { + cursor: default; + } + + .actions { + display: flex; + flex-direction: row; + gap: var(--gap-normal); + } + + .actions ::slotted(*) { + max-height: var(--gap-normal); + max-width: var(--gap-normal); + height: var(--gap-normal); + width: var(--gap-normal); + fill: var(--colors-primary-normal); + color: var(--colors-primary-normal); + cursor: pointer; + } + .item.inverse .actions ::slotted(*) { + fill: var(--colors-foreground-inverse); + color: var(--colors-foreground-inverse); + } + `, + ]; + + } + +} diff --git a/packages/dgt-components/lib/sidebar/sidebar-list.component.ts b/packages/dgt-components/lib/sidebar/sidebar-list.component.ts new file mode 100644 index 00000000..f4305d5c --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar-list.component.ts @@ -0,0 +1,82 @@ +import { css, html, unsafeCSS } from 'lit-element'; +import { RxLitElement } from 'rx-lit'; +import { Theme } from '@digita-ai/dgt-theme'; + +/** + * A component which represents a sidebar list item. + */ +export class SidebarListComponent extends RxLitElement { + + /** + * Selects clicked list item and deslected all other list items. + * + */ + select(event: MouseEvent){ + + const element = event.composedPath().find((el: Element) => el.localName === 'nde-sidebar-list-item') as Element; + + if(element && !element.hasAttribute('isTitle')){ + + for(let i = 0; i < this.children.length; i++) { + + this.children.item(i).removeAttribute('selected'); + + } + + element.setAttribute('selected', ''); + + } + + } + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` + +
    + +
    + `; + + } + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + *::-webkit-scrollbar-thumb { + background-color: var(--colors-foreground-light); + border: 3px solid var(--colors-foreground-normal); + } + *::-webkit-scrollbar-track { + background: var(--colors-foreground-normal); + } + :host { + scrollbar-color: var(--colors-foreground-light) var(--colors-foreground-normal); + display: flex; + flex-direction: column; + flex: 1 1 auto; + height: 100%; + } + .list { + height: 100%; + display: flex; + flex-direction: column; + overflow-y: auto; + padding: var(--gap-normal) 0; + } + `, + ]; + + } + +} diff --git a/packages/dgt-components/lib/sidebar/sidebar.component.ts b/packages/dgt-components/lib/sidebar/sidebar.component.ts new file mode 100644 index 00000000..b7d387d1 --- /dev/null +++ b/packages/dgt-components/lib/sidebar/sidebar.component.ts @@ -0,0 +1,66 @@ +import { css, html, property, unsafeCSS } from 'lit-element'; +import { RxLitElement } from 'rx-lit'; +import { Theme } from '@digita-ai/dgt-theme'; +import { DGTLoggerService, Translator } from '@digita-ai/dgt-utils'; + +/** + * A component which represents a sidebar. + */ +export class SidebarComponent extends RxLitElement { + + /** + * The component's translator. + */ + @property({ type: Translator }) + public translator: Translator; + + /** + * The component's translator. + */ + @property({ type: DGTLoggerService }) + public logger: DGTLoggerService; + + /** + * Renders the component as HTML. + * + * @returns The rendered HTML of the component. + */ + render() { + + return html` + + `; + + } + + /** + * The styles associated with the component. + */ + static get styles() { + + return [ + unsafeCSS(Theme), + css` + :host { + width: var(--size-sidebar); + } + .sidebar { + flex: 1 0; + } + .sidebar.primary slot { + height: 100%; + max-height: inherit; + display: flex; + flex-direction: column; + gap: var(--gap-normal); + background-color: var(--colors-primary-dark); + color: var(--colors-foreground-inverse); + } + `, + ]; + + } + +} diff --git a/packages/dgt-components/lib/state/event.ts b/packages/dgt-components/lib/state/event.ts new file mode 100644 index 00000000..1fb566af --- /dev/null +++ b/packages/dgt-components/lib/state/event.ts @@ -0,0 +1,11 @@ +import { EventObject } from 'xstate'; + +/** + * Represents an event. + */ +export interface Event extends EventObject { + /** + * The type of the event. + */ + type: TEvents; +} diff --git a/packages/dgt-components/lib/state/schema.ts b/packages/dgt-components/lib/state/schema.ts new file mode 100644 index 00000000..cd1b38e4 --- /dev/null +++ b/packages/dgt-components/lib/state/schema.ts @@ -0,0 +1,13 @@ +import { StateSchema } from 'xstate'; + +/** + * A machine state's schema. + */ +export interface Schema extends StateSchema { + /** + * States within the machine. + */ + states?: { + [key in TStates]?: StateSchema; + }; +} diff --git a/packages/dgt-components/lib/state/state.ts b/packages/dgt-components/lib/state/state.ts new file mode 100644 index 00000000..822d4952 --- /dev/null +++ b/packages/dgt-components/lib/state/state.ts @@ -0,0 +1,16 @@ +import { StateValueMap, Typestate } from 'xstate'; + +/** + * Represents a state node with its corresponding context. + */ +export interface State extends Typestate { + /** + * The value of the state node. + */ + value: TStates | StateValueMap; + + /** + * The state's corresponding context. + */ + context: TContext; +} diff --git a/packages/dgt-components/package-lock.json b/packages/dgt-components/package-lock.json new file mode 100644 index 00000000..d1aa478a --- /dev/null +++ b/packages/dgt-components/package-lock.json @@ -0,0 +1,6132 @@ +{ + "name": "@digita-ai/dgt-components", + "version": "0.5.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "dev": true + }, + "@babel/core": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", + "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz", + "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", + "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", + "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz", + "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz", + "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/runtime": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.0.tgz", + "integrity": "sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA==", + "dev": true, + "optional": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.0.tgz", + "integrity": "sha512-0R0HTZWHLk6G8jIk0FtoX+AatCtKnswS98VhXwGImFc759PJRp4Tru0PQYZofyijTFUr+gT8Mu7sgXVJLQ0ceg==", + "dev": true, + "optional": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + } + } + }, + "@babel/traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", + "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", + "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@digita-ai/jest-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/jest-config/0.3.4/f799f4910afc4ef7a827bfe8fb399cef5fb0f1951e4b75f54e755b5718bb838d", + "integrity": "sha512-fdL9aZn5nF+DFJFCnHCHndsDXp1ZqeRneJk4xMuAkw80OOk+G3v+Iu0VTxhSr3pk6gvKgMMTR602UHW28cO39A==", + "dev": true, + "requires": { + "@testing-library/jest-dom": "^5.12.0", + "jest-fetch-mock": "^3.0.3", + "merge": "^2.1.1", + "ts-jest": "^26.5.5", + "typescript": "^4.2.3" + } + }, + "@digita-ai/semcom-core": { + "version": "0.4.1", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/semcom-core/0.4.1/729e478d7ba70181aa9c524a6abc0b31899a2bc3853e01aa90f7c98e93195c40", + "integrity": "sha512-ugKoiFgdj7ruMKfHAIExPbpg+z3NOSczpaAlbH2WLqN/7YN0fHYeo3BX565CO5x3LgcMuSyYIOG6rctg+lHT9w==" + }, + "@digita-ai/semcom-sdk": { + "version": "0.4.1", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/semcom-sdk/0.4.1/dde8a07b980df69d747aa65d06c96e55fc0c2de3bd4935924e87f1759ac89aa8", + "integrity": "sha512-9jXx5OIuwLrUQ5eLQi4xyKJpmwRE9Lf1A/I61nLN+LSSR141DcnTAc2VJrl2Gjwvde8rm2Y9zWXW7Wk2IWe8Kg==", + "requires": { + "@digita-ai/semcom-core": "0.4.1", + "buffer": "6.0.3", + "n3": "1.10.0" + } + }, + "@digita-ai/typescript-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/typescript-config/0.3.4/16c8755238a358331f20ff2c6ab36abe32c45e74f83ec0bad66965a5ff5fdf6a", + "integrity": "sha512-/hl2uGMPa1XvouKwjqSOBrX1zL5RArHf+3vFIU4nuqLM7IoX2telyvNA2Ej3zbuUS7rOTQW8dYi3j4LHnCvCxg==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz", + "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + } + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@originjs/vite-plugin-commonjs": { + "version": "1.0.0-beta7", + "resolved": "https://registry.npmjs.org/@originjs/vite-plugin-commonjs/-/vite-plugin-commonjs-1.0.0-beta7.tgz", + "integrity": "sha512-RK23cjDGecT8g9YS7RAZdufbMCj1kjYejke3Wid3V/5ZL1z/hSqWC60648wIQ1tn1UWNiqrqBIsL7uht5xbBZg==", + "dev": true, + "requires": { + "esbuild": "^0.12.6" + }, + "dependencies": { + "esbuild": { + "version": "0.12.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.20.tgz", + "integrity": "sha512-u7+0qTo9Z64MD9PhooEngCmzyEYJ6ovFhPp8PLNh3UasR5Ihjv6HWVXqm8uHmasdQlpsAf0IsY4U0YVUfCpt4Q==", + "dev": true + } + } + }, + "@rollup/plugin-commonjs": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-20.0.0.tgz", + "integrity": "sha512-5K0g5W2Ol8hAcTHqcTBHiA7M58tfmYi1o9KxeJuuRNpGaTa5iLjcyemBitCBcKXaHamOBBEH2dGom6v6Unmqjg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@testing-library/jest-dom": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.12.0.tgz", + "integrity": "sha512-N9Y82b2Z3j6wzIoAqajlKVF1Zt7sOH0pPee0sUHXHc5cv2Fdn23r+vpWm0MBBoGJtPOly5+Bdx1lnc3CD+A+ow==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^4.2.2", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "lodash": "^4.17.15", + "redent": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.14", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", + "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", + "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.23", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", + "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/n3": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.8.0.tgz", + "integrity": "sha512-uyVeuz1TmdmKORidY0+hSfhonXgMk/hzpTnfZXG4HmQdXdykeoi7ohVxmAfYX21aaIcx9wJr1nqRN1griAOMPw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/rdf-js": "*" + } + }, + "@types/node": { + "version": "14.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prettier": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz", + "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==", + "dev": true + }, + "@types/rdf-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdf-js/-/rdf-js-4.0.1.tgz", + "integrity": "sha512-S+28+3RoFI+3arls7dS813gYnhb2HiyLX+gs00rgIvCzHU93DaYajhx4tyT+XEO8SjtzZw90OF4OVdYXBwbvkQ==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", + "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "dev": true + } + } + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.9.5", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz", + "integrity": "sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==", + "dev": true, + "optional": true, + "requires": { + "@types/jest": "*" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "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==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "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", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "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", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "class-utils": { + "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", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "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" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "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" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "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==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js-pure": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.13.0.tgz", + "integrity": "sha512-7VTvXbsMxROvzPAVczLgfizR8CyYnvWPrb1eGrtlZAJfjQWEHLofVfCKljLHdpazTfpaziRORwUH/kfGDKvpdA==", + "dev": true, + "optional": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "dev": true, + "optional": true, + "requires": { + "node-fetch": "2.6.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "optional": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + } + } + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true, + "optional": true + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, + "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=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "define-property": { + "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" + }, + "dependencies": { + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.3.738", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.738.tgz", + "integrity": "sha512-vCMf4gDOpEylPSLPLSwAEsz+R3ShP02Y3cAKMZvTqule3XcPp7tgc/0ESI7IS6ZeyBlGClE50N53fIOkcIVnpw==", + "dev": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "esbuild": { + "version": "0.12.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.20.tgz", + "integrity": "sha512-u7+0qTo9Z64MD9PhooEngCmzyEYJ6ovFhPp8PLNh3UasR5Ihjv6HWVXqm8uHmasdQlpsAf0IsY4U0YVUfCpt4Q==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.27.0.tgz", + "integrity": "sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "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", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "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" + } + }, + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "extend-shallow": { + "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" + }, + "dependencies": { + "is-extendable": { + "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" + } + } + } + }, + "extglob": { + "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", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "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" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", + "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "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", + "isobject": "^3.0.0" + } + }, + "has-values": { + "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" + }, + "dependencies": { + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "kind-of": { + "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" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-accessor-descriptor": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-descriptor": { + "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", + "kind-of": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "optional": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-object": { + "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" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "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==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + } + }, + "jest-coverage-thresholds-bumper": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/jest-coverage-thresholds-bumper/-/jest-coverage-thresholds-bumper-0.0.4.tgz", + "integrity": "sha512-4rNi/EcYMywSmoGKNOn2zHkTxz+3tC8oxPIFY0aP75t+FGoY+0e19N74/+gilYwjzC+eXVnsqyYBLv3KN95Myw==", + "dev": true, + "requires": { + "yargs": "^16.2.0" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + } + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-jsdom-sixteen": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-sixteen/-/jest-environment-jsdom-sixteen-1.0.3.tgz", + "integrity": "sha512-CwMqDUUfSl808uGPWXlNA1UFkWFgRmhHvyAjhCmCry6mYq4b/nn80MMN7tglqo5XgrANIs/w+mzINPzbZ4ZZrQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^25.1.0", + "jest-mock": "^25.1.0", + "jest-util": "^25.1.0", + "jsdom": "^16.2.1" + }, + "dependencies": { + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", + "dev": true, + "optional": true, + "requires": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdom": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", + "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.5", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", + "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "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==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "lint-staged": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", + "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "commander": "^6.2.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "dedent": "^0.7.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", + "listr2": "^3.2.2", + "log-symbols": "^4.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "^3.3.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "listr2": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.8.4.tgz", + "integrity": "sha512-DX+iKRcxaGbBjoLJBQlGceZoqdhV6Z54wpsvIVoVKNJ/lEXK8KhGhLaZnIGKRQmDmtJOtyNSnnKFUS1qn+jqsw==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^1.2.2", + "figures": "^3.2.0", + "indent-string": "^4.0.0", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.7", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "lit-element": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.4.0.tgz", + "integrity": "sha512-pBGLglxyhq/Prk2H91nA0KByq/hx/wssJBQFiYqXhGDvEnY31PRGYf1RglVzyLeRysu0IHm2K0P196uLLWmwFg==", + "requires": { + "lit-html": "^1.1.1" + } + }, + "lit-html": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz", + "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==" + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "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" + } + }, + "merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dev": true, + "requires": { + "mime-db": "1.47.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "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" + }, + "dependencies": { + "is-extendable": { + "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" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "n3": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.10.0.tgz", + "integrity": "sha512-y+qpS0GktEBttOaDR+BF1t1G2fw4Xn4nCZWNn+7MvEmD2I4YpMH6OJF/xHKSwInCxOC9vu9eI6pluB9/RDUyZQ==", + "requires": { + "queue-microtask": "^1.1.2", + "readable-stream": "^3.6.0" + } + }, + "nanoid": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "dev": true + }, + "nanomatch": { + "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", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "optional": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "object-copy": { + "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", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "kind-of": { + "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" + } + } + } + }, + "object-visit": { + "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" + } + }, + "object.pick": { + "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" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "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=", + "dev": true + }, + "postcss": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", + "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-polyfill": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", + "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", + "dev": true, + "optional": true + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "optional": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true, + "optional": true + }, + "regex-not": { + "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" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "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=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "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=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.56.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz", + "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "rx-lit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rx-lit/-/rx-lit-1.0.1.tgz", + "integrity": "sha512-30Nrpomd9WvCN211RXrogiyvh91Cvw2ygrBMQYierP3hJ7a8ghnQRlIQwTRoRLfr9BrVYYMZwbxriFoK/NSpFQ==" + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "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" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "fill-range": { + "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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "micromatch": { + "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", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "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=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "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", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "snapdragon": { + "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", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "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" + } + }, + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "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", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-resolve": { + "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", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "dev": true + }, + "split-string": { + "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" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "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" + }, + "dependencies": { + "define-property": { + "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" + } + } + } + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "optional": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.5.0.tgz", + "integrity": "sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "to-regex": { + "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", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + } + } + }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + }, + "union-value": { + "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", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "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" + }, + "dependencies": { + "has-value": { + "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", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "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" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vite": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.4.0.tgz", + "integrity": "sha512-FR+1hCyGt8i+ijMe9z4tIfUQ7BQThxGevp3IlmdXDBSJEPjbeDznbuJa/QVzXw2Mpxh7KCmveVI082h8nzcCNw==", + "dev": true, + "requires": { + "esbuild": "^0.12.8", + "fsevents": "~2.3.2", + "postcss": "^8.3.5", + "resolve": "^1.20.0", + "rollup": "^2.38.5" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", + "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xstate": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.25.0.tgz", + "integrity": "sha512-qP7lc/ypOuuWME4ArOBnzaCa90TfHkjiqYDmxpiCjPy6FcXstInA2vH6qRVAHbPXRK4KQIYfIEOk1X38P+TldQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + } + } +} diff --git a/packages/dgt-components/package.json b/packages/dgt-components/package.json new file mode 100644 index 00000000..b86bc300 --- /dev/null +++ b/packages/dgt-components/package.json @@ -0,0 +1,106 @@ +{ + "name": "@digita-ai/dgt-components", + "version": "0.5.0", + "description": "Collection of Semantic Components.", + "author": "Wouter Janssens ", + "main": "./dist/dgt-components.umd.js", + "types": "./dist/index.d.ts", + "module": "./dist/dgt-components.es.js", + "exports": { + ".": { + "import": "./dist/dgt-components.es.js", + "require": "./dist/dgt-components.umd.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "start": "npm run start:watch", + "start:watch": "vite", + "build": "rimraf ./dist && vite build --mode semcom && vite build --mode bundle && tsc", + "lint": "eslint .", + "lint:fix": "eslint --fix .", + "lint:staged": "lint-staged", + "test": "jest", + "test:ci": "jest --silent --runInBand --passWithNoTests", + "test:watch": "jest --watch --no-coverage", + "posttest": "jest-coverage-thresholds-bumper --silent --coverage-summary-path coverage-summary.json" + }, + "dependencies": { + "@digita-ai/semcom-core": "0.4.1", + "@digita-ai/semcom-sdk": "0.4.1", + "@digita-ai/dgt-utils": "0.5.0", + "@digita-ai/dgt-theme": "0.5.0", + "buffer": "6.0.3", + "lit-element": "2.4.0", + "n3": "1.10.0", + "rx-lit": "1.0.1", + "rxjs": "^6.6.7", + "xstate": "^4.25.0" + }, + "devDependencies": { + "@digita-ai/jest-config": "^0.3.3", + "@digita-ai/typescript-config": "^0.3.3", + "@originjs/vite-plugin-commonjs": "^1.0.0-beta7", + "@rollup/plugin-commonjs": "^20.0.0", + "@types/jest": "^26.0.23", + "@types/n3": "^1.8.0", + "@types/node": "^14.14.44", + "@types/rdf-js": "^4.0.1", + "eslint": "^7.16.0", + "jest": "^26.6.3", + "jest-coverage-thresholds-bumper": "0.0.4", + "jest-environment-jsdom-sixteen": "^1.0.3", + "lint-staged": "^10.5.4", + "rimraf": "^3.0.2", + "ts-node": "^9.1.1", + "typescript": "^4.2.4", + "vite": "2.4.0" + }, + "publishConfig": { + "registry": "https://npm.pkg.github.com/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/digita-ai/dgt-shared.git", + "directory": "packages/dgt-components" + }, + "bugs": { + "url": "https://github.com/digita-ai/dgt-shared/issues" + }, + "eslintIgnore": [ + "node_modules", + "dist", + "jest.config.ts", + "vite.config.ts", + "demo" + ], + "jest": { + "displayName": "dgt-components", + "preset": "@digita-ai/jest-config", + "testEnvironment": "jest-environment-jsdom-sixteen", + "setupFiles": [ + "/tests/setup.ts" + ], + "transformIgnorePatterns": [ + "node_modules/(?!(lit-element|lit-html|rx-lit)/)" + ], + "coverageThreshold": { + "global": { + "branches": 37.57, + "functions": 46.6, + "lines": 44.26, + "statements": 46.21 + } + }, + "coveragePathIgnorePatterns": [ + "/dist/", + "/node_modules/", + "/.*\\.conf(ig)?.ts", + "/lib/index.ts", + "/lib/demo.ts", + "/lib/demo/" + ] + } +} \ No newline at end of file diff --git a/packages/dgt-components/tests/setup.ts b/packages/dgt-components/tests/setup.ts new file mode 100644 index 00000000..899e5f16 --- /dev/null +++ b/packages/dgt-components/tests/setup.ts @@ -0,0 +1,20 @@ +import { AlertComponent } from '../lib/alerts/alert.component'; +import { FormElementComponent } from '../lib/forms/form-element.component'; +import { SidebarListItemComponent } from '../lib/sidebar/sidebar-list-item.component'; +import { SidebarListComponent } from '../lib/sidebar/sidebar-list.component'; +import { ContentHeaderComponent } from '../lib/header/content-header.component'; +import { SidebarComponent } from '../lib/sidebar/sidebar.component'; +import { SidebarItemComponent } from '../lib/sidebar/sidebar-item.component'; +import { CardComponent } from '../lib/cards/card.component'; + +/** + * Register tags for components. + */ +customElements.define('nde-alert', AlertComponent); +customElements.define('nde-form-element', FormElementComponent); +customElements.define('nde-sidebar-item', SidebarItemComponent); +customElements.define('nde-sidebar-list-item', SidebarListItemComponent); +customElements.define('nde-sidebar-list', SidebarListComponent); +customElements.define('nde-sidebar', SidebarComponent); +customElements.define('nde-large-card', CardComponent); +customElements.define('nde-content-header', ContentHeaderComponent); diff --git a/packages/dgt-components/tsconfig.json b/packages/dgt-components/tsconfig.json new file mode 100644 index 00000000..5d5f3065 --- /dev/null +++ b/packages/dgt-components/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "@digita-ai/typescript-config/tsconfig.json", + "compilerOptions": { + "baseUrl": "lib", + "outDir": "dist", + "emitDeclarationOnly": false, + // Recommended by Lit Element + "module": "es2015", + "target": "es2017", + // Strict should actually be true + "strict": false, + "noImplicitAny": true, + "noImplicitReturns": true, + }, + "files": [ "node_modules/vite/client.d.ts" ], + "include": [ "lib" ], + "exclude": [ + "**/*.spec.ts", + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/packages/dgt-components/tsconfig.spec.json b/packages/dgt-components/tsconfig.spec.json new file mode 100644 index 00000000..ead1f9c1 --- /dev/null +++ b/packages/dgt-components/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "@digita-ai/typescript-config/tsconfig.spec.json", + "compilerOptions": { + "baseUrl": "lib", + "outDir": "dist", + "sourceMap": true, + "strict": false + }, + "files": [ + "node_modules/vite/client.d.ts", + "tests/setup.ts" + ], + "include": [ "lib" ], + "exclude": [ + "dist", + "node_modules" + ] +} diff --git a/packages/dgt-components/vite.config.ts b/packages/dgt-components/vite.config.ts new file mode 100644 index 00000000..6b5a2b2a --- /dev/null +++ b/packages/dgt-components/vite.config.ts @@ -0,0 +1,62 @@ +import { resolve } from 'path'; +import { defineConfig } from 'vite' + +export default ({ command, mode }) => { + if (command === 'serve') { + return defineConfig({ + root: 'demo', + build: { + target: 'es2015', + outDir: '../dist' + }, + define: { + 'process.env.NODE_DEBUG': undefined + }, + server: { + port: 8080, + } + }) + } else if(command === 'build' && mode === 'semcom') { + return defineConfig({ + root: 'lib', + build: { + target: 'es2015', + lib: { + entry: resolve(__dirname, 'lib/index.ts'), + name: '@digita-ai/dgt-components' + }, + rollupOptions: { + input: { + profileName: resolve(__dirname, 'lib/profile/profile-name.component.ts'), + }, + output: [ + { + entryFileNames: ({ facadeModuleId }) => facadeModuleId.split('/').pop().replace('.ts', '.js'), + format: 'esm', + dir: resolve(__dirname, 'dist') + }, + ], + }, + outDir: '../dist' + }, + define: { + 'process.env.NODE_DEBUG': undefined + }, + }) + } else if(command === 'build' && mode === 'bundle') { + return defineConfig({ + root: 'lib', + build: { + target: 'es2015', + lib: { + entry: resolve(__dirname, 'lib/index.ts'), + name: '@digita-ai/dgt-components' + }, + outDir: '../dist' + }, + define: { + 'process.env.NODE_DEBUG': undefined + }, + }) + } +} \ No newline at end of file diff --git a/packages/dgt-theme/.DS_Store b/packages/dgt-theme/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a67d688e25b2e6286e190f62a9cdbd1251d1f357 GIT binary patch literal 6148 zcmeH~Jqp4=5QS&dLa<3`xs3<#28-wkynv_(LLi0M@6mnp(-^HK$QzjXc4jjqc||rO zBD#BCw<4X0Ea67kSQwcipGz-yIp402%Xt`jE4j^*R)BXh+Rtr*3Qz$mKn17(6_}6$ zd5|wx6M7~-3KgIN(@?;^4+UJKV{X{4G#L{2yZ_DNbD$H!`-l7Yys9}3!(z!kATa-Km~rPzzZ=M B5oG`X literal 0 HcmV?d00001 diff --git a/packages/dgt-theme/.npmrc b/packages/dgt-theme/.npmrc new file mode 100644 index 00000000..afdc90d6 --- /dev/null +++ b/packages/dgt-theme/.npmrc @@ -0,0 +1,5 @@ +registry=https://registry.npmjs.org/ + +@digita-ai:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=${NPM_TOKEN} +always-auth=true \ No newline at end of file diff --git a/packages/dgt-theme/.stylelintrc b/packages/dgt-theme/.stylelintrc new file mode 100644 index 00000000..00150214 --- /dev/null +++ b/packages/dgt-theme/.stylelintrc @@ -0,0 +1,6 @@ +{ + "extends": "stylelint-config-standard", + "rules": { + "selector-type-no-unknown": null + } +} \ No newline at end of file diff --git a/packages/dgt-theme/lib/.DS_Store b/packages/dgt-theme/lib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..50e22ee4ccfe78c90e94d8576020ad04abf948ed GIT binary patch literal 6148 zcmeH~O^O0R4256R0l|$+m$mT#bAv+k1akoyMG$0qA@1wwzNE6T$Mw(*FOYhbRHc8u zMOO!a?H=b(U=3hNcg5C+ks0F;TyesHAKWkJ`{{caZl1<0_j*9*HD1?qSt0@=AOa#F z0wORW0&$4*{9jGzne-?kAOh1M;NOQrcdeM&FdfEu^b*wK32IGkU74X- zb`O@N7Hx>qlW;H~E2#COlz`Vz6KmQN(cm4mU zM4 + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Collection.svg b/packages/dgt-theme/lib/icons/Collection.svg new file mode 100644 index 00000000..85100f28 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Collection.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Connect.svg b/packages/dgt-theme/lib/icons/Connect.svg new file mode 100644 index 00000000..6223a61a --- /dev/null +++ b/packages/dgt-theme/lib/icons/Connect.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/dgt-theme/lib/icons/Cross.svg b/packages/dgt-theme/lib/icons/Cross.svg new file mode 100644 index 00000000..d46e4f24 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Cross.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Doccle.svg b/packages/dgt-theme/lib/icons/Doccle.svg new file mode 100644 index 00000000..9b5586b0 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Doccle.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Dots.svg b/packages/dgt-theme/lib/icons/Dots.svg new file mode 100644 index 00000000..72cb5581 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Dots.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/dgt-theme/lib/icons/Dropdown.svg b/packages/dgt-theme/lib/icons/Dropdown.svg new file mode 100644 index 00000000..b86a3750 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Dropdown.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/dgt-theme/lib/icons/Edit.svg b/packages/dgt-theme/lib/icons/Edit.svg new file mode 100644 index 00000000..a64f3d95 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Edit.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/dgt-theme/lib/icons/Empty.svg b/packages/dgt-theme/lib/icons/Empty.svg new file mode 100644 index 00000000..b7bee6b3 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Empty.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Identity.svg b/packages/dgt-theme/lib/icons/Identity.svg new file mode 100644 index 00000000..42d93001 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Identity.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Image.svg b/packages/dgt-theme/lib/icons/Image.svg new file mode 100644 index 00000000..268cdfca --- /dev/null +++ b/packages/dgt-theme/lib/icons/Image.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Itsme.svg b/packages/dgt-theme/lib/icons/Itsme.svg new file mode 100644 index 00000000..c40d1dae --- /dev/null +++ b/packages/dgt-theme/lib/icons/Itsme.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/dgt-theme/lib/icons/Loading.svg b/packages/dgt-theme/lib/icons/Loading.svg new file mode 100644 index 00000000..64482c69 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Loading.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/packages/dgt-theme/lib/icons/Login.svg b/packages/dgt-theme/lib/icons/Login.svg new file mode 100644 index 00000000..dd4affea --- /dev/null +++ b/packages/dgt-theme/lib/icons/Login.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/dgt-theme/lib/icons/Logo.svg b/packages/dgt-theme/lib/icons/Logo.svg new file mode 100644 index 00000000..a55d7070 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Logo.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Logout.svg b/packages/dgt-theme/lib/icons/Logout.svg new file mode 100644 index 00000000..4c942071 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Logout.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/dgt-theme/lib/icons/Object.svg b/packages/dgt-theme/lib/icons/Object.svg new file mode 100644 index 00000000..70818482 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Object.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Picture.svg b/packages/dgt-theme/lib/icons/Picture.svg new file mode 100644 index 00000000..e625ec3d --- /dev/null +++ b/packages/dgt-theme/lib/icons/Picture.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Plus.svg b/packages/dgt-theme/lib/icons/Plus.svg new file mode 100644 index 00000000..4bb9563a --- /dev/null +++ b/packages/dgt-theme/lib/icons/Plus.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Podspaces.svg b/packages/dgt-theme/lib/icons/Podspaces.svg new file mode 100644 index 00000000..d0ae7bc8 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Podspaces.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/icons/Save.svg b/packages/dgt-theme/lib/icons/Save.svg new file mode 100644 index 00000000..b36bd7d4 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Save.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/dgt-theme/lib/icons/Search.svg b/packages/dgt-theme/lib/icons/Search.svg new file mode 100644 index 00000000..3ec5aff8 --- /dev/null +++ b/packages/dgt-theme/lib/icons/Search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/dgt-theme/lib/icons/Trash.svg b/packages/dgt-theme/lib/icons/Trash.svg new file mode 100644 index 00000000..dd59655c --- /dev/null +++ b/packages/dgt-theme/lib/icons/Trash.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/dgt-theme/lib/icons/vault.svg b/packages/dgt-theme/lib/icons/vault.svg new file mode 100644 index 00000000..fe8676d2 --- /dev/null +++ b/packages/dgt-theme/lib/icons/vault.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/dgt-theme/lib/index.ts b/packages/dgt-theme/lib/index.ts new file mode 100644 index 00000000..8c128855 --- /dev/null +++ b/packages/dgt-theme/lib/index.ts @@ -0,0 +1,32 @@ +/** + * Export icons + */ +export { default as Bell } from './icons/Bell.svg?raw'; +export { default as Cross } from './icons/Cross.svg?raw'; +export { default as Search } from './icons/Search.svg?raw'; +export { default as Login } from './icons/Login.svg?raw'; +export { default as Logout } from './icons/Logout.svg?raw'; +export { default as Save } from './icons/Save.svg?raw'; +export { default as Object } from './icons/Object.svg?raw'; +export { default as Trash } from './icons/Trash.svg?raw'; +export { default as Dropdown } from './icons/Dropdown.svg?raw'; +export { default as Identity } from './icons/Identity.svg?raw'; +export { default as Plus } from './icons/Plus.svg?raw'; +export { default as Collection } from './icons/Collection.svg?raw'; +export { default as Image } from './icons/Image.svg?raw'; +export { default as Dots } from './icons/Dots.svg?raw'; +export { default as Connect } from './icons/Connect.svg?raw'; +export { default as Edit } from './icons/Edit.svg?raw'; +export { default as Empty } from './icons/Empty.svg?raw'; +export { default as Logo } from './icons/Logo.svg?raw'; +export { default as Itsme } from './icons/Itsme.svg?raw'; +export { default as Loading } from './icons/Loading.svg?raw'; +export { default as Picture } from './icons/Picture.svg?raw'; +export { default as Podspaces } from './icons/Podspaces.svg?raw'; +export { default as Doccle } from './icons/Doccle.svg?raw'; +export { default as Vault } from './icons/vault.svg'; + +/** + * Export theme + */ +export { default as Theme } from './theme.css'; diff --git a/packages/dgt-theme/lib/theme.css b/packages/dgt-theme/lib/theme.css new file mode 100644 index 00000000..0f79b19d --- /dev/null +++ b/packages/dgt-theme/lib/theme.css @@ -0,0 +1,19 @@ +/** + * External libraries +*/ +@import '../node_modules/normalize.css/normalize.css'; + +/** + * Common styles +*/ +@import './common/colors.css'; +@import './common/measures.css'; +@import './common/typography.css'; + +/** + * Element styles +*/ +@import './elements/buttons.css'; +@import './elements/forms.css'; +@import './elements/svg.css'; +@import './elements/grids.css'; diff --git a/packages/dgt-theme/package-lock.json b/packages/dgt-theme/package-lock.json new file mode 100644 index 00000000..679c2194 --- /dev/null +++ b/packages/dgt-theme/package-lock.json @@ -0,0 +1,2450 @@ +{ + "name": "@digita-ai/dgt-theme", + "version": "0.5.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.0.tgz", + "integrity": "sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q==", + "dev": true + }, + "@babel/core": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", + "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.3", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.14.2", + "@babel/helpers": "^7.14.0", + "@babel/parser": "^7.14.3", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.3.tgz", + "integrity": "sha512-bn0S6flG/j0xtQdz3hsjJ624h3W0r3llttBMfyHX3YrZ/KtLYr15bjA0FXkgW7FpvrDuTuElXeVjiKlYRpnOFA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.2", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-function-name": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz", + "integrity": "sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz", + "integrity": "sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.14.0", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-replace-supers": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.3.tgz", + "integrity": "sha512-Rlh8qEWZSTfdz+tgNV/N4gz1a0TMNwCUcENhMjHTHKp3LseYH5Jha0NSlyTQWMnjbYcwFt+bqAMqSLHVXkQ6UA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.14.2", + "@babel/types": "^7.14.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz", + "integrity": "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", + "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.14.0" + } + }, + "@babel/highlight": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz", + "integrity": "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.3.tgz", + "integrity": "sha512-7MpZDIfI7sUC5zWo2+foJ50CSI5lcqDehZ0lVgIhSi4bFEk94fLAKlF3Q0nzSQQ+ca0lm+O6G9ztKVBeu8PMRQ==", + "dev": true + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.2.tgz", + "integrity": "sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.14.2", + "@babel/helper-function-name": "^7.14.2", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.14.2", + "@babel/types": "^7.14.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.2.tgz", + "integrity": "sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.0", + "to-fast-properties": "^2.0.0" + } + }, + "@digita-ai/typescript-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/typescript-config/0.3.4/16c8755238a358331f20ff2c6ab36abe32c45e74f83ec0bad66965a5ff5fdf6a", + "integrity": "sha512-/hl2uGMPa1XvouKwjqSOBrX1zL5RArHf+3vFIU4nuqLM7IoX2telyvNA2Ej3zbuUS7rOTQW8dYi3j4LHnCvCxg==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", + "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.4", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", + "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", + "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.4", + "fastq": "^1.6.0" + } + }, + "@stylelint/postcss-css-in-js": { + "version": "0.37.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", + "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", + "dev": true, + "requires": { + "@babel/core": ">=7.9.0" + } + }, + "@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "dev": true, + "requires": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + } + }, + "@types/mdast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", + "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "dev": true, + "requires": { + "@types/unist": "*" + } + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "@types/node": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz", + "integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/unist": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "dev": true + }, + "ajv": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.5.0.tgz", + "integrity": "sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caniuse-lite": { + "version": "1.0.30001228", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz", + "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", + "dev": true + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "clone-regexp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", + "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "dev": true, + "requires": { + "is-regexp": "^2.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "electron-to-chromium": { + "version": "1.3.738", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.738.tgz", + "integrity": "sha512-vCMf4gDOpEylPSLPLSwAEsz+R3ShP02Y3cAKMZvTqule3XcPp7tgc/0ESI7IS6ZeyBlGClE50N53fIOkcIVnpw==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "esbuild": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", + "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "execall": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", + "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", + "dev": true, + "requires": { + "clone-regexp": "^2.1.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", + "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "dev": true + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-regexp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", + "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "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==", + "dev": true + }, + "known-css-properties": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", + "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "dev": true + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-obj": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "dev": true + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", + "dev": true + }, + "node-releases": { + "version": "1.1.72", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.72.tgz", + "integrity": "sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw==", + "dev": true + }, + "normalize-package-data": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", + "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "resolve": "^1.20.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "dev": true + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "dev": true, + "requires": { + "htmlparser2": "^3.10.0" + } + }, + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "dev": true + }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "dev": true + }, + "postcss-safe-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", + "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "dev": true, + "requires": { + "postcss": "^7.0.26" + } + }, + "postcss-sass": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", + "dev": true, + "requires": { + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + } + }, + "postcss-scss": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", + "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", + "dev": true, + "requires": { + "postcss": "^7.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-syntax": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", + "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", + "dev": true, + "requires": { + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" + } + }, + "remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^0.8.0" + } + }, + "remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "^0.6.0" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.50.0.tgz", + "integrity": "sha512-wO+F2MqWPGUCZx0549oqY8dsQqHVjuSxoyBWWnxKoQE+1UGcDKjtL7wHq/8jnnLJEeoGDQLf3ztrpgRwlbGJ0A==", + "dev": true, + "requires": { + "fsevents": "~2.3.1" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "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==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "dev": true + }, + "specificity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", + "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "dev": true + }, + "stylelint": { + "version": "13.13.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", + "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "dev": true, + "requires": { + "@stylelint/postcss-css-in-js": "^0.37.2", + "@stylelint/postcss-markdown": "^0.36.2", + "autoprefixer": "^9.8.6", + "balanced-match": "^2.0.0", + "chalk": "^4.1.1", + "cosmiconfig": "^7.0.0", + "debug": "^4.3.1", + "execall": "^2.0.0", + "fast-glob": "^3.2.5", + "fastest-levenshtein": "^1.0.12", + "file-entry-cache": "^6.0.1", + "get-stdin": "^8.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.3", + "globjoin": "^0.1.4", + "html-tags": "^3.1.0", + "ignore": "^5.1.8", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "known-css-properties": "^0.21.0", + "lodash": "^4.17.21", + "log-symbols": "^4.1.0", + "mathml-tag-names": "^2.1.3", + "meow": "^9.0.0", + "micromatch": "^4.0.4", + "normalize-selector": "^0.2.0", + "postcss": "^7.0.35", + "postcss-html": "^0.36.0", + "postcss-less": "^3.1.4", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^4.0.2", + "postcss-sass": "^0.4.4", + "postcss-scss": "^2.1.1", + "postcss-selector-parser": "^6.0.5", + "postcss-syntax": "^0.36.2", + "postcss-value-parser": "^4.1.0", + "resolve-from": "^5.0.0", + "slash": "^3.0.0", + "specificity": "^0.4.1", + "string-width": "^4.2.2", + "strip-ansi": "^6.0.0", + "style-search": "^0.1.0", + "sugarss": "^2.0.0", + "svg-tags": "^1.0.0", + "table": "^6.6.0", + "v8-compile-cache": "^2.3.0", + "write-file-atomic": "^3.0.3" + }, + "dependencies": { + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true + } + } + }, + "stylelint-config-recommended": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-4.0.0.tgz", + "integrity": "sha512-sgna89Ng+25Hr9kmmaIxpGWt2LStVm1xf1807PdcWasiPDaOTkOHRL61sINw0twky7QMzafCGToGDnHT/kTHtQ==", + "dev": true + }, + "stylelint-config-standard": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-21.0.0.tgz", + "integrity": "sha512-Yf6mx5oYEbQQJxWuW7X3t1gcxqbUx52qC9SMS3saC2ruOVYEyqmr5zSW6k3wXflDjjFrPhar3kp68ugRopmlzg==", + "dev": true, + "requires": { + "stylelint-config-recommended": "^4.0.0" + } + }, + "sugarss": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", + "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + }, + "unified": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", + "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + }, + "unist-util-find-all-after": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", + "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", + "dev": true, + "requires": { + "unist-util-is": "^4.0.0" + } + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vite": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.2.3.tgz", + "integrity": "sha512-PtjyBL4GtACM+uT5q5hi2+AlMBbb6YI2b2bam6QI8ZdZt4FezseF0yZHQx0G+b3po9jIJ/GS5N9gc5Yq9Rue7g==", + "dev": true, + "requires": { + "esbuild": "^0.9.3", + "fsevents": "~2.3.1", + "postcss": "^8.2.1", + "resolve": "^1.19.0", + "rollup": "^2.38.5" + }, + "dependencies": { + "postcss": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.0.tgz", + "integrity": "sha512-+ogXpdAjWGa+fdYY5BQ96V/6tAo+TdSSIMP5huJBIygdWwKtVoB5JWZ7yUd4xZ8r+8Kvvx4nyg/PQ071H4UtcQ==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true + } + } +} diff --git a/packages/dgt-theme/package.json b/packages/dgt-theme/package.json new file mode 100644 index 00000000..4530a225 --- /dev/null +++ b/packages/dgt-theme/package.json @@ -0,0 +1,53 @@ +{ + "name": "@digita-ai/dgt-theme", + "version": "0.5.0", + "description": "Theme for Digita projects.", + "author": "Wouter Janssens ", + "main": "./dist/dgt-theme.umd.js", + "license": "EUPL-1.2", + "types": "./dist/index.d.ts", + "module": "./dist/dgt-theme.es.js", + "exports": { + ".": { + "import": "./dist/dgt-theme.es.js", + "require": "./dist/dgt-theme.umd.js" + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "rimraf dist && vite build && tsc", + "lint": "stylelint \"lib/**/*.css\"", + "lint:fix": "stylelint \"lib/**/*.css\" --fix", + "lint:staged": "lint-staged" + }, + "devDependencies": { + "@digita-ai/typescript-config": "^0.3.3", + "@types/node": "^15.0.2", + "normalize.css": "8.0.1", + "rimraf": "^3.0.2", + "stylelint": "^13.12.0", + "stylelint-config-standard": "^21.0.0", + "ts-node": "^9.1.1", + "typescript": "^4.2.4", + "vite": "2.2.3" + }, + "publishConfig": { + "registry": "https://npm.pkg.github.com/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/digita-ai/dgt-shared.git", + "directory": "packages/dgt-theme" + }, + "bugs": { + "url": "https://github.com/digita-ai/dgt-shared/issues" + }, + "ignorePatterns": [ + "node_modules", + "dist", + "jest.config.ts", + "vite.config.ts" + ] +} diff --git a/packages/dgt-theme/tsconfig.json b/packages/dgt-theme/tsconfig.json new file mode 100644 index 00000000..dfa9e301 --- /dev/null +++ b/packages/dgt-theme/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "@digita-ai/typescript-config/tsconfig.json", + "compilerOptions": { + "baseUrl": "lib", + "outDir": "dist", + "emitDeclarationOnly": true, + // Recommended by Lit Element + "module": "es2015", + "target": "es2017" + }, + "files": [ "node_modules/vite/client.d.ts" ], + "include": [ "lib" ], + "exclude": [ + "**/*.spec.ts", + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/packages/dgt-theme/vite.config.ts b/packages/dgt-theme/vite.config.ts new file mode 100644 index 00000000..d9947607 --- /dev/null +++ b/packages/dgt-theme/vite.config.ts @@ -0,0 +1,14 @@ +import path from 'path'; +import { defineConfig } from 'vite' + +export default defineConfig({ + root: 'lib', + build: { + target: 'es2015', + lib: { + entry: path.resolve(__dirname, 'lib/index.ts'), + name: '@digita-ai/dgt-theme' + }, + outDir: '../dist' + } +}); \ No newline at end of file diff --git a/packages/dgt-utils/.componentsignore b/packages/dgt-utils/.componentsignore new file mode 100644 index 00000000..915aa763 --- /dev/null +++ b/packages/dgt-utils/.componentsignore @@ -0,0 +1,20 @@ +[ + "Error", + "EventEmitter", + "DGTPlatformType", + "DGTConfigurationBase", + "DGTConfigurationBaseWeb", + "DGTLoggerLevel", + "DGTCryptoKey", + "DGTCryptoKeyPair", + "Injectable", + "DGTHttpResponse", + "DGTCacheType", + "TSUnionType", + "DGTMap", + "DGTErrorArgument", + "DGTErrorConfig", + "DGTErrorHttp", + "DGTErrorLaunchHandler", + "HttpClient" +] diff --git a/packages/dgt-utils/.eslintignore b/packages/dgt-utils/.eslintignore new file mode 100644 index 00000000..4cb3a606 --- /dev/null +++ b/packages/dgt-utils/.eslintignore @@ -0,0 +1,4 @@ +node_modules +dist +jest.config.ts +vite.config.ts diff --git a/packages/dgt-utils/.gitignore b/packages/dgt-utils/.gitignore new file mode 100644 index 00000000..f3c8cfe5 --- /dev/null +++ b/packages/dgt-utils/.gitignore @@ -0,0 +1,47 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events.json +speed-measure-plugin.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db + +componentsjs-error-state.json diff --git a/packages/dgt-utils/.npmrc b/packages/dgt-utils/.npmrc new file mode 100644 index 00000000..f8f270f3 --- /dev/null +++ b/packages/dgt-utils/.npmrc @@ -0,0 +1,5 @@ +registry=https://registry.npmjs.org/ + +@digita-ai:registry=https://npm.pkg.github.com +//npm.pkg.github.com/:_authToken=${NPM_TOKEN} +always-auth=true diff --git a/packages/dgt-utils/CHANGELOG.md b/packages/dgt-utils/CHANGELOG.md new file mode 100644 index 00000000..f7ed10c6 --- /dev/null +++ b/packages/dgt-utils/CHANGELOG.md @@ -0,0 +1,190 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [0.5.0](https://github.com/digita-ai/dgt-platform/compare/0.4.20...0.5.0) (2021-06-02) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.20](https://github.com/digita-ai/dgt-platform/compare/0.4.19...0.4.20) (2021-06-02) + + +### Features + +* check user permission on invite ([#231](https://github.com/digita-ai/dgt-platform/issues/231)) ([293f4b0](https://github.com/digita-ai/dgt-platform/commit/293f4b0064c4bd4104a4f71331fe1f1e379c9f4e)) + + + + + +## [0.4.19](https://github.com/digita-ai/dgt-platform/compare/0.4.18...0.4.19) (2021-05-21) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.18](https://github.com/digita-ai/dgt-platform/compare/0.4.17...0.4.18) (2021-05-21) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.17](https://github.com/digita-ai/dgt-platform/compare/0.4.16...0.4.17) (2021-05-19) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.16](https://github.com/digita-ai/dgt-platform/compare/0.4.15...0.4.16) (2021-05-18) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.15](https://github.com/digita-ai/dgt-platform/compare/0.4.14...0.4.15) (2021-05-18) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.14](https://github.com/digita-ai/dgt-platform/compare/0.4.13...0.4.14) (2021-05-18) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.13](https://github.com/digita-ai/dgt-platform/compare/0.4.12...0.4.13) (2021-04-08) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.12](https://github.com/digita-ai/dgt-platform/compare/0.4.11...0.4.12) (2021-04-07) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.11](https://github.com/digita-ai/dgt-platform/compare/0.4.10...0.4.11) (2021-04-07) + + +### Bug Fixes + +* refresh fails without error when a Solid connection's id token is invalid ([#172](https://github.com/digita-ai/dgt-platform/issues/172)) ([78c0c60](https://github.com/digita-ai/dgt-platform/commit/78c0c6032436356e3e073994d0ead10ea36130ee)) + + +### Features + +* Create Winston-based DGTLoggerService implementation ([#192](https://github.com/digita-ai/dgt-platform/issues/192)) ([c6a9a78](https://github.com/digita-ai/dgt-platform/commit/c6a9a78c04342ad4ef7e9853131c86cfe4a442c2)) + + + + + +## [0.4.10](https://github.com/digita-ai/dgt-platform/compare/0.4.9...0.4.10) (2021-03-24) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.9](https://github.com/digita-ai/dgt-platform/compare/0.4.8...0.4.9) (2021-03-22) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.8](https://github.com/digita-ai/dgt-platform/compare/0.4.7...0.4.8) (2021-03-22) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.7](https://github.com/digita-ai/dgt-platform/compare/0.4.6...0.4.7) (2021-03-21) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.6](https://github.com/digita-ai/dgt-platform/compare/0.4.5...0.4.6) (2021-03-21) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.5](https://github.com/digita-ai/dgt-platform/compare/0.4.4...0.4.5) (2021-03-21) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.4](https://github.com/digita-ai/dgt-platform/compare/0.4.3...0.4.4) (2021-03-20) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.3](https://github.com/digita-ai/dgt-platform/compare/0.4.2...0.4.3) (2021-03-19) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +## [0.4.2](https://github.com/digita-ai/dgt-platform/compare/0.4.1...0.4.2) (2021-03-19) + + +### Bug Fixes + +* gracefully exit when error is caught during launch ([#139](https://github.com/digita-ai/dgt-platform/issues/139)) ([7d89864](https://github.com/digita-ai/dgt-platform/commit/7d89864d9e4ff0b1dce34d2f837e0c68ba2646ea)) + + + + + +## [0.4.1](https://github.com/digita-ai/dgt-platform/compare/0.4.0...0.4.1) (2021-03-14) + +**Note:** Version bump only for package @digita-ai/dgt-utils + + + + + +# [0.4.0](https://github.com/digita-ai/dgt-platform/compare/0.3.8...0.4.0) (2021-03-14) + +**Note:** Version bump only for package @digita-ai/dgt-utils diff --git a/packages/dgt-utils/config/config-test.json b/packages/dgt-utils/config/config-test.json new file mode 100644 index 00000000..6c1adf7d --- /dev/null +++ b/packages/dgt-utils/config/config-test.json @@ -0,0 +1,17 @@ +{ + "@context": [ + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/components/context.jsonld" + ], + "import": [ + "files-dadu:config/presets/logger.json", + "files-dadu:config/presets/crypto.json", + "files-dadu:config/presets/parameters.json" + ], + "@graph": [ + { + "@id": "urn:dgt-utils:test:DGTOriginService", + "@type": "DGTOriginMockService", + "DGTOriginMockService:_origin": "https://mock.origin/" + } + ] +} diff --git a/packages/dgt-utils/config/presets/crypto.json b/packages/dgt-utils/config/presets/crypto.json new file mode 100644 index 00000000..5d8acdca --- /dev/null +++ b/packages/dgt-utils/config/presets/crypto.json @@ -0,0 +1,14 @@ +{ + "@context": [ + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/components/context.jsonld" + ], + "@graph": [ + { + "@id": "urn:dgt-utils:test:DGTCryptoBrowserService", + "@type": "DGTCryptoBrowserService", + "DGTCryptoBrowserService:_logger": { + "@id": "urn:dgt-utils:test:DGTLoggerService" + } + } + ] +} diff --git a/packages/dgt-utils/config/presets/logger.json b/packages/dgt-utils/config/presets/logger.json new file mode 100644 index 00000000..58310d7c --- /dev/null +++ b/packages/dgt-utils/config/presets/logger.json @@ -0,0 +1,19 @@ +{ + "@context": [ + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/components/context.jsonld" + ], + "@graph": [ + { + "@id": "urn:dgt-utils:test:DGTLoggerConsoleService", + "@type": "DGTLoggerConsoleService", + "DGTLoggerConsoleService:_minimumLevel": 6, + "DGTLoggerConsoleService:_minimumLevelPrintData": 4 + }, + { + "@id": "urn:dgt-utils:test:DGTLoggerService", + "@type": "DGTLoggerConsoleService", + "DGTLoggerConsoleService:_minimumLevel": 6, + "DGTLoggerConsoleService:_minimumLevelPrintData": 6 + } + ] +} diff --git a/packages/dgt-utils/config/presets/parameters.json b/packages/dgt-utils/config/presets/parameters.json new file mode 100644 index 00000000..f5c8e3e5 --- /dev/null +++ b/packages/dgt-utils/config/presets/parameters.json @@ -0,0 +1,11 @@ +{ + "@context": [ + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/components/context.jsonld" + ], + "@graph": [ + { + "@id": "urn:dgt-utils:test:DGTParameterCheckerService", + "@type": "DGTParameterCheckerService" + } + ] +} diff --git a/packages/dgt-utils/lib/cache/models/dgt-cache-type.model.ts b/packages/dgt-utils/lib/cache/models/dgt-cache-type.model.ts new file mode 100644 index 00000000..3e886c0c --- /dev/null +++ b/packages/dgt-utils/lib/cache/models/dgt-cache-type.model.ts @@ -0,0 +1,4 @@ +export enum DGTCacheType { + IN_MEMORY = 'IN_MEMORY', + SOLID = 'SOLID', +} diff --git a/packages/dgt-utils/lib/collections/models/dgt-map.model.ts b/packages/dgt-utils/lib/collections/models/dgt-map.model.ts new file mode 100644 index 00000000..ed445eda --- /dev/null +++ b/packages/dgt-utils/lib/collections/models/dgt-map.model.ts @@ -0,0 +1,151 @@ +import { isEqual } from '../../utils/is-equal'; + +export class DGTMap { + + private array: { key: T; value: S }[] = new Array<{ key: T; value: S }>(); + get size(): number { + + return this.array.length; + + } + public [Symbol.toStringTag]: 'Map'; + + static fromArray(array: { key: STATIC_T; value: STATIC_S }[]): DGTMap { + + const res = new DGTMap(); + + if (array) { + + res.array = array; + + } + + return res; + + } + + constructor(map?: DGTMap | { key: T; value: S }[]) { + + if (map instanceof DGTMap) { + + this.array = map.array; + + } else if (map instanceof Array) { + + this.array = map; + + } + + } + + clear(): void { + + this.array = new Array<{ key: T; value: S }>(); + + } + delete(key: T): boolean { + + this.array = this.array.filter((tuple) => tuple.key !== key); + + return true; + + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + forEach(callbackfn: (value: S, key: T) => void, thisArg?: any): void { + + return this.array.forEach((tuple) => callbackfn(tuple.value, tuple.key)); + + } + get(key: T): S | undefined { + + let res; + + const foundTuple = this.array.find((tuple) => isEqual(key, tuple.key)); + + if (foundTuple) { + + res = foundTuple.value; + + } + + return res; + + } + getByIndex(index: number): { key: T; value: S } { + + return this.array[index]; + + } + findIndex(key: T): number { + + return this.array.findIndex((e) => e.key === key); + + } + has(key: T): boolean { + + let res = false; + + const foundTuple = this.array.find((tuple) => isEqual(key, tuple.key)); + + if (foundTuple !== null && foundTuple !== undefined) { + + res = true; + + } + + return res; + + } + set(key: T, value: S): this { + + if (this.has(key)) { + + this.delete(key); + + } + + this.array.push({ key, value }); + + return this; + + } + [Symbol.iterator](): IterableIterator<[number, { + key: T; + value: S; + }]> { + + return this.entries(); + + } + entries(): IterableIterator<[number, { + key: T; + value: S; + }]> { + + return this.array.entries(); + + } + keys(): IterableIterator { + + return this.array.map((tuple) => tuple.key).values(); + + } + values(): IterableIterator { + + return this.array.map((tuple) => tuple.value).values(); + + } + + toArray(): { key: T; value: S }[] { + + return Array.from(this.array); + + } + + getByValue(value: S): T | undefined { + + return this.array?.find((entry) => entry?.value === value)?.key; + + } + +} diff --git a/packages/dgt-utils/lib/connectivity/services/dgt-connectivity.service.ts b/packages/dgt-utils/lib/connectivity/services/dgt-connectivity.service.ts new file mode 100644 index 00000000..0031ea95 --- /dev/null +++ b/packages/dgt-utils/lib/connectivity/services/dgt-connectivity.service.ts @@ -0,0 +1,53 @@ +import { OnDestroy, Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable() +export class DGTConnectivityService implements OnDestroy { + + static EVENT_TYPE_ONLINE = 'online'; + static EVENT_TYPE_OFFLINE = 'offline'; + public status: BehaviorSubject = new BehaviorSubject(true); + + constructor() { + + if (window) { + + this.bind(); + window.addEventListener(DGTConnectivityService.EVENT_TYPE_ONLINE, this.onOnline); + window.addEventListener(DGTConnectivityService.EVENT_TYPE_OFFLINE, this.onOffline); + + } + + } + + ngOnDestroy() { + + if (window) { + + window.removeEventListener(DGTConnectivityService.EVENT_TYPE_ONLINE, this.onOnline); + window.removeEventListener(DGTConnectivityService.EVENT_TYPE_OFFLINE, this.onOffline); + + } + + } + + private bind() { + + this.onOnline = this.onOnline.bind(this); + this.onOffline = this.onOffline.bind(this); + + } + + private onOnline() { + + this.status.next(true); + + } + + private onOffline() { + + this.status.next(false); + + } + +} diff --git a/projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key-pair.model.ts b/packages/dgt-utils/lib/crypto/models/dgt-crypto-key-pair.model.ts similarity index 60% rename from projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key-pair.model.ts rename to packages/dgt-utils/lib/crypto/models/dgt-crypto-key-pair.model.ts index a3c1a29d..1ae06913 100644 --- a/projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key-pair.model.ts +++ b/packages/dgt-utils/lib/crypto/models/dgt-crypto-key-pair.model.ts @@ -1,6 +1,6 @@ import { DGTCryptoKey } from './dgt-crypto-key.model'; export interface DGTCryptoKeyPair { - publicKey: DGTCryptoKey, - privateKey: DGTCryptoKey, -} \ No newline at end of file + publicKey: DGTCryptoKey; + privateKey: DGTCryptoKey; +} diff --git a/packages/dgt-utils/lib/crypto/models/dgt-crypto-key.model.ts b/packages/dgt-utils/lib/crypto/models/dgt-crypto-key.model.ts new file mode 100644 index 00000000..d3c8958f --- /dev/null +++ b/packages/dgt-utils/lib/crypto/models/dgt-crypto-key.model.ts @@ -0,0 +1 @@ +export type DGTCryptoKey = JsonWebKey; diff --git a/packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.spec.ts b/packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.spec.ts new file mode 100644 index 00000000..aece1146 --- /dev/null +++ b/packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.spec.ts @@ -0,0 +1,31 @@ +import * as path from 'path'; +import { ComponentsManager } from 'componentsjs'; +import { DGTCryptoBrowserService } from './dgt-crypto-browser.service'; + +describe('DGTCryptoBrowserService', () => { + + let service: DGTCryptoBrowserService; + + beforeEach(async () => { + + const mainModulePath = path.join(__dirname, '../../../'); + const configPath = path.join(mainModulePath, 'config/config-test.json'); + + const manager = await ComponentsManager.build({ + mainModulePath, + logLevel: 'silly', + }); + + await manager.configRegistry.register(configPath); + + service = await manager.instantiate('urn:dgt-utils:test:DGTCryptoBrowserService'); + + }); + + it('should be correctly instantiated', () => { + + expect(service).toBeTruthy(); + + }); + +}); diff --git a/packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.ts b/packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.ts new file mode 100644 index 00000000..c3d67a3c --- /dev/null +++ b/packages/dgt-utils/lib/crypto/services/dgt-crypto-browser.service.ts @@ -0,0 +1,65 @@ +import { forkJoin, from, Observable } from 'rxjs'; +import { map, switchMap, tap } from 'rxjs/operators'; +import { Injectable } from '@angular/core'; +import { DGTLoggerService } from '../../logging/services/dgt-logger.service'; +import { DGTCryptoKeyPair } from '../models/dgt-crypto-key-pair.model'; +import { DGTCryptoService } from './dgt-crypto.service'; + +@Injectable() +export class DGTCryptoBrowserService extends DGTCryptoService { + + constructor(private logger: DGTLoggerService) { + + super(); + + } + + generateKeyPair(): Observable { + + this.logger.debug(DGTCryptoBrowserService.name, 'Generating key pair'); + + return from(crypto.subtle.generateKey( + { + name: 'RSASSA-PKCS1-v1_5', + modulusLength: 2048, + publicExponent: new Uint8Array([ 0x01, 0x00, 0x01 ]), + hash: { name: 'SHA-256' }, + }, + true, + [ 'sign', 'verify' ], + )) + .pipe( + switchMap((data) => forkJoin( + crypto.subtle.exportKey('jwk', data.publicKey), + crypto.subtle.exportKey('jwk', data.privateKey), + )), + map((data) => { + + const [ publicJwk, privateJwk ] = data; + + return { publicKey: publicJwk, privateKey: privateJwk }; + + }), + tap((res) => + this.logger.debug(DGTCryptoBrowserService.name, 'Generated keypair', { res })), + ); + + } + + digest(data: Uint8Array): Observable { + + this.logger.debug(DGTCryptoBrowserService.name, 'Calculating digest', { data }); + + return from(crypto.subtle.digest({ name: 'SHA-256' }, data)); + + } + + generateRandomNumbers(length: number): number[] { + + this.logger.debug(DGTCryptoBrowserService.name, 'Generating random numbers', { length }); + + return Array.from(crypto.getRandomValues(new Uint8Array(length))); + + } + +} diff --git a/packages/dgt-utils/lib/crypto/services/dgt-crypto.service.ts b/packages/dgt-utils/lib/crypto/services/dgt-crypto.service.ts new file mode 100644 index 00000000..b7e700f4 --- /dev/null +++ b/packages/dgt-utils/lib/crypto/services/dgt-crypto.service.ts @@ -0,0 +1,11 @@ +import { Observable } from 'rxjs'; + +import { DGTCryptoKeyPair } from '../models/dgt-crypto-key-pair.model'; + +export abstract class DGTCryptoService { + + public abstract digest(data: Uint8Array): Observable; + public abstract generateKeyPair(): Observable; + public abstract generateRandomNumbers(length: number): number[]; + +} diff --git a/packages/dgt-utils/lib/errors/models/dgt-error-argument.model.ts b/packages/dgt-utils/lib/errors/models/dgt-error-argument.model.ts new file mode 100644 index 00000000..3c34ec85 --- /dev/null +++ b/packages/dgt-utils/lib/errors/models/dgt-error-argument.model.ts @@ -0,0 +1,15 @@ +import { DGTError } from './dgt-error.model'; + +export class DGTErrorArgument extends DGTError { + + public readonly name = DGTErrorArgument.name; + + constructor(message: string, public value: any) { + + super(message); + + Object.setPrototypeOf(this, DGTErrorArgument.prototype); + + } + +} diff --git a/packages/dgt-utils/lib/errors/models/dgt-error-config.model.ts b/packages/dgt-utils/lib/errors/models/dgt-error-config.model.ts new file mode 100644 index 00000000..3cb44923 --- /dev/null +++ b/packages/dgt-utils/lib/errors/models/dgt-error-config.model.ts @@ -0,0 +1,15 @@ +import { DGTError } from './dgt-error.model'; + +export class DGTErrorConfig extends DGTError { + + public readonly name = DGTErrorConfig.name; + + constructor(message: string, public value: any) { + + super(message); + + Object.setPrototypeOf(this, DGTErrorConfig.prototype); + + } + +} diff --git a/packages/dgt-utils/lib/errors/models/dgt-error-http.model.ts b/packages/dgt-utils/lib/errors/models/dgt-error-http.model.ts new file mode 100644 index 00000000..79411e3c --- /dev/null +++ b/packages/dgt-utils/lib/errors/models/dgt-error-http.model.ts @@ -0,0 +1,15 @@ +import { DGTError } from './dgt-error.model'; + +export class DGTErrorHttp extends DGTError { + + public readonly name = DGTErrorHttp.name; + + constructor(message: string, public value: any) { + + super(message); + + Object.setPrototypeOf(this, DGTErrorHttp.prototype); + + } + +} diff --git a/packages/dgt-utils/lib/errors/models/dgt-error-not-implemented.model.ts b/packages/dgt-utils/lib/errors/models/dgt-error-not-implemented.model.ts new file mode 100644 index 00000000..45d6993b --- /dev/null +++ b/packages/dgt-utils/lib/errors/models/dgt-error-not-implemented.model.ts @@ -0,0 +1,15 @@ +import { DGTError } from './dgt-error.model'; + +export class DGTErrorNotImplemented extends DGTError { + + public readonly name = DGTErrorNotImplemented.name; + + constructor() { + + super('Function is not implemented'); + + Object.setPrototypeOf(this, DGTErrorNotImplemented.prototype); + + } + +} diff --git a/packages/dgt-utils/lib/errors/models/dgt-error.model.ts b/packages/dgt-utils/lib/errors/models/dgt-error.model.ts new file mode 100644 index 00000000..18890bd5 --- /dev/null +++ b/packages/dgt-utils/lib/errors/models/dgt-error.model.ts @@ -0,0 +1,13 @@ +export class DGTError extends Error { + + public readonly name = DGTError.name; + + constructor(messsage: string) { + + super(messsage); + + Object.setPrototypeOf(this, DGTError.prototype); + + } + +} diff --git a/projects/dgt-shared-utils/src/lib/errors/services/dgt-error.service.ts b/packages/dgt-utils/lib/errors/services/dgt-error.service.ts similarity index 54% rename from projects/dgt-shared-utils/src/lib/errors/services/dgt-error.service.ts rename to packages/dgt-utils/lib/errors/services/dgt-error.service.ts index 89804a92..0708f7c5 100644 --- a/projects/dgt-shared-utils/src/lib/errors/services/dgt-error.service.ts +++ b/packages/dgt-utils/lib/errors/services/dgt-error.service.ts @@ -1,16 +1,18 @@ -import { DGTInjectable } from '../../decorators/dgt-injectable'; +import { Injectable } from '@angular/core'; import { DGTLoggerService } from '../../logging/services/dgt-logger.service'; -@DGTInjectable() +@Injectable() export class DGTErrorService { constructor( - private logger: DGTLoggerService + private logger: DGTLoggerService, ) { } - public handle(typeName: string, error: Error, caught?: any) { + handle(typeName: string, error: Error, caught?: any) { + this.logger.error(typeName, 'An error has occurred.', error, caught); + } } diff --git a/packages/dgt-utils/lib/http/models/dgt-http-response.model.ts b/packages/dgt-utils/lib/http/models/dgt-http-response.model.ts new file mode 100644 index 00000000..17a1faa2 --- /dev/null +++ b/packages/dgt-utils/lib/http/models/dgt-http-response.model.ts @@ -0,0 +1,6 @@ +export interface DGTHttpResponse { + data?: T; + success: boolean; + status: number; + headers?: { [name: string]: string }; +} diff --git a/packages/dgt-utils/lib/http/services/dgt-http-mock.service.ts b/packages/dgt-utils/lib/http/services/dgt-http-mock.service.ts new file mode 100644 index 00000000..b0fa74ba --- /dev/null +++ b/packages/dgt-utils/lib/http/services/dgt-http-mock.service.ts @@ -0,0 +1,49 @@ +import { Observable, of } from 'rxjs'; +import { DGTLoggerService } from '../../logging/services/dgt-logger.service'; +import { DGTHttpResponse } from '../models/dgt-http-response.model'; +import { DGTHttpService } from './dgt-http.service'; + +export class DGTHttpMockService extends DGTHttpService { + + delete(uri: string, headers?: { [key: string]: string }): Observable> { + + return of(null); + + } + get(uri: string, headers?: { [key: string]: string }, isText?: boolean): Observable> { + + return of(null); + + } + patch(uri: string, body: any, headers?: { [key: string]: string }): Observable> { + + return of(null); + + } + post(uri: string, body: any, headers?: { [key: string]: string }): Observable> { + + return of(null); + + } + put(uri: string, body: any, headers?: { [key: string]: string }): Observable> { + + return of(null); + + } + head(uri: string, headers?: { [key: string]: string }): Observable> { + + return of(null); + + } + options(uri: string, headers?: { [key: string]: string }): Observable> { + + return of(null); + + } + constructor(public logger: DGTLoggerService) { + + super(); + + } + +} diff --git a/projects/dgt-shared-utils/src/lib/http/services/dgt-http.service.ts b/packages/dgt-utils/lib/http/services/dgt-http.service.ts similarity index 85% rename from projects/dgt-shared-utils/src/lib/http/services/dgt-http.service.ts rename to packages/dgt-utils/lib/http/services/dgt-http.service.ts index 0908c9ac..1a8cb290 100644 --- a/projects/dgt-shared-utils/src/lib/http/services/dgt-http.service.ts +++ b/packages/dgt-utils/lib/http/services/dgt-http.service.ts @@ -3,11 +3,17 @@ import { Observable } from 'rxjs'; import { DGTHttpResponse } from '../models/dgt-http-response.model'; export abstract class DGTHttpService { + public abstract delete(uri: string, headers?: { [key: string]: string }): Observable>; - public abstract get(uri: string, headers?: { [key: string]: string }, isText?: boolean): Observable>; + public abstract get( + uri: string, + headers?: { [key: string]: string }, + isText?: boolean + ): Observable>; public abstract patch(uri: string, body: any, headers?: { [key: string]: string }): Observable>; public abstract post(uri: string, body: any, headers?: { [key: string]: string }): Observable>; public abstract put(uri: string, body: any, headers?: { [key: string]: string }): Observable>; public abstract head(uri: string, headers?: { [key: string]: string }): Observable>; public abstract options(uri: string, headers?: { [key: string]: string }): Observable>; + } diff --git a/packages/dgt-utils/lib/i8n/memory-translator.spec.ts b/packages/dgt-utils/lib/i8n/memory-translator.spec.ts new file mode 100644 index 00000000..324f3684 --- /dev/null +++ b/packages/dgt-utils/lib/i8n/memory-translator.spec.ts @@ -0,0 +1,86 @@ +import { DGTErrorArgument } from '../errors/models/dgt-error-argument.model'; +import { MemoryTranslator } from './memory-translator'; + +describe('MemoryTranslator', () => { + + let service: MemoryTranslator; + + beforeEach(async () => { + + service = new MemoryTranslator([ + { + locale: 'en-GB', + key: 'foo', + value: 'Foo in English', + }, + { + locale: 'nl-NL', + key: 'foo', + value: 'Foo in Dutch', + }, + { + locale: 'en-GB', + key: 'foo.bar', + value: 'Bar in English', + }, + ], 'en-GB'); + + }); + + it('should be correctly instantiated', () => { + + expect(service).toBeTruthy(); + + }); + + describe('translate', () => { + + it('Should return an existing key in an existing locale.', () => { + + const value = service.translate('foo', 'en-GB'); + + expect(value).toEqual('Foo in English'); + + }); + + it('Should translate by using the default locale when no locale was given.', () => { + + const value = service.translate('foo'); + + expect(value).toEqual('Foo in English'); + + }); + + it('Should return the input key with an existing key in an non-existing locale.', () => { + + const value = service.translate('foo.bar', 'nl-NL'); + + expect(value).toEqual('foo.bar'); + + }); + + it('Should return the input key with an non-existing key in an existing locale.', () => { + + const value = service.translate('lorem', 'nl-NL'); + + expect(value).toEqual('lorem'); + + }); + + it('Should throw error when key is null.', () => { + + expect(()=>service.translate(null, 'bla')).toThrow(DGTErrorArgument); + + }); + + it('Should throw error when locale and defaultLocale is null.', () => { + + service.defaultLocale = null; + + expect(()=>service.translate('bla', null)).toThrow(DGTErrorArgument); + + }); + + }); + +}); diff --git a/packages/dgt-utils/lib/i8n/memory-translator.ts b/packages/dgt-utils/lib/i8n/memory-translator.ts new file mode 100644 index 00000000..42fa4d50 --- /dev/null +++ b/packages/dgt-utils/lib/i8n/memory-translator.ts @@ -0,0 +1,54 @@ +import { DGTErrorArgument } from '../errors/models/dgt-error-argument.model'; +import { Translation } from './translation'; + +/** + * An implementation of a Translator which stores translations in-memory. + */ +export class MemoryTranslator { + + /** + * Instantiates a MemoryTranslator. + * + * @param translations The translations to be stored in-memory. + * @param defaultLocale The default locale to use when translating. + */ + constructor(public translations: Translation[], public defaultLocale: string) { } + + /** + * Translates a key to a specific locale. + * + * @param key The key of the translation. + * @param locale The locale to which the message should be translated. Overrides the default locale. + * @returns The translated text. + * + * @throws {@link ArgumentError} + * This error is thrown when either no locale or key have been given. + */ + translate(key: string, locale?: string): string { + + if (!key) { + + throw new DGTErrorArgument('Argument key should be set.', key); + + } + + if (!locale && ! this.defaultLocale) { + + throw new DGTErrorArgument('Argument locale should be set.', locale); + + } + + // Use default locale if no locale was passed to function + const usedLocale = locale? locale : this.defaultLocale; + + // Find translation based on locale + const foundTranslation = this.translations?.find( + (translation) => translation.locale === usedLocale && translation.key === key, + ); + + // return key when no translation was found + return foundTranslation?.value || key; + + } + +} diff --git a/packages/dgt-utils/lib/i8n/translation.ts b/packages/dgt-utils/lib/i8n/translation.ts new file mode 100644 index 00000000..27c20ef2 --- /dev/null +++ b/packages/dgt-utils/lib/i8n/translation.ts @@ -0,0 +1,19 @@ +/** + * Represents a translation of a string in a specific locale. + */ +export interface Translation { + /** + * The locale of the translation. + */ + locale: string; + + /** + * The key of the translation. + */ + key: string; + + /** + * The value of the translation. + */ + value: string; +} diff --git a/packages/dgt-utils/lib/i8n/translator.ts b/packages/dgt-utils/lib/i8n/translator.ts new file mode 100644 index 00000000..fc95b73c --- /dev/null +++ b/packages/dgt-utils/lib/i8n/translator.ts @@ -0,0 +1,15 @@ +/** + * An abstract definition of a class which can retrieve translations. + */ +export abstract class Translator { + + /** + * Translates a key to a specific locale. + * + * @param locale The locale to which the message should be translated. + * @param key The key of the translation. + * @returns The corresponding translation. + */ + abstract translate(key: string, locale?: string): string; + +} diff --git a/packages/dgt-utils/lib/logging/models/dgt-logger-level.model.ts b/packages/dgt-utils/lib/logging/models/dgt-logger-level.model.ts new file mode 100644 index 00000000..e734f94a --- /dev/null +++ b/packages/dgt-utils/lib/logging/models/dgt-logger-level.model.ts @@ -0,0 +1,12 @@ +/** + * Level of log severity, prioritized from 0 to 6 (highest to lowest) + */ +export enum DGTLoggerLevel { + error = 0, + warn = 1, + info = 2, + http = 3, + verbose = 4, + debug = 5, + silly = 6, +} diff --git a/packages/dgt-utils/lib/logging/services/dgt-logger-console.service.spec.ts b/packages/dgt-utils/lib/logging/services/dgt-logger-console.service.spec.ts new file mode 100644 index 00000000..7ffebe6d --- /dev/null +++ b/packages/dgt-utils/lib/logging/services/dgt-logger-console.service.spec.ts @@ -0,0 +1,108 @@ +import * as path from 'path'; +import { ComponentsManager } from 'componentsjs'; +import { DGTLoggerLevel } from '../models/dgt-logger-level.model'; +import { DGTLoggerConsoleService } from './dgt-logger-console.service'; + +describe('DGTLoggerConsoleService', () => { + + let service: DGTLoggerConsoleService; + let manager: ComponentsManager; + + beforeAll(async () => { + + const mainModulePath = path.join(__dirname, '../../../'); + const configPath = path.join(mainModulePath, 'config/config-test.json'); + manager = await ComponentsManager.build({ mainModulePath }); + await manager.configRegistry.register(configPath); + + }); + + beforeEach(async () => { + + service = await manager.instantiate('urn:dgt-utils:test:DGTLoggerConsoleService'); + + }); + + afterEach(() => { + + // clear spies + jest.clearAllMocks(); + + }); + + it('should be correctly instantiated', () => { + + expect(service).toBeTruthy(); + + }); + + // describe('log', () => { + + // const levels = [ 'info', 'debug', 'warn', 'error' ]; + + // it('DGTLoggerLevel.silly should call console.log', () => { + // const consoleSpy = jest.spyOn(console, 'log'); + // service.log(DGTLoggerLevel.silly, 'TestService', 'test message', 'data'); + // expect(consoleSpy).toHaveBeenCalled(); + // }); + + // for (const level of levels) { + // if (level) { + // it(`DGTLoggerLevel.${level} should call console.${level}`, () => { + // const consoleSpy = jest.spyOn(console, level as any); + // service.log(DGTLoggerLevel[level], 'TestService', 'test message', 'data'); + // expect(consoleSpy).toHaveBeenCalled(); + // }); + // } + // } + + // const params = { + // level: DGTLoggerLevel.info, + // typeName: ' TestService', + // message: 'test message', + // }; + // const args = Object.keys(params); + // args.forEach((argument) => { + // it(`should throw error when ${argument} is null or undefined`, () => { + // const testArgs = args.map((arg) => arg === argument ? null : arg); + // expect(() => service.log.apply(service.log, testArgs)) + // .toThrow(`Argument ${argument} should be set`); + // }); + // }); + // }); + + // describe('level logs', () => { + + // const levels = [ 'info', 'debug', 'warn', 'error' ]; + + // for (const level of levels) { + // if (level) { + // it(`should log a ${level} message`, () => { + // const loggerSpy = jest.spyOn(service, 'log'); + // if (level === 'error') { + // service[level]('TestService', 'test message', 'test error', 'error'); + // expect(loggerSpy).toHaveBeenCalledWith(DGTLoggerLevel.error, 'TestService', 'test message', { error: 'test error', caught: 'error' }); + // } else { + // service[level]('TestService', 'test message', 'test data'); + // expect(loggerSpy).toHaveBeenCalledWith(DGTLoggerLevel[level], 'TestService', 'test message', 'test data'); + // } + // }); + + // // test arguments for null or undefined + // const params = { + // level: DGTLoggerLevel.info, + // typeName: ' TestService', + // }; + // const args = Object.keys(params); + // args.forEach((argument) => { + // it(`should throw error when ${argument} is null or undefined`, () => { + // const testArgs = args.map((arg: string) => arg === argument ? null : arg); + // expect(() => service.log.apply(service[level], testArgs)) + // .toThrow(`Argument ${argument} should be set`); + // }); + // }); + // } + // } + // }); + +}); diff --git a/packages/dgt-utils/lib/logging/services/dgt-logger-console.service.ts b/packages/dgt-utils/lib/logging/services/dgt-logger-console.service.ts new file mode 100644 index 00000000..9610ad8f --- /dev/null +++ b/packages/dgt-utils/lib/logging/services/dgt-logger-console.service.ts @@ -0,0 +1,79 @@ +/* eslint-disable no-console -- this is a logger service */ + +import { Injectable } from '@angular/core'; +import { DGTErrorArgument } from '../../errors/models/dgt-error-argument.model'; +import { DGTLoggerLevel } from '../models/dgt-logger-level.model'; +import { DGTLoggerService } from './dgt-logger.service'; + +/** + * JavaScript console-based logger service + */ +@Injectable() +export class DGTLoggerConsoleService extends DGTLoggerService { + + constructor( + protected readonly minimumLevel: DGTLoggerLevel, + protected readonly minimumLevelPrintData: DGTLoggerLevel, + ) { + + super(minimumLevel, minimumLevelPrintData); + + } + + log(level: DGTLoggerLevel, typeName: string, message: string, data?: any) { + + if (level === null || level === undefined) { + + throw new DGTErrorArgument('Argument level should be set', typeName); + + } + + if (!typeName) { + + throw new DGTErrorArgument('Argument typeName should be set', typeName); + + } + + if (!message) { + + throw new DGTErrorArgument('Argument message should be set', message); + + } + + const timestamp: string = new Date().toISOString(); + + if (level <= this.minimumLevel) { + + const logMessage = `[${timestamp} ${typeName}] ${message}`; + const logData = level <= this.minimumLevelPrintData ? data ?? '' : ''; + const log = [ logMessage, logData ]; + + switch (level) { + + case DGTLoggerLevel.info: + console.info(...log); + break; + + case DGTLoggerLevel.debug: + console.debug(...log); + break; + + case DGTLoggerLevel.warn: + console.warn(...log); + break; + + case DGTLoggerLevel.error: + console.error(...log); + break; + + default: + console.log(...log); + break; + + } + + } + + } + +} diff --git a/packages/dgt-utils/lib/logging/services/dgt-logger.service.ts b/packages/dgt-utils/lib/logging/services/dgt-logger.service.ts new file mode 100644 index 00000000..d97e994a --- /dev/null +++ b/packages/dgt-utils/lib/logging/services/dgt-logger.service.ts @@ -0,0 +1,129 @@ +/* eslint-disable no-console -- this is a logger service */ + +import { Injectable } from '@angular/core'; +import { DGTErrorArgument } from '../../errors/models/dgt-error-argument.model'; +import { DGTLoggerLevel } from '../models/dgt-logger-level.model'; + +/** + * A logger service + */ +@Injectable() +export abstract class DGTLoggerService { + + constructor( + protected readonly minimumLevel: DGTLoggerLevel, + protected readonly minimumLevelPrintData: DGTLoggerLevel, + ) {} + + /** + * Logs an info message + * + * @param typeName The location of the log + * @param message Message that should be logged + * @param data Any relevant data that should be logged + */ + info(typeName: string, message: string, data?: any) { + + if (!typeName) { + + throw new DGTErrorArgument('Typename should be set', typeName); + + } + + if (!message) { + + throw new DGTErrorArgument('Message should be set', message); + + } + + this.log(DGTLoggerLevel.info, typeName, message, data); + + } + + /** + * Logs a debug message + * + * @param typeName The location of the log + * @param message Message that should be logged + * @param data Any relevant data that should be logged + */ + debug(typeName: string, message: string, data?: any) { + + if (!typeName) { + + throw new DGTErrorArgument('Typename should be set', typeName); + + } + + if (!message) { + + throw new DGTErrorArgument('Message should be set', message); + + } + + this.log(DGTLoggerLevel.debug, typeName, message, data); + + } + + /** + * Logs a warning message + * + * @param typeName The location of the log + * @param message Message that should be logged + * @param data Any relevant data that should be logged + */ + warn(typeName: string, message: string, data?: any) { + + if (!typeName) { + + throw new DGTErrorArgument('Typename should be set', typeName); + + } + + if (!message) { + + throw new DGTErrorArgument('Message should be set', message); + + } + + this.log(DGTLoggerLevel.warn, typeName, message, data); + + } + + /** + * Logs an error message + * + * @param typeName The location of the log + * @param message Message that should be logged + * @param error The error that was thrown + * @param caught The error that was caught + */ + error(typeName: string, message: string, error?: Error | any, caught?: any) { + + if (!typeName) { + + throw new DGTErrorArgument('Typename should be set', typeName); + + } + + if (!message) { + + throw new DGTErrorArgument('Message should be set', message); + + } + + this.log(DGTLoggerLevel.error, typeName, message, { error, caught }); + + } + + /** + * Logs a message + * + * @param level Severity level of the log + * @param typeName The location of the log + * @param message Message that should be logged + * @param data Any relevant data that should be logged + */ + abstract log(level: DGTLoggerLevel, typeName: string, message: string, data?: any): void; + +} diff --git a/packages/dgt-utils/lib/origin/services/dgt-origin-mock.service.ts b/packages/dgt-utils/lib/origin/services/dgt-origin-mock.service.ts new file mode 100644 index 00000000..e2c87149 --- /dev/null +++ b/packages/dgt-utils/lib/origin/services/dgt-origin-mock.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { DGTOriginService } from './dgt-origin.service'; + +@Injectable() +export class DGTOriginMockService extends DGTOriginService { + + constructor(private origin: string) { + + super(); + + } + + get(): string { + + return this.origin; + + } + +} diff --git a/packages/dgt-utils/lib/origin/services/dgt-origin.service.ts b/packages/dgt-utils/lib/origin/services/dgt-origin.service.ts new file mode 100644 index 00000000..faba0128 --- /dev/null +++ b/packages/dgt-utils/lib/origin/services/dgt-origin.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export abstract class DGTOriginService { + + public abstract get(): string; + +} diff --git a/projects/dgt-shared-utils/src/lib/parameters/services/parameter-checker.service.ts b/packages/dgt-utils/lib/parameters/services/parameter-checker.service.ts similarity index 66% rename from projects/dgt-shared-utils/src/lib/parameters/services/parameter-checker.service.ts rename to packages/dgt-utils/lib/parameters/services/parameter-checker.service.ts index 04dede9c..17762ca1 100644 --- a/projects/dgt-shared-utils/src/lib/parameters/services/parameter-checker.service.ts +++ b/packages/dgt-utils/lib/parameters/services/parameter-checker.service.ts @@ -1,35 +1,49 @@ - -import { DGTInjectable } from '../../decorators/dgt-injectable'; +import { Injectable } from '@angular/core'; import { DGTErrorArgument } from '../../errors/models/dgt-error-argument.model'; -@DGTInjectable() +@Injectable() /** A service to check the validity of parameters */ export class DGTParameterCheckerService { - constructor() {} /** * Check if variables are null + * * @param parameterList a list of all the parameters to be checked * @param depth you only want to set this parameter if you want to test * an object containing an object. 'infinity' can be entered to check unlimited depth. * by default the function will not check objects inside of objects * @throws DGTErrorArgument if null values are found */ - public checkParametersNotNull( parameterList: {}, depth: number = 0 ): void { + checkParametersNotNull(parameterList: any, depth = 0): void { + this.checkParametersNotNullHelper(parameterList, depth); + } - private checkParametersNotNullHelper(parameterList: {}, depth: number = 0, previous: string = '' ): void { - if ( depth >= 0 && parameterList && Object.entries(parameterList).length > 0 ) { - Object.entries(parameterList).forEach(entry => { + private checkParametersNotNullHelper(parameterList: any, depth = 0, previous = ''): void { + + if (depth >= 0 && parameterList && Object.entries(parameterList).length > 0) { + + Object.entries(parameterList).forEach((entry) => { + const key = entry[0]; const value = entry[1]; + if (!value && value !== 0) { + throw new DGTErrorArgument(previous + key + ' should be set', value); + } - if ( value && typeof value === 'object') { + + if (value && typeof value === 'object') { + this.checkParametersNotNullHelper({ ...value }, depth - 1, previous + key + '.'); + } + }); + } + } + } diff --git a/packages/dgt-utils/lib/public-api.ts b/packages/dgt-utils/lib/public-api.ts new file mode 100644 index 00000000..8d8bd389 --- /dev/null +++ b/packages/dgt-utils/lib/public-api.ts @@ -0,0 +1,31 @@ +/* + * Public API Surface of dgt-utils + */ +export * from './collections/models/dgt-map.model'; +export * from './logging/models/dgt-logger-level.model'; +export * from './logging/services/dgt-logger.service'; +export * from './logging/services/dgt-logger-console.service'; +export * from './crypto/services/dgt-crypto.service'; +export * from './crypto/services/dgt-crypto-browser.service'; +export * from './crypto/models/dgt-crypto-key.model'; +export * from './crypto/models/dgt-crypto-key-pair.model'; +export * from './errors/models/dgt-error.model'; +export * from './errors/models/dgt-error-argument.model'; +export * from './errors/models/dgt-error-config.model'; +export * from './errors/models/dgt-error-http.model'; +export * from './errors/models/dgt-error-not-implemented.model'; +export * from './errors/services/dgt-error.service'; +export * from './http/services/dgt-http.service'; +export * from './connectivity/services/dgt-connectivity.service'; +export * from './origin/services/dgt-origin.service'; +export * from './origin/services/dgt-origin-mock.service'; +export * from './parameters/services/parameter-checker.service'; +export * from './http/models/dgt-http-response.model'; +export * from './cache/models/dgt-cache-type.model'; +export * from './http/services/dgt-http-mock.service'; +export * from './i8n/memory-translator'; +export * from './i8n/translation'; +export * from './i8n/translator'; +export * from './utils/debounce'; +export * from './utils/fulltext-match'; +export * from './utils/is-equal'; diff --git a/packages/dgt-utils/lib/utils/debounce.ts b/packages/dgt-utils/lib/utils/debounce.ts new file mode 100644 index 00000000..5d014934 --- /dev/null +++ b/packages/dgt-utils/lib/utils/debounce.ts @@ -0,0 +1,47 @@ +/** + * Debounce a function. + * + * @param func Function to debounce. + * @param wait Timeout in milliseconds. + * @param immediate Ignores the timeout. + * @returns The debounced function. + */ +export const debounce = (func: () => void, wait: number, immediate = false) => { + + let timeout: NodeJS.Timeout; + + return function() { + + // eslint-disable-next-line @typescript-eslint/no-this-alias + const context = this; + + // The arguments of the original function. + // eslint-disable-next-line prefer-rest-params + const args = arguments; + + // Resets the timeout. + clearTimeout(timeout); + + // Executes the function after a timeout. + timeout = setTimeout(() => { + + timeout = null; + + if (!immediate) { + + func.apply(context, args); + + } + + }, wait); + + // Don't wait for timer if immidiate. + if (immediate && !timeout) { + + func.apply(context, args); + + } + + }; + +}; diff --git a/packages/dgt-utils/lib/utils/fulltext-match.spec.ts b/packages/dgt-utils/lib/utils/fulltext-match.spec.ts new file mode 100644 index 00000000..441ceed0 --- /dev/null +++ b/packages/dgt-utils/lib/utils/fulltext-match.spec.ts @@ -0,0 +1,29 @@ +import { DGTErrorArgument } from '../errors/models/dgt-error-argument.model'; +import { fulltextMatch } from './fulltext-match'; + +describe('fulltextMatch()', () => { + + it('should throw error when no object or term is given', () => { + + expect(() => fulltextMatch(null, 'foo')).toThrow(DGTErrorArgument); + expect(() => fulltextMatch({ foo: 'bar' }, null)).toThrow(DGTErrorArgument); + + }); + + it.each([ + [ { foo: 'bar' }, 'foo', false ], + [ { foo: 'foo' }, 'foo', true ], + [ { foo: 'foo', bar: 'bar' }, 'foo', true ], + [ { foo: 'foobar' }, 'foo', true ], + [ { foo: 'barfoobar' }, 'foo', true ], + [ { foo: '' }, 'foo', false ], + [ { foo: null }, 'foo', false ], + [ { foo: { foo: 'foo' } }, 'foo', false ], + [ { }, 'foo', false ], + ])('should match object', (object, term, result) => { + + expect(fulltextMatch(object, term)).toBe(result); + + }); + +}); diff --git a/packages/dgt-utils/lib/utils/fulltext-match.ts b/packages/dgt-utils/lib/utils/fulltext-match.ts new file mode 100644 index 00000000..947c2304 --- /dev/null +++ b/packages/dgt-utils/lib/utils/fulltext-match.ts @@ -0,0 +1,33 @@ +import { DGTErrorArgument } from '../errors/models/dgt-error-argument.model'; + +/** + * Case-insensitive fulltext matching. + * + * @param obj Object to match. + * @param term The term to match. + * @returns If a property matches the term. + */ +export const fulltextMatch = (obj: unknown, term: string): boolean => { + + if (!obj) { + + throw new DGTErrorArgument('Argument obj should be set.', obj); + + } + + if (!term) { + + throw new DGTErrorArgument('Argument term should be set.', term); + + } + + const lowercaseTerm: string = term.toLowerCase(); + + const numberOfMatches = Object.values(obj) + .map((value) => typeof value === 'string' || value instanceof String ? value.toLowerCase().includes(lowercaseTerm) : false) + .filter((value) => value === true) + .length; + + return numberOfMatches > 0; + +}; diff --git a/packages/dgt-utils/lib/utils/is-equal.ts b/packages/dgt-utils/lib/utils/is-equal.ts new file mode 100644 index 00000000..cac1b06d --- /dev/null +++ b/packages/dgt-utils/lib/utils/is-equal.ts @@ -0,0 +1 @@ +export const isEqual = (x: unknown, y: unknown): boolean => JSON.stringify(x) === JSON.stringify(y); diff --git a/packages/dgt-utils/package-lock.json b/packages/dgt-utils/package-lock.json new file mode 100644 index 00000000..dc39aba9 --- /dev/null +++ b/packages/dgt-utils/package-lock.json @@ -0,0 +1,6889 @@ +{ + "name": "@digita-ai/dgt-utils", + "version": "0.5.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular/core": { + "version": "7.2.16", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.2.16.tgz", + "integrity": "sha512-z1RuBinuYeC4KLv8Z95YOgIQLd4nkoApdxkIZaWALwSkgeBuHJn4bCBn2cL0gJ/KO2x18TiTU5HuC+uyBt0AVQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, + "@babel/core": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz", + "integrity": "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.0", + "@babel/helper-module-transforms": "^7.15.0", + "@babel/helpers": "^7.14.8", + "@babel/parser": "^7.15.0", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz", + "integrity": "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz", + "integrity": "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz", + "integrity": "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz", + "integrity": "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.0", + "@babel/helper-simple-access": "^7.14.8", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz", + "integrity": "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.0", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.14.8", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz", + "integrity": "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==", + "dev": true, + "requires": { + "@babel/types": "^7.14.8" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helpers": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.3.tgz", + "integrity": "sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==", + "dev": true, + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.15.0", + "@babel/types": "^7.15.0" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz", + "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/runtime": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", + "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", + "dev": true, + "optional": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.3.tgz", + "integrity": "sha512-30A3lP+sRL6ml8uhoJSs+8jwpKzbw8CqBvDc1laeptxPm5FahumJxirigcbD2qTs71Sonvj1cyZB0OKGAmxQ+A==", + "dev": true, + "optional": true, + "requires": { + "core-js-pure": "^3.16.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + } + } + }, + "@babel/traverse": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz", + "integrity": "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.0", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.15.0", + "@babel/types": "^7.15.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", + "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@comunica/actor-abstract-mediatyped": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-abstract-mediatyped/-/actor-abstract-mediatyped-1.21.1.tgz", + "integrity": "sha512-5LzWccqId3AfAeCPGqPkOiDATXrooXYLn58sNXDRdDUsRpL/jZ6be+7F000ZLTHnDRVCiLCXtb5P7984bBIzaA==", + "dev": true + }, + "@comunica/actor-http-native": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/@comunica/actor-http-native/-/actor-http-native-1.21.3.tgz", + "integrity": "sha512-DX/IECNsUpMXNgZyz8e5d/Bpq9PSmlABs7rUqkMVXgqhnOO0KvJOEuWu4P9+ONlkbzqK4O7DKMi6gw3GkKI3OA==", + "dev": true, + "requires": { + "@comunica/context-entries": "^1.21.1", + "@types/parse-link-header": "^1.0.0", + "cross-fetch": "^3.0.5", + "follow-redirects": "^1.5.1", + "parse-link-header": "^1.0.1" + } + }, + "@comunica/actor-rdf-parse-html": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html/-/actor-rdf-parse-html-1.21.1.tgz", + "integrity": "sha512-eZUExtLtC28nEMrECL2g3kmZjLmuY/Nu7S9p5NyvI60cwEjj1Rbf0aM9xqWLG5vuCiSKQz7MUobQ92WxtG6RHA==", + "dev": true, + "requires": { + "@comunica/bus-rdf-parse-html": "^1.21.1", + "@types/rdf-js": "*", + "htmlparser2": "^6.0.0" + } + }, + "@comunica/actor-rdf-parse-html-microdata": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-microdata/-/actor-rdf-parse-html-microdata-1.21.1.tgz", + "integrity": "sha512-50EjJ0HYiCdKEb2nebULLGkqLk9XZeLLSPCMDo+4Est65dGXcLkFPerBPTIlcrpOMmVXLry8F7m+fAtDQxUcmw==", + "dev": true, + "requires": { + "microdata-rdf-streaming-parser": "^1.1.0" + } + }, + "@comunica/actor-rdf-parse-html-rdfa": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-rdfa/-/actor-rdf-parse-html-rdfa-1.21.1.tgz", + "integrity": "sha512-37whUUn3LsvCV/kj37/ztAnBjGqKdGP8fLUpD3z8vDOg3ArhktPvWn+cB0ssU0DKSzsCTnCNujS7QoVyINPxJQ==", + "dev": true, + "requires": { + "rdfa-streaming-parser": "^1.4.0" + } + }, + "@comunica/actor-rdf-parse-html-script": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-html-script/-/actor-rdf-parse-html-script-1.21.1.tgz", + "integrity": "sha512-cM06ZEVpgj4/fLFrM8alRi0a4kh1XVY3vwWOyZXnkjVkIKp36Nc17Pw4+vM10z7D+x5VI/mZc0tGMohr8u7dcw==", + "dev": true, + "requires": { + "@comunica/bus-rdf-parse-html": "^1.21.1", + "@types/rdf-js": "*", + "relative-to-absolute-iri": "^1.0.5" + } + }, + "@comunica/actor-rdf-parse-jsonld": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-jsonld/-/actor-rdf-parse-jsonld-1.21.2.tgz", + "integrity": "sha512-YUiYo2EJ9T1oUGgBwzzPRjXT+cd/xckWbtfYBzr7RugXeKjrVai8atnV1OsPc0u5iPZCTkiVCO9sI/Q6M7ig2w==", + "dev": true, + "requires": { + "@comunica/context-entries": "^1.21.1", + "@types/rdf-js": "*", + "jsonld-context-parser": "^2.1.2", + "jsonld-streaming-parser": "^2.3.2", + "stream-to-string": "^1.2.0" + } + }, + "@comunica/actor-rdf-parse-n3": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-n3/-/actor-rdf-parse-n3-1.21.1.tgz", + "integrity": "sha512-SFx/hkY0yr/TxfVdEecVg3DY2KOWPeGfM288CjDQjogx6Sxb6JuF9JaipNX8/twKVdBefGS9b1S9EyKpcr99Zg==", + "dev": true, + "requires": { + "@types/n3": "^1.4.4", + "n3": "^1.6.3" + } + }, + "@comunica/actor-rdf-parse-rdfxml": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-rdfxml/-/actor-rdf-parse-rdfxml-1.21.1.tgz", + "integrity": "sha512-fv5+DF5LagSJUayyQm7a917XQ9PNUfJVh2bqO/NlVfESXO8OFUAIySefW+j1y1JA0fpa5v1OnWTGAfdxGKnrUg==", + "dev": true, + "requires": { + "rdfxml-streaming-parser": "^1.4.0" + } + }, + "@comunica/actor-rdf-parse-xml-rdfa": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/actor-rdf-parse-xml-rdfa/-/actor-rdf-parse-xml-rdfa-1.21.1.tgz", + "integrity": "sha512-+9qyKJS+Ab3BWqrWnFU5CSgEDGtoGJpe19TzpymSXDP0aSAM6lnkZpCvT3EKi/Y8Bmw9xRXJZwemtxQK2y4SSQ==", + "dev": true, + "requires": { + "rdfa-streaming-parser": "^1.3.0" + } + }, + "@comunica/bus-http": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/bus-http/-/bus-http-1.21.1.tgz", + "integrity": "sha512-M6gi128ME+7uSnLPz4Bx3jgXhIb5/O7tODVHAtw9gt0z/9AAuYfmW9jqmcZ5Uwv3CCvJSvEc/m+dooCv35dTsA==", + "dev": true, + "requires": { + "@comunica/context-entries": "^1.21.1", + "is-stream": "^2.0.0", + "web-streams-node": "^0.4.0" + } + }, + "@comunica/bus-init": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/bus-init/-/bus-init-1.21.1.tgz", + "integrity": "sha512-h8Gp/iJiyY8mbqhrbfLySwTXasjxmCX6kpM9RyXWqCBJzdx8Bfq6F/nYg2N+zpEJgyrn5zLdNgbBkcDetdeAmA==", + "dev": true + }, + "@comunica/bus-rdf-parse": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse/-/bus-rdf-parse-1.21.1.tgz", + "integrity": "sha512-JQD9Cgml/W+PCSEX3WulwxiQOdULFxAFDipLk69/J9WZxOj6emufxStM8M9R+pavbLaLYRcBQWgO0KLhEn/Rnw==", + "dev": true, + "requires": { + "@comunica/actor-abstract-mediatyped": "^1.21.1", + "@types/rdf-js": "*" + } + }, + "@comunica/bus-rdf-parse-html": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/bus-rdf-parse-html/-/bus-rdf-parse-html-1.21.1.tgz", + "integrity": "sha512-DJDFB8lxTJ1Pt+AhjOqe9hvj2nKtC23fJfEihU7DYIbz67O5pXAFgFtp9gn3gefoGB7T/CKoB8y8DcZy8N5u0A==", + "dev": true, + "requires": { + "@types/rdf-js": "*" + } + }, + "@comunica/context-entries": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/context-entries/-/context-entries-1.21.1.tgz", + "integrity": "sha512-7wBb+J+YLg4hcRQLFeP6/2b/xyK+lnQlc71OSjVMinQx1OO6tsjqlqHvQ6py56uVFs3cYduASgFuHTRVuoe1xA==", + "dev": true + }, + "@comunica/core": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/core/-/core-1.21.1.tgz", + "integrity": "sha512-5lY/HkyOCorY2CtxQiKUKEOcUGjIKf/YG/txJrz84SKuy+zC91zq1Zt8qWfzNihCcWrgfmk0oZuvjbYvZGK4EA==", + "dev": true, + "requires": { + "@comunica/context-entries": "^1.21.1", + "@comunica/types": "^1.21.1", + "immutable": "^3.8.2" + } + }, + "@comunica/mediator-combine-union": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/mediator-combine-union/-/mediator-combine-union-1.21.1.tgz", + "integrity": "sha512-wp2lbViVOOeNKTBRD+6sze7TKVX71T2RD324/1Syb8vOpwT3mtaDNJYFg0Mrwer/Xs54d7nA7JGZA2wC2HaXow==", + "dev": true + }, + "@comunica/mediator-number": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/mediator-number/-/mediator-number-1.21.1.tgz", + "integrity": "sha512-OeuGx0R/mWI1uMMXM2V1vcR8J1DPhYXPR+Ncg4/qKHl7tSCQH1tlCgZu0+fovY2Qmc14f1tmw5YgnsE8lsikSQ==", + "dev": true + }, + "@comunica/mediator-race": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/mediator-race/-/mediator-race-1.21.1.tgz", + "integrity": "sha512-SgdtF1JmqDyhZJsAOiVMPuV1qgdXqv/hbsFCxcmDQ+8q1ObmQ+0DZvdUe5Ymf2IyFaevsOHHG7hF5hJbLZmdmQ==", + "dev": true + }, + "@comunica/types": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/@comunica/types/-/types-1.21.1.tgz", + "integrity": "sha512-Sdp8m9yvKbcCSx31L4nLe0tORCRc1TvUXSgpIUVGBXunqZpoWAhxcn2PZn7//xb6xnYUjHqrQZhYQbMdDIqONQ==", + "dev": true, + "requires": { + "@types/rdf-js": "*", + "asynciterator": "^3.1.0", + "immutable": "^3.8.2", + "sparqlalgebrajs": "^2.4.0" + } + }, + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@digita-ai/jest-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/jest-config/0.3.4/f799f4910afc4ef7a827bfe8fb399cef5fb0f1951e4b75f54e755b5718bb838d", + "integrity": "sha512-fdL9aZn5nF+DFJFCnHCHndsDXp1ZqeRneJk4xMuAkw80OOk+G3v+Iu0VTxhSr3pk6gvKgMMTR602UHW28cO39A==", + "dev": true, + "requires": { + "@testing-library/jest-dom": "^5.12.0", + "jest-fetch-mock": "^3.0.3", + "merge": "^2.1.1", + "ts-jest": "^26.5.5", + "typescript": "^4.2.3" + }, + "dependencies": { + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + } + } + }, + "@digita-ai/typescript-config": { + "version": "0.3.4", + "resolved": "https://npm.pkg.github.com/download/@digita-ai/typescript-config/0.3.4/16c8755238a358331f20ff2c6ab36abe32c45e74f83ec0bad66965a5ff5fdf6a", + "integrity": "sha512-/hl2uGMPa1XvouKwjqSOBrX1zL5RArHf+3vFIU4nuqLM7IoX2telyvNA2Ej3zbuUS7rOTQW8dYi3j4LHnCvCxg==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rdfjs/types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.0.1.tgz", + "integrity": "sha512-YxVkH0XrCNG3MWeZxfg596GFe+oorTVusmNxRP6ZHTsGczZ8AGvG3UchRNkg3Fy4MyysI7vBAA5YZbESL+VmHQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@testing-library/jest-dom": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz", + "integrity": "sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.9.2", + "@types/testing-library__jest-dom": "^5.9.1", + "aria-query": "^4.2.2", + "chalk": "^3.0.0", + "css": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", + "lodash": "^4.17.15", + "redent": "^3.0.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-link-header": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.3.tgz", + "integrity": "sha512-y8HkoD/vyid+5MrJ3aas0FvU3/BVBGcyG9kgxL0Zn4JwstA8CglFPnrR0RuzOjRCXwqzL5uxWC2IO7Ub0rMU2A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true + }, + "@types/n3": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.10.3.tgz", + "integrity": "sha512-eVw/weCi6JPooPTz7Zgezmdw5ypNE57Ep+SlxFhT75F0nL9snsu1TIpAMAqtzHvi7VKJKJbnuOxAy9jgFCXDTA==", + "dev": true, + "requires": { + "@types/node": "*", + "rdf-js": "^4.0.2" + } + }, + "@types/node": { + "version": "14.17.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.11.tgz", + "integrity": "sha512-n2OQ+0Bz6WEsUjrvcHD1xZ8K+Kgo4cn9/w94s1bJS690QMUWfJPW/m7CCb7gPkA1fcYwL2UpjXP/rq/Eo41m6w==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-link-header": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-link-header/-/parse-link-header-1.0.0.tgz", + "integrity": "sha512-fCA3btjE7QFeRLfcD0Sjg+6/CnmC66HpMBoRfRzd2raTaWMJV21CCZ0LO8MOqf8onl5n0EPfjq4zDhbyX8SVwA==", + "dev": true + }, + "@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "dev": true + }, + "@types/rdf-js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/rdf-js/-/rdf-js-4.0.2.tgz", + "integrity": "sha512-soR/+RMogGiDU1lrpuQl5ZL55/L1eq/JlR2dWx052Uh/RYs9okh3XZHFlIJXHZqjqyjEn4WdbOMfBj7vvc2WVQ==", + "dev": true, + "requires": { + "rdf-js": "*" + } + }, + "@types/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/testing-library__jest-dom": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.1.tgz", + "integrity": "sha512-Gk9vaXfbzc5zCXI9eYE9BI5BNHEp4D3FWjgqBE/ePGYElLAP+KvxBcsdkwfIVvezs605oiyd/VrpiHe3Oeg+Aw==", + "dev": true, + "optional": true, + "requires": { + "@types/jest": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.2.tgz", + "integrity": "sha512-x4EMgn4BTfVd9+Z+r+6rmWxoAzBaapt4QFqE+d8L8sUtYZYLDTK6VG/y/SMMWA5t1/BVU5Kf+20rX4PtWzUYZg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.29.2", + "@typescript-eslint/scope-manager": "4.29.2", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.2.tgz", + "integrity": "sha512-P6mn4pqObhftBBPAv4GQtEK7Yos1fz/MlpT7+YjH9fTxZcALbiiPKuSIfYP/j13CeOjfq8/fr9Thr2glM9ub7A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.29.2", + "@typescript-eslint/types": "4.29.2", + "@typescript-eslint/typescript-estree": "4.29.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.2.tgz", + "integrity": "sha512-WQ6BPf+lNuwteUuyk1jD/aHKqMQ9jrdCn7Gxt9vvBnzbpj7aWEf+aZsJ1zvTjx5zFxGCt000lsbD9tQPEL8u6g==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.29.2", + "@typescript-eslint/types": "4.29.2", + "@typescript-eslint/typescript-estree": "4.29.2", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.2.tgz", + "integrity": "sha512-mfHmvlQxmfkU8D55CkZO2sQOueTxLqGvzV+mG6S/6fIunDiD2ouwsAoiYCZYDDK73QCibYjIZmGhpvKwAB5BOA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.29.2", + "@typescript-eslint/visitor-keys": "4.29.2" + } + }, + "@typescript-eslint/types": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.2.tgz", + "integrity": "sha512-K6ApnEXId+WTGxqnda8z4LhNMa/pZmbTFkDxEBLQAbhLZL50DjeY0VIDCml/0Y3FlcbqXZrABqrcKxq+n0LwzQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.2.tgz", + "integrity": "sha512-TJ0/hEnYxapYn9SGn3dCnETO0r+MjaxtlWZ2xU+EvytF0g4CqTpZL48SqSNn2hXsPolnewF30pdzR9a5Lj3DNg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.29.2", + "@typescript-eslint/visitor-keys": "4.29.2", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.29.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.2.tgz", + "integrity": "sha512-bDgJLQ86oWHJoZ1ai4TZdgXzJxsea3Ee9u9wsTAvjChdj2WLcVsgWYAPeY7RQMn16tKrlQaBnpKv7KBfs4EQag==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.29.2", + "eslint-visitor-keys": "^2.0.0" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "optional": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "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==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "async": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz", + "integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==", + "dev": true + }, + "asynciterator": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/asynciterator/-/asynciterator-3.2.0.tgz", + "integrity": "sha512-gVrDh9bNDA0TJPTKNFqb0A1je+VBBeS6D18oR92volMcLYN0qizAfOZXH3lmun5XNUim4oIlXWkGoR8mDZlwdg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "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", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.8.tgz", + "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001251", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.811", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "cache-base": { + "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", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001251", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001251.tgz", + "integrity": "sha512-HOe1r+9VkU4TFmnU70z+r7OLmtR+/chB1rdcJUeQlAinjEeb0cKL20tlAtOagNZhbrtLnCvV19B4FmF1rgzl6A==", + "dev": true + }, + "canonicalize": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.5.tgz", + "integrity": "sha512-mAjKJPIyP0xqqv6IAkvso07StOmz6cmGtNDg3pXCSzXVZOqka7StIkAhJl/zHOi4M2CgpYfD6aeRWbnrmtvBEA==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "class-utils": { + "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", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "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" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "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" + } + }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "color-string": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", + "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comment-parser": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", + "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", + "dev": true + }, + "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==", + "dev": true + }, + "componentsjs": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/componentsjs/-/componentsjs-4.0.5.tgz", + "integrity": "sha512-vmeb6BGqks+y92k3oW9LIjX2HVabZUj+CgPqvROjMmmjP6JZkZEoRShBGNEXV9bVOufHz67iAlYo5D6EMS0Udw==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "@types/node": "^14.14.7", + "@types/rdf-js": "*", + "@types/semver": "^7.3.4", + "jsonld-context-parser": "^2.1.1", + "minimist": "^1.2.0", + "rdf-data-factory": "^1.0.4", + "rdf-object": "^1.8.0", + "rdf-parse": "^1.7.0", + "rdf-quad": "^1.5.0", + "rdf-terms": "^1.6.2", + "semver": "^7.3.2", + "winston": "^3.3.3" + } + }, + "componentsjs-generator": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/componentsjs-generator/-/componentsjs-generator-2.1.0.tgz", + "integrity": "sha512-anyw6eZtXEpMkHX0feRw1DVxEdLGZWtnCN5PHTDZy6uz+7IzzMzLrl8Td9PULO6+XD8U8N4lZQRMnqDeszSD2Q==", + "dev": true, + "requires": { + "@types/lru-cache": "^5.1.0", + "@types/semver": "^7.3.4", + "@typescript-eslint/typescript-estree": "^4.6.1", + "comment-parser": "^0.7.6", + "componentsjs": "^4.0.0", + "jsonld-context-parser": "^2.0.2", + "lru-cache": "^6.0.0", + "minimist": "^1.2.5", + "semver": "^7.3.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js-pure": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.2.tgz", + "integrity": "sha512-oxKe64UH049mJqrKkynWp6Vu0Rlm/BTXO/bJZuN2mmR3RtOFNepLlSWDd1eo16PzHpQAoNG97rLU1V/YxesJjw==", + "dev": true, + "optional": true + }, + "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=", + "dev": true + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-fetch": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", + "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "dev": true, + "requires": { + "node-fetch": "2.6.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" + } + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=", + "dev": true, + "optional": true + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", + "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "dev": true + }, + "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=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "define-property": { + "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" + }, + "dependencies": { + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-accessibility-api": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz", + "integrity": "sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA==", + "dev": true, + "optional": true + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "electron-to-chromium": { + "version": "1.3.814", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.814.tgz", + "integrity": "sha512-0mH03cyjh6OzMlmjauGg0TLd87ErIJqWiYxMcOLKf5w6p0YEOl7DJAj7BDlXEFmCguY5CQaKVOiMjAMODO2XDw==", + "dev": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + } + } + }, + "esbuild": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", + "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + } + } + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "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", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "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" + } + }, + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "extend-shallow": { + "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" + }, + "dependencies": { + "is-extendable": { + "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" + } + } + } + }, + "extglob": { + "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", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz", + "integrity": "sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag==", + "dev": true + }, + "fastq": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", + "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fecha": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==", + "dev": true + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "dev": true + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", + "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "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" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "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", + "isobject": "^3.0.0" + } + }, + "has-values": { + "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" + }, + "dependencies": { + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "kind-of": { + "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" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-link-header": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.3.tgz", + "integrity": "sha512-nARK1wSKoBBrtcoESlHBx36c1Ln/gnbNQi1eB6MeTUefJIT3NvUOsV15bClga0k38f0q/kN5xxrGSDS3EFnm9w==", + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "optional": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-accessor-descriptor": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", + "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "is-descriptor": { + "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", + "kind-of": "^5.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "optional": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "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" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "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==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-fetch-mock": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz", + "integrity": "sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==", + "dev": true, + "optional": true, + "requires": { + "cross-fetch": "^3.0.4", + "promise-polyfill": "^8.1.3" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "dependencies": { + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonld-context-parser": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-2.1.5.tgz", + "integrity": "sha512-rsu5hB6bADa511l0QhG4lndAqlN7PQ4wsS0UKqLWUKg1GUQqYmh2SNfbwXiRiHZRJqhvCNqv9/5tQ3zzk4hMtg==", + "dev": true, + "requires": { + "@types/http-link-header": "^1.0.1", + "@types/node": "^13.1.0", + "canonicalize": "^1.0.1", + "cross-fetch": "^3.0.6", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" + }, + "dependencies": { + "@types/node": { + "version": "13.13.52", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.52.tgz", + "integrity": "sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ==", + "dev": true + } + } + }, + "jsonld-streaming-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-2.4.0.tgz", + "integrity": "sha512-bDXUcHgeoEXX3uNNO9L9zsx/HEO9X4yxHi14Xfd6yS7kuaXqcUzKB6QaeJFwEoQAJB5v4XoXU/bcOcErWaEPLg==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "@types/http-link-header": "^1.0.1", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^2.1.3", + "jsonparse": "^1.3.1", + "rdf-data-factory": "^1.1.0" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "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==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "lodash.uniqwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", + "integrity": "sha1-egy/ZfQ7WShiWp1NDcVLGMrcfvM=", + "dev": true + }, + "logform": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.2.0.tgz", + "integrity": "sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "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" + } + }, + "merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "microdata-rdf-streaming-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/microdata-rdf-streaming-parser/-/microdata-rdf-streaming-parser-1.2.0.tgz", + "integrity": "sha512-cMLNLEcS0mPaiA9iwq6BnsQK9sx2uBwjpRZIEvMRBNJpbvV58f8AFtPeYzNFh3OPyX9B49NYJ77bB0jNAUCurw==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "htmlparser2": "^6.0.0", + "rdf-data-factory": "^1.1.0", + "relative-to-absolute-iri": "^1.0.2" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "dev": true + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dev": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "optional": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "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" + }, + "dependencies": { + "is-extendable": { + "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" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "n3": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.11.1.tgz", + "integrity": "sha512-yeTeYoatabMs6IMv71dYSIfgf+s+4DpLrnvRv8CKGRLnAt1lfWcnb+mwP67PZKq7Wvh7MCIGXaflayPkn0WzHw==", + "dev": true, + "requires": { + "queue-microtask": "^1.1.2", + "readable-stream": "^3.6.0" + } + }, + "nanoid": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", + "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "dev": true + }, + "nanomatch": { + "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", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "object-copy": { + "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", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "kind-of": { + "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" + } + } + } + }, + "object-visit": { + "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" + } + }, + "object.pick": { + "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" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "requires": { + "fn.name": "1.x.x" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-link-header": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", + "integrity": "sha1-vt/g0hGK64S+deewJUGeyKYRQKc=", + "dev": true, + "requires": { + "xtend": "~4.0.1" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "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=", + "dev": true + }, + "postcss": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz", + "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "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==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-polyfill": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.0.tgz", + "integrity": "sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g==", + "dev": true, + "optional": true + }, + "prompts": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", + "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "rdf-data-factory": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.0.tgz", + "integrity": "sha512-g8feOVZ/KL1OK2Pco/jDBDFh4m29QDsOOD+rWloG9qFvIzRFchGy2CviLUX491E0ByewXxMpaq/A3zsWHQA16A==", + "dev": true, + "requires": { + "@rdfjs/types": "*" + } + }, + "rdf-isomorphic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rdf-isomorphic/-/rdf-isomorphic-1.3.0.tgz", + "integrity": "sha512-3BRwUwCNHHR8//bqmVH+knTFVbVfkp7CWyQk7qPHHA8JriXBYxrab21OomjJx/2KF21w8bWz344mgNYEaQABYQ==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "hash.js": "^1.1.7", + "rdf-string": "^1.6.0", + "rdf-terms": "^1.7.0" + } + }, + "rdf-js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/rdf-js/-/rdf-js-4.0.2.tgz", + "integrity": "sha512-ApvlFa/WsQh8LpPK/6hctQwG06Z9ztQQGWVtrcrf9L6+sejHNXLPOqL+w7q3hF+iL0C4sv3AX1PUtGkLNzyZ0Q==", + "dev": true, + "requires": { + "@rdfjs/types": "*" + } + }, + "rdf-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.0.tgz", + "integrity": "sha512-5u5L4kPYNZANie5AE4gCXqwpNO/p9E/nUcDurk05XAOJT/pt9rQlDk6+BX7j3dNSee3h9GS4xlLoWxQDj7sXtg==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } + }, + "rdf-object": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/rdf-object/-/rdf-object-1.11.1.tgz", + "integrity": "sha512-YMCZKa/2jEZjku1KfE2ODqLQo3DlKHexPwVK8el25L2RITFhdd7NUHw4TyEstrNzLje9IrbKP/ISUfsPLhoobw==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "jsonld-context-parser": "^2.0.2", + "rdf-data-factory": "^1.1.0", + "rdf-string": "^1.6.0", + "streamify-array": "^1.0.1" + } + }, + "rdf-parse": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/rdf-parse/-/rdf-parse-1.8.1.tgz", + "integrity": "sha512-sNcQ1Vc8hDf/hVjVHYS9CSHyFShVX8LVwBrFARKkGgGe+K9DZJRaZQI06VCwmEW027ZFjfxFgmjQlc09FLmI4A==", + "dev": true, + "requires": { + "@comunica/actor-http-native": "~1.21.1", + "@comunica/actor-rdf-parse-html": "~1.21.1", + "@comunica/actor-rdf-parse-html-microdata": "~1.21.1", + "@comunica/actor-rdf-parse-html-rdfa": "~1.21.1", + "@comunica/actor-rdf-parse-html-script": "~1.21.1", + "@comunica/actor-rdf-parse-jsonld": "~1.21.2", + "@comunica/actor-rdf-parse-n3": "~1.21.1", + "@comunica/actor-rdf-parse-rdfxml": "~1.21.1", + "@comunica/actor-rdf-parse-xml-rdfa": "~1.21.1", + "@comunica/bus-http": "~1.21.1", + "@comunica/bus-init": "~1.21.1", + "@comunica/bus-rdf-parse": "~1.21.1", + "@comunica/bus-rdf-parse-html": "~1.21.1", + "@comunica/core": "~1.21.1", + "@comunica/mediator-combine-union": "~1.21.1", + "@comunica/mediator-number": "~1.21.1", + "@comunica/mediator-race": "~1.21.1", + "@types/rdf-js": "*", + "stream-to-string": "^1.2.0" + } + }, + "rdf-quad": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/rdf-quad/-/rdf-quad-1.5.0.tgz", + "integrity": "sha512-LnCYx8XbRVW1wr6UiZPSy2Tv7bXAtEwuyck/68dANhFu8VMnGS+QfUNP3b9YI6p4Bfd/fyDx5E3x81IxGV6BzA==", + "dev": true, + "requires": { + "rdf-data-factory": "^1.0.1", + "rdf-literal": "^1.2.0", + "rdf-string": "^1.5.0" + } + }, + "rdf-string": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/rdf-string/-/rdf-string-1.6.0.tgz", + "integrity": "sha512-6vQVlEobIHralPtx8V9vtgxA+fwnzZjZv6lRz8dfymILZF6Fl3QJwyRaOAvYaUQc1JMmshGI/wlYlaxin2AldQ==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } + }, + "rdf-terms": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/rdf-terms/-/rdf-terms-1.7.0.tgz", + "integrity": "sha512-K83ACD+MuWFS3mNxwCRNYQAmc/Z9iK7PgqJq9N4VP8sUVlP7ioB2pPNQHKHy0IQh4RTkEq6fg4R4q7YlweLBZQ==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "lodash.uniqwith": "^4.5.0", + "rdf-data-factory": "^1.1.0" + } + }, + "rdfa-streaming-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/rdfa-streaming-parser/-/rdfa-streaming-parser-1.5.0.tgz", + "integrity": "sha512-A+Kl0vbRQKK3SqgWdCiR48Hi75LK6z6glPdGcbLXMw6qMRcLeIKe4p6yFkPXpbwtegmOa94uaxeLs5HMdo66AQ==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "htmlparser2": "^6.0.0", + "rdf-data-factory": "^1.1.0", + "relative-to-absolute-iri": "^1.0.2" + } + }, + "rdfxml-streaming-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-1.5.0.tgz", + "integrity": "sha512-pnt+7NgeqCMd2/rub+dqxzYJhZwJjBNU2BRwyYdCTmRZu2fr795jCPJB6Io5pjPzAt29ASqy+ODBSRMDKoKGbQ==", + "dev": true, + "requires": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0", + "relative-to-absolute-iri": "^1.0.0", + "sax": "^1.2.4" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readable-stream-node-to-web": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readable-stream-node-to-web/-/readable-stream-node-to-web-1.0.1.tgz", + "integrity": "sha1-i3YU+qFGXr+g2pucpjA/onBzt88=", + "dev": true + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "optional": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true, + "optional": true + }, + "regex-not": { + "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" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "relative-to-absolute-iri": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.6.tgz", + "integrity": "sha512-Xw5/Zx6iWSCMJUXwXVOjySjH8Xli4hVFL9QQFvkl1qEmFBG94J+QUI9emnoctOCD3285f1jNV+QWV9eDYwIdfQ==", + "dev": true + }, + "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=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "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=", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.56.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz", + "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "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", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "fill-range": { + "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", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "is-number": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "micromatch": { + "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", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "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=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "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", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "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" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "snapdragon": { + "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", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "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" + } + }, + "define-property": { + "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" + } + }, + "extend-shallow": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "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", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "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", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "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" + } + }, + "is-accessor-descriptor": { + "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" + } + }, + "is-data-descriptor": { + "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" + } + }, + "is-descriptor": { + "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", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "optional": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sparqlalgebrajs": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/sparqlalgebrajs/-/sparqlalgebrajs-2.5.5.tgz", + "integrity": "sha512-sG9XI5311mS+JPDaeZUwtwYaYDRiTZDzxtHVS1GSrnfcZ2aiK1fa1PX9z16l7dtS35X3z1j1qyHEElzZO5OM3A==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "minimist": "^1.2.5", + "rdf-data-factory": "^1.0.4", + "rdf-isomorphic": "^1.2.0", + "rdf-string": "^1.5.0", + "sparqljs": "^3.3.0" + } + }, + "sparqljs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/sparqljs/-/sparqljs-3.4.2.tgz", + "integrity": "sha512-MmmZ6cMuvhf4Eh2FXX21dalgADUiZ9WN8XKMedwhTFg0r7W09/o8wvoZ8C4yA6FptnjjAjm+mGnxAEpkSRY3QQ==", + "dev": true, + "requires": { + "rdf-data-factory": "^1.0.4" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "dev": true + }, + "split-string": { + "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" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "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" + }, + "dependencies": { + "define-property": { + "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" + } + } + } + }, + "stream-to-string": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stream-to-string/-/stream-to-string-1.2.0.tgz", + "integrity": "sha512-8drZlFIKBHSMdX9GCWv8V9AAWnQcTqw0iAI6/GC7UJ0H0SwKeFKjOoZfGY1tOU00GGU7FYZQoJ/ZCUEoXhD7yQ==", + "dev": true, + "requires": { + "promise-polyfill": "^1.1.6" + }, + "dependencies": { + "promise-polyfill": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-1.1.6.tgz", + "integrity": "sha1-zQTv9G9clcOn0EVZHXm14+AfEtc=", + "dev": true + } + } + }, + "streamify-array": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/streamify-array/-/streamify-array-1.0.1.tgz", + "integrity": "sha512-ZnswaBcC6B1bhPLSQOlC6CdaDUSzU0wr2lvvHpbHNms8V7+DLd8uEAzDAWpsjxbFkijBHhuObFO/qqu52DZUMA==", + "dev": true + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "optional": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "dev": true, + "requires": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "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" + }, + "dependencies": { + "kind-of": { + "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" + } + } + } + }, + "to-regex": { + "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", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, + "ts-jest": { + "version": "26.5.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", + "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + } + }, + "ts-node": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", + "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "union-value": { + "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", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "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" + }, + "dependencies": { + "has-value": { + "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", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "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" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vite": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.2.3.tgz", + "integrity": "sha512-PtjyBL4GtACM+uT5q5hi2+AlMBbb6YI2b2bam6QI8ZdZt4FezseF0yZHQx0G+b3po9jIJ/GS5N9gc5Yq9Rue7g==", + "dev": true, + "requires": { + "esbuild": "^0.9.3", + "fsevents": "~2.3.1", + "postcss": "^8.2.1", + "resolve": "^1.19.0", + "rollup": "^2.38.5" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "web-streams-node": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/web-streams-node/-/web-streams-node-0.4.0.tgz", + "integrity": "sha512-u+PBQs8DFaBrN/bxCLFn21tO/ZP7EM3qA4FGzppoUCcZ5CaMbKOsN8uOp27ylVEsfrxcR2tsF6gWHI5M8bN73w==", + "dev": true, + "requires": { + "is-stream": "^1.1.0", + "readable-stream-node-to-web": "^1.0.1", + "web-streams-ponyfill": "^1.4.1" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "web-streams-ponyfill": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/web-streams-ponyfill/-/web-streams-ponyfill-1.4.2.tgz", + "integrity": "sha512-LCHW+fE2UBJ2vjhqJujqmoxh1ytEDEr0dPO3CabMdMDJPKmsaxzS90V1Ar6LtNE5VHLqxR4YMEj1i4lzMAccIA==", + "dev": true + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "requires": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "winston": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", + "dev": true, + "requires": { + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + } + }, + "winston-transport": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", + "integrity": "sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==", + "dev": true, + "requires": { + "readable-stream": "^2.3.7", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "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==", + "dev": true + }, + "string_decoder": { + "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" + } + } + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zone.js": { + "version": "0.8.29", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz", + "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" + } + } +} diff --git a/packages/dgt-utils/package.json b/packages/dgt-utils/package.json new file mode 100644 index 00000000..c0947647 --- /dev/null +++ b/packages/dgt-utils/package.json @@ -0,0 +1,101 @@ +{ + "name": "@digita-ai/dgt-utils", + "version": "0.5.0", + "scripts": { + "build": "rimraf ./dist && vite build --config vite.config.ts && tsc && npm run build:components", + "build:dev": "npm run build", + "build:components": "componentsjs-generator -s lib -c dist/components -i .componentsignore", + "lint": "eslint .", + "lint:fix": "eslint --fix .", + "test": "jest", + "test:ci": "jest --runInBand", + "test:watch": "jest --watch --no-coverage", + "e2e": "ng e2e" + }, + "main": "./dist/dgt-utils.umd.js", + "types": "./dist/public-api.d.ts", + "module": "./dist/dgt-utils.es.js", + "exports": { + ".": { + "import": "./dist/dgt-utils.es.js", + "require": "./dist/dgt-utils.umd.js" + } + }, + "directories": { + "lib": "lib", + "test": "__tests__" + }, + "files": [ + "dist", + "config", + ".componentsignore" + ], + "dependencies": { + "@angular/core": "~7.2.0", + "rxjs": "6.3.3", + "zone.js": "~0.8.26" + }, + "devDependencies": { + "@digita-ai/jest-config": "^0.3.3", + "@digita-ai/typescript-config": "^0.3.3", + "@types/jest": "^26.0.20", + "@types/node": "^14.14.14", + "@typescript-eslint/eslint-plugin": "^4.10.0", + "@typescript-eslint/parser": "^4.10.0", + "componentsjs": "4.0.5", + "componentsjs-generator": "2.1.0", + "eslint": "^7.16.0", + "jest": "^26.6.3", + "ts-jest": "^26.4.4", + "ts-node": "^9.1.1", + "typescript": "^4.2.4", + "vite": "2.2.3" + }, + "publishConfig": { + "registry": "https://npm.pkg.github.com" + }, + "repository": { + "type": "git", + "url": "ssh://git@github.com/digita-ai/dgt-shared.git", + "directory": "shared/dgt-utils" + }, + "bugs": { + "url": "https://github.com/digita-ai/dgt-shared/issues" + }, + "author": "Wouter Janssens", + "license": "ISC", + "lsd:module": "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils", + "lsd:components": "dist/components/components.jsonld", + "lsd:contexts": { + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/components/context.jsonld": "dist/components/context.jsonld" + }, + "lsd:importPaths": { + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/components/": "dist/components/", + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/config/": "config/", + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/dgt-utils/^0.0.0/dist/": "dist/" + }, + "jest": { + "displayName": "components", + "preset": "@digita-ai/jest-config", + "testEnvironment": "node", + "coverageThreshold": { + "global": { + "branches": 0, + "functions": 0, + "lines": 0, + "statements": 0 + } + }, + "coveragePathIgnorePatterns": [ + "/dist/", + "/node_modules/", + "/.*\\.conf(ig)?.ts", + "/lib/index.ts" + ], + "globals": { + "ts-jest": { + "tsconfig": "/tsconfig.spec.json" + } + } + } +} diff --git a/packages/dgt-utils/tsconfig.json b/packages/dgt-utils/tsconfig.json new file mode 100644 index 00000000..f97285d0 --- /dev/null +++ b/packages/dgt-utils/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "@digita-ai/typescript-config/tsconfig.json", + "compilerOptions": { + "baseUrl": "lib", + "outDir": "dist", + "emitDeclarationOnly": true, + // Recommended by Lit Element + "module": "es2015", + "target": "es2017", + // Strict should actually be true + "strict": false, + "noImplicitAny": true, + "noImplicitReturns": true, + }, + "files": [ "node_modules/vite/client.d.ts" ], + "include": [ "lib" ], + "exclude": [ + "**/*.spec.ts", + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/packages/dgt-utils/tsconfig.spec.json b/packages/dgt-utils/tsconfig.spec.json new file mode 100644 index 00000000..ead1f9c1 --- /dev/null +++ b/packages/dgt-utils/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "@digita-ai/typescript-config/tsconfig.spec.json", + "compilerOptions": { + "baseUrl": "lib", + "outDir": "dist", + "sourceMap": true, + "strict": false + }, + "files": [ + "node_modules/vite/client.d.ts", + "tests/setup.ts" + ], + "include": [ "lib" ], + "exclude": [ + "dist", + "node_modules" + ] +} diff --git a/packages/dgt-utils/vite.config.ts b/packages/dgt-utils/vite.config.ts new file mode 100644 index 00000000..27090d39 --- /dev/null +++ b/packages/dgt-utils/vite.config.ts @@ -0,0 +1,14 @@ +import path from 'path'; +import { defineConfig } from 'vite' + +export default defineConfig({ + root: 'lib', + build: { + target: 'es2015', + lib: { + entry: path.resolve(__dirname, 'lib/public-api.ts'), + name: '@digita-ai/dgt-utils' + }, + outDir: '../dist' + } +}); \ No newline at end of file diff --git a/projects/dgt-shared-connectors/README.md b/projects/dgt-shared-connectors/README.md deleted file mode 100644 index cb067c9d..00000000 --- a/projects/dgt-shared-connectors/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# DgtSharedConnectors - -This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0. - -## Code scaffolding - -Run `ng generate component component-name --project dgt-shared-connectors` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dgt-shared-connectors`. -> Note: Don't forget to add `--project dgt-shared-connectors` or else it will be added to the default project in your `angular.json` file. - -## Build - -Run `ng build dgt-shared-connectors` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Publishing - -After building your library with `ng build dgt-shared-connectors`, go to the dist folder `cd dist/dgt-shared-connectors` and run `npm publish`. - -## Running unit tests - -Run `ng test dgt-shared-connectors` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/dgt-shared-connectors/karma.conf.js b/projects/dgt-shared-connectors/karma.conf.js deleted file mode 100644 index 406038ef..00000000 --- a/projects/dgt-shared-connectors/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dgt-shared-connectors'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/dgt-shared-connectors/ng-package.json b/projects/dgt-shared-connectors/ng-package.json deleted file mode 100644 index 4ab4b840..00000000 --- a/projects/dgt-shared-connectors/ng-package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/dgt-shared-connectors", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public-api.ts" - }, - "whitelistedNonPeerDependencies": [ - "@angular/core", - "@angular/common", - "@digita-ai/dgt-shared-utils", - "@digita-ai/dgt-shared-data", - "rdflib", - "mssql", - "ts-md5" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-connectors/package.json b/projects/dgt-shared-connectors/package.json deleted file mode 100644 index 84cf4de0..00000000 --- a/projects/dgt-shared-connectors/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "@digita-ai/dgt-shared-connectors", - "version": "0.1.2", - "devDependencies": { - "@digita-ai/dgt-shared-test": "0.1.2", - "@types/mssql": "^4.3.1", - "@types/n3": "^1.4.0", - "@types/rdflib": "^1.0.5", - "@types/sparqljs": "^2.1.0" - }, - "peerDependencies": { - "@types/node": "~11.9.5", - "@angular/common": "^7.2.0", - "@angular/core": "^7.2.0", - "@digita-ai/dgt-shared-data": "0.1.2", - "@digita-ai/dgt-shared-utils": "0.1.2", - "@solid/jose": "^0.6.0", - "lodash": "4.17.11", - "ts-md5": "^1.2.7", - "mssql": "5.1.0", - "n3": "^1.4.0", - "rdflib": "^1.0.4", - "sparqljs": "2.1.0", - "whatwg-url": "6.5.0" - }, - "main": "src/public-api.ts", - "publishConfig": { "registry": "https://npm.pkg.github.com" }, - "repository" : { - "type" : "git", - "url": "ssh://git@github.com/digita-ai/dgt-shared.git", - "directory": "projects/dgt-shared-connectors" - }, - "author": "Wouter Janssens", - "license": "ISC", - "browser": { - "http": false, - "https": false, - "net": false, - "path": false, - "stream": false, - "tls": false, - "fs": false - } -} diff --git a/projects/dgt-shared-connectors/src/lib/dgt-shared-connectors.module.ts b/projects/dgt-shared-connectors/src/lib/dgt-shared-connectors.module.ts deleted file mode 100644 index ce0e0ab1..00000000 --- a/projects/dgt-shared-connectors/src/lib/dgt-shared-connectors.module.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { NgModule } from '@angular/core'; -import { DGTSharedUtilsModule } from '@digita-ai/dgt-shared-utils'; -import { DGTSourceGravatarConnector } from './gravatar/connectors/dgt-source-gravatar.connector'; -import { DGTSourceMSSQLConnector } from './mssql/connectors/dgt-source-mssql.connector'; -import { DGTSourceSolidConnector } from './solid/connectors/dgt-source-solid.connector'; -import { DGTSourceSolidTrustedAppTransformerService } from './solid/services/dgt-source-solid-trusted-app-transformer.service'; - -export const declarations = []; -export const imports = [ - DGTSharedUtilsModule -]; -export const providers = [ - DGTSourceSolidConnector, - DGTSourceMSSQLConnector, - DGTSourceGravatarConnector, - DGTSourceSolidTrustedAppTransformerService, -]; - -@NgModule({ - declarations, - imports, - providers, - exports: imports -}) -export class DGTSharedConnectorsModule { } diff --git a/projects/dgt-shared-connectors/src/lib/gravatar/connectors/dgt-source-gravatar.connector.ts b/projects/dgt-shared-connectors/src/lib/gravatar/connectors/dgt-source-gravatar.connector.ts deleted file mode 100644 index d8f1f69d..00000000 --- a/projects/dgt-shared-connectors/src/lib/gravatar/connectors/dgt-source-gravatar.connector.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Observable, of } from 'rxjs'; -import { DGTConnector, DGTPurpose, DGTExchange, DGTSource, DGTLDTriple, DGTConnection, DGTLDTermType, DGTLDResource, DGTLDTransformer, DGTConnectionService, DGTSourceService } from '@digita-ai/dgt-shared-data'; -import { DGTSourceGravatarConfiguration } from '../models/dgt-source-gravatar-configuration.model'; -import { DGTHttpResponse, DGTLoggerService, DGTHttpService, DGTErrorNotImplemented, DGTInjectable, DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; -import { Md5 } from 'ts-md5/dist/md5'; -import { DGTSourceGravatarResponse } from '../models/dgt-source-gravatar-response.model'; -import { map, tap, switchMap } from 'rxjs/operators'; -import { DGTConnectionGravatarConfiguration } from '../models/dgt-connection-gravatar-configuration.model'; - - - -@DGTInjectable() -export class DGTSourceGravatarConnector extends DGTConnector { - constructor(private logger: DGTLoggerService, private http: DGTHttpService, private connections: DGTConnectionService, private sources: DGTSourceService,) { - super(); - } - - connect(purpose: DGTPurpose, exchange: DGTExchange, connection: DGTConnection, source: DGTSource): Observable> { - return of(null); - } - - public query(holderUri: string, exchange: DGTExchange, transformer: DGTLDTransformer): Observable { - this.logger.debug(DGTSourceGravatarConnector.name, 'Starting query', { exchange, holderUri }); - - if (!exchange) { - throw new DGTErrorArgument('Argument exchange should be set.', exchange); - } - - let res = null; - - res = of({ holderUri, exchange, transformer }) - .pipe( - switchMap(data => this.connections.get(exchange.connection) - .pipe(map(connection => ({ ...data, connection, uri: `https://www.gravatar.com/${Md5.hashStr(connection.configuration.email)}.json` })))), - switchMap(data => this.sources.get(exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap(data => this.http.get(data.uri) - .pipe(map(response => ({ ...data, response })))), - tap(data => this.logger.debug(DGTSourceGravatarConnector.name, 'Received response from Gravatar', { data })), - map(data => this.convertResponse(data.holderUri, data.response, exchange, data.source, data.connection)), - tap(data => this.logger.debug(DGTSourceGravatarConnector.name, 'Converted response from Gravatar', { data })), - switchMap((entity: DGTLDResource) => transformer.toDomain([entity])), - ); - - return res; - } - - private convertResponse(holderUri: string, httpResponse: DGTHttpResponse, exchange: DGTExchange, source: DGTSource, connection: DGTConnection): DGTLDResource { - const triples: DGTLDTriple[] = []; - - this.logger.debug(DGTSourceGravatarConnector.name, 'Starting conversion of Gravatar response', { httpResponse, exchange, source, connection }); - - if (exchange && source && httpResponse && httpResponse.success && httpResponse.data && httpResponse.data.entry && httpResponse.data.entry[0]) { - const entry = httpResponse.data.entry[0]; - - this.logger.debug(DGTSourceGravatarConnector.name, 'Found entry', { entry }); - - if (entry.preferredUsername) { - this.logger.debug(DGTSourceGravatarConnector.name, 'Found username', { entry }); - triples.push({ - subject: { - value: exchange.holder, - termType: DGTLDTermType.REFERENCE - }, - predicate: source.configuration.usernameField, - object: { - value: entry.preferredUsername, - termType: DGTLDTermType.LITERAL - }, - }); - } - - if (entry.thumbnailUrl) { - this.logger.debug(DGTSourceGravatarConnector.name, 'Found thumbnail', { entry }); - triples.push({ - subject: { - value: exchange.holder, - termType: DGTLDTermType.REFERENCE - }, - predicate: source.configuration.thumbnailField, - object: { - value: entry.thumbnailUrl, - termType: DGTLDTermType.LITERAL - }, - }); - } - } - - return { - triples, - uri: holderUri, - exchange: exchange.uri, - }; - } - - public update(domainEntities: { original: R, updated: R }[], transformer: DGTLDTransformer): Observable { - throw new DGTErrorNotImplemented(); - } - - public delete(domainEntities: R[], transformer: DGTLDTransformer): Observable { - throw new DGTErrorNotImplemented(); - } - - public add(domainEntities: R[], transformer: DGTLDTransformer): Observable { - throw new DGTErrorNotImplemented(); - } -} diff --git a/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-connection-gravatar-configuration.model.ts b/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-connection-gravatar-configuration.model.ts deleted file mode 100644 index 3f3b77f4..00000000 --- a/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-connection-gravatar-configuration.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface DGTConnectionGravatarConfiguration { - email: string; -} diff --git a/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-configuration.model.ts b/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-configuration.model.ts deleted file mode 100644 index 555fc270..00000000 --- a/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-configuration.model.ts +++ /dev/null @@ -1,5 +0,0 @@ - -export interface DGTSourceGravatarConfiguration { - usernameField: string; - thumbnailField: string; -} diff --git a/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-response.model.ts b/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-response.model.ts deleted file mode 100644 index b70040b4..00000000 --- a/projects/dgt-shared-connectors/src/lib/gravatar/models/dgt-source-gravatar-response.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DGTSourceGravatarResponse { - entry: { - preferredUsername: string, - thumbnailUrl: string - }[]; -} diff --git a/projects/dgt-shared-connectors/src/lib/mssql/connectors/dgt-source-mssql.connector.ts b/projects/dgt-shared-connectors/src/lib/mssql/connectors/dgt-source-mssql.connector.ts deleted file mode 100644 index 20ef9bbc..00000000 --- a/projects/dgt-shared-connectors/src/lib/mssql/connectors/dgt-source-mssql.connector.ts +++ /dev/null @@ -1,235 +0,0 @@ -import { Observable, of, from } from 'rxjs'; -import { ConnectionPool, IResult } from 'mssql'; -import { DGTExchange, DGTPurpose, DGTConnector, DGTLDTriple, DGTSource, DGTConnection, DGTLDTermType, DGTLDResource, DGTLDTransformer, DGTLDDataType, DGTConnectionService, DGTSourceService, DGTExchangeService } from '@digita-ai/dgt-shared-data'; -import { switchMap, map, tap, catchError } from 'rxjs/operators'; -import { DGTMap, DGTLoggerService, DGTInjectable, DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; -import { DGTSourceMSSQLConfiguration } from '../models/dgt-source-mssql-configuration.model'; -import { DGTConnectionMSSQLConfiguration } from '../models/dgt-connection-mssql-configuration.model'; -import * as _ from 'lodash'; - -@DGTInjectable() -export class DGTSourceMSSQLConnector extends DGTConnector { - - /** - * Map of DGTSource uri -> ConnectionPools - */ - private pools: DGTMap; - - constructor(private logger: DGTLoggerService, private connections: DGTConnectionService, private sources: DGTSourceService, private exchanges: DGTExchangeService) { - super(); - this.pools = new DGTMap(); - } - - public connect(purpose: DGTPurpose, exchange: DGTExchange, connection: DGTConnection, source: DGTSource): Observable> { - return of(null); - } - - public query(holderUri: string, exchange: DGTExchange, transformer: DGTLDTransformer): Observable { - return of({ holderUri, exchange, transformer }) - .pipe( - switchMap(data => this.connections.get(exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap(data => this.getPool(data.source) - .pipe(map(pool => ({ ...data, pool })))), - tap(data => this.logger.debug(DGTSourceMSSQLConnector.name, 'Connected to pool', data)), - switchMap(data => from(data.pool.request().query( - data.source.configuration.commands.select(data.connection.configuration.personId) - )) - .pipe(map(result => ({ ...data, result })))), - map(data => this.convertResult(data.holderUri, data.result, data.exchange, data.source.configuration.mapping)), - switchMap((entity: DGTLDResource) => transformer.toDomain([entity])), - catchError(() => { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Error while querying MSSQL'); - throw new DGTErrorArgument('Error while querying MSSQL', null); - }), - ); - } - - private convertResult(uri: string, sqlResult: IResult, exchange: DGTExchange, mapping: DGTMap): DGTLDResource { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Converting results', { sqlResult, exchange }); - const triples: DGTLDTriple[] = []; - - if (exchange && mapping && sqlResult && sqlResult.recordset) { - sqlResult.recordset.forEach((record) => { - if (record) { - mapping.forEach((field, key) => { - const value = record[key]; - - if (value) { - triples.push({ - subject: { - value: exchange.holder, - termType: DGTLDTermType.REFERENCE - }, - predicate: field, - object: { - value, - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING - }, - }); - } - }); - } - }); - } - - return { - triples, - uri, - exchange: exchange.uri, - }; - } - - public update( - resources: { original: R, updated: R }[], - transformer: DGTLDTransformer, - ): Observable { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Starting UPDATE, creating connection pool', { resources, transformer }); - - return of({ resources, transformer }) - .pipe( - switchMap(data => this.exchanges.get(_.head(resources).original.exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap(data => this.getPool(data.source) - .pipe(map(pool => ({ ...data, pool })))), - tap(pool => this.logger.debug(DGTSourceMSSQLConnector.name, 'Connected to pool', { pool })), - switchMap(data => { - // construct columns part of query - // e.g. name="Tom Haegemans", points=1760 - let columns = ''; - resources.forEach(entity => { - const columnName = data.source.configuration.mapping.getByValue(entity.updated.triples[0].predicate); - columns = columns.concat(`${columnName}='${entity.updated.triples[0].object.value}', `); - }); - // remove last comma - columns = columns.replace(/,\s*$/, ''); - const query = data.source.configuration.commands.update( - data.connection.configuration.personId, columns - ); - this.logger.debug(DGTSourceMSSQLConnector.name, 'Executeing query', query); - return from(data.pool.request().query(query)) - .pipe(map(result => ({ result, pool: data.pool }))); - }), - tap(data => this.logger.debug(DGTSourceMSSQLConnector.name, 'Finished UPDATE', { data })), - map(() => resources.map(entity => entity.updated)), - catchError(() => { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Error while updating MSSQL'); - throw new DGTErrorArgument('Error while updating MSSQL', null); - }), - ); - } - - public delete(resources: R[], transformer: DGTLDTransformer): Observable { - // At this points just delete the connection.configuration.personId 's record - this.logger.debug(DGTSourceMSSQLConnector.name, 'Starting DELETE, creating connection pool', { resources, transformer }); - - return of({ resources, transformer }) - .pipe( - switchMap(data => this.exchanges.get(_.head(resources).exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap(data => this.getPool(data.source) - .pipe(map(pool => ({ ...data, pool })))), - tap(data => this.logger.debug(DGTSourceMSSQLConnector.name, 'Connected to pool', data)), - switchMap(data => { - const query = data.source.configuration.commands.delete( - data.connection.configuration.personId - ); - this.logger.debug(DGTSourceMSSQLConnector.name, 'Executeing query', query); - return from(data.pool.request().query(query)) - .pipe(map(result => ({ result, pool: data.pool }))); - }), - tap(data => this.logger.debug(DGTSourceMSSQLConnector.name, 'Finished DELETE', { data })), - map(() => resources), - catchError(() => { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Error while deleteing MSSQL'); - throw new DGTErrorArgument('Error while deleteing MSSQL', null); - }), - ); - } - - public add(resources: R[], transformer: DGTLDTransformer,): Observable { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Starting ADD, creating connection pool', { resources, transformer }); - - return of({ resources, transformer }) - .pipe( - switchMap(data => this.exchanges.get(_.head(resources).exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap(data => this.getPool(data.source) - .pipe(map(pool => ({ ...data, pool })))), - tap(data => this.logger.debug(DGTSourceMSSQLConnector.name, 'Connected to pool', { data })), - switchMap(data => { - let cols = ''; - let values = ''; - data.source.configuration.mapping.forEach((value: string, key: string) => { - cols += key + ', '; - // TEMP TEMP TEMP TEMP TEMP TEMP - const temp = resources.find(e => e.triples[0].predicate === value); - values += temp ? `'${temp.triples[0].object.value}',` : 'NULL, '; - }); - const query = data.source.configuration.commands.insert( - data.connection.configuration.personId, - cols.slice(0, -2), values.slice(0, -2) - ); - this.logger.debug(DGTSourceMSSQLConnector.name, 'Executeing query', query); - return from(data.pool.request().query(query)) - .pipe(map(result => ({ result, pool: data.pool }))); - }), - tap(data => this.logger.debug(DGTSourceMSSQLConnector.name, 'Finished ADD', { data })), - map(() => resources), - catchError(() => { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Error while adding MSSQL'); - throw new DGTErrorArgument('Error while adding MSSQL', null); - }), - ); - } - - private extractConfig(source: DGTSource) { - return { - user: source.configuration.user, - password: source.configuration.password, - server: source.configuration.server, // You can use 'localhost\\instance' to connect to named instance - database: source.configuration.database, - - options: { - encrypt: false // Use this if you're on Windows Azure - } - }; - } - - private getPool(source: DGTSource): Observable { - if (!this.pools || !this.pools.get(source.uri)) { - try { - const config = this.extractConfig(source); - this.logger.debug(DGTSourceMSSQLConnector.name, 'Creating connection pool'); - const pool = new ConnectionPool(config); - pool.on('error', err => { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Caught error in connection pool', err); - }); - this.pools.set(source.uri, pool); - this.logger.debug(DGTSourceMSSQLConnector.name, 'Connect to connection pool'); - return from(this.pools.get(source.uri).connect()).pipe( - map(() => this.pools.get(source.uri)), - ); - } catch (err) { - this.logger.debug(DGTSourceMSSQLConnector.name, 'Caught error in create connection', { err, pools: this.pools, source }); - throw new DGTErrorArgument(err, err); - } - } - return of(this.pools.get(source.uri)); - } -} diff --git a/projects/dgt-shared-connectors/src/lib/mssql/models/dgt-connection-mssql-configuration.model.ts b/projects/dgt-shared-connectors/src/lib/mssql/models/dgt-connection-mssql-configuration.model.ts deleted file mode 100644 index 80396984..00000000 --- a/projects/dgt-shared-connectors/src/lib/mssql/models/dgt-connection-mssql-configuration.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface DGTConnectionMSSQLConfiguration { - personId: string; -} diff --git a/projects/dgt-shared-connectors/src/lib/mssql/models/dgt-source-mssql-configuration.model.ts b/projects/dgt-shared-connectors/src/lib/mssql/models/dgt-source-mssql-configuration.model.ts deleted file mode 100644 index 3a5a5f4b..00000000 --- a/projects/dgt-shared-connectors/src/lib/mssql/models/dgt-source-mssql-configuration.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTMap } from '@digita-ai/dgt-shared-utils'; - -export interface DGTSourceMSSQLConfiguration { - user: string; - password: string; - server: string; - database: string; - commands: { - [key: string]: Function, - }; - mapping: DGTMap; -} diff --git a/projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.spec.ts b/projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.spec.ts deleted file mode 100644 index fa459f7d..00000000 --- a/projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.spec.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* tslint:disable:no-unused-variable */ - -import { async } from '@angular/core/testing'; -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { DGTSourceSolidConnector } from './dgt-source-solid.connector'; -import { DGTExchange, DGTSourceSolid, DGTConnectionSolid, DGTLDTriple, DGTLDTermType } from '@digita-ai/dgt-shared-data'; -import * as _ from 'lodash'; -import { DGTErrorArgument, DGTError } from '@digita-ai/dgt-shared-utils'; - -describe('DGTSourceSolidConnector', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTSourceSolidConnector); - - describe('query', () => { - it('should throw error when arguments are incorrect', (() => { - expect(() => { - testService.service.query(null, null, null, null, null, null); - }).toThrowError(DGTErrorArgument); - - expect(() => { - testService.service.query('bla', null, null, null, null, null); - }).toThrowError(DGTErrorArgument); - - expect(() => { - testService.service.query('bla', { - uri: null, - icon: null, - description: null, - fields: null, - }, null, null, null, null); - }).toThrowError(DGTError); - })); - }); - - describe('convert', () => { - it('should convert simple turtle', async(() => { - const response = `@prefix : <#>. - @prefix dgt-events: . - @prefix xsd: . - - :me dgt-events:event :1.`; - const webId = 'https://john.my.id/'; - const exchange: DGTExchange = { - uri: 'e-1', - exchange: null, - triples: null, - purpose: null, - holder: null, - source: 's-1', - connection: 'c-1', - }; - const source: DGTSourceSolid = { - uri: 's-1', - exchange: null, - triples: null, - icon: null, - description: null, - type: null, - configuration: null, - }; - const connection: DGTConnectionSolid = { - uri: 'c-1', - exchange: null, - triples: null, - configuration: null, - state: null, - source: 's-1', - }; - - const expectedResult: DGTLDTriple[] = [ - { - exchange: 'e-1', - predicate: 'http://digita.ai/voc/events#event', - subject: { - termType: DGTLDTermType.REFERENCE, - value: 'https://john.my.id/' - }, - object: { - termType: DGTLDTermType.REFERENCE, - value: 'https://john.my.id/#1' - }, - originalValue: { - termType: DGTLDTermType.REFERENCE, - value: 'https://john.my.id/#1' - }, - source: 's-1', - connection: 'c-1', - } - ]; - - const result = testService.service.convert(response, webId, exchange, source, connection); - delete result[0].id; - - // expect(_.isEqual(result, expectedResult)).toBeTruthy(); - expect(result).toEqual(expectedResult); - })); - }); -}); diff --git a/projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.ts b/projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.ts deleted file mode 100644 index e7a360a7..00000000 --- a/projects/dgt-shared-connectors/src/lib/solid/connectors/dgt-source-solid.connector.ts +++ /dev/null @@ -1,769 +0,0 @@ -import { Observable, of, forkJoin, from } from 'rxjs'; -import { DGTPurpose, DGTConnection, DGTConnector, DGTExchange, DGTSource, DGTSourceSolidConfiguration, DGTConnectionSolidConfiguration, DGTSourceType, DGTSourceSolid, DGTConnectionState, DGTConnectionSolid, DGTLDNode, DGTLDTriple, DGTLDResource, DGTLDTermType, DGTLDTransformer, DGTSourceState, DGTSparqlQueryService, DGTSourceService, DGTLDTripleFactoryService, DGTConnectionService, DGTExchangeService, DGTPurposeService } from '@digita-ai/dgt-shared-data'; -import { DGTLoggerService, DGTHttpService, DGTErrorArgument, DGTOriginService, DGTCryptoService, DGTConfigurationService, DGTConfigurationBase, DGTInjectable, DGTSourceSolidToken } from '@digita-ai/dgt-shared-utils'; -import { switchMap, map, tap } from 'rxjs/operators'; -import { JWT } from '@solid/jose'; -import { v4 as uuid } from 'uuid'; -import base64url from 'base64url'; -import * as _ from 'lodash'; -import { DGTSourceSolidLogin } from '../models/dgt-source-solid-login.model'; -import { Quad, Parser } from 'n3'; -import { DGTSourceSolidTrustedApp } from '../models/dgt-source-solid-trusted-app.model'; -import { DGTSourceSolidTrustedAppMode } from '../models/dgt-source-solid-trusted-app-mode.model'; -import { DGTSourceSolidTrustedAppTransformerService } from '../services/dgt-source-solid-trusted-app-transformer.service'; - -@DGTInjectable() -export class DGTSourceSolidConnector extends DGTConnector { - - - private parser: Parser = new Parser(); - - constructor( - private logger: DGTLoggerService, - private http: DGTHttpService, - private origin: DGTOriginService, - private crypto: DGTCryptoService, - private transformer: DGTSourceSolidTrustedAppTransformerService, - private triples: DGTLDTripleFactoryService, - private connections: DGTConnectionService, - private purposes: DGTPurposeService, - private sources: DGTSourceService, - private sparql: DGTSparqlQueryService, - private exchanges: DGTExchangeService, - ) { - super(); - } - - add(resources: T[], transformer: DGTLDTransformer): Observable { - if (!resources) { - throw new DGTErrorArgument('Argument resources should be set.', resources); - } - - if (!transformer) { - throw new DGTErrorArgument('transformer should be set.', transformer); - } - - this.logger.debug(DGTSourceSolidConnector.name, 'Starting to add entity', { domainEntities: resources }); - - return of({ resources, transformer }) - .pipe( - switchMap(data => this.exchanges.get(_.head(resources).exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => data.transformer.toTriples(resources) - .pipe( - tap(triples => { - if (!triples) { - throw new DGTErrorArgument(DGTSourceSolidConnector.name, 'No triples created by transformer'); - } - }), - map(entities => ({ ...data, entities, groupedEntities: _.groupBy(entities, 'triples[0].subject.value'), domainEntities: resources, })) - ) - ), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Prepared to add resource', data)), - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap(data => forkJoin(Object.keys(data.groupedEntities).map(uri => this.generateToken(uri, data.connection, data.source) - .pipe( - map(token => (token ? { - 'Content-Type': 'application/sparql-update', - Authorization: 'Bearer ' + token, - } : { 'Content-Type': 'application/sparql-update', })), - switchMap(headers => this.http.patch( - uri, - this.sparql.generateSparqlUpdate( - data.groupedEntities[uri], - 'insert' - ), - headers - ) - ) - )) - ).pipe(map((response) => data.entities as T[])) - ) - ); - } - - query(uri: string, exchange: DGTExchange, transformer: DGTLDTransformer): Observable { - this.logger.debug(DGTSourceSolidConnector.name, 'Starting to query linked data service', { uri, exchange, transformer }); - - if (!exchange) { - throw new DGTErrorArgument('Argument exchange should be set.', exchange); - } - - if (!transformer) { - throw new DGTErrorArgument('Argument transformer should be set.', transformer); - } - - return of({ exchange, uri }) - .pipe( - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection, uri: data.uri ? data.uri : connection.configuration.webId })))), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Retrieved connetion', data)), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Retrieved source', data)), - switchMap(data => this.generateToken(data.uri, data.connection, data.source) - .pipe(map(token => ({ - ...data, token, headers: token ? { - 'Accept': 'text/turtle', - Authorization: 'Bearer ' + token, - } : { 'Accept': 'text/turtle', }, - })))), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Generated token', data)), - switchMap(data => this.http.get(data.uri, data.headers, true) - .pipe(map(response => ({ ...data, response, triples: response.data ? this.triples.createFromString(response.data, data.uri) : [] })))), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Request completed', data)), - switchMap(data => transformer.toDomain([{ - triples: data.triples, - uri: data.uri, - exchange: data.exchange.uri - }])), - // tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Transformed resources', { data })), - ); - } - - delete(domainEntities: T[], transformer: DGTLDTransformer): Observable { - if (!domainEntities) { - throw new DGTErrorArgument( - 'domainEntities should be set.', - domainEntities - ); - } - - if (!transformer) { - throw new DGTErrorArgument('transformer should be set.', transformer); - } - - this.logger.debug( - DGTSparqlQueryService.name, - 'Starting to delete entity', - { domainEntities } - ); - - return transformer.toTriples(domainEntities).pipe( - map((entities) => ({ - entities, - groupedEntities: _.groupBy(entities, 'uri'), - domainEntities, - })), - switchMap(data => this.exchanges.get(_.head(domainEntities).exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - tap((data) => - this.logger.debug( - DGTSparqlQueryService.name, - 'Prepared entities', - data - ) - ), - switchMap((data) => - forkJoin( - Object.keys(data.groupedEntities).map((uri) => { - return this.generateToken(uri, data.connection, data.source).pipe( - map(token => (token ? { - 'Content-Type': 'application/sparql-update', - Authorization: 'Bearer ' + token, - } : { 'Content-Type': 'application/sparql-update', })), - switchMap((headers) => - this.http.patch( - uri, - this.sparql.generateSparqlUpdate( - data.groupedEntities[uri], - 'delete' - ), - headers - ) - ) - ); - }) - ).pipe(map((response) => data.entities as T[])) - ) - ); - } - update(domainEntities: { original: R; updated: R; }[], transformer: DGTLDTransformer): Observable { - if (!domainEntities) { - throw new DGTErrorArgument( - 'domainEntities should be set.', - domainEntities - ); - } - - if (!transformer) { - throw new DGTErrorArgument('transformer should be set.', transformer); - } - - this.logger.debug( - DGTSparqlQueryService.name, - 'Starting to update entity', - { domainEntities, transformer } - ); - return forkJoin( - domainEntities.map((update) => - transformer.toTriples([update.original]).pipe( - map((uTransfored) => ({ ...update, original: uTransfored[0] })), - switchMap((u) => - transformer - .toTriples([u.updated]) - .pipe(map((uTransfored) => ({ ...u, updated: uTransfored[0] }))) - ) - ) - ) - ).pipe( - tap((data) => - this.logger.debug( - DGTSparqlQueryService.name, - 'Transformed updated', - data - ) - ), - map((updates) => - updates.map((update) => ({ - ...update, - delta: { - updated: { - ...update.updated, - triples: _.differenceWith( - update.updated.triples, - update.original.triples, - _.isEqual - ) as DGTLDTriple[], - }, - original: { - ...update.original, - triples: _.differenceWith( - update.original.triples, - update.updated.triples, - _.isEqual - ) as DGTLDTriple[], - }, - }, - })) - ), - tap((data) => - this.logger.debug( - DGTSparqlQueryService.name, - 'Prepared to update entities', - data - ) - ), - switchMap(updates => this.exchanges.get(_.head(domainEntities).original.exchange) - .pipe(map(exchange => ({ updates, exchange })))), - switchMap(data => this.connections.get(data.exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.sources.get(data.exchange.source) - .pipe(map(source => ({ ...data, source })))), - switchMap((data) => - forkJoin( - data.updates.map((update) => - this.generateToken( - update.delta.updated.uri, - data.connection, - data.source - ).pipe( - map(token => (token ? { - 'Content-Type': 'application/sparql-update', - Authorization: 'Bearer ' + token, - } : { 'Content-Type': 'application/sparql-update', })), - switchMap((headers) => { - if (update.delta.original.triples.length === 0) { - return this.http.patch( - update.delta.updated.uri, - this.sparql.generateSparqlUpdate([update.delta.updated], 'insert'), - headers - ); - } - - if (update.delta.updated.triples.length === 0) { - throw new DGTErrorArgument( - 'Updated values are undefined', - update.delta.updated - ); - } - - return this.http.patch( - update.delta.updated.uri, - this.sparql.generateSparqlUpdate( - [update.delta.updated], - 'insertdelete', - [update.delta.original] - ), - headers - ); - }) - ) - ) - ).pipe( - map((response) => domainEntities.map((update) => update.updated)) - ) - ) - ); - } - - public prepare(source: DGTSourceSolid): Observable { - - if (!source) { - throw new DGTErrorArgument('Argument source should be set.', source); - } - - this.logger.debug(DGTSourceSolidConnector.name, 'Starting to prepare source for connection', { source }); - - let res: Observable = null; - - if (source && source.type === DGTSourceType.SOLID) { - res = of({ source }) - .pipe( - switchMap(data => this.discover(data.source) - .pipe(map(configuration => ({ ...data, source: { ...source, configuration } })))), - switchMap(data => this.jwks(data.source) - .pipe(map(configuration => ({ ...data, source: { ...source, configuration } })))), - switchMap(data => this.register(data.source) - .pipe(map(configuration => ({ ...source, configuration })))), - map(src => ({ ...src, state: DGTSourceState.PREPARED })), - ); - } - - this.logger.debug(DGTSourceSolidConnector.name, 'Prepared source for connection', { source }); - - return res; - } - - public connect(purpose: DGTPurpose, exchange: DGTExchange, connection: DGTConnection, source: DGTSource): Observable { - - if (!source) { - throw new DGTErrorArgument('Argument source should be set.', source); - } - - this.logger.debug(DGTSourceSolidConnector.name, 'Starting to connect to Solid', { connection, source }); - - let res: Observable> = null; - - if (source && source.type === DGTSourceType.SOLID) { - res = of({ connection, source }).pipe( - tap((data) => - this.logger.debug( - DGTSourceSolidConnector.name, - 'Updated source configuration', - { data } - ) - ), - switchMap((data) => - this.generateUri(data.source, data.connection).pipe( - map((loginUri) => ({ - ...data, - connection: { - ...connection, - configuration: { ...data.connection.configuration, loginUri }, - state: DGTConnectionState.CONNECTING, - }, - })) - ) - ), - map((data) => data.connection) - ); - } - - return res; - } - - /** - * Registers an account on a solid server - * @param source source to create account on - * @param loginData data to use to create the account - * @returns the http response - */ - registerAccount( - source: DGTSourceSolid, - loginData: DGTSourceSolidLogin - ): Observable { - this.logger.debug(DGTSourceSolidConnector.name, 'Registering account', { - source, - }); - - const uri = source.configuration.issuer + '/api/accounts/new'; - const headers = { - 'Content-Type': 'application/x-www-form-urlencoded', - Accept: '*/*', - }; - - const body = `username=${loginData.username}&name=${loginData.name}&password=${loginData.password}&repeat_password=${loginData.password}&email=${loginData.email}`; - - return this.http.post(uri, body, headers).pipe( - tap((response) => - this.logger.debug( - DGTSourceSolidConnector.name, - 'Received registration response', - { response, source } - ) - ), - map((response) => ({ response, ...source.configuration })) - ); - } - - /** - * This function will check if a specific username is already taken - * on a specific solid server - * @param source The source you want to check the username on - * @param username The username you want to check for existance - * @returns True if the username is available, false if not - */ - public isAvailableUsername( - source: DGTSourceSolid, - username: string - ): Observable { - this.logger.debug( - DGTSourceSolidConnector.name, - 'Checking if username exists on solid server', - { source, username } - ); - - const sourceuri = source.configuration.issuer; - const url = 'https://' + username + '.' + sourceuri.split('//')[1]; - - return this.http.head(url).pipe( - tap((response) => - this.logger.debug(DGTSourceSolidConnector.name, 'Received response', { - response, - }) - ), - map((response) => response.status === 404) - ); - } - - - - private discover( - source: DGTSourceSolid - ): Observable { - this.logger.debug(DGTSourceSolidConnector.name, 'Discovering source', { - source, - }); - - const url = `${source.configuration.issuer}/.well-known/openid-configuration`; - - return this.http.get(url).pipe( - tap((response) => - this.logger.debug( - DGTSourceSolidConnector.name, - 'Received discover response', - { response } - ) - ), - map((response) => ({ ...response.data, ...source.configuration })) - ); - } - - private jwks( - source: DGTSourceSolid - ): Observable { - this.logger.debug(DGTSourceSolidConnector.name, 'Retrieve JWK set', { - source, - }); - - const url = `${source.configuration.jwks_uri}`; - - return this.http.get(url).pipe( - tap((response) => - this.logger.debug( - DGTSourceSolidConnector.name, - 'Received jwks response', - { response } - ) - ), - map((response) => ({ keys: response.data.keys, ...source.configuration })) - ); - } - - private register(source: DGTSourceSolid): Observable { - this.logger.debug(DGTSourceSolidConnector.name, 'Registering client', { - source, - }); - - - const encodedCallbackUri = source.configuration.callbackUri; - const uri = `${source.configuration.registration_endpoint}`; - const headers = { 'Content-Type': 'application/json' }; - const params = { - client_name: 'Digita Consumer Client', - client_uri: this.origin.get(), - logo_uri: `${this.origin.get()}assets/images/logo.png`, - response_types: ['code', 'code id_token token'], - grant_types: ['authorization_code'], - default_max_age: 7200, - post_logout_redirect_uris: [`${this.origin.get()}connect/logout`], - redirect_uris: [encodedCallbackUri] - }; - const body = JSON.stringify(Object.assign({}, params, {})); - - return this.http.post(uri, body, headers).pipe( - tap((response) => - this.logger.debug( - DGTSourceSolidConnector.name, - 'Received registration response', - { response, source } - ) - ), - map((response) => ({ ...response.data, ...source.configuration })) - ); - } - - public generateUri( - source: DGTSourceSolid, - connection: DGTConnectionSolid - ): Observable { - this.logger.debug( - DGTSourceSolidConnector.name, - 'Starting to generate login uri', - { source, connection } - ); - // define basic elements of the request - const issuer = source.configuration.issuer; - const endpoint = source.configuration.authorization_endpoint; - const client = { client_id: source.configuration.client_id }; - let params = Object.assign( - { - // response_type: 'code', - response_type: 'id_token token', - // display: 'popup', - scope: 'openid profile email', - redirect_uri: source.configuration.callbackUri, - state: null, - nonce: null, - key: null, - }, - client - ); - - // generate state and nonce random octets - params.state = this.crypto.generateRandomNumbers(16); - params.nonce = this.crypto.generateRandomNumbers(16); - - return forkJoin( - this.crypto.digest(new Uint8Array(params.state)), - this.crypto.digest(new Uint8Array(params.nonce)), - ) - .pipe( - map(digests => ({ digests })), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Generated digests', { data, params, source, connection })), - map(data => { - const state = base64url(Buffer.from(data.digests[0])); - const nonce = base64url(Buffer.from(data.digests[1])); - const key = `${issuer}/requestHistory/${state}`; - - // store the request params for response validation - // with serialized octet values for state and nonce - connection.configuration.requestHistory = {}; - connection.configuration.requestHistory[key] = JSON.stringify(params); - - // replace state and nonce octets with base64url encoded digests - params.state = state; - params.nonce = nonce; - - return data; - }), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Generated nonce, state and key', { data, params, source, connection })), - switchMap(data => this.crypto.generateKeyPair() - .pipe(map(sessionKeys => ({ ...data, sessionKeys })))), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Generated session keys', { data, params, source, connection })), - map(data => { - connection.configuration.privateKey = JSON.stringify(data.sessionKeys.privateKey); - params.key = data.sessionKeys.publicKey; - }), - switchMap(() => { - if (source.configuration.request_parameter_supported) { - const excludeParams = ['scope', 'client_id', 'response_type', 'state']; - const keysToEncode = Object.keys(params).filter(key => !excludeParams.includes(key)); - const payload = {}; - - keysToEncode.forEach(key => { - payload[key] = params[key]; - }); - - const requestParamJwt = new JWT({ - header: { alg: 'none' }, - payload - }, { filter: false }); - - return from(requestParamJwt.encode() - .then(requestParamCompact => { - const newParams = { - scope: params.scope, - client_id: params.client_id, - response_type: params.response_type, - request: requestParamCompact, - state: params.state, - }; - - return newParams; - }) - .then((encodedParams) => { - params = encodedParams; - }) - ); - } - }), - map(() => { - const url = new URL(endpoint); - url.search = this.encode(params); - - return url.href; - }) - ); - } - - public retrieveWebId(connection: DGTConnectionSolid): string { - let res = null; - - if ( - connection && - connection.configuration && - connection.configuration.idToken - ) { - const decoded = JWT.decode(connection.configuration.idToken); - - res = decoded.payload.sub; - } - - return res; - } - - - private encode(data): string { - const pairs = []; - - Object.keys(data).forEach((key) => { - pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])); - }); - - return pairs.join('&'); - } - - public checkAccessRights(exchange: DGTExchange): Observable { - this.logger.debug(DGTSourceSolidConnector.name, 'Checking access rights', { exchange }); - - return of(exchange).pipe( - switchMap(data => this.connections.get(exchange.connection).pipe( - map(connection => ({ ...data, connection })) - )), - switchMap(data => this.purposes.get(exchange.purpose).pipe( - map(purpose => ({ ...data, purpose })) - )), - switchMap(data => this.query(data.connection.configuration.webId, exchange, this.transformer).pipe( - map(trustedApps => ({ ...data, trustedApps })) - )), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Retrieved trusted apps', data.trustedApps)), - map(data => ({ ...data, ourTrustedApp: data.trustedApps.find(app => this.origin.get().includes(app.origin)) })), - tap(data => this.logger.debug(DGTSourceSolidConnector.name, 'Found our trusted app', data.ourTrustedApp)), - map(data => { - let res = false; - const aclsNeeded: string[] = data.purpose.aclNeeded ? data.purpose.aclNeeded : [DGTSourceSolidTrustedAppMode.READ]; - - - if (data.ourTrustedApp && aclsNeeded.every(acl => data.ourTrustedApp.modes.includes(acl as DGTSourceSolidTrustedAppMode))) { - res = true; - } - - this.logger.debug(DGTSourceSolidConnector.name, 'Checked if acl modes are included', { res, aclsNeeded, ourTrustedApp: data.ourTrustedApp }) - - return res; - }) - ); - } - - /** - * Check if a solid server is running on the given url - * @param url url to test - * @returns true if the specified url is a solid server, false if not - */ - public isSolidServer(url: string): Observable { - if (!url) { - this.logger.debug( - DGTSourceSolidConnector.name, - 'URL was undefined or null', - url - ); - return of(false); - } - // Test if url is valid - // Copyright (c) 2010-2018 Diego Perini (http://www.iport.it) - const reg = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i; - if (!reg.test(url)) { - this.logger.debug(DGTSourceSolidConnector.name, 'URL was not valid', url); - return of(false); - } else { - // Check headers for Link - return ( - this.http.head(url).pipe( - map((res) => { - const headers = res.headers; - if (res.status !== 200) { - this.logger.debug( - DGTSourceSolidConnector.name, - 'Status was not 200', - res.status - ); - return false; - } else if (!headers.has('link')) { - this.logger.debug( - DGTSourceSolidConnector.name, - 'Headers did not contain Link', - headers - ); - return false; - } else if ( - headers.get('link') !== - '<.acl>; rel="acl", <.meta>; rel="describedBy", ; rel="type"' - ) { - this.logger.debug( - DGTSourceSolidConnector.name, - 'Link header value did not match', - headers.get('link') - ); - return false; - } else { - return true; - } - }) - ) && - // Check if /.well-known/openid-configuration exists on server - this.http.get(url + '/.well-known/openid-configuration').pipe( - map((getRes) => { - if (getRes.status !== 200) { - this.logger.debug( - DGTSourceSolidConnector.name, - 'Status was not 200', - getRes.status - ); - return false; - } else { - this.logger.debug( - DGTSourceSolidConnector.name, - 'URL has a solid server', - url - ); - // When the url passes all of the previous checks, it is granted 'solid-server' status - return true; - } - }) - ) - ); - } - } - - public generateToken( - uri, - connection: DGTConnectionSolid, - source: DGTSourceSolid - ): Observable { - return source.state === DGTSourceState.PREPARED ? DGTSourceSolidToken.issueFor( - uri, - connection.configuration.privateKey, - source.configuration.client_id, - connection.configuration.idToken - ) : of(null); - } -} diff --git a/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-login.model.ts b/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-login.model.ts deleted file mode 100644 index 2c7cc340..00000000 --- a/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-login.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DGTSourceSolidLogin { - username: string; - name: string; - email: string; - password?: string; -} diff --git a/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app-mode.model.ts b/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app-mode.model.ts deleted file mode 100644 index 1f68ae32..00000000 --- a/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app-mode.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * The different modes a trusted app can be granted. - */ -export enum DGTSourceSolidTrustedAppMode { - READ = 'http://www.w3.org/ns/auth/acl#Read', - APPEND = 'http://www.w3.org/ns/auth/acl#Append', - CONTROL = 'http://www.w3.org/ns/auth/acl#Control', - WRITE = 'http://www.w3.org/ns/auth/acl#Write', -} diff --git a/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app.model.ts b/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app.model.ts deleted file mode 100644 index 602e38af..00000000 --- a/projects/dgt-shared-connectors/src/lib/solid/models/dgt-source-solid-trusted-app.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DGTSourceSolidTrustedAppMode } from './dgt-source-solid-trusted-app-mode.model'; -import { DGTLDResource } from '@digita-ai/dgt-shared-data'; - -/** - * An app which has access to a pod. - */ -export interface DGTSourceSolidTrustedApp extends DGTLDResource { - origin: string; - modes: DGTSourceSolidTrustedAppMode[]; -} \ No newline at end of file diff --git a/projects/dgt-shared-connectors/src/lib/solid/services/dgt-source-solid-trusted-app-transformer.service.ts b/projects/dgt-shared-connectors/src/lib/solid/services/dgt-source-solid-trusted-app-transformer.service.ts deleted file mode 100644 index 5fe5778c..00000000 --- a/projects/dgt-shared-connectors/src/lib/solid/services/dgt-source-solid-trusted-app-transformer.service.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { DGTLDTriple, DGTLDTermType, DGTLDTransformer, DGTLDResource, DGTConnectionSolid } from '@digita-ai/dgt-shared-data'; -import { Observable, of, forkJoin } from 'rxjs'; -import { DGTLoggerService, DGTErrorArgument, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import { map } from 'rxjs/operators'; -import { DGTSourceSolidTrustedApp } from '../models/dgt-source-solid-trusted-app.model'; -import { DGTSourceSolidTrustedAppMode } from '../models/dgt-source-solid-trusted-app-mode.model'; - -/** Transforms linked data to trustedapps, and the other way around. */ -@DGTInjectable() -export class DGTSourceSolidTrustedAppTransformerService implements DGTLDTransformer { - - constructor( - private logger: DGTLoggerService, - ) { } - - /** - * Transforms multiple linked data entities to trustedapps. - * @param entities Linked data objects to be transformed to trustedapps - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of trustedapps - */ - public toDomain(entities: DGTLDResource[]): Observable { - if (!entities) { - throw new DGTErrorArgument('Argument entities should be set.', entities); - } - - return forkJoin(entities.map(entity => this.toDomainOne(entity))) - .pipe( - map(trustedapps => _.flatten(trustedapps)) - ) - } - - /** - * Transformed a single linked data entity to trustedapps. - * @param entity The linked data entity to be transformed to trustedapps. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of trustedapps - */ - private toDomainOne(entity: DGTLDResource): Observable { - if (!entity) { - throw new DGTErrorArgument('Argument entity should be set.', entity); - } - - let res: DGTSourceSolidTrustedApp[] = null; - - if (entity && entity.triples) { - const trustedAppTriples = entity.triples.filter(value => - value.predicate === 'http://www.w3.org/ns/auth/acl#trustedApp' - ); - - this.logger.debug(DGTSourceSolidTrustedAppTransformerService.name, 'Found trusted app triples to transform', { trustedAppTriples }); - - if (trustedAppTriples) { - res = trustedAppTriples.map(trustedappSubjectValue => this.transformOne(trustedappSubjectValue, entity)); - } - } - - this.logger.debug(DGTSourceSolidTrustedAppTransformerService.name, 'Transformed values to trusted apps', { entity, res }); - - return of(res); - } - - /** - * Converts trustedapps to linked data. - * @param trustedapps The trustedapps which will be transformed to linked data. - * @param connection The connection on which the trustedapps are stored. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of linked data entities. - */ - public toTriples(trustedapps: DGTSourceSolidTrustedApp[]): Observable { - throw new Error(); - } - - /** - * Creates a single trustedapp from linked data. - * @param trustedAppTriple The entity of the the trustedapp's subject. - * @param entity The entity to be transformed to an trustedapp. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns The transformed trustedapp. - */ - private transformOne(trustedAppTriple: DGTLDTriple, entity: DGTLDResource): DGTSourceSolidTrustedApp { - this.logger.debug(DGTSourceSolidTrustedAppTransformerService.name, 'Starting to transform one entity', { trustedAppTriple, entity }); - - if (!trustedAppTriple) { - throw new DGTErrorArgument('Argument trustedAppTriple should be set.', trustedAppTriple); - } - - if (!entity) { - throw new DGTErrorArgument('Argument entity should be set.', entity); - } - - const uri = entity.uri ? entity.uri : trustedAppTriple.subject.value; - - const origin = entity.triples.find(value => - value.subject.value === trustedAppTriple.object.value && - value.predicate === 'http://www.w3.org/ns/auth/acl#origin' - ); - - const modes = entity.triples.filter(value => - value.subject.value === trustedAppTriple.object.value && - value.predicate === 'http://www.w3.org/ns/auth/acl#mode' - ); - - const parsedModes: DGTSourceSolidTrustedAppMode[] = modes ? modes.map(mode => { - return mode.object.value as DGTSourceSolidTrustedAppMode; - }) : null; - - const triples = entity.triples.filter(value => - value.subject.value === trustedAppTriple.object.value - ); - - return { - uri, - triples: [...triples, trustedAppTriple], - origin: origin ? origin.object.value : null, - modes: parsedModes, - exchange: entity.exchange, - }; - } -} diff --git a/projects/dgt-shared-connectors/src/polyfills.ts b/projects/dgt-shared-connectors/src/polyfills.ts deleted file mode 100644 index 06155165..00000000 --- a/projects/dgt-shared-connectors/src/polyfills.ts +++ /dev/null @@ -1,2 +0,0 @@ -(window as any).global = window; -(window as any).fs = {}; diff --git a/projects/dgt-shared-connectors/src/public-api.ts b/projects/dgt-shared-connectors/src/public-api.ts deleted file mode 100644 index 3a01634b..00000000 --- a/projects/dgt-shared-connectors/src/public-api.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Public API Surface of dgt-shared-connectors - */ - -export { DGTSourceMSSQLConnector } from './lib/mssql/connectors/dgt-source-mssql.connector'; -export { DGTSourceMSSQLConfiguration } from './lib/mssql/models/dgt-source-mssql-configuration.model'; -export { DGTSourceSolidConnector } from './lib/solid/connectors/dgt-source-solid.connector'; -export { DGTSourceSolidTrustedApp } from './lib/solid/models/dgt-source-solid-trusted-app.model'; -export { DGTSourceSolidTrustedAppMode } from './lib/solid/models/dgt-source-solid-trusted-app-mode.model'; -export { DGTSourceSolidTrustedAppTransformerService } from './lib/solid/services/dgt-source-solid-trusted-app-transformer.service'; -export { DGTSourceGravatarConfiguration } from './lib/gravatar/models/dgt-source-gravatar-configuration.model'; -export { DGTSourceGravatarResponse } from './lib/gravatar/models/dgt-source-gravatar-response.model'; -export { DGTSourceGravatarConnector } from './lib/gravatar/connectors/dgt-source-gravatar.connector'; -export { DGTSharedConnectorsModule } from './lib/dgt-shared-connectors.module'; -export { DGTSourceSolidLogin } from './lib/solid/models/dgt-source-solid-login.model'; diff --git a/projects/dgt-shared-connectors/src/test.configuration.ts b/projects/dgt-shared-connectors/src/test.configuration.ts deleted file mode 100644 index 78546aa8..00000000 --- a/projects/dgt-shared-connectors/src/test.configuration.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { RouterTestingModule } from '@angular/router/testing'; -import { DGTTestConfiguration } from '@digita-ai/dgt-shared-test'; -import { declarations, imports, providers } from './lib/dgt-shared-connectors.module'; -import { DGTMockDatabase, DGTDataService, DGTMockDataService, DGTQueryService } from '@digita-ai/dgt-shared-data'; -import { DGTHttpService } from '@digita-ai/dgt-shared-utils'; - -export const configuration: DGTTestConfiguration = { - module: { - declarations, - imports: [ - RouterTestingModule, - ...imports, - ], - providers: [ - ...providers, - { - provide: DGTMockDatabase, - useValue: new DGTMockDatabase([]) - }, - { - provide: DGTDataService, - useClass: DGTMockDataService - }, - DGTQueryService, - DGTHttpService - ], - } -}; diff --git a/projects/dgt-shared-connectors/src/test.ts b/projects/dgt-shared-connectors/src/test.ts deleted file mode 100644 index e11ff1c9..00000000 --- a/projects/dgt-shared-connectors/src/test.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/dgt-shared-connectors/tsconfig.lib.json b/projects/dgt-shared-connectors/tsconfig.lib.json deleted file mode 100644 index 36984a24..00000000 --- a/projects/dgt-shared-connectors/tsconfig.lib.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/lib", - "target": "es2015", - "module": "es2015", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "inlineSources": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "dom", - "es2018" - ] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "enableResourceInlining": true - }, - "exclude": [ - "src/test.ts", - "**/*.spec.ts" - ] -} diff --git a/projects/dgt-shared-connectors/tsconfig.spec.json b/projects/dgt-shared-connectors/tsconfig.spec.json deleted file mode 100644 index 8081d4d9..00000000 --- a/projects/dgt-shared-connectors/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "node" - ], - }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] -} diff --git a/projects/dgt-shared-connectors/tslint.json b/projects/dgt-shared-connectors/tslint.json deleted file mode 100644 index 124133f8..00000000 --- a/projects/dgt-shared-connectors/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -} diff --git a/projects/dgt-shared-data/README.md b/projects/dgt-shared-data/README.md deleted file mode 100644 index a7307f4e..00000000 --- a/projects/dgt-shared-data/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# DgtSharedData - -This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0. - -## Code scaffolding - -Run `ng generate component component-name --project dgt-shared-data` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dgt-shared-data`. -> Note: Don't forget to add `--project dgt-shared-data` or else it will be added to the default project in your `angular.json` file. - -## Build - -Run `ng build dgt-shared-data` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Publishing - -After building your library with `ng build dgt-shared-data`, go to the dist folder `cd dist/dgt-shared-data` and run `npm publish`. - -## Running unit tests - -Run `ng test dgt-shared-data` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/dgt-shared-data/karma.conf.js b/projects/dgt-shared-data/karma.conf.js deleted file mode 100644 index 606cf3d2..00000000 --- a/projects/dgt-shared-data/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dgt-shared-data'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/dgt-shared-data/ng-package.json b/projects/dgt-shared-data/ng-package.json deleted file mode 100644 index b8b86368..00000000 --- a/projects/dgt-shared-data/ng-package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/dgt-shared-data", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public-api.ts" - }, - "whitelistedNonPeerDependencies": [ - "@angular/core", - "@angular/common", - "@digita-ai/dgt-shared-utils", - "uuid" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-data/package.json b/projects/dgt-shared-data/package.json deleted file mode 100644 index 49ca84d2..00000000 --- a/projects/dgt-shared-data/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@digita-ai/dgt-shared-data", - "version": "0.1.2", - "peerDependencies": { - "@angular/common": "^7.2.7", - "@types/node": "~11.9.5", - "@angular/core": "^7.2.7", - "@digita-ai/dgt-shared-utils": "0.1.2", - "store2": "2.9.0", - "uuid": "3.4.0", - "n3": "^1.4.0", - "@comunica/actor-init-sparql": "^1.16.2", - "@comunica/actor-init-sparql-rdfjs": "^1.16.2", - "@comunica/bus-sparql-serialize": "^1.16.0", - "jsonwebtoken": "^8.2.0", - "passport-strategy": "^1.0.0" - }, - "devDependencies": { - "@digita-ai/dgt-shared-test": "0.1.2", - "@types/n3": "^1.4.0", - "@types/uuid": "3.4.3" - }, - "description": "This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.", - "main": "src/public-api.ts", - "publishConfig": { "registry": "https://npm.pkg.github.com" }, - "repository" : { - "type" : "git", - "url": "ssh://git@github.com/digita-ai/dgt-shared.git", - "directory": "projects/dgt-shared-data" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Wouter Janssens", - "license": "ISC" -} diff --git a/projects/dgt-shared-data/src/lib/cache/models/DGTCacheType.model.ts b/projects/dgt-shared-data/src/lib/cache/models/DGTCacheType.model.ts deleted file mode 100644 index ff20dbed..00000000 --- a/projects/dgt-shared-data/src/lib/cache/models/DGTCacheType.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTCacheType { - IN_MEMORY = 'IN_MEMORY', - SOLID = 'SOLID' -} diff --git a/projects/dgt-shared-data/src/lib/cache/services/dgt-cache-in-memory.service.ts b/projects/dgt-shared-data/src/lib/cache/services/dgt-cache-in-memory.service.ts deleted file mode 100644 index 55f9f7ad..00000000 --- a/projects/dgt-shared-data/src/lib/cache/services/dgt-cache-in-memory.service.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Observable, of } from 'rxjs'; -import { DGTInjectable, DGTLoggerService, DGTMap } from '@digita-ai/dgt-shared-utils'; -import { map, mergeMap, switchMap, tap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTLDFilter } from '../../linked-data/models/dgt-ld-filter.model'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDFilterService } from '../../linked-data/services/dgt-ld-filter.service'; -import { DGTQueryService } from '../../metadata/services/dgt-query.service'; -import { DGTCacheService } from './dgt-cache.service'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTCacheInMemoryService extends DGTCacheService { - public cache: DGTLDResource[] = []; - - constructor(private logger: DGTLoggerService, private filterService: DGTLDFilterService, private queries: DGTQueryService) { - super(); - } - - public delete(transformer: DGTLDTransformer, resources: T[]): Observable { - throw new Error('Method not implemented.'); - } - - public save(transformer: DGTLDTransformer, resources: T[]): Observable { - this.logger.debug(DGTCacheInMemoryService.name, 'Starting to save', { transformer, resources }); - - return of({ resources, transformer }) - .pipe( - tap(data => this.cache = data.resources), - map(data => data.resources) - ) - } - - public query(transformer: DGTLDTransformer, filter: DGTLDFilter): Observable { - this.logger.debug(DGTCacheInMemoryService.name, 'Starting to query', { cache: this.cache, transformer, filter }); - - return of({ resources: this.cache, transformer, filter }) - .pipe( - switchMap(data => !data.filter ? of(data.resources) : this.filterService.run(data.filter, data.resources)), - switchMap(data => transformer.toDomain(data)) - ); - } - - // public getValuesForExchange(exchange: DGTExchange): Observable { - // this.logger.debug(DGTCacheInMemoryService.name, 'Retrieving values from cache for exchange', { exchange }); - // if (!exchange) { - // throw new DGTErrorArgument('Argument exchange should be set.', exchange); - // } - // return of(this.cache.filter(triple => triple.exchange === exchange.id)); - // } - // public remove(query: DGTQuery): Observable { - // this.logger.debug(DGTCacheInMemoryService.name, 'Removing values from cache', { query }); - // if (!query) { - // throw new DGTErrorArgument('Argument query should be set.', query); - // } - // this.cache = this.queries.execute(this.cache, query); - // return of(this.cache); - // } - // public storeForExchange(exchange: DGTExchange, values: DGTLDTriple[]): Observable { - // this.logger.debug(DGTCacheInMemoryService.name, 'Storing values for exchange to cache', { exchange, values }); - // return of({ values, exchange }) - // .pipe( - // switchMap(data => this.remove({ conditions: [{ field: 'exchange', operator: '==', value: data.exchange.id }] }) - // .pipe(map(removal => data))), - // tap(data => this.logger.debug(DGTCacheInMemoryService.name, 'Removed old values, ready to store new ones', data)), - // tap(data => this.cache = data.values), - // map(data => data.values), - // ); - // } -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/cache/services/dgt-cache-solid.service.ts b/projects/dgt-shared-data/src/lib/cache/services/dgt-cache-solid.service.ts deleted file mode 100644 index fccace31..00000000 --- a/projects/dgt-shared-data/src/lib/cache/services/dgt-cache-solid.service.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { DGTHttpService, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { DGTLDFilter } from '../../linked-data/models/dgt-ld-filter.model'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTCacheService } from './dgt-cache.service'; -import { DGTSparqlQueryService } from '../../sparql/services/dgt-sparql-query.service'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTCacheSolidService extends DGTCacheService { - - public databaseUrl = 'http://192.168.0.224:9999/blazegraph/namespace/kb/sparql'; - - constructor(private http: DGTHttpService, private sparqlService: DGTSparqlQueryService, private logger: DGTLoggerService,) { - super(); - } - - public query(transformer: DGTLDTransformer, filter: DGTLDFilter): Observable { - - let responseJson: any; - const headers = { - 'Content-Type': 'application/sparql-query', - 'Accept': 'application/sparql-results+json' - }; - // Select everything - const body = 'SELECT $s $p $o WHERE { $s $p $o }'; - return this.http.post(this.databaseUrl, body, headers) - .pipe( - map(response => { - if (response) { - responseJson = response.data; - console.log(responseJson); - } - return responseJson; - } - )); - } - - public delete(transformer: DGTLDTransformer, objects: T[]): Observable { - throw new Error('Method not implemented.'); - } - - public save(transformer: DGTLDTransformer, objects: T[]): Observable { - throw new Error('Method not implemented.'); - - // toBeSaved is a domain object that has to be transformed to triples - // then a correct sparql query can be formed with the transformer and triples - // TODO Do we need the connection here : - // return transformer.toTriples(toBeSaved, connection).pipe( - // map(data => { - // const result = this.sparqlService.generateSparqlUpdate(data, 'insert', null); - // // This generates correct update query. We can update the triples in the blazegraph database with these. - // // example - // /* - // *INSERT DATA { - // "description"^^; - // "stakeholder"^^; - // ""^^; - // "het icoontje"^^; - // "http://something"^^. - // <#> . - // } - // */ - - // this.logger.debug(DGTCacheBlazeGraphService.name, - // 'generating sparql', - // result); - // return null; - // } - // )); - } - - // public getValuesForExchange(exchange: DGTExchange): Observable { - // throw new Error('Method not implemented.'); - // } - - // public storeForExchange(exchange: DGTExchange, values: DGTLDTriple[]): Observable { - // this.logger.debug(DGTCacheService.name, 'Storing values for exchange to cache', { exchange, values }); - // return of({ values, exchange }) - // .pipe( - // // switchMap(data => this.remove({ conditions: [{ field: 'exchange', operator: '==', value: data.exchange.id }] }) - // // .pipe(map(removal => data))), - // tap(data => this.logger.debug(DGTCacheService.name, 'Removed old values, ready to store new ones', data)), - // map(data => data.values), - // ); - // } - - // private convertToTriples(triples: DGTLDTriple[]): Triple[] { - // return triples.map((triple: DGTLDTriple) => { - // let object: Term = `${triple.object.value}` as Term; - - // if (triple.object.termType === DGTLDTermType.LITERAL) { - // object = `\"${triple.object.value}\"^^${triple.object.dataType}` as Term; - // } - - // return { - // subject: triple.subject.value as Term, - // predicate: triple.predicate as Term, - // object, - // }; - // }); - // } - - // private encode(data): string { - // const pairs = []; - - // Object.keys(data).forEach((key) => { - // pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])); - // }); - - // return pairs.join('&'); - // } -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/cache/services/dgt-cache.service.ts b/projects/dgt-shared-data/src/lib/cache/services/dgt-cache.service.ts deleted file mode 100644 index e19612bd..00000000 --- a/projects/dgt-shared-data/src/lib/cache/services/dgt-cache.service.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { Observable } from 'rxjs'; -import * as _ from 'lodash'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDFilter } from '../../linked-data/models/dgt-ld-filter.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -@DGTInjectable() -export abstract class DGTCacheService { - public abstract query(transformer: DGTLDTransformer, filter: DGTLDFilter): Observable - public abstract delete(transformer: DGTLDTransformer, objects: T[]): Observable - public abstract save(transformer: DGTLDTransformer, objects: T[]): Observable -} diff --git a/projects/dgt-shared-data/src/lib/categories/models/dgt-category.model.ts b/projects/dgt-shared-data/src/lib/categories/models/dgt-category.model.ts deleted file mode 100644 index 20198970..00000000 --- a/projects/dgt-shared-data/src/lib/categories/models/dgt-category.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DGTLDFilter } from '../../linked-data/models/dgt-ld-filter.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTCategory extends DGTLDResource { - icon: string; - title: string; - description: string; - filter: DGTLDFilter; - groupId: string; -} diff --git a/projects/dgt-shared-data/src/lib/categories/services/dgt-category.service.ts b/projects/dgt-shared-data/src/lib/categories/services/dgt-category.service.ts deleted file mode 100644 index a6d91f25..00000000 --- a/projects/dgt-shared-data/src/lib/categories/services/dgt-category.service.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { Observable } from 'rxjs'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTCategory } from '../models/dgt-category.model'; - -@DGTInjectable() -export abstract class DGTCategoryService implements DGTLDResourceService { - public abstract get(id: string): Observable; - public abstract query(filter: Partial): Observable; - public abstract save(resource: DGTCategory): Observable; - public abstract delete(resource: DGTCategory): Observable; - -} diff --git a/projects/dgt-shared-data/src/lib/configuration/models/dgt-configuration-base-web.model.ts b/projects/dgt-shared-data/src/lib/configuration/models/dgt-configuration-base-web.model.ts deleted file mode 100644 index 1f75ce71..00000000 --- a/projects/dgt-shared-data/src/lib/configuration/models/dgt-configuration-base-web.model.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DGTConfigurationBase } from '@digita-ai/dgt-shared-utils'; - -/** The configuration of the client */ -export interface DGTConfigurationBaseWeb extends DGTConfigurationBase { - enableServiceWorker: boolean, - typeRegistrations?: { - [key: string]: string; - }; - locale: { - default: string, - mapping: { - domain: string, - locale: string, - language: string, - country: string - }[] - }; - server: { - uri: string, - }, - events: { - file: string, - templates: any - }; -} diff --git a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid-configuration.model.ts b/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid-configuration.model.ts deleted file mode 100644 index dbc9dab3..00000000 --- a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid-configuration.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface DGTConnectionSolidConfiguration { - webId: string; - accessToken: string; - expiresIn: string; - idToken: string; - state: string; - requestHistory: { [key: string]: string }; - privateKey: string; - loginUri: string; - accountId: string; - protocol: string; -} diff --git a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid.model.ts b/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid.model.ts deleted file mode 100644 index 47972371..00000000 --- a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-solid.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { DGTConnection } from './dgt-connection.model'; -import { DGTConnectionSolidConfiguration } from './dgt-connection-solid-configuration.model'; - -export interface DGTConnectionSolid extends DGTConnection { } diff --git a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-state.model.ts b/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-state.model.ts deleted file mode 100644 index 8a8c5df9..00000000 --- a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection-state.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTConnectionState { - NOTCONNECTED = 'notconnected', - CONNECTING = 'connecting', - CONNECTED = 'connected' -} diff --git a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection.model.ts b/projects/dgt-shared-data/src/lib/connection/models/dgt-connection.model.ts deleted file mode 100644 index 2786decc..00000000 --- a/projects/dgt-shared-data/src/lib/connection/models/dgt-connection.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DGTConnectionState } from './dgt-connection-state.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTConnection extends DGTLDResource { - configuration: T; - state: DGTConnectionState; - source: string; - holder?: string; -} diff --git a/projects/dgt-shared-data/src/lib/connection/services/dgt-connection-abstract.service.ts b/projects/dgt-shared-data/src/lib/connection/services/dgt-connection-abstract.service.ts deleted file mode 100644 index 0a7c8e3d..00000000 --- a/projects/dgt-shared-data/src/lib/connection/services/dgt-connection-abstract.service.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTConnection } from '../models/dgt-connection.model'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export abstract class DGTConnectionService implements DGTLDResourceService> { - public abstract save(resource: DGTConnection): Observable>; - public abstract delete(resource: DGTConnection): Observable>; - public abstract get(id: string): Observable>; - public abstract query(filter: Partial>): Observable[]>; - public abstract getConnectionsWithWebId(webId: string): Observable[]>; - public abstract getConnectionForInvite(inviteId: string, sourceId: string): Observable; - public abstract sendTokensForInvite(inviteId: string, fragvalue: string): Observable>; -} diff --git a/projects/dgt-shared-data/src/lib/connector/models/dgt-connector.model.ts b/projects/dgt-shared-data/src/lib/connector/models/dgt-connector.model.ts deleted file mode 100644 index 2495e616..00000000 --- a/projects/dgt-shared-data/src/lib/connector/models/dgt-connector.model.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTConnection } from '../../connection/models/dgt-connection.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; -import { DGTPurpose } from '../../purpose/models/dgt-purpose.model'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTSource } from '../../source/models/dgt-source.model'; - -@DGTInjectable() -export abstract class DGTConnector { - public abstract add(domainEntities: R[], transformer: DGTLDTransformer): Observable; - public abstract connect(purpose: DGTPurpose, exchange: DGTExchange, connection: DGTConnection, source: DGTSource): Observable>; - public abstract query(holderUri: string, exchange: DGTExchange, transformer: DGTLDTransformer): Observable; - public abstract delete(domainEntities: R[], transformer: DGTLDTransformer): Observable; - public abstract update(domainEntities: { original: R, updated: R }[], transformer: DGTLDTransformer): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/connector/services/dgt-connector.service.ts b/projects/dgt-shared-data/src/lib/connector/services/dgt-connector.service.ts deleted file mode 100644 index e5e61e71..00000000 --- a/projects/dgt-shared-data/src/lib/connector/services/dgt-connector.service.ts +++ /dev/null @@ -1,144 +0,0 @@ -import * as _ from 'lodash'; -import { DGTParameterCheckerService, DGTMap, DGTLoggerService, DGTInjectable, DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; -import { DGTSourceType } from '../../source/models/dgt-source-type.model'; -import { Observable, forkJoin, of } from 'rxjs'; -import { map, mergeMap, tap, catchError, switchMap } from 'rxjs/operators'; -import { DGTConnection } from '../../connection/models/dgt-connection.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; -import { DGTSourceService } from '../../source/services/dgt-source.service'; -import { DGTConnectionService } from '../../connection/services/dgt-connection-abstract.service'; -import { DGTPurposeService } from '../../purpose/services/dgt-purpose.service'; -import { DGTConnector } from '../models/dgt-connector.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; - -@DGTInjectable() -export class DGTConnectorService { - - private connectors: DGTMap>; - - constructor( - private logger: DGTLoggerService, - private sources: DGTSourceService, - private connections: DGTConnectionService, - private paramChecker: DGTParameterCheckerService, - private purposes: DGTPurposeService, - ) { } - - public register(sourceType: DGTSourceType, connector: DGTConnector) { - this.paramChecker.checkParametersNotNull({ sourceType, connector }); - - if (!this.connectors) { - this.connectors = new DGTMap>(); - } - - this.connectors.set(sourceType, connector); - } - - public get(sourceType: DGTSourceType) { - if (!sourceType) { - throw new DGTErrorArgument('Argument sourceType should be set.', sourceType); - } - - return this.connectors.get(sourceType); - } - - public save(exchange: DGTExchange, resources: T[], destination: string): Observable { - this.paramChecker.checkParametersNotNull({ exchange, triples: resources }); - - return this.sources.get(destination).pipe( - map(source => ({ source })), - // get connection - mergeMap(data => this.connections.query({ holder: exchange.holder, source: data.source.uri }).pipe( - tap(connection => this.logger.debug(DGTConnectorService.name, 'found connection for upstream', connection)), - map(connection => connection.length > 0 ? connection : [null]), - map(connection => ({ ...data, connection: connection[0] })), - )), - // check if connection is set - map(data => { - if (data.connection !== null) { - return data; - } else { - throw new DGTErrorArgument('No connection found for this upstreamSync', data.connection); - } - }), - // get connector - map(data => ({ ...data, connector: this.connectors.get(data.source.type) })), - // get purpose - mergeMap(data => this.purposes.get(exchange.purpose).pipe( - map(purpose => ({ ...data, purpose })), - )), - mergeMap(data => { - if (resources.length === 0) { - throw new DGTErrorArgument('triples can not be an empty list', resources); - } - return forkJoin(resources.map(resource => this.upstreamSync( - data.connector, resource, data.connection, null, exchange) - )).pipe(map(resultFromUpstream => ({ ...data, resultFromUpstream }))); - }), - map(data => _.flatten(data.resultFromUpstream)), - // catch error if no connection found or triples was an empty list - catchError(() => { - this.logger.debug(DGTConnectorService.name, 'No connection was found for this upstreamSync'); - return [resources]; - }), - ); - } - - public upstreamSync( - connector: DGTConnector, - domainEntity: T, - connection: DGTConnection, - transformer: DGTLDTransformer, - exchange: DGTExchange, - ): Observable { - this.logger.debug(DGTConnectorService.name, 'upstream syncing', - { connector, domainEntity, connection, transformer, exchange }); - - domainEntity.uri = connection.configuration.webId; - // find possible existing values - return connector.query(domainEntity.uri, exchange, transformer).pipe( - switchMap(existingValues => { - if (existingValues[0]) { - // convert to list of {original: Object, updated: Object} - const updateDomainEntity = { original: existingValues[0], updated: domainEntity }; - this.logger.debug(DGTConnectorService.name, 'Updating value', { connector, updateDomainEntity }); - return connector.update([updateDomainEntity], transformer).pipe( - map(triples => triples[0]), - catchError(() => { - this.logger.debug(DGTConnectorService.name, '[upstreamSync] error updating', { connector, updateDomainEntity }); - return of(domainEntity); - }), - ); - } else { - this.logger.debug(DGTConnectorService.name, 'adding value', { connector, domainEntity }); - return connector.add([domainEntity], transformer).pipe( - map(triples => triples[0]), - catchError(() => { - this.logger.debug(DGTConnectorService.name, '[upstreamSync] error adding', { connector, domainEntity }); - return of(domainEntity); - }), - ); - } - }), - ); - } - - public query(exchange: DGTExchange, transformer: DGTLDTransformer): Observable { - this.logger.debug(DGTConnectorService.name, 'Getting triples', { exchange }); - - this.paramChecker.checkParametersNotNull({ exchange }); - - return of({ exchange }) - .pipe( - switchMap((data) => this.sources.get(data.exchange.source) - .pipe(map(source => ({ source, ...data, connector: this.get(source.type) })))), - switchMap(data => data.connector.query(null, exchange, transformer) - .pipe(map(resources => ({ ...data, resources })))), - // map(resources => triples.filter(triple => purpose.predicates.includes(triple.predicate))), - tap(data => this.logger.debug(DGTConnectorService.name, 'Queried resources for exchange', data)), - map(data => data.resources), - // catchError(() => of([])), - ); - } -} diff --git a/projects/dgt-shared-data/src/lib/consents/models/dgt-consent.model.ts b/projects/dgt-shared-data/src/lib/consents/models/dgt-consent.model.ts deleted file mode 100644 index 43c717e0..00000000 --- a/projects/dgt-shared-data/src/lib/consents/models/dgt-consent.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTConsent extends DGTLDResource { - createdAt: Date; - expirationDate: Date; - purposeLabel: string; - controller: string; -} diff --git a/projects/dgt-shared-data/src/lib/consents/services/dgt-consent-solid.service.ts b/projects/dgt-shared-data/src/lib/consents/services/dgt-consent-solid.service.ts deleted file mode 100644 index fcf37a2f..00000000 --- a/projects/dgt-shared-data/src/lib/consents/services/dgt-consent-solid.service.ts +++ /dev/null @@ -1,118 +0,0 @@ - -import { forkJoin, Observable, of } from 'rxjs'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTConsentService } from './dgt-consent.service'; -import { DGTConsent } from '../models/dgt-consent.model'; -import { DGTConsentTransformerService } from './dgt-consent-transformer.service'; -import { map, switchMap, tap } from 'rxjs/operators'; -import { v4 } from 'uuid'; -import _ from 'lodash'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTLDTypeRegistrationService } from '../../linked-data/services/dgt-ld-type-registration.service'; -import { DGTConnector } from '../../connector/models/dgt-connector.model'; -import { DGTSourceSolidConfiguration } from '../../source/models/dgt-source-solid-configuration.model'; -import { DGTConnectionSolidConfiguration } from '../../connection/models/dgt-connection-solid-configuration.model'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; - -@DGTInjectable() -/** Service used for working with DGTConsents */ -export class DGTConsentSolidService extends DGTConsentService { - - private isCorrectTypeRegistration = (typeRegistration) => typeRegistration.forClass === 'http://digita.ai/voc/consents#consent'; - - /** - * Get all consents from multiple files. - * @param files List of consent file uris. - * @param connection Connection to retrieve the consents from. - * @param source Source to retrieve the consents from. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of consents. - */ - public getAll(profile: DGTProfile): Observable { - this.logger.debug(DGTConsentSolidService.name, 'Starting to get all consents', { profile }); - this.paramChecker.checkParametersNotNull({ profile }); - - const files = profile.typeRegistrations.filter(this.isCorrectTypeRegistration).map(typeRegistration => typeRegistration.instance); - - this.logger.debug(DGTConsentSolidService.name, 'Filtered files', { files }); - - return of({ profile, files }) - .pipe( - switchMap(data => this.exchanges.get(profile.exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => forkJoin(data.files.map(file => this.connector.query(file, data.exchange, this.transformer))) - .pipe(map(consents => ({ ...data, consents: _.flatten(consents) })))), - tap(data => this.logger.debug(DGTConsentSolidService.name, 'Finished querying for consents', { data })), - map(data => data.consents) - ); - } - - /** - * Registers/adds an consent to the SOLID-pod - * @param profile Profile to add reference to. - * @param consent Consent to be added to the pod. - * @param connection Connection object to add the consent to. - * @param source Source object to add the consent to. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of registered consent. - */ - public register(profile: DGTProfile, purposeLabel: string): Observable { - this.paramChecker.checkParametersNotNull({ profile, purposeLabel }); - this.logger.debug(DGTConsentService.name, 'Preparing to register consent.', { profile }); - - let expirationDate = new Date(); - const year = expirationDate.getFullYear(); - const month = expirationDate.getMonth(); - const day = expirationDate.getDate(); - //TODO how long default ? Now 100 years - set expiry date to now to invalidate. - expirationDate = new Date(year + 100, month, day); - const createdAt = new Date(); - - const resource: DGTConsent = { - uri: v4(), - triples: null, - expirationDate, - purposeLabel, - controller: 'Vito.be', - exchange: profile.exchange, - createdAt, - }; - - return of({ resource, profile }) - .pipe( - switchMap(data => this.typeRegistrations.registerForResources('http://digita.ai/voc/consents#consent', data.resource, data.profile) - .pipe(map(typeRegistrations => ({ ...data, typeRegistrations, resource: ({ ...data.resource, uri: typeRegistrations[0].instance }) })))), - switchMap(data => this.connector.add([data.resource], this.transformer) - .pipe(map(addedConsents => ({ ...data, addedConsents, })))), - tap(data => this.logger.debug(DGTConsentSolidService.name, 'Added new consent', data)), - map(data => data.addedConsents) - ); - } - - public get(filter: Partial) { - throw new Error('Method not implemented.'); - } - public delete(resources: DGTConsent[]): Observable { - this.paramChecker.checkParametersNotNull({ resources }); - this.logger.debug(DGTConsentSolidService.name, 'Preparing to remove consent.', { resources }); - - return of({ resources }) - .pipe( - switchMap(data => this.connector.delete(data.resources, this.transformer)), - map(data => resources) - ); - } - - constructor( - protected logger: DGTLoggerService, - private typeRegistrations: DGTLDTypeRegistrationService, - private connector: DGTConnector, - private transformer: DGTConsentTransformerService, - private paramChecker: DGTParameterCheckerService, - private exchanges: DGTExchangeService, - ) { - super(); - } - - -} diff --git a/projects/dgt-shared-data/src/lib/consents/services/dgt-consent-transformer.service.ts b/projects/dgt-shared-data/src/lib/consents/services/dgt-consent-transformer.service.ts deleted file mode 100644 index 8bb59444..00000000 --- a/projects/dgt-shared-data/src/lib/consents/services/dgt-consent-transformer.service.ts +++ /dev/null @@ -1,198 +0,0 @@ -import { Observable, of, forkJoin } from 'rxjs'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import { DGTConsent } from '../models/dgt-consent.model'; -import { v4 } from 'uuid'; -import { map } from 'rxjs/operators'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTLDTermType } from '../../linked-data/models/dgt-ld-term-type.model'; -import { DGTLDDataType } from '../../linked-data/models/dgt-ld-data-type.model'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; - -/** Transforms linked data to consents, and the other way around. */ -@DGTInjectable() -export class DGTConsentTransformerService implements DGTLDTransformer { - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { } - - /** - * Transforms multiple linked data entities to consents. - * @param resources Linked data objects to be transformed to consents - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of consents - */ - public toDomain(resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ entities: resources }); - - return forkJoin(resources.map(entity => this.toDomainOne(entity))) - .pipe( - map(consents => _.flatten(consents)) - ) - } - - /** - * Transformed a single linked data entity to consents. - * @param resource The linked data entity to be transformed to consents. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of consents - */ - private toDomainOne(resource: DGTLDResource): Observable { - this.paramChecker.checkParametersNotNull({ resource }); - - let res: DGTConsent[] = null; - - if (resource && resource.triples) { - const consentSubjectValues = resource.triples.filter(value => value.predicate === 'http://digita.ai/voc/consents#consent' - ); - - this.logger.debug(DGTConsentTransformerService.name, 'Found subjects to transform', { consentSubjectValues: consentSubjectValues }); - - if (consentSubjectValues) { - res = consentSubjectValues.map(consentSubjectValue => this.transformOne(consentSubjectValue, resource)); - } - } - - this.logger.debug(DGTConsentTransformerService.name, 'Transformed values to consents', { entity: resource, res }); - - return of(res); - } - - /** - * Converts consents to linked data. - * @param consents The consents which will be transformed to linked data. - * @param connection The connection on which the consents are stored. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of linked data entities. - */ - public toTriples(consents: DGTConsent[]): Observable { - this.paramChecker.checkParametersNotNull({ consents }); - this.logger.debug(DGTConsentTransformerService.name, 'Starting to transform to linked data', { consents: consents }); - - const entities = consents.map(consent => { - let triples = consent.triples; - const documentSubject = { - value: '#', - termType: DGTLDTermType.REFERENCE - }; - const consentId = consent.uri ? consent.uri : v4(); - this.logger.debug(DGTConsentTransformerService.name, 'starting to transform to linked data without uri for consent', { consent }) - const consentSubjectUri = `${consent.uri}#${consentId}`; - const consentSubject = { - value: consentSubjectUri, - termType: DGTLDTermType.REFERENCE - }; - - if (!triples) { - triples = [ - { - predicate: 'http://digita.ai/voc/consents#expirationDate', - subject: consentSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.DATETIME, - value: consent.expirationDate - }, - }, - { - predicate: 'http://digita.ai/voc/consents#createdAt', - subject: consentSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.DATETIME, - value: consent.createdAt - }, - }, - { - predicate: 'http://digita.ai/voc/consent#purposeLabel', - subject: consentSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: consent.purposeLabel - }, - }, - { - predicate: 'http://digita.ai/voc/consent#controller', - subject: consentSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: consent.controller - }, - }, - { - predicate: 'http://digita.ai/voc/consents#consent', - subject: documentSubject, - object: consentSubject, - } - ]; - } - - const newEntity: DGTLDResource = { - ...consent, - uri: consent.uri, - triples - }; - - this.logger.debug(DGTConsentTransformerService.name, 'Transformed consent to linked data', { newEntity, consent: consent }); - - return newEntity; - }); - - this.logger.debug(DGTConsentTransformerService.name, 'Transformed consents to linked data', { entities, consents: consents }); - - return of(entities); - } - - /** - * Creates a single consent from linked data. - * @param consentSubjectValue The entity of the the consent's subject. - * @param resource\ The entity to be transformed to an consent. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns The transformed consent. - */ - private transformOne(consentSubjectValue: DGTLDTriple, resource: DGTLDResource): DGTConsent { - this.paramChecker.checkParametersNotNull({ consentSubjectValue, entity: resource }); - this.logger.debug(DGTConsentTransformerService.name, 'Starting to transform one entity', { consentSubjectValue, entity: resource }); - - const uri = resource.uri ? resource.uri : consentSubjectValue.subject.value; - - const expirationDate = resource.triples.find(value => - value.subject.value === consentSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/consents#expirationDate' - ); - - const purposeLabel = resource.triples.find(value => - value.subject.value === consentSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/consent#purposeLabel' - ); - - const controller = resource.triples.find(value => - value.subject.value === consentSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/consent#controller' - ); - - const createdAt = resource.triples.find(value => - value.subject.value === consentSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/consent#createdAt' - ); - - const consentTriples = resource.triples.filter(value => - value.subject.value === consentSubjectValue.object.value - ); - - return { - expirationDate: expirationDate ? expirationDate.object.value : null, - triples: [...consentTriples, consentSubjectValue], - uri: v4(), - purposeLabel: purposeLabel ? purposeLabel.object.value : '', - controller: controller ? controller.object.value : '', - exchange: resource.exchange, - createdAt: createdAt ? new Date(createdAt.object.value) : null, - }; - } -} diff --git a/projects/dgt-shared-data/src/lib/consents/services/dgt-consent.service.ts b/projects/dgt-shared-data/src/lib/consents/services/dgt-consent.service.ts deleted file mode 100644 index 371c39f3..00000000 --- a/projects/dgt-shared-data/src/lib/consents/services/dgt-consent.service.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTConsent } from '../models/dgt-consent.model'; - -/** Service for managing events. */ -export abstract class DGTConsentService { - public abstract delete(resources: DGTConsent[]): Observable - public abstract getAll(profile: DGTProfile): Observable; - public abstract register(profile: DGTProfile, purposeLabel: string): Observable; - -} diff --git a/projects/dgt-shared-data/src/lib/data-value/directives/data-interface-host.directive.ts b/projects/dgt-shared-data/src/lib/data-value/directives/data-interface-host.directive.ts deleted file mode 100644 index 915db8ad..00000000 --- a/projects/dgt-shared-data/src/lib/data-value/directives/data-interface-host.directive.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Directive, ViewContainerRef, EventEmitter, Output } from '@angular/core'; -import { DGTDataValue } from '../models/data-value.model'; -import { DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; - -@Directive({ - selector: '[dgtDataInterfaceHost]', -}) -export class DGTDataInterfaceHostDirective { - /** Used to emit valueUpdated events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - /** Used to emit submit events */ - @Output() - submit: EventEmitter; - - constructor( - public viewContainerRef: ViewContainerRef, - private paramChecker: DGTParameterCheckerService - ) { - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: {value: DGTDataValue, newObject: any}): void { - this.paramChecker.checkParametersNotNull({val}, 1); - this.valueUpdated.emit(val); - } - - /** - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onSubmit(): void { - this.submit.emit(); - } - -} diff --git a/projects/dgt-shared-data/src/lib/data-value/models/data-category-interface.model.ts b/projects/dgt-shared-data/src/lib/data-value/models/data-category-interface.model.ts deleted file mode 100644 index af224e3c..00000000 --- a/projects/dgt-shared-data/src/lib/data-value/models/data-category-interface.model.ts +++ /dev/null @@ -1,11 +0,0 @@ - -import { DGTDataValue } from './data-value.model'; -import { EventEmitter } from '@angular/core'; -import { DGTCategory } from '../../categories/models/dgt-category.model'; - -export interface DGTDataInterface { - category: DGTCategory; - values: DGTDataValue[]; - valueUpdated: EventEmitter<{ value: DGTDataValue, newObject: any }>; - submit: EventEmitter; -} diff --git a/projects/dgt-shared-data/src/lib/data-value/models/data-group.model.ts b/projects/dgt-shared-data/src/lib/data-value/models/data-group.model.ts deleted file mode 100644 index 2649b3e1..00000000 --- a/projects/dgt-shared-data/src/lib/data-value/models/data-group.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DGTDataGroup { - id: string; - description: string; -} diff --git a/projects/dgt-shared-data/src/lib/data-value/models/data-value.model.ts b/projects/dgt-shared-data/src/lib/data-value/models/data-value.model.ts deleted file mode 100644 index 0fe38162..00000000 --- a/projects/dgt-shared-data/src/lib/data-value/models/data-value.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTDataValue extends DGTLDResource, DGTLDTriple { - -} diff --git a/projects/dgt-shared-data/src/lib/data-value/services/data-transformer-value.service.ts b/projects/dgt-shared-data/src/lib/data-value/services/data-transformer-value.service.ts deleted file mode 100644 index d4ba016b..00000000 --- a/projects/dgt-shared-data/src/lib/data-value/services/data-transformer-value.service.ts +++ /dev/null @@ -1,43 +0,0 @@ - -import { Observable, of } from 'rxjs'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTDataValue } from '../models/data-value.model'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTDataValueTransformerService implements DGTLDTransformer { - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { } - - public toDomain(entities: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ entities }); - - this.logger.debug(DGTDataValueTransformerService.name, 'Starting to transform entity to domain', { entities }); - const res = [].concat(...entities.map(entity => this.transformOne(entity))); - this.logger.debug(DGTDataValueTransformerService.name, 'Transformed values to DataValues', { entities, res }); - - return of(res); - } - - toTriples(objects: DGTDataValue[]): Observable { - this.paramChecker.checkParametersNotNull({ objects }); - return of(objects); - } - - private transformOne(entity: DGTLDResource): DGTDataValue[] { - this.paramChecker.checkParametersNotNull({ entity }); - return entity.triples.map((triple: DGTLDTriple) => { - return { - uri: triple.subject.value, - exchange: entity.exchange, - ...triple, - triples: [triple] - } as DGTDataValue; - }); - } -} diff --git a/projects/dgt-shared-data/src/lib/data-value/services/data-value.service.ts b/projects/dgt-shared-data/src/lib/data-value/services/data-value.service.ts deleted file mode 100644 index 8a7c0af8..00000000 --- a/projects/dgt-shared-data/src/lib/data-value/services/data-value.service.ts +++ /dev/null @@ -1,126 +0,0 @@ - -import * as _ from 'lodash'; -import { Observable, forkJoin, of } from 'rxjs'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { switchMap, map } from 'rxjs/operators'; -import { DGTLDFilterService } from '../../linked-data/services/dgt-ld-filter.service'; -import { DGTDataValue } from '../models/data-value.model'; -import { DGTDataGroup } from '../models/data-group.model'; -import { DGTCategory } from '../../categories/models/dgt-category.model'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTHolder } from '../../holder/models/dgt-holder.model'; - -@DGTInjectable() -/** - * The services' duty is to handle DGTDataValue objects. - * From getting values to updating and processing them. - */ -export abstract class DGTDataValueService implements DGTLDResourceService { - - constructor( - protected logger: DGTLoggerService, - protected paramChecker: DGTParameterCheckerService, - protected filters: DGTLDFilterService - ) { } - - public abstract get(id: string): Observable; - public abstract query(filter: Partial): Observable; - public abstract save(resource: DGTDataValue): Observable; - public abstract delete(resource: DGTDataValue): Observable; - public abstract getForHolder(holder: DGTHolder): Observable; - - - /** - * get a list of predicates from a list of dataValues - * @param dataValues - * @param connection - */ - public getPredicatesOfValues(dataValues: DGTDataValue[]): string[] { - this.paramChecker.checkParametersNotNull({ dataValues }); - - return _.uniqWith(dataValues.map((value: DGTDataValue) => value.predicate) - .filter(p => p !== null && p.length > 0), _.isEqual); - } - - /** - * get a list categories for which a value exists - * @param categories - * @param values - * @param connection - */ - public getCategoriesWithValues( - categories: DGTCategory[], - values: DGTDataValue[] - ): Observable { - this.paramChecker.checkParametersNotNull({ categories, values }); - - this.logger.debug(DGTDataValueService.name, 'Getting categories with values', { categories }); - - return of({ categories }) - .pipe( - switchMap(data => forkJoin(data.categories.map(category => this.filters.run(category.filter, values).pipe(map((triples: DGTDataValue[]) => ({ category, triples: triples.filter(triple => triple.triples !== null && triple.triples.length > 0).filter(triple => !(triple.predicate === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type') && !(triple.predicate === 'http://www.w3.org/2006/vcard/ns#value')) }))))) - .pipe(map(triplesPerCategory => ({ ...data, triplesPerCategory })))), - map(data => ({ ...data, filteredTriplesPerCategory: data.triplesPerCategory.filter(categoryWithTriples => categoryWithTriples && categoryWithTriples.triples.length > 0) })), - map(data => data.filteredTriplesPerCategory.map(triplesPerCategory => triplesPerCategory.category)), - ); - } - - /** - * get a list of groups for which a value exists - * @param groups - * @param categories - * @param values - * @param connection - */ - public getGroupsWithValues( - groups: DGTDataGroup[], - categories: DGTCategory[], - values: DGTDataValue[] - ): Observable { - this.paramChecker.checkParametersNotNull({ categories, groups, values }); - - return this.getCategoriesWithValues(categories, values) - .pipe( - map(data => groups.filter(group => data.filter(category => category.groupId === group.id).length > 0)) - ); - } - - /** - * get a list of all the values of a given category - * @param category - * @param values - * @param connection - */ - public getValuesOfCategory( - category: DGTCategory, - values: DGTDataValue[], - ): Observable { - this.paramChecker.checkParametersNotNull({ category, values }); - - this.logger.debug(DGTDataValueService.name, 'Getting values of category', { category }); - - return this.filters.run(category.filter, values) - .pipe( - map(triples => triples.filter(triple => triple.triples !== null && triple.triples.length > 0) as DGTDataValue[]), - ); - } - - /** - * get a list of values of a given list of categories - * @param categories - * @param values - * @param connection - */ - public getValuesOfCategories( - categories: DGTCategory[], - values: DGTDataValue[], - ): Observable { - this.paramChecker.checkParametersNotNull({ categories, values }); - - return of({ categories }) - .pipe( - switchMap(data => forkJoin(data.categories.map(category => this.getValuesOfCategory(category, values)))), - map(data => _.flatten(data)) - ); - } -} diff --git a/projects/dgt-shared-data/src/lib/dgt-shared-data.module.ts b/projects/dgt-shared-data/src/lib/dgt-shared-data.module.ts deleted file mode 100644 index 9290523d..00000000 --- a/projects/dgt-shared-data/src/lib/dgt-shared-data.module.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { NgModule } from '@angular/core'; -import { DGTQueryService } from './metadata/services/dgt-query.service'; -import { DGTWorkflowService } from './workflow/services/dgt-workflow.service'; -import { DGTSharedUtilsModule } from '@digita-ai/dgt-shared-utils'; -import { DGTCacheService } from './cache/services/dgt-cache.service'; -import { DGTLDFilterRunnerBGPService } from './linked-data/services/dgt-ld-filter-runner-bgp.service'; -import { DGTLDFilterService } from './linked-data/services/dgt-ld-filter.service'; -import { DGTLDFilterRunnerSparqlService } from './linked-data/services/dgt-ld-filter-runner-sparql.service'; -import { DGTLDTripleFactoryService } from './linked-data/services/dgt-ld-triple-factory.service'; -import { DGTDataInterfaceHostDirective } from './data-value/directives/data-interface-host.directive'; -import { DGTLDService } from './linked-data/services/dgt-ld.service'; -import { DGTLDUtils } from './linked-data/services/dgt-ld-utils.service'; -import { DGTLDTypeRegistrationTransformerService } from './linked-data/services/dgt-ld-type-registration-transformer.service'; -import { DGTProfileTransformerService } from './profile/services/dgt-profile-transformer.service'; -import { DGTEventTransformerService } from './events/services/dgt-event-transformer.service'; -import { DGTConnectorService } from './connector/services/dgt-connector.service'; -import { DGTDataValueTransformerService } from './data-value/services/data-transformer-value.service'; - -import { DGTCacheInMemoryService } from './cache/services/dgt-cache-in-memory.service'; -import { DGTCacheSolidService } from './cache/services/dgt-cache-solid.service'; -import { DGTSparqlQueryService } from './sparql/services/dgt-sparql-query.service'; - -export const declarations = [ - DGTDataInterfaceHostDirective -]; -export const imports = [ - DGTSharedUtilsModule -]; -export const providers = [ - DGTLDUtils, - DGTLDService, - DGTLDFilterService, - DGTLDFilterRunnerBGPService, - DGTLDFilterRunnerSparqlService, - DGTQueryService, - //DGTMockDataService, - DGTCacheInMemoryService, - DGTCacheSolidService, - DGTWorkflowService, - DGTLDTripleFactoryService, - DGTLDTypeRegistrationTransformerService, - DGTDataValueTransformerService, - DGTProfileTransformerService, - DGTEventTransformerService, - DGTConnectorService, - DGTSparqlQueryService, -]; - -@NgModule({ - declarations, - providers, - imports, - exports: [ - DGTDataInterfaceHostDirective - ] -}) -export class DGTSharedDataModule { } diff --git a/projects/dgt-shared-data/src/lib/events/models/dgt-event.model.ts b/projects/dgt-shared-data/src/lib/events/models/dgt-event.model.ts deleted file mode 100644 index 61098559..00000000 --- a/projects/dgt-shared-data/src/lib/events/models/dgt-event.model.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -/** A thing that happens or takes place on someone's pod */ -export interface DGTEvent extends DGTLDResource { - /** Description of the event e.g.: 'Connected to your pod' */ - description: string; - /** - * Stakeholder of the event. - * The stakeholder is the organisation/person - * that used your data in some way. - * How they used it is described - * in the description variable. - */ - stakeholder: string; - /** - * The uri to the icon of the stakeholder to be displayed - * on the timeline. - */ - icon: string; - /** - * The stakeholderUri is used to give users - * the possibility of immediately going to - * the website of a stakeholder that accessed their data. - */ - stakeholderUri: string; - date: Date; -} diff --git a/projects/dgt-shared-data/src/lib/events/services/dgt-event-mock.service.ts b/projects/dgt-shared-data/src/lib/events/services/dgt-event-mock.service.ts deleted file mode 100644 index 248cec7a..00000000 --- a/projects/dgt-shared-data/src/lib/events/services/dgt-event-mock.service.ts +++ /dev/null @@ -1,25 +0,0 @@ - -import { DGTEvent } from '../models/dgt-event.model'; -import { Observable, of } from 'rxjs'; -import { DGTEventService } from './dgt-event.service'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; - -@DGTInjectable() -export class DGTEventMockService extends DGTEventService { - events = [null]; - - public getAll(profile: DGTProfile): Observable { - return of(this.events); - } - - public register(profile: DGTProfile, events: DGTEvent[]): Observable { - this.events.push(...events); - return of(events); - } - - public remove(events: DGTEvent[]): Observable { - return of(events); - } -} diff --git a/projects/dgt-shared-data/src/lib/events/services/dgt-event-solid.service.ts b/projects/dgt-shared-data/src/lib/events/services/dgt-event-solid.service.ts deleted file mode 100644 index 1f887656..00000000 --- a/projects/dgt-shared-data/src/lib/events/services/dgt-event-solid.service.ts +++ /dev/null @@ -1,116 +0,0 @@ - -import { DGTEvent } from '../models/dgt-event.model'; -import { forkJoin, Observable, of, zip } from 'rxjs'; -import { map, tap, switchMap, mergeMap } from 'rxjs/operators'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTEventTransformerService } from './dgt-event-transformer.service'; -import { DGTEventService } from './dgt-event.service'; -import * as _ from 'lodash'; -import { DGTConnector } from '../../connector/models/dgt-connector.model'; -import { DGTLDTypeRegistrationService } from '../../linked-data/services/dgt-ld-type-registration.service'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTLDTypeRegistration } from '../../linked-data/models/dgt-ld-type-registration.model'; -import { DGTSourceSolidConfiguration } from '../../source/models/dgt-source-solid-configuration.model'; -import { DGTConnectionSolidConfiguration } from '../../connection/models/dgt-connection-solid-configuration.model'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; - -/** Service for managing events in Solid. */ -@DGTInjectable() -export class DGTEventSolidService extends DGTEventService { - constructor( - private connector: DGTConnector, - private transformer: DGTEventTransformerService, - private typeRegistrations: DGTLDTypeRegistrationService, - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService, - private exchanges: DGTExchangeService, - ) { - super(); - } - - readonly predicate = 'http://digita.ai/voc/events#event'; - - private isCorrectTypeRegistration = (typeRegistration: DGTLDTypeRegistration) => typeRegistration.forClass === 'http://digita.ai/voc/events#event'; - - /** - * Get all events from multiple files. - * @param eventFiles List of event file uris. - * @param connection Connection to retrieve the events from. - * @param source Source to retrieve the events from. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of events. - */ - public getAll(profile: DGTProfile): Observable { - this.logger.debug(DGTEventService.name, 'Preparing to get all events.', { profile }); - - this.paramChecker.checkParametersNotNull({ profile }); - - const files = _.uniq(profile.typeRegistrations.filter(this.isCorrectTypeRegistration).map(typeRegistration => typeRegistration.instance)); - - return of({ files, profile }) - .pipe( - switchMap(data => this.exchanges.get(profile.exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - tap(data => this.logger.debug(DGTEventService.name, 'Retrieved exchange.', data)), - switchMap(data => zip(...data.files.map(file => this.connector.query(file, data.exchange, this.transformer)))), - // .pipe(map(events => ({ ...data, events: _.flatten(events) })))), - tap(data => this.logger.debug(DGTEventService.name, 'Retrieved events.', data)), - map(data => _.flatten(data)) - ); - } - - /** - * Registers/adds an event to the SOLID-pod - * @param profile Profile to add reference to. - * @param event Event to be added to the pod. - * @param connection Connection object to add the event to. - * @param source Source object to add the event to. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of registered event. - */ - public register(profile: DGTProfile, resources: DGTEvent[]): Observable { - this.logger.debug(DGTEventService.name, 'Preparing to register event.', { profile, resources }); - - this.paramChecker.checkParametersNotNull({ resources, profile }); - - const files = profile.typeRegistrations.filter(this.isCorrectTypeRegistration).map(typeRegistration => typeRegistration.instance); - - return of({ files, resources, profile }) - .pipe( - switchMap(data => - forkJoin(data.resources.map(resource => - of({}) - .pipe( - switchMap(() => this.typeRegistrations.registerForResources(this.predicate, resource, data.profile)), - map(typeRegistrations => ({ ...resource, uri: typeRegistrations[0].instance })) - ) - ) - ) - .pipe(map(resources => ({ ...data, resources }))) - ), - switchMap(data => this.connector.add(data.resources, this.transformer) - .pipe(map(addedEvents => ({ ...data, addedEvents, })))), - tap(data => this.logger.debug(DGTEventSolidService.name, 'Added new events', data)), - map(data => data.addedEvents) - ); - } - - /** - * Removes events from the SOLID-pod - * @param events List of events to be removed - * @param connection Connection object to delete the events from - * @param source Source object to remove the event from - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable list of the removed events - */ - public remove(events: DGTEvent[]): Observable { - this.paramChecker.checkParametersNotNull({ events }); - this.logger.debug(DGTEventService.name, 'Preparing to remove event.', { events }); - - return of({ events }) - .pipe( - switchMap(data => this.connector.delete(data.events, this.transformer)), - map(data => events) - ); - } -} diff --git a/projects/dgt-shared-data/src/lib/events/services/dgt-event-transformer.service.ts b/projects/dgt-shared-data/src/lib/events/services/dgt-event-transformer.service.ts deleted file mode 100644 index 2bce7f51..00000000 --- a/projects/dgt-shared-data/src/lib/events/services/dgt-event-transformer.service.ts +++ /dev/null @@ -1,208 +0,0 @@ -import { Observable, of, forkJoin } from 'rxjs'; - -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import { DGTEvent } from '../models/dgt-event.model'; -import { v4 } from 'uuid'; -import { map } from 'rxjs/operators'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTLDTermType } from '../../linked-data/models/dgt-ld-term-type.model'; -import { DGTLDDataType } from '../../linked-data/models/dgt-ld-data-type.model'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { values } from 'lodash'; - -/** Transforms linked data to events, and the other way around. */ -@DGTInjectable() -export class DGTEventTransformerService implements DGTLDTransformer { - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { } - - /** - * Transforms multiple linked data entities to events. - * @param resources Linked data objects to be transformed to events - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of events - */ - public toDomain(resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ entities: resources }); - - return forkJoin(resources.map(entity => this.toDomainOne(entity))) - .pipe( - map(events => _.flatten(events)) - ); - } - - /** - * Transformed a single linked data entity to events. - * @param resource The linked data entity to be transformed to events. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of events - */ - private toDomainOne(resource: DGTLDResource): Observable { - this.paramChecker.checkParametersNotNull({ entity: resource }); - - let res: DGTEvent[] = null; - - if (resource && resource.triples) { - const eventSubjectValues = resource.triples.filter(value => - value.predicate === 'http://digita.ai/voc/events#event' - ); - - if (eventSubjectValues) { - res = eventSubjectValues.map(eventSubjectValue => this.transformOne(eventSubjectValue, resource)); - } - } - - this.logger.debug(DGTEventTransformerService.name, 'Transformed values to events', { entity: resource, res }); - - return of(res); - } - - /** - * Converts events to linked data. - * @param events The events which will be transformed to linked data. - * @param connection The connection on which the events are stored. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of linked data entities. - */ - public toTriples(events: DGTEvent[]): Observable { - this.paramChecker.checkParametersNotNull({ events }); - this.logger.debug(DGTEventTransformerService.name, 'Starting to transform to linked data', { events }); - - const entities = events.map(event => { - let triples = event.triples; - const uri = event.uri; - const documentSubject = { - value: '#', - termType: DGTLDTermType.REFERENCE - }; - const eventId = v4(); - const eventSubjectUri = `${uri}#${eventId}`; - const eventSubject = { - value: eventSubjectUri, - termType: DGTLDTermType.REFERENCE - }; - - if (!triples) { - triples = [ - { - predicate: 'http://digita.ai/voc/events#description', - subject: eventSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: event.description - }, - }, - { - predicate: 'http://digita.ai/voc/events#stakeholder', - subject: eventSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: event.stakeholder - }, - }, - { - predicate: 'http://digita.ai/voc/events#icon', - subject: eventSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: event.icon - }, - }, - { - predicate: 'http://digita.ai/voc/events#createdAt', - subject: eventSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: event.date - }, - }, - { - predicate: 'http://digita.ai/voc/events#uri', - subject: eventSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: event.stakeholderUri - }, - }, - { - predicate: 'http://digita.ai/voc/events#event', - subject: documentSubject, - object: eventSubject, - } - ]; - } - - const newEntity: DGTLDResource = { - ...event, - uri, - triples - }; - - return newEntity; - }); - - this.logger.debug(DGTEventTransformerService.name, 'Transformed events to linked data', { entities, events }); - - return of(entities); - } - - /** - * Creates a single event from linked data. - * @param eventSubjectValue The entity of the the event's subject. - * @param resource\ The entity to be transformed to an event. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns The transformed event. - */ - private transformOne(eventSubjectValue: DGTLDTriple, resource: DGTLDResource): DGTEvent { - this.paramChecker.checkParametersNotNull({ eventSubjectValue, entity: resource }); - - const uri = resource.uri ? resource.uri : eventSubjectValue.subject.value; - - const description = resource.triples.find(value => - value.subject.value === eventSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/events#description' - ); - - const stakeholder = resource.triples.find(value => - value.subject.value === eventSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/events#stakeholder' - ); - const icon = resource.triples.find(value => - value.subject.value === eventSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/events#icon' - ); - const stakeholderUri = resource.triples.find(value => - value.subject.value === eventSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/events#uri' - ); - - const eventTriples = resource.triples.filter(value => - value.subject.value === eventSubjectValue.object.value - ); - const date = resource.triples.find(value => - value.subject.value === eventSubjectValue.object.value && - value.predicate === 'http://digita.ai/voc/events#createdAt' - ); - - return { - uri: eventSubjectValue.object.value, - date: date ? new Date(date.object.value) : null, - description: description ? description.object.value : null, - stakeholder: stakeholder ? stakeholder.object.value : null, - triples: [...eventTriples, eventSubjectValue], - icon: icon ? icon.object.value : null, - stakeholderUri: stakeholderUri ? stakeholderUri.object.value : null, - exchange: resource.exchange, - }; - } -} diff --git a/projects/dgt-shared-data/src/lib/events/services/dgt-event.service.ts b/projects/dgt-shared-data/src/lib/events/services/dgt-event.service.ts deleted file mode 100644 index 43ea9667..00000000 --- a/projects/dgt-shared-data/src/lib/events/services/dgt-event.service.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { DGTEvent } from '../models/dgt-event.model'; -import { Observable } from 'rxjs'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; - -/** Service for managing events. */ -export abstract class DGTEventService { - - /** - * Get all events from multiple files - * @param eventFiles List of event file uris - * @param connection Connection to retrieve the events from - * @param source Source to retrieve the events from - * @returns Observable of events - */ - public abstract getAll(profile: DGTProfile): Observable; - - /** - * Registers/adds an event to the SOLID-pod - * @param event Event to be added to the pod - * @param connection Connection object to add the event to - * @param source Source object to add the event to - * @returns Observable - */ - public abstract register(profile: DGTProfile, events: DGTEvent[]): Observable - - /** - * Removes events from the SOLID-pod - * @param events List of events to be removed - * @param connection Connection object to delete the events from - * @param source Source object to remove the event from - * @returns Observable list of the removed events - */ - public abstract remove(events: DGTEvent[]): Observable -} diff --git a/projects/dgt-shared-data/src/lib/exchanges/models/dgt-exchange.model.ts b/projects/dgt-shared-data/src/lib/exchanges/models/dgt-exchange.model.ts deleted file mode 100644 index 2e4c83fa..00000000 --- a/projects/dgt-shared-data/src/lib/exchanges/models/dgt-exchange.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTExchange extends DGTLDResource { - purpose: string; - holder: string; - source: string; - connection: string; -} diff --git a/projects/dgt-shared-data/src/lib/exchanges/services/dgt-exchange.service.ts b/projects/dgt-shared-data/src/lib/exchanges/services/dgt-exchange.service.ts deleted file mode 100644 index c468e3c0..00000000 --- a/projects/dgt-shared-data/src/lib/exchanges/services/dgt-exchange.service.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTExchange } from '../models/dgt-exchange.model'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export abstract class DGTExchangeService implements DGTLDResourceService { - public abstract get(id: string): Observable; - public abstract query(filter: Partial): Observable; - public abstract save(exchange: DGTExchange): Observable; - public abstract delete(exchange: DGTExchange): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/file/models/dgt-file-type.model.ts b/projects/dgt-shared-data/src/lib/file/models/dgt-file-type.model.ts deleted file mode 100644 index b5acd324..00000000 --- a/projects/dgt-shared-data/src/lib/file/models/dgt-file-type.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DGTFileType { - ARCHIVE = 'archive/milestone', - MAP = 'images/maps/', - IDCARDFINAL = 'images/idcards/final/', - IDCARDORIGINAL = 'images/idcards/original/', -} diff --git a/projects/dgt-shared-data/src/lib/file/models/dgt-file.model.ts b/projects/dgt-shared-data/src/lib/file/models/dgt-file.model.ts deleted file mode 100644 index 7ffb7689..00000000 --- a/projects/dgt-shared-data/src/lib/file/models/dgt-file.model.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -// tslint:disable:no-bitwise -// tslint:disable:triple-equals - -export class DGTFile { - // private static logger: DGTLoggerService = new DGTLoggerService(); - // private logger: DGTLoggerService = new DGTLoggerService(); - - public static fromBase64(type: string, base64: string): DGTFile { - let res: DGTFile = null; - - // this.logger.debug(DGTFile.name, 'Creating image from base 64.'); - - if (type && base64) { - const binary = atob(base64); - - const len = binary.length; - const bytes = new Uint8Array(len); - for (let i = 0; i < len; i++) { - bytes[i] = binary.charCodeAt(i); - } - - if (bytes.buffer instanceof ArrayBuffer) { - res = new DGTFile(type, bytes.buffer as ArrayBuffer); - } - } - - return res; - } - - public static fromBuffer(type: string, bufferArray: Array): DGTFile { - let res: DGTFile = null; - - // this.logger.debug(DGTFile.name, 'Start creating image from buffer.'); - - if (type && bufferArray && bufferArray[0]) { - // this.logger.debug(DGTFile.name, 'Type and buffer array found.'); - - const buffer = Buffer.concat(bufferArray); - const arrayBuffer: ArrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength) as ArrayBuffer; - // const arrayBufferView: Uint8Array = new Uint8Array(arrayBuffer); - // for (let i = 0; i < bufferArray.length; ++i) { - // arrayBufferView[i] = bufferArray[i].readUInt8(bufferArray[i].byteOffset); - // } - - res = new DGTFile(type, arrayBuffer); - } - - // this.logger.debug(DGTFile.name, 'Finished creating image from buffer.'); - - return res; - } - - public static fromBlob(type: string, blob: Blob): DGTFile { - let res: DGTFile = null; - - // this.logger.debug(DGTFile.name, 'Starting creating image from blob.'); - - if (type && blob) { - // let arrayBuffer; - const fileReader = new FileReader(); - // fileReader.onload = function (event) { - // arrayBuffer = event.target.result; - // }; - fileReader.readAsArrayBuffer(blob); - const readResult = fileReader.result; - - if (readResult && readResult instanceof ArrayBuffer) { - res = new DGTFile(type, readResult as ArrayBuffer); - } - } - - // this.logger.debug(DGTFile.name, 'Finished creating image from blob.'); - - return res; - } - - public static fromArrayBuffer(type: string, arrayBuffer: ArrayBuffer) { - let res: DGTFile = null; - - // this.logger.debug(DGTFile.name, 'Creating image from array buffer.'); - - if (type && arrayBuffer) { - res = new DGTFile(type, arrayBuffer); - } - - return res; - } - - constructor(public type: string, public data: ArrayBuffer) { } - - public get asBase64(): string { - let res = null; - - if (this.data) { - // res = this.base64ArrayBuffer(this.data); - // res = btoa(String.fromCharCode.apply(null, new Uint8Array(this.data))); - - let binary = ''; - const bytes = new Uint8Array(this.data); - const len = bytes.byteLength; - for (let i = 0; i < len; i++) { - binary += String.fromCharCode(bytes[i]); - } - - if (!window || !window.btoa) { - // res = btoa(binary); - res = Buffer.from(binary).toString('base64'); - } else { - res = window.btoa(binary); - } - } - - // this.logger.debug(DGTFile.name, 'Parsed file as base 64.'); - - return res; - } - - public get asBlob(): Blob { - let res: Blob = null; - - if (this.data) { - res = new Blob([this.data]); - } - - // this.logger.debug(DGTFile.name, 'Parsed file as blob.'); - - return res; - } - - public get asDataUrl(): string { - let res: string = null; - - if (this.type && this.data) { - res = `data:${this.type};base64,${this.asBase64}`; - } - - // this.logger.debug(DGTFile.name, 'Parsed file as data url.'); - - return res; - } - - private base64ArrayBuffer(arrayBuffer: ArrayBuffer) { - let base64 = ''; - const encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - - const bytes = new Uint8Array(arrayBuffer); - const byteLength = bytes.byteLength; - const byteRemainder = byteLength % 3; - const mainLength = byteLength - byteRemainder; - - // this.logger.debug(DGTFile.name, 'Calculating basic variabled.'); - - let a; - let b; - let c; - let d; - let chunk; - - // Main loop deals with bytes in chunks of 3 - for (let i = 0; i < mainLength; i = i + 3) { - // Combine the three bytes into a single integer - // tslint:disable-next-line:no-bitwise - chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; - - // Use bitmasks to extract 6-bit segments from the triplet - a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18 - b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12 - c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6 - d = chunk & 63; // 63 = 2^6 - 1 - - // Convert the raw binary segments to the appropriate ASCII encoding - base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]; - } - - // Deal with the remaining bytes and padding - if (byteRemainder == 1) { - chunk = bytes[mainLength]; - - a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2 - - // Set the 4 least significant bits to zero - b = (chunk & 3) << 4; // 3 = 2^2 - 1 - - base64 += encodings[a] + encodings[b] + '=='; - } else if (byteRemainder == 2) { - chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]; - - a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10 - b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4 - - // Set the 2 least significant bits to zero - c = (chunk & 15) << 2; // 15 = 2^4 - 1 - - base64 += encodings[a] + encodings[b] + encodings[c] + '='; - } - - return base64; - } -} diff --git a/projects/dgt-shared-data/src/lib/file/services/dgt-file.service.ts b/projects/dgt-shared-data/src/lib/file/services/dgt-file.service.ts deleted file mode 100644 index 15f8d918..00000000 --- a/projects/dgt-shared-data/src/lib/file/services/dgt-file.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTFileType } from '../models/dgt-file-type.model'; -import { DGTFile } from '../models/dgt-file.model'; - -export abstract class DGTFileService { - public abstract uploadFile(type: DGTFileType, name: string, file: DGTFile) - : Observable<{ totalBytes: number, bytesTransferred: number, type: DGTFileType, name: string }>; - public abstract downloadFileURI(type: DGTFileType, name: string): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/holder/models/dgt-holder.model.ts b/projects/dgt-shared-data/src/lib/holder/models/dgt-holder.model.ts deleted file mode 100644 index 735b7561..00000000 --- a/projects/dgt-shared-data/src/lib/holder/models/dgt-holder.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTHolder extends DGTLDResource { -} diff --git a/projects/dgt-shared-data/src/lib/holder/services/dgt-holder-abstract.service.ts b/projects/dgt-shared-data/src/lib/holder/services/dgt-holder-abstract.service.ts deleted file mode 100644 index 51d11554..00000000 --- a/projects/dgt-shared-data/src/lib/holder/services/dgt-holder-abstract.service.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { Observable } from 'rxjs'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTHolder } from '../models/dgt-holder.model'; - -@DGTInjectable() -export abstract class DGTHolderService implements DGTLDResourceService { - public abstract get(id: string): Observable; - public abstract query(filter: Partial): Observable; - public abstract save(resource: DGTHolder): Observable; - public abstract delete(resource: DGTHolder): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/invite/models/dgt-invite-state.model.ts b/projects/dgt-shared-data/src/lib/invite/models/dgt-invite-state.model.ts deleted file mode 100644 index 4b66b49f..00000000 --- a/projects/dgt-shared-data/src/lib/invite/models/dgt-invite-state.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DGTInviteState { - NOT_LINKED = 'not linked', - LINKED = 'linked', - VALID = 'valid', - INVALID = 'invalid', -} diff --git a/projects/dgt-shared-data/src/lib/invite/models/dgt-invite.model.ts b/projects/dgt-shared-data/src/lib/invite/models/dgt-invite.model.ts deleted file mode 100644 index 277d19cb..00000000 --- a/projects/dgt-shared-data/src/lib/invite/models/dgt-invite.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DGTInviteState } from './dgt-invite-state.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTInvite extends DGTLDResource { - holder: string; - purpose: string; - state: DGTInviteState; - connection?: string; -} diff --git a/projects/dgt-shared-data/src/lib/invite/services/dgt-invite-abstract.service.ts b/projects/dgt-shared-data/src/lib/invite/services/dgt-invite-abstract.service.ts deleted file mode 100644 index 577ec5a0..00000000 --- a/projects/dgt-shared-data/src/lib/invite/services/dgt-invite-abstract.service.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTInvite } from '../models/dgt-invite.model'; - -@DGTInjectable() -export abstract class DGTInviteService implements DGTLDResourceService { - public abstract get(id: string): Observable; - public abstract query(filter: Partial): Observable; - public abstract verify(inviteId: string): Observable; - public abstract save(resource: DGTInvite): Observable; - public abstract delete(resource: DGTInvite): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-data-type.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-data-type.model.ts deleted file mode 100644 index e38b6c17..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-data-type.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTLDDataType { - DATETIME = 'http://www.w3.org/2001/XMLSchema#dateTime', - STRING = 'http://www.w3.org/2001/XMLSchema#string', - DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal', -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-bgp.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-bgp.model.ts deleted file mode 100644 index 797e92e4..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-bgp.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTLDFilter } from './dgt-ld-filter.model'; - -export interface DGTLDFilterBGP extends DGTLDFilter { - predicates: string[]; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination-type.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination-type.model.ts deleted file mode 100644 index 28477ebe..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination-type.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTLDFilterByCombinationType { - AND, OR -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination.model.ts deleted file mode 100644 index b6f8102c..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-combination.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTLDFilter } from './dgt-ld-filter.model'; -import { DGTLDFilterByCombinationType } from './dgt-ld-filter-combination-type.model'; - -export interface DGTLDFilterCombination extends DGTLDFilter { - combinationType: DGTLDFilterByCombinationType; - filters: DGTLDFilter[]; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-connection.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-connection.model.ts deleted file mode 100644 index f5c3d3a6..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-connection.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTLDFilter } from './dgt-ld-filter.model'; -import { DGTConnection } from '../../connection/models/dgt-connection.model'; - -export interface DGTLDFilterConnection extends DGTLDFilter { - connections: DGTConnection[]; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-exchange.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-exchange.model.ts deleted file mode 100644 index d220fea5..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-exchange.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTLDFilter } from './dgt-ld-filter.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; - -export interface DGTLDFilterExchange extends DGTLDFilter { - exchanges: DGTExchange[]; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-holder.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-holder.model.ts deleted file mode 100644 index 54718069..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-holder.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTLDFilter } from './dgt-ld-filter.model'; -import { DGTHolder } from '../../holder/models/dgt-holder.model'; - -export interface DGTLDFilterHolder extends DGTLDFilter { - holders: DGTHolder[]; -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-runners.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-runners.model.ts deleted file mode 100644 index 64149354..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-runners.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTLDFilterRunnerService } from '../services/dgt-ld-filter-runner.service'; -import { Type } from '@angular/core'; -import { DGTLDFilter } from './dgt-ld-filter.model'; - -export interface DGTLDFilterRunners { - runners: Type>[]; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-sparql.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-sparql.model.ts deleted file mode 100644 index f4782dab..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-sparql.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTLDFilter } from './dgt-ld-filter.model'; - -export interface DGTLDFilterSparql extends DGTLDFilter { - sparql: string; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-type.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-type.model.ts deleted file mode 100644 index f86e3629..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter-type.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum DGTLDFilterType { - BGP, - SPARQL, - HOLDER, - EXCHANGE, - CONNECTION, - COMBINATION -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter.model.ts deleted file mode 100644 index ccacfce1..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-filter.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTLDFilterType } from './dgt-ld-filter-type.model'; - -export interface DGTLDFilter { - type: DGTLDFilterType; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-node.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-node.model.ts deleted file mode 100644 index 26ce5b11..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-node.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTLDTermType } from './dgt-ld-term-type.model'; -import { DGTLDDataType } from './dgt-ld-data-type.model'; - -export interface DGTLDNode { - dataType?: DGTLDDataType; - termType: DGTLDTermType; - value: any; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-resource.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-resource.model.ts deleted file mode 100644 index 2f472e3d..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-resource.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTLDTriple } from './dgt-ld-triple.model'; - -export interface DGTLDResource { - uri: string; - exchange: string; - triples: DGTLDTriple[]; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-term-type.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-term-type.model.ts deleted file mode 100644 index fc89ec9a..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-term-type.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTLDTermType { - LITERAL, REFERENCE -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-transformer.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-transformer.model.ts deleted file mode 100644 index 141668ba..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-transformer.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTLDResource } from './dgt-ld-resource.model'; - -export interface DGTLDTransformer { - toDomain(entities: DGTLDResource[]): Observable; - toTriples(objects: T[]): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-triple.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-triple.model.ts deleted file mode 100644 index bccb1df7..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-triple.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTLDNode } from './dgt-ld-node.model'; - -export interface DGTLDTriple { - predicate: string; - subject: DGTLDNode; - object: DGTLDNode; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-type-registration.model.ts b/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-type-registration.model.ts deleted file mode 100644 index 43beb8c5..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/models/dgt-ld-type-registration.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTLDResource } from './dgt-ld-resource.model'; - - -/** A thing that happens or takes place on someone's pod */ -export interface DGTLDTypeRegistration extends DGTLDResource { - forClass: string; - instance: string; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.spec.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.spec.ts deleted file mode 100644 index 85f01d68..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.spec.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { async } from '@angular/core/testing'; -import { DGTLDFilterRunnerBGPService } from './dgt-ld-filter-runner-bgp.service'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { DGTLDFilterBGP } from '../models/dgt-ld-filter-bgp.model'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; - -/* tslint:disable:no-unused-variable */ - -describe('DGTCategoryFilterRunnerBGP', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTLDFilterRunnerBGPService); - - it('should be correctly instantiated', async(() => { - expect(testService.service).toBeTruthy(); - })); - - it('should filter triples when 1 predicate is given', async(() => { - const triples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - const filter: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar' - ] - }; - - const filteredTriples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - testService.service.run(filter, triples) - .subscribe(triples => { - expect(triples).toEqual(filteredTriples); - }); - })); - - it('should filter triples when multiple predicates are given', async(() => { - const triples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar3', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - const filter: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar', - 'foobar2' - ] - }; - - const filteredTriples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - ]; - - testService.service.run(filter, triples) - .subscribe(triples => { - expect(triples).toEqual(filteredTriples); - }); - })); - - // it('should register and get a workflow', async(() => { - // const field: string = 'digita.ai/test' - - // const workflow: DGTWorkflow = { - // trigger: { - // fields: [field] - // }, - // actions: [] - // }; - // testService.service.register(workflow); - - // expect(testService.service.get(field)).toEqual([workflow]); - // })); -}); diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.ts deleted file mode 100644 index c3c83f39..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-bgp.service.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { DGTLDFilterBGP } from '../models/dgt-ld-filter-bgp.model'; -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import { Observable, of } from 'rxjs'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - - -@DGTInjectable() -export class DGTLDFilterRunnerBGPService implements DGTLDFilterRunnerService { - public readonly type: DGTLDFilterType = DGTLDFilterType.BGP; - - run(filter: DGTLDFilterBGP, resources: DGTLDResource[]): Observable { - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - if (!resources) { - throw new DGTErrorArgument('Argument triresourcesples should be set.', resources); - } - - return of(resources.map(resource => this.runOne(filter, resource))); - } - - private runOne(filter: DGTLDFilterBGP, resource: DGTLDResource): DGTLDResource { - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - if (!resource) { - throw new DGTErrorArgument('Argument triple should be set.', resource); - } - - const res = { ...resource }; - - res.triples = res.triples.filter(triple => filter.predicates.find( - predicate => predicate === triple.predicate - )) - - return res; - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-combination.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-combination.service.ts deleted file mode 100644 index ff41d78a..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-combination.service.ts +++ /dev/null @@ -1,45 +0,0 @@ - -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import { DGTLDFilterCombination } from '../models/dgt-ld-filter-combination.model'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTParameterCheckerService, DGTErrorArgument, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { Observable, forkJoin } from 'rxjs'; -import { DGTLDFilterByCombinationType } from '../models/dgt-ld-filter-combination-type.model'; -import { DGTLDFilter } from '../models/dgt-ld-filter.model'; -import * as _ from 'lodash'; -import { map } from 'rxjs/operators'; -import { DGTLDFilterService } from './dgt-ld-filter.service'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTLDFilterRunnerCombinationService implements DGTLDFilterRunnerService { - public readonly type: DGTLDFilterType = DGTLDFilterType.COMBINATION; - - constructor( - private paramChecker: DGTParameterCheckerService, - private filterService: DGTLDFilterService, - ) { } - - run(filter: DGTLDFilterCombination, resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ filter, resources }); - const res: Observable[] = - filter.filters.map(subFilter => this.runOne(subFilter, resources)); - - if (filter.combinationType === DGTLDFilterByCombinationType.AND) { - return forkJoin(res).pipe( - map(filteredTriples => _.uniq(_.intersection(...filteredTriples))) - ); - } else if (filter.combinationType === DGTLDFilterByCombinationType.OR) { - return forkJoin(res).pipe( - map(filteredTriples => _.uniq(_.flatten(filteredTriples))) - ); - } else { - throw new DGTErrorArgument('CombinationType not supported', filter.combinationType); - } - } - - private runOne(filter: DGTLDFilter, resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ filter, resources }); - return this.filterService.run(filter, resources); - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-connection.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-connection.service.ts deleted file mode 100644 index a89e29dc..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-connection.service.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { forkJoin, Observable, of } from 'rxjs'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; - -import { DGTLDFilterConnection } from '../models/dgt-ld-filter-connection.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; -import { map, switchMap } from 'rxjs/operators'; - -@DGTInjectable() -export class DGTLDFilterRunnerConnectionService implements DGTLDFilterRunnerService { - public readonly type: DGTLDFilterType = DGTLDFilterType.CONNECTION; - - constructor(private exchanges: DGTExchangeService, private paramChecker: DGTParameterCheckerService) { } - - run(filter: DGTLDFilterConnection, resources: DGTLDResource[]): Observable { - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - if (!resources) { - throw new DGTErrorArgument('Argument triples should be set.', resources); - } - - return of({filter, resources}) - .pipe( - switchMap(data => forkJoin(resources.map(triple => this.runOne(filter, triple).pipe(map(result => result ? triple : null))))), - map(triples => triples.filter(triple => triple !== null)), - ) -} - -private runOne(filter: DGTLDFilterConnection, resource: DGTLDResource): Observable { - this.paramChecker.checkParametersNotNull({ filter, resource }); - return this.exchanges.get(resource.exchange).pipe( - map(exchange => exchange && exchange.connection ? filter.connections.find(connection => connection.uri === exchange.connection) : null), - map(holder => holder !== null && holder !== undefined ? true : false) - ); -} -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-exchange.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-exchange.service.ts deleted file mode 100644 index dca60f1b..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-exchange.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import { Observable, of } from 'rxjs'; -import { DGTInjectable, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; - -import { DGTLDFilterExchange } from '../models/dgt-ld-filter-exchange.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTLDFilterRunnerExchangeService implements DGTLDFilterRunnerService { - public readonly type: DGTLDFilterType = DGTLDFilterType.EXCHANGE; - - constructor(private paramChecker: DGTParameterCheckerService) { } - - run(filter: DGTLDFilterExchange, resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ filter, resources }); - return of(resources.filter(triple => this.runOne(filter, triple))); - } - - private runOne(filter: DGTLDFilterExchange, resource: DGTLDResource): boolean { - this.paramChecker.checkParametersNotNull({ filter, resource }); - const match = filter.exchanges.find( - exchange => exchange.uri === resource.exchange - ); - return match ? true : false; - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.spec.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.spec.ts deleted file mode 100644 index 0ffdd02f..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.spec.ts +++ /dev/null @@ -1 +0,0 @@ -// TODO \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.ts deleted file mode 100644 index 1d3b0370..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-holder.service.ts +++ /dev/null @@ -1,44 +0,0 @@ - -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTLDFilterHolder } from '../models/dgt-ld-filter-holder.model'; -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import { Observable, of, forkJoin } from 'rxjs'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { map, switchMap } from 'rxjs/operators'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; - -@DGTInjectable() -export class DGTLDFilterRunnerHolderService implements DGTLDFilterRunnerService { - public readonly type: DGTLDFilterType = DGTLDFilterType.HOLDER; - - constructor( - private exchanges: DGTExchangeService, - private paramChecker: DGTParameterCheckerService, - ) { } - - public run(filter: DGTLDFilterHolder, resources: DGTLDResource[]): Observable { - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - if (!resources) { - throw new DGTErrorArgument('Argument triples should be set.', resources); - } - // This might not work - return of({filter, resources}) - .pipe( - switchMap(data => forkJoin(resources.map(triple => this.runOne(filter, triple).pipe(map(result => result ? triple : null))))), - map(triples => triples.filter(triple => triple !== null)), - ) - } - - private runOne(filter: DGTLDFilterHolder, resource: DGTLDResource): Observable { - this.paramChecker.checkParametersNotNull({ filter, resource }); - return this.exchanges.get(resource.exchange).pipe( - map(exchange => exchange && exchange.holder ? filter.holders.find(holder => holder.uri === exchange.holder) : null), - map(holder => holder !== null && holder !== undefined ? true : false) - ); - } - -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.spec.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.spec.ts deleted file mode 100644 index 92aa44d9..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.spec.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { async } from '@angular/core/testing'; -import { DGTCategoryFilterRunnerSparqlService } from './dgt-ld-filter-runner-sparql.service'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTLDFilterSparql } from '../models/dgt-ld-filter-sparql.model'; -import { DGTLDTermType } from '../../linked-data/models/dgt-ld-term-type.model'; - -/* tslint:disable:no-unused-variable */ - -fdescribe('DGTCategoryFilterRunnerSparqlService', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTCategoryFilterRunnerSparqlService); - - it('should be correctly instantiated', async(() => { - expect(testService.service).toBeTruthy(); - })); - - it('should filter triples when 1 predicate is given', async(() => { - const triples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'http://foo.bar/ns#bar1', - subject: { - termType: DGTLDTermType.REFERENCE, - value: 'https://me.myid.be/profile/card#me' - }, - object: { - termType: DGTLDTermType.LITERAL, - value: 'lorem1' - }, - originalValue: { - termType: DGTLDTermType.LITERAL, - value: 'lorem1' - }, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'http://foo.bar/ns#bar2', - subject: { - termType: DGTLDTermType.REFERENCE, - value: 'https://me.myid.be/profile/card#me' - }, - object: { - termType: DGTLDTermType.LITERAL, - value: 'lorem2' - }, - originalValue: { - termType: DGTLDTermType.LITERAL, - value: 'lorem2' - }, - source: null, - connection: null, - } - ]; - - const filter: DGTLDFilterSparql = { - type: DGTLDFilterType.BGP, - sparql: `PREFIX foo: - SELECT ?subject ?predicate ?object - WHERE { - ?subject ?predicate ?object . - ?subject foo:bar1 ?object . - }` - }; - - const filteredTriples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'http://foo.bar/ns#bar1', - subject: { - termType: DGTLDTermType.REFERENCE, - value: 'https://me.myid.be/profile/card#me' - }, - object: { - termType: DGTLDTermType.LITERAL, - value: 'lorem1' - }, - originalValue: { - termType: DGTLDTermType.LITERAL, - value: 'lorem1' - }, - source: null, - connection: null, - } - ]; - - testService.service.run(filter, triples) - .subscribe(triples => { - expect(triples).toEqual(filteredTriples); - }); - })); - - // it('should filter triples when multiple predicates are given', async(() => { - // const triples: DGTLDTriple[] = [ - // { - // exchange: null, - // predicate: { - // namespace: 'foo', - // name: 'bar' - // }, - // subject: null, - // object: null, - // originalValue: null, - // source: null, - // connection: null, - // }, - // { - // exchange: null, - // predicate: { - // namespace: 'foo', - // name: 'bar2' - // }, - // subject: null, - // object: null, - // originalValue: null, - // source: null, - // connection: null, - // }, - // { - // exchange: null, - // predicate: { - // namespace: 'foo', - // name: 'bar3' - // }, - // subject: null, - // object: null, - // originalValue: null, - // source: null, - // connection: null, - // } - // ]; - - // const filter: DGTCategoryFilterBGP = { - // type: DGTCategoryFilterType.BGP, - // predicates: [ - // { - // namespace: 'foo', - // name: 'bar' - // }, - // { - // namespace: 'foo', - // name: 'bar2' - // } - // ] - // }; - - // const filteredTriples: DGTLDTriple[] = [ - // { - // exchange: null, - // predicate: { - // namespace: 'foo', - // name: 'bar' - // }, - // subject: null, - // object: null, - // originalValue: null, - // source: null, - // connection: null, - // }, - // { - // exchange: null, - // predicate: { - // namespace: 'foo', - // name: 'bar2' - // }, - // subject: null, - // object: null, - // originalValue: null, - // source: null, - // connection: null, - // }, - // ]; - - // testService.service.run(filter, triples) - // .subscribe(triples => { - // expect(triples).toEqual(filteredTriples); - // }); - // })); - - // it('should register and get a workflow', async(() => { - // const field: string = 'digita.ai/test' - // const workflow: DGTWorkflow = { - // trigger: { - // fields: [field] - // }, - // actions: [] - // }; - // testService.service.register(workflow); - - // expect(testService.service.get(field)).toEqual([workflow]); - // })); -}); diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.ts deleted file mode 100644 index 30b6231b..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner-sparql.service.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { Observable } from 'rxjs'; -import { DGTLDFilterSparql } from '../models/dgt-ld-filter-sparql.model'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DataFactory, Quad, Quad_Subject, Quad_Predicate, Quad_Object } from 'n3'; - -import { DGTLDTripleFactoryService } from '../../linked-data/services/dgt-ld-triple-factory.service'; -import { switchMap, map } from 'rxjs/operators'; -import { DGTSparqlCommunicaService } from '../../sparql/services/dgt-sparql-communica.service'; -import { DGTSparqlDatasetType } from '../../sparql/models/dgt-sparql-dataset-type.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTLDFilterRunnerSparqlService implements DGTLDFilterRunnerService { - public readonly type: DGTLDFilterType = DGTLDFilterType.SPARQL; - - constructor(private logger: DGTLoggerService, private triples: DGTLDTripleFactoryService, private sparql: DGTSparqlCommunicaService) { } - - run(filter: DGTLDFilterSparql, resources: DGTLDResource[]): Observable { - this.logger.debug(DGTLDFilterRunnerSparqlService.name, 'Starting to run filter', { filter, resources }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - if (!resources) { - throw new DGTErrorArgument('Argument triples should be set.', resources); - } - - throw new DGTErrorNotImplemented(); - - // return this.sparql.query({ resources, type: DGTSparqlDatasetType.MEMORY }, filter.sparql) - // .pipe( - // switchMap(data => { - // this.logger.debug(DGTLDFilterRunnerSparqlService.name, 'Finished sparql query', { data }); - - // return new Observable(observer => { - // const res: Quad[] = []; - - // // (data.result as any).bindingsStream.on('data', (chunk: Bindings) => { - // // this.logger.debug(DGTLDFilterRunnerSparqlService.name, 'On data', { chunk }); - // // const subject = chunk.get('?subject') as Quad_Subject; - // // const predicate = chunk.get('?predicate') as Quad_Predicate; - // // const object = chunk.get('?object') as Quad_Object; - - // // res.push( - // // DataFactory.quad(subject, predicate, object) - // // ); - // // }) - - // // (data.result as any).bindingsStream.on('end', () => { - // // this.logger.debug(DGTLDFilterRunnerSparqlService.name, 'On end', res); - // // observer.next(res); - // // observer.complete(); - // // }); - // }) - // }), - // map(data => this.triples.createFromQuads(data, null, null, null, null)) - // ); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner.service.ts deleted file mode 100644 index 01f2a0f4..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter-runner.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTLDFilter } from '../models/dgt-ld-filter.model'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - -export interface DGTLDFilterRunnerService { - type: DGTLDFilterType; - run(filter: T, resources: DGTLDResource[]): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.spec.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.spec.ts deleted file mode 100644 index c6604e1a..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.spec.ts +++ /dev/null @@ -1,217 +0,0 @@ -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { async } from '@angular/core/testing'; -import { DGTLDFilterRunnerBGPService } from './dgt-ld-filter-runner-bgp.service'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { DGTLDFilterBGP } from '../models/dgt-ld-filter-bgp.model'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTCategoryFilterService } from './dgt-ld-filter.service'; - -/* tslint:disable:no-unused-variable */ - -describe('DGTCategoryFilterService', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTCategoryFilterService); - - it('should be correctly instantiated', async(() => { - expect(testService.service).toBeTruthy(); - })); - - it('should run when 1 bgp filter is set', async(() => { - const triples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - const filter: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar' - ] - }; - - const filteredTriples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - testService.service.register(new DGTLDFilterRunnerBGPService()); - - testService.service.run([filter], triples) - .subscribe(triples => { - expect(triples).toEqual(filteredTriples); - }); - })); - - it('should run when 2 different bgp filters are set', async(() => { - const triples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar3', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - const filter1: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar' - ] - }; - - const filter2: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar2' - ] - }; - - const filteredTriples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - testService.service.register(new DGTLDFilterRunnerBGPService()); - - testService.service.run([filter1, filter2], triples) - .subscribe(triples => { - expect(triples).toEqual(filteredTriples); - }); - })); - - it('should run when 2 overlapping bgp filters are set', async(() => { - const triples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar3', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - const filter1: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar' - ] - }; - - const filter2: DGTLDFilterBGP = { - type: DGTLDFilterType.BGP, - predicates: [ - 'foobar', 'foobar2' - ] - }; - - const filteredTriples: DGTLDTriple[] = [ - { - exchange: null, - predicate: 'foobar', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - }, - { - exchange: null, - predicate: 'foobar2', - subject: null, - object: null, - originalValue: null, - source: null, - connection: null, - } - ]; - - testService.service.register(new DGTLDFilterRunnerBGPService()); - - testService.service.run([filter1, filter2], triples) - .subscribe(triples => { - expect(triples).toEqual(filteredTriples); - }); - })); - -}); diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.ts deleted file mode 100644 index 0e33428b..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-filter.service.ts +++ /dev/null @@ -1,55 +0,0 @@ - -import { DGTLDFilter } from '../models/dgt-ld-filter.model'; -import { Observable } from 'rxjs'; -import { DGTLDFilterType } from '../models/dgt-ld-filter-type.model'; -import { DGTErrorArgument, DGTMap, DGTLoggerService, DGTParameterCheckerService, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTLDFilterRunnerService } from './dgt-ld-filter-runner.service'; -import * as _ from 'lodash'; -import { DGTLDFilterRunnerSparqlService } from './dgt-ld-filter-runner-sparql.service'; -import { DGTLDFilterRunnerBGPService } from './dgt-ld-filter-runner-bgp.service'; -import { DGTLDTripleFactoryService } from '../../linked-data/services/dgt-ld-triple-factory.service'; -import { DGTLDFilterRunnerHolderService } from './dgt-ld-filter-runner-holder.service'; -import { DGTConnectionService } from '../../connection/services/dgt-connection-abstract.service'; -import { DGTLDFilterRunnerExchangeService } from './dgt-ld-filter-runner-exchange.service'; -import { DGTLDFilterRunnerConnectionService } from './dgt-ld-filter-runner-connection.service'; -import { DGTLDFilterRunnerCombinationService } from './dgt-ld-filter-runner-combination.service'; -import { DGTSparqlCommunicaService } from '../../sparql/services/dgt-sparql-communica.service'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; - -@DGTInjectable() -export class DGTLDFilterService { - - private runners: DGTMap> = new DGTMap>(); - - constructor( - private logger: DGTLoggerService, - private triples: DGTLDTripleFactoryService, - private paramChecker: DGTParameterCheckerService, - private exchanges: DGTExchangeService, - private sparql: DGTSparqlCommunicaService - ) { - this.register(new DGTLDFilterRunnerBGPService()); - this.register(new DGTLDFilterRunnerSparqlService(logger, this.triples, this.sparql)); - this.register(new DGTLDFilterRunnerHolderService(exchanges, paramChecker)); - this.register(new DGTLDFilterRunnerExchangeService(paramChecker)); - this.register(new DGTLDFilterRunnerConnectionService(exchanges, paramChecker)); - this.register(new DGTLDFilterRunnerCombinationService(paramChecker, this)); - } - - public register(runner: DGTLDFilterRunnerService) { - this.paramChecker.checkParametersNotNull({ runner }); - this.runners.set(runner.type, runner); - } - - public run(filter: DGTLDFilter, resources: DGTLDResource[]): Observable { - // TODO log on lower level then debug - //this.logger.debug(DGTLDFilterService.name, 'Starting to run filters', { filter, triples }); - this.paramChecker.checkParametersNotNull({ filter, resources }); - const runner = this.runners.get(filter.type); - if (!runner) { - throw new DGTErrorArgument('No runner registered for the given filter type.', runner); - } - return runner.run(filter, resources); - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource-transformer.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource-transformer.service.ts deleted file mode 100644 index 7b633103..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource-transformer.service.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Observable, of } from 'rxjs'; - -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -/** Transforms linked data to events, and the other way around. */ -@DGTInjectable() -export class DGTLDResourceTransformerService implements DGTLDTransformer { - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { } - - /** - * Transforms multiple linked data entities to events. - * @param resources Linked data objects to be transformed to events - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of events - */ - public toDomain(resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ resources }); - - return of(resources); - } - - public toTriples(resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ resources }); - this.logger.debug(DGTLDResourceTransformerService.name, 'Starting to transform to linked data', { resources }); - - return of(resources); - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource.service.ts deleted file mode 100644 index d648d963..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-resource.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - -export interface DGTLDResourceService { - get(id: string): Observable; - query(filter: Partial): Observable; - save(resource: T): Observable; - delete(resource: T): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-triple-factory.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-triple-factory.service.ts deleted file mode 100644 index b5d9629f..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-triple-factory.service.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { DGTLoggerService, DGTErrorArgument, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTLDTriple } from '../models/dgt-ld-triple.model'; -import { DGTLDTermType } from '../models/dgt-ld-term-type.model'; -import { DGTLDNode } from '../models/dgt-ld-node.model'; -import { v4 as uuid } from 'uuid'; -import { Quad, Parser } from 'n3'; - -@DGTInjectable() -export class DGTLDTripleFactoryService { - private parser: Parser = new Parser(); - - constructor(private logger: DGTLoggerService) { } - - public createFromString(response: string, uri: string): DGTLDTriple[] { - if (!response) { - throw new DGTErrorArgument('Argument response should be set.', response); - } - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - let res: DGTLDTriple[] = []; - - try { - const quads = this.parser.parse(response); - this.logger.debug(DGTLDTripleFactoryService.name, 'Parsed quads', { uri }); - - res = this.createFromQuads(quads, uri); - } catch (err) { - this.logger.error(DGTLDTripleFactoryService.name, 'Caught exception', { response, error: err }) - } - - return res; - } - - public createFromQuads(quads: Quad[], uri: string): DGTLDTriple[] { - if (!quads) { - throw new DGTErrorArgument('Argument quads should be set.', quads); - } - - let res: DGTLDTriple[] = null; - - this.logger.debug(DGTLDTripleFactoryService.name, 'Starting to convert quads to values', { uri }); - res = quads.map(quad => this.convertOne(uri, quad)); - - res = this.clean(res); - - return res; - } - - private convertOne(uri: string, quad: Quad): DGTLDTriple { - if (!quad) { - throw new DGTErrorArgument('Argument quad should be set.', quad); - } - - if (!quad.predicate) { - throw new DGTErrorArgument('Argument quad.predicate should be set.', quad.predicate); - } - - const subject = quad && quad.subject ? this.convertOneSubject(uri, quad) : null; - const object = quad && quad.object ? this.convertOneObject(uri, quad) : null; - - return { - predicate: quad.predicate.value, - subject, - object, - }; - } - - private convertOneSubject(uri: string, quad: Quad): DGTLDNode { - let subject: DGTLDNode = { value: quad.subject.value, termType: DGTLDTermType.REFERENCE }; - if (subject && subject.value && subject.value.startsWith('#me')) { - - subject = { - value: `${uri}`, - termType: DGTLDTermType.REFERENCE - }; - } else if (subject && subject.value && subject.value.startsWith('#')) { - subject = { - value: `${uri.split('#')[0]}#${quad.subject.value.split('#')[1]}`, - termType: DGTLDTermType.REFERENCE - }; - } - - return subject; - } - - private convertOneObject(uri: string, quad: Quad): DGTLDNode { - let res = null; - - if (quad.object.termType === 'Literal') { - res = { - dataType: quad.object.datatypeString, - value: quad.object.value, - termType: DGTLDTermType.LITERAL - }; - } else { - if (quad.object.value.startsWith('#')) { - // here, the object is a reference to another triple - res = { - value: uri.split('#')[0] + quad.object.value, - termType: DGTLDTermType.REFERENCE - }; - } else if (quad.object.value.startsWith('undefined/')) { - // here, the object is a relative reference to a file - // BUT - // n3 parser wrongly interprets relative references - // in turtle, - // is parsed to 'undefined/events/lemonade3.ttl' - // new versions of N3 might mix this issue, - res = { - // the origin of an url: [[https://www.youtube.com]]/watch?v=y8kEiL81_R4 - // to this, add the relative path - value: new URL(uri).origin + quad.object.value.replace('undefined', ''), - termType: DGTLDTermType.REFERENCE - } - } else { - // here, the object is an absolute reference - res = { - value: quad.object.value, - termType: DGTLDTermType.REFERENCE - }; - } - } - - - return res; - } - - private clean(values: DGTLDTriple[]): DGTLDTriple[] { - return values - .map(value => { - const updatedValue = value; - - if (value && value.object && value.object.value) { - const stringValue = (value.object.value as string); - - if (stringValue.startsWith('undefined/')) { - const stringValueSplit = stringValue.split('undefined/')[1]; - const stringSubjectBase = value.subject.value.split('/profile/card#me')[0]; - - updatedValue.object.value = stringSubjectBase + '/' + stringValueSplit; - } - } - - return updatedValue; - }); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-mock.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-mock.service.ts deleted file mode 100644 index ce1d14e0..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-mock.service.ts +++ /dev/null @@ -1,31 +0,0 @@ - -import { Observable, of } from 'rxjs'; -import { DGTLDTypeRegistrationService } from './dgt-ld-type-registration.service'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTLDTypeRegistration } from '../models/dgt-ld-type-registration.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTErrorNotImplemented, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; - -@DGTInjectable() -export class DGTLDTypeRegistrationMockService extends DGTLDTypeRegistrationService { - typeRegistrations = [null]; - - public all(profile: DGTProfile): Observable { - return of(this.typeRegistrations); - } - - public registerForResources(predicate: string, resource: DGTLDResource, profile: DGTProfile): Observable { - this.typeRegistrations.push(null); - return of([null]); - } - - public registerMissingTypeRegistrations(profile: DGTProfile): Observable { - throw new DGTErrorNotImplemented(); - } - - public register(typeRegistrations: DGTLDTypeRegistration[], profile: DGTProfile): Observable { - this.typeRegistrations.push(null); - return of([null]); - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-solid.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-solid.service.ts deleted file mode 100644 index d68af6cc..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-solid.service.ts +++ /dev/null @@ -1,177 +0,0 @@ - -import { Observable, of, forkJoin } from 'rxjs'; -import { map, tap, switchMap } from 'rxjs/operators'; -import { DGTLoggerService, DGTParameterCheckerService, DGTConfigurationService, DGTErrorNotImplemented, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTLDTypeRegistrationTransformerService } from './dgt-ld-type-registration-transformer.service'; -import { DGTLDTypeRegistrationService } from './dgt-ld-type-registration.service'; -import * as _ from 'lodash'; -import { DGTLDUtils } from './dgt-ld-utils.service'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTLDTypeRegistration } from '../models/dgt-ld-type-registration.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTConnector } from '../../connector/models/dgt-connector.model'; -import { DGTConfigurationBaseWeb } from '../../configuration/models/dgt-configuration-base-web.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; - -/** Service for managing typeRegistrations in Solid. */ -@DGTInjectable() -export class DGTLDTypeRegistrationSolidService extends DGTLDTypeRegistrationService { - constructor( - private connector: DGTConnector, - private transformer: DGTLDTypeRegistrationTransformerService, - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService, - private utils: DGTLDUtils, - private config: DGTConfigurationService, - private exchanges: DGTExchangeService, - ) { - super(); - } - - /** - * Get all typeRegistrations from multiple files. - * @param typeRegistrationFiles List of typeRegistration file uris. - * @param connection Connection to retrieve the typeRegistrations from. - * @param source Source to retrieve the typeRegistrations from. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of typeRegistrations. - */ - public all(profile: DGTProfile): Observable { - this.logger.debug(DGTLDTypeRegistrationService.name, 'Starting to retrieve all type registration for profile.', { profile }); - - this.paramChecker.checkParametersNotNull({ profile }); - - return of({ profile }) - .pipe( - switchMap(data => this.exchanges.get(profile.exchange) - .pipe(map(exchange => ({ ...data, exchange })))), - switchMap(data => this.connector.query(data.profile.publicTypeIndex, data.exchange, this.transformer) - .pipe(map(typeRegistrations => ({ ...data, typeRegistrations })))), - tap(data => this.logger.debug(DGTLDTypeRegistrationService.name, 'Retrieved public type registration for profile.', data)), - switchMap(data => this.connector.query(data.profile.privateTypeIndex, data.exchange, this.transformer) - .pipe(map(typeRegistrations => ({ ...data, typeRegistrations: [...data.typeRegistrations, ...typeRegistrations] })))), - // switchMap(data => forkJoin([ - // this.connector.query(data.profile.publicTypeIndex, data.exchange, this.transformer), - // this.connector.query(data.profile.privateTypeIndex, data.exchange, this.transformer), - // ]) - // .pipe(map(typeRegistrations => ({ ...data, typeRegistrations: _.flatten(typeRegistrations) })))), - tap(data => this.logger.debug(DGTLDTypeRegistrationService.name, 'Retrieved all type registration for profile.', data)), - map(data => data.typeRegistrations) - ); - } - - /** - * Registers/adds an typeRegistration to the SOLID-pod - * @param profile Profile to add reference to. - * @param typeRegistration TypeRegistration to be added to the pod. - * @param connection Connection object to add the typeRegistration to. - * @param source Source object to add the typeRegistration to. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of registered typeRegistration. - */ - public registerForResources(predicate: string, resource: DGTLDResource, profile: DGTProfile): Observable { - this.logger.debug(DGTLDTypeRegistrationService.name, 'Preparing to register typeRegistration.', { profile, predicate, resource }); - - let res = of(null); - - this.paramChecker.checkParametersNotNull({ profile, predicate, resource }); - - const foundTypeRegistrations = profile.typeRegistrations.filter(typeRegistration => - (!resource.uri || typeRegistration.instance === resource.uri) && - this.utils.same(typeRegistration.forClass, predicate) - ); - this.logger.debug(DGTLDTypeRegistrationService.name, 'Found typeRegistrations.', { foundTypeRegistrations }); - - if (resource.uri && (!foundTypeRegistrations || foundTypeRegistrations.length === 0)) { - // uri exists, and corresponding type registration does not exist -> create type registration - this.logger.debug(DGTLDTypeRegistrationService.name, 'Creating the relevant typeRegistration.', { foundTypeRegistrations, resource }); - - const typeRegistrationsToBeAdded: DGTLDTypeRegistration = { - forClass: predicate, - instance: resource.uri, - uri: profile.privateTypeIndex, - triples: null, - exchange: profile.exchange, - }; - - res = of({ typeRegistrationsToBeAdded, profile }) - .pipe( - switchMap(data => this.connector.add([data.typeRegistrationsToBeAdded], this.transformer) - .pipe(map(addedTypeRegistrations => ({ - ...data, addedTypeRegistrations, - })))), - tap(data => this.logger.debug(DGTLDTypeRegistrationSolidService.name, 'Added new typeRegistrations', data)), - map(data => data.addedTypeRegistrations) - ); - } else if (!resource.uri && foundTypeRegistrations && foundTypeRegistrations.length > 0) { - // uri does not exist, but type registration exist -> set document uri based on type registration - - this.logger.debug(DGTLDTypeRegistrationService.name, 'Returning the relevant typeRegistration.', { foundTypeRegistrations, resource }); - - res = of(foundTypeRegistrations); - } else if (!resource.uri && (!foundTypeRegistrations || foundTypeRegistrations.length === 0)) { - throw new DGTErrorNotImplemented(); - // uri does not exist, and type registration does not exist => create type registration based on defaults and set uri - // this.logger.debug(DGTLDTypeRegistrationService.name, 'Creating the relevant typeRegistration...', { foundTypeRegistrations, resource }); - // res = this.register(predicate, profile, connection, source); - } - - return res; - } - - public registerMissingTypeRegistrations(profile: DGTProfile): Observable { - this.logger.debug(DGTLDTypeRegistrationService.name, 'Starting to add missing typeRegistration.', { profile }); - - return of({ profile }) - .pipe( - map(data => { - const typeRegistrationsInConfig = this.config.get(c => c.typeRegistrations); - // make list of predicates that have to be added to TypeIndex files - const typeRegistrationsMissing: DGTLDTypeRegistration[] = Object.keys(typeRegistrationsInConfig).map(key => { - // filter out typeRegistrations that are already on the state - // no need to add those - const regsAlreadyAdded = data.profile.typeRegistrations.map(reg => reg.forClass); - - const predicate = regsAlreadyAdded.includes(key) ? null : key; - - const typeRegistrationsToBeAdded: DGTLDTypeRegistration = { - forClass: predicate, - instance: typeRegistrationsInConfig[key], - uri: profile.privateTypeIndex, - triples: null, - exchange: profile.exchange, - }; - - return typeRegistrationsToBeAdded; - }) - .filter(typeRegistrationsToBeAdded => typeRegistrationsToBeAdded !== null && typeRegistrationsToBeAdded.forClass !== null); - - return { ...data, typeRegistrationsMissing }; - }), - switchMap(data => data.typeRegistrationsMissing && data.typeRegistrationsMissing.length > 0 ? - this.register(data.typeRegistrationsMissing, data.profile) - .pipe(map(typeRegistrationsRegistered => _.flatten(typeRegistrationsRegistered).map(reg => ({ ...reg, instance: new URL(data.profile.uri).origin + reg.instance })))) - : - of([]) - ), - ); - } - - public register(typeRegistrations: DGTLDTypeRegistration[], profile: DGTProfile): Observable { - this.logger.debug(DGTLDTypeRegistrationService.name, 'Starting to register typeRegistration.', { profile, typeRegistrations }); - - return of({ typeRegistrations, profile }) - .pipe( - switchMap(data => - // add the typeRegistration to the TypeIndex file - this.connector.add(typeRegistrations, this.transformer) - .pipe(map(addedTypeRegistrations => ({ - ...data, addedTypeRegistrations, - }))) - ), - tap(data => this.logger.debug(DGTLDTypeRegistrationSolidService.name, 'Added new typeRegistrations', data)), - map(data => data.addedTypeRegistrations) - ); - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-transformer.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-transformer.service.ts deleted file mode 100644 index b289b509..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration-transformer.service.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { Observable, of, forkJoin } from 'rxjs'; - -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import uuid, { v4 } from 'uuid'; -import { map, tap } from 'rxjs/operators'; -import { DGTLDTransformer } from '../models/dgt-ld-transformer.model'; -import { DGTLDTypeRegistration } from '../models/dgt-ld-type-registration.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTConnectionSolid } from '../../connection/models/dgt-connection-solid.model'; -import { DGTLDTermType } from '../models/dgt-ld-term-type.model'; -import { DGTLDDataType } from '../models/dgt-ld-data-type.model'; -import { DGTLDTriple } from '../models/dgt-ld-triple.model'; - -/** Transforms linked data to typeRegistrations, and the other way around. */ -@DGTInjectable() -export class DGTLDTypeRegistrationTransformerService implements DGTLDTransformer { - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { } - - /** - * Transforms multiple linked data entities to typeRegistrations. - * @param resources Linked data objects to be transformed to typeRegistrations - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of typeRegistrations - */ - public toDomain(resources: DGTLDResource[]): Observable { - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Starting to transform resources to type registrations', { resources }); - - this.paramChecker.checkParametersNotNull({ entities: resources }); - - return forkJoin(resources.map(entity => this.toDomainOne(entity))) - .pipe( - tap(typeRegistrations => this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Finished transforming type registrations', { typeRegistrations })), - map(typeRegistrations => _.flatten(typeRegistrations)), - map(typeRegistrations => typeRegistrations.filter(t => t !== null)), - ); - } - - /** - * Transformed a single linked data entity to typeRegistrations. - * @param resource The linked data entity to be transformed to typeRegistrations. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of typeRegistrations - */ - private toDomainOne(resource: DGTLDResource): Observable { - this.paramChecker.checkParametersNotNull({ entity: resource }); - - let res: DGTLDTypeRegistration[] = null; - - if (resource && resource.triples) { - const typeRegistrationSubjectValues = resource.triples.filter(value => - value.predicate === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' && - value.object.value === 'http://www.w3.org/ns/solid/terms#TypeRegistration' - ); - - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Found typeRegistration subjects to transform', { typeRegistrationSubjectValues }); - - if (typeRegistrationSubjectValues) { - res = typeRegistrationSubjectValues.map(typeRegistrationSubjectValue => this.transformOne(typeRegistrationSubjectValue, resource)); - } - } - - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Transformed values to typeRegistrations', { entity: resource, res }); - - return of(res); - } - - /** - * Converts typeRegistrations to linked data. - * @param typeRegistrations The typeRegistrations which will be transformed to linked data. - * @param connection The connection on which the typeRegistrations are stored. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of linked data entities. - */ - public toTriples(typeRegistrations: DGTLDTypeRegistration[]): Observable { - this.paramChecker.checkParametersNotNull({ typeRegistrations }); - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Starting to transform to linked data', { typeRegistrations }); - - const entities = typeRegistrations.map(typeRegistration => { - let triples = typeRegistration.triples; - const uri = typeRegistration.uri; - const documentSubject = { - // This line is only for human readability in the raw file - value: '#' + uuid(), - termType: DGTLDTermType.REFERENCE - }; - const typeRegistrationId = v4(); - const typeRegistrationSubjectUri = `${uri}#${typeRegistrationId}`; - - if (!triples) { - triples = [ - { - predicate: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type', - subject: documentSubject, - object: { - termType: DGTLDTermType.REFERENCE, - dataType: DGTLDDataType.STRING, - value: 'http://www.w3.org/ns/solid/terms#TypeRegistration' - }, - }, - { - predicate: 'http://www.w3.org/ns/solid/terms#forClass', - subject: documentSubject, - object: { - termType: DGTLDTermType.REFERENCE, - dataType: DGTLDDataType.STRING, - value: typeRegistration.forClass - }, - }, - { - predicate: 'http://www.w3.org/ns/solid/terms#instance', - subject: documentSubject, - object: { - termType: DGTLDTermType.REFERENCE, - dataType: DGTLDDataType.STRING, - value: typeRegistration.instance - }, - }, - ]; - } - - const newEntity: DGTLDResource = { - ...typeRegistration, - uri, - triples - }; - - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Transformed typeRegistration to linked data', { newEntity, typeRegistration }); - - return newEntity; - }); - - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Transformed typeRegistrations to linked data', { entities, typeRegistrations }); - - return of(entities); - } - - /** - * Creates a single typeRegistration from linked data. - * @param typeRegistrationSubjectValue The entity of the the typeRegistration's subject. - * @param resource\ The entity to be transformed to an typeRegistration. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns The transformed typeRegistration. - */ - private transformOne(typeRegistrationSubjectValue: DGTLDTriple, resource: DGTLDResource): DGTLDTypeRegistration { - this.paramChecker.checkParametersNotNull({ typeRegistrationSubjectValue, entity: resource }); - this.logger.debug(DGTLDTypeRegistrationTransformerService.name, 'Starting to transform one entity', { typeRegistrationSubjectValue, entity: resource }); - - const uri = resource.uri ? resource.uri : typeRegistrationSubjectValue.subject.value; - - const forClass = resource.triples.find(value => - value.subject.value === typeRegistrationSubjectValue.subject.value && - value.predicate === 'http://www.w3.org/ns/solid/terms#forClass' - ); - - const instance = resource.triples.find(value => - value.subject.value === typeRegistrationSubjectValue.subject.value && - value.predicate === 'http://www.w3.org/ns/solid/terms#instance' - ); - - const typeRegistrationTriples = resource.triples.filter(value => - value.subject.value === typeRegistrationSubjectValue.subject.value - ); - - return { - uri, - forClass: forClass ? forClass.object.value : null, - instance: instance ? instance.object.value : null, - triples: [...typeRegistrationTriples, typeRegistrationSubjectValue], - exchange: resource.exchange, - }; - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration.service.ts deleted file mode 100644 index d0476946..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-type-registration.service.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTProfile } from '../../profile/models/dgt-profile.model'; -import { DGTLDTypeRegistration } from '../models/dgt-ld-type-registration.model'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; - -/** Service for managing typeRegistrations. */ -export abstract class DGTLDTypeRegistrationService { - public abstract all(profile: DGTProfile): Observable; - public abstract registerForResources(predicate: string, resource: DGTLDResource, profile: DGTProfile): Observable; - public abstract registerMissingTypeRegistrations(profile: DGTProfile): Observable; - public abstract register(typeRegistrations: DGTLDTypeRegistration[], profile: DGTProfile): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-utils.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-utils.service.ts deleted file mode 100644 index 77157144..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld-utils.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; - - -@DGTInjectable() -export class DGTLDUtils { - public same(predicate1: string, predicate2: string): boolean { - return predicate1 && predicate2 && predicate1 === predicate2; - } -} diff --git a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld.service.ts b/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld.service.ts deleted file mode 100644 index 2e3e7c95..00000000 --- a/projects/dgt-shared-data/src/lib/linked-data/services/dgt-ld.service.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTLDFilter } from '../models/dgt-ld-filter.model'; -import { DGTLDTransformer } from '../models/dgt-ld-transformer.model'; -import { Observable, of, forkJoin, zip } from 'rxjs'; -import { DGTCacheService } from '../../cache/services/dgt-cache.service'; -import { mergeMap, tap, map, switchMap } from 'rxjs/operators'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; -import * as _ from 'lodash'; -import { DGTExchangeService } from '../../exchanges/services/dgt-exchange.service'; -import { DGTConnectorService } from '../../connector/services/dgt-connector.service'; -import { DGTLDResource } from '../models/dgt-ld-resource.model'; -import { DGTWorkflowService } from '../../workflow/services/dgt-workflow.service'; - -@DGTInjectable() -export class DGTLDService { - - constructor( - private logger: DGTLoggerService, - private cache: DGTCacheService, - private exchanges: DGTExchangeService, - private paramChecker: DGTParameterCheckerService, - private connectors: DGTConnectorService, - private workflows: DGTWorkflowService - ) { - } - - public query(filter: DGTLDFilter, transformer: DGTLDTransformer): Observable { - this.logger.debug(DGTLDService.name, 'Querying cache', { filter, transformer }); - - return of({ filter, transformer }) - .pipe( - switchMap(data => this.exchanges.query({}) - .pipe(map(exchanges => ({ ...data, exchanges })))), - tap(data => this.logger.debug(DGTLDService.name, 'Retrieved exchanges', data)), - mergeMap(data => zip(...data.exchanges.map(exchange => this.queryForExchange(exchange, data.transformer))) - .pipe(map(valuesOfValues => ({ ...data, values: _.flatten(valuesOfValues) })))), - switchMap(data => this.cache.save(transformer, data.values) - .pipe(map(saved => ({ ...data, saved })))), - tap(data => this.logger.debug(DGTLDService.name, 'Stored values in cache', data)), - switchMap(data => this.cache.query(transformer, filter)), - ); - } - - private queryForExchange(exchange: DGTExchange, transformer: DGTLDTransformer): Observable { - this.logger.debug(DGTLDService.name, 'Getting values for exchange', { exchange }); - - this.paramChecker.checkParametersNotNull({ exchange }); - - return of({ exchange, transformer }) - .pipe( - switchMap((data) => this.connectors.query(data.exchange, transformer) - .pipe(map(resources => ({ ...data, resources })))), - switchMap(data => this.workflows.execute(data.exchange, data.resources)) - ); - } -} diff --git a/projects/dgt-shared-data/src/lib/logic/models/dgt-function-result-state.model.ts b/projects/dgt-shared-data/src/lib/logic/models/dgt-function-result-state.model.ts deleted file mode 100644 index 811de399..00000000 --- a/projects/dgt-shared-data/src/lib/logic/models/dgt-function-result-state.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTFunctionResultState { - SUCCESS, NOACTION, FAILURE -} diff --git a/projects/dgt-shared-data/src/lib/logic/models/dgt-function-result.model.ts b/projects/dgt-shared-data/src/lib/logic/models/dgt-function-result.model.ts deleted file mode 100644 index 09b01c65..00000000 --- a/projects/dgt-shared-data/src/lib/logic/models/dgt-function-result.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTFunctionResultState } from './dgt-function-result-state.model'; - -export interface DGTFunctionResult { - result: T; - state: DGTFunctionResultState; - finished: Date; -} diff --git a/projects/dgt-shared-data/src/lib/logic/services/dgt-logic.service.ts b/projects/dgt-shared-data/src/lib/logic/services/dgt-logic.service.ts deleted file mode 100644 index 2021af20..00000000 --- a/projects/dgt-shared-data/src/lib/logic/services/dgt-logic.service.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Observable } from 'rxjs'; - -export abstract class DGTLogicService { - public abstract execute(name: string, data: T): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-type.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-type.model.ts deleted file mode 100644 index be70750b..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-type.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTActivityType { - CREATED = 'created', - UPDATED = 'updated' -} diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-visibility.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-visibility.model.ts deleted file mode 100644 index 6e13ffdd..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-activity-visibility.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTActivityVisibility { - PRIVATE = 'private', - SHARED = 'shared' -} diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-mock-database.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-mock-database.model.ts deleted file mode 100644 index 990591bb..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-mock-database.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTMap } from '@digita-ai/dgt-shared-utils'; -import { DGTLDResource } from '@digita-ai/dgt-shared-data/public-api'; - -export class DGTMockDatabase extends DGTMap { - constructor(map: DGTMap | Array<{ key: string, value: DGTLDResource[] }> = null) { - super(map); - } -} diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition-operator.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition-operator.model.ts deleted file mode 100644 index 3c4dff57..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition-operator.model.ts +++ /dev/null @@ -1 +0,0 @@ -export type DGTQueryConditionOperator = '==' | '<' | '>'; diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition.model.ts deleted file mode 100644 index 65ab98cb..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-condition.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTQueryConditionOperator } from './dgt-query-condition-operator.model'; - -export interface DGTQueryCondition { - field: string; - operator: DGTQueryConditionOperator; - value: any; -} diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-pagination.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-pagination.model.ts deleted file mode 100644 index db0d7836..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query-pagination.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DGTQueryPagination { - page: number; - size: number; -} diff --git a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query.model.ts b/projects/dgt-shared-data/src/lib/metadata/models/dgt-query.model.ts deleted file mode 100644 index 01aea365..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/models/dgt-query.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTQueryCondition } from './dgt-query-condition.model'; -import { DGTQueryPagination } from './dgt-query-pagination.model'; - -export interface DGTQuery { - conditions: Array; - pagination?: DGTQueryPagination; -} diff --git a/projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.spec.ts b/projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.spec.ts deleted file mode 100644 index a5712a97..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.spec.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* tslint:disable:no-unused-variable */ - -import { async } from '@angular/core/testing'; -import { DGTQueryService } from './dgt-query.service'; -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { DGTQuery } from '../models/dgt-query.model'; - -describe('DGTQueryService', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTQueryService); - - it('should execute with a single condition on a single string field', async(() => { - const entities: { field1: string }[] = [ - { field1: 'hello' }, - { field1: 'hello' }, - { field1: null }, - { field1: 'hello1' } - ]; - const query: DGTQuery = { - conditions: [ - { - field: 'field1', - operator: '==', - value: 'hello' - } - ] - }; - - const result = testService.service.execute<{ field1: string }[]>(entities, query); - - expect(result.length).toEqual(2); - })); - - it('should execute with a single condition on a single number field', async(() => { - const entities: { field1: number }[] = [ - { field1: 5 }, - { field1: 5 }, - { field1: null }, - { field1: 7 } - ]; - const query: DGTQuery = { - conditions: [ - { - field: 'field1', - operator: '==', - value: 5 - } - ] - }; - - const result = testService.service.execute<{ field1: number }[]>(entities, query); - - expect(result.length).toEqual(2); - })); - - it('should execute with a single condition on a single nested field', async(() => { - const entities: { field1: { field2: string } }[] = [ - { field1: { field2: 'hello' } }, - { field1: { field2: 'hello' } }, - { field1: null }, - { field1: { field2: 'hello1' } } - ]; - const query: DGTQuery = { - conditions: [ - { - field: 'field1.field2', - operator: '==', - value: 'hello' - } - ] - }; - - const result = testService.service.execute<{ field1: { field2: string } }[]>(entities, query); - - expect(result.length).toEqual(2); - })); - - it('should execute with multiple conditions on multiple string fields', async(() => { - const entities: { field1: string, field2: string }[] = [ - { field1: 'hello', field2: 'world' }, - { field1: 'hello', field2: 'world1' }, - { field1: null, field2: 'world' }, - { field1: 'hello1', field2: 'world' } - ]; - const query: DGTQuery = { - conditions: [ - { - field: 'field1', - operator: '==', - value: 'hello' - }, - { - field: 'field2', - operator: '==', - value: 'world' - } - ] - }; - - const result = testService.service.execute<{ field1: string, field2: string }[]>(entities, query); - - expect(result.length).toEqual(1); - })); -}); diff --git a/projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.ts b/projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.ts deleted file mode 100644 index e257ff0c..00000000 --- a/projects/dgt-shared-data/src/lib/metadata/services/dgt-query.service.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTQuery } from '../models/dgt-query.model'; - - -@DGTInjectable() -export class DGTQueryService { - public execute(entities: T, query: DGTQuery): T { - let res = entities; - - if (query && query.conditions && query.conditions.length > 0 && Array.isArray(res)) { - const self = this; - - query.conditions.forEach((condition) => { - res = (res as unknown as any[]).filter((entity) => { - let meetsConditions = false; - const entityValue = self.getProperty(entity, condition.field); - - if (condition.operator === '==') { - meetsConditions = entityValue === condition.value; - } else if (condition.operator === '<') { - meetsConditions = entityValue < condition.value; - } else if (condition.operator === '>') { - meetsConditions = entityValue > condition.value; - } - - return meetsConditions; - }) as unknown as T; - }); - } - - if (query && query.pagination && Array.isArray(res)) { - const start = query.pagination.page * query.pagination.size; - const end = (query.pagination.page + 1) * query.pagination.size - 1; - - res = res.slice(start, end) as unknown as T; - } - - return res; - } - - private getProperty(entity: any, key: string): any { - let res = entity; - - if (key && entity && typeof entity === 'object') { - const keyParts: string[] = key.split('.'); - - if (keyParts.length > 0) { - keyParts.forEach(keyPart => { - if (keyPart && res) { - res = res[keyPart]; - } - }); - } - } - - return res; - } -} diff --git a/projects/dgt-shared-data/src/lib/profile/models/dgt-profile.model.ts b/projects/dgt-shared-data/src/lib/profile/models/dgt-profile.model.ts deleted file mode 100644 index 10c7281d..00000000 --- a/projects/dgt-shared-data/src/lib/profile/models/dgt-profile.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTLDTypeRegistration } from '../../linked-data/models/dgt-ld-type-registration.model'; - -/** Representation of a user's profile */ -export interface DGTProfile extends DGTLDResource { - avatar: string; - fullName: string; - publicTypeIndex: string; - privateTypeIndex: string; - typeRegistrations: DGTLDTypeRegistration[]; -} - diff --git a/projects/dgt-shared-data/src/lib/profile/services/dgt-profile-solid.service.ts b/projects/dgt-shared-data/src/lib/profile/services/dgt-profile-solid.service.ts deleted file mode 100644 index f292f3c1..00000000 --- a/projects/dgt-shared-data/src/lib/profile/services/dgt-profile-solid.service.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { DGTProfileService } from './dgt-profile.service'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTProfile } from '../models/dgt-profile.model'; -import { Observable, of } from 'rxjs'; -import { switchMap, map, tap } from 'rxjs/operators'; -import { DGTProfileTransformerService } from './dgt-profile-transformer.service'; -import { DGTLDTypeRegistrationService } from '../../linked-data/services/dgt-ld-type-registration.service'; -import { DGTConnector } from '../../connector/models/dgt-connector.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; -import { DGTConnectionService } from '../../connection/services/dgt-connection-abstract.service'; - -@DGTInjectable() -/** Service used for retrieving and updating a user's profile */ -export class DGTProfileSolidService extends DGTProfileService { - constructor( - private connector: DGTConnector, - private transformer: DGTProfileTransformerService, - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService, - private typeRegistrations: DGTLDTypeRegistrationService, - private connections: DGTConnectionService, - ) { - super(); - } - - /** - * Returns a user's profile - * @param connection connection to retrieve the profile information from - * @param source source to retrieve the profile information from - */ - public get(exchange: DGTExchange): Observable { - this.logger.debug(DGTProfileSolidService.name, 'Starting to retrieve profile', { exchange }) - - this.paramChecker.checkParametersNotNull({ exchange }); - - return of({ exchange }) - .pipe( - switchMap(data => this.connections.get(exchange.connection) - .pipe(map(connection => ({ ...data, connection })))), - switchMap(data => this.connector.query(data.connection.configuration.webId, data.exchange, this.transformer) - .pipe(map(profiles => ({ ...data, profile: profiles[0] })))), - tap(data => this.logger.debug(DGTProfileSolidService.name, 'Retrieved profile data', data)), - switchMap(data => this.typeRegistrations.all(data.profile) - .pipe(map(typeRegistrations => ({ ...data, typeRegistrations, profile: ({ ...data.profile, typeRegistrations }) })))), - tap(data => this.logger.debug(DGTProfileSolidService.name, 'Retrieved type registrations for profile', data)), - map(data => data.profile) - ); - } - - /** - * Updates a user's profile - * @param originalProfile the original profile - * @param updatedProfile the updated profile - * @param connection connection to retrieve the profile information from - * @param source source to retrieve the profile information from - */ - public update(originalProfile: DGTProfile, updatedProfile: DGTProfile): Observable { - this.paramChecker.checkParametersNotNull({ originalProfile, updatedProfile }); - - return of({ originalProfile, updatedProfile }) - .pipe( - switchMap(data => this.connector.update([{ original: data.originalProfile, updated: data.updatedProfile }], this.transformer) - .pipe(map(updates => updates[0])) - ), - ); - } -} diff --git a/projects/dgt-shared-data/src/lib/profile/services/dgt-profile-transformer.service.ts b/projects/dgt-shared-data/src/lib/profile/services/dgt-profile-transformer.service.ts deleted file mode 100644 index e7baeb71..00000000 --- a/projects/dgt-shared-data/src/lib/profile/services/dgt-profile-transformer.service.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { Observable, of } from 'rxjs'; - -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import { DGTProfile } from '../models/dgt-profile.model'; -import { DGTLDTransformer } from '../../linked-data/models/dgt-ld-transformer.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTConnectionSolid } from '../../connection/models/dgt-connection-solid.model'; -import { DGTLDTermType } from '../../linked-data/models/dgt-ld-term-type.model'; -import { DGTLDDataType } from '../../linked-data/models/dgt-ld-data-type.model'; - -@DGTInjectable() -/** Transforms profiles to linked data and vice-versa */ -export class DGTProfileTransformerService implements DGTLDTransformer { - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { } - - /** - * Converts linked data to profiles. - * @param resources Entities to be transformed to profiles. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of profiles. - */ - public toDomain(resources: DGTLDResource[]): Observable { - this.paramChecker.checkParametersNotNull({ entities: resources }); - this.logger.debug(DGTProfileTransformerService.name, 'Starting to transform entity to domain', { entities: resources }); - - let res: DGTProfile[] = null; - - res = resources.map(entity => this.transformOne(entity)); - - this.logger.debug(DGTProfileTransformerService.name, 'Transformed values to profiles', { entities: resources, res }); - return of(res); - } - - /** - * Converts profiles to linked data. - * @param profiles The profiles which will be transformed to linked data. - * @param connection The connection on which the profiles are stored. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns Observable of linked data entities. - */ - public toTriples(profiles: DGTProfile[]): Observable { - this.logger.debug(DGTProfileTransformerService.name, 'Starting to transform to linked data', { events: profiles }); - this.paramChecker.checkParametersNotNull({ profiles }); - - const entities = profiles.map(profile => { - let triples = profile.triples; - const uri = profile.uri; - const accountUri = uri.split('/profile/card#me')[0]; - const profileUri = `${accountUri}/profile`; - const documentSubject = { - value: '#me', - termType: DGTLDTermType.REFERENCE - }; - - triples = [ - { - predicate: 'http://www.w3.org/2006/vcard/ns#fn', - subject: documentSubject, - object: { - termType: DGTLDTermType.LITERAL, - dataType: DGTLDDataType.STRING, - value: profile.fullName - }, - }, - { - predicate: 'http://www.w3.org/2006/vcard/ns#hasPhoto', - subject: documentSubject, - object: { - termType: DGTLDTermType.REFERENCE, - dataType: DGTLDDataType.STRING, - value: profile.avatar ? `${profileUri}/${profile.avatar}` : null - }, - }, - { - predicate: 'http://www.w3.org/ns/solid/terms#publicTypeIndex', - subject: documentSubject, - object: { - termType: DGTLDTermType.REFERENCE, - dataType: DGTLDDataType.STRING, - value: profile.publicTypeIndex - }, - }, - { - predicate: 'http://www.w3.org/ns/solid/terms#privateTypeIndex', - subject: documentSubject, - object: { - termType: DGTLDTermType.REFERENCE, - dataType: DGTLDDataType.STRING, - value: profile.privateTypeIndex - }, - }, - ]; - - const newResource: DGTLDResource = { - ...profile, - uri, - triples: [...triples] - }; - - this.logger.debug(DGTProfileTransformerService.name, 'Transformed profile to linked data', { newEntity: newResource, event: profile }); - - return newResource; - }); - - this.logger.debug(DGTProfileTransformerService.name, 'Transformed profiles to linked data', { entities, events: profiles }); - - return of(entities); - } - - /** - * Converts linked data to a single profile. - * @param resource Entity to be transformed to profiles. - * @throws DGTErrorArgument when arguments are incorrect. - * @returns The converted profile. - */ - private transformOne(resource: DGTLDResource): DGTProfile { - this.logger.debug(DGTProfileTransformerService.name, 'Starting to transform one entity', { resource }); - this.paramChecker.checkParametersNotNull({ entity: resource }); - - const uri = resource.uri; - const accountUri = uri.split('/profile/card#me')[0]; - const profileUri = `${accountUri}/profile`; - - const fullName = resource.triples.find(value => - value.subject.value === uri && - (value.predicate === 'http://www.w3.org/2006/vcard/ns#fn' || value.predicate === 'http://xmlns.com/foaf/0.1/name') - ); - - const avatar = resource.triples.find(value => - value.subject.value === uri && - value.predicate === 'http://www.w3.org/2006/vcard/ns#hasPhoto' - ); - - const publicTypeIndex = resource.triples.find(value => - value.subject.value === uri && - value.predicate === 'http://www.w3.org/ns/solid/terms#publicTypeIndex' - ); - - const privateTypeIndex = resource.triples.find(value => - value.subject.value === uri && - value.predicate === 'http://www.w3.org/ns/solid/terms#privateTypeIndex' - ); - - return { - uri, - fullName: fullName ? fullName.object.value : null, - privateTypeIndex: privateTypeIndex ? privateTypeIndex.object.value : null, - publicTypeIndex: publicTypeIndex ? publicTypeIndex.object.value : null, - avatar: avatar ? `${profileUri}/${avatar.object.value}` : null, - triples: resource.triples, - typeRegistrations: [], - exchange: resource.exchange, - }; - } -} diff --git a/projects/dgt-shared-data/src/lib/profile/services/dgt-profile.service.ts b/projects/dgt-shared-data/src/lib/profile/services/dgt-profile.service.ts deleted file mode 100644 index 0ef2945a..00000000 --- a/projects/dgt-shared-data/src/lib/profile/services/dgt-profile.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTProfile } from '../models/dgt-profile.model'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; - -export abstract class DGTProfileService { - public abstract get(exchange: DGTExchange): Observable; - public abstract update(originalProfile: DGTProfile, updatedProfile: DGTProfile): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/purpose/models/dgt-purpose.model.ts b/projects/dgt-shared-data/src/lib/purpose/models/dgt-purpose.model.ts deleted file mode 100644 index dcfe1665..00000000 --- a/projects/dgt-shared-data/src/lib/purpose/models/dgt-purpose.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTPurpose extends DGTLDResource { - icon: string; - description: string; - predicates: string[]; - label?: string; - aclNeeded?: string[]; -} diff --git a/projects/dgt-shared-data/src/lib/purpose/services/dgt-purpose.service.ts b/projects/dgt-shared-data/src/lib/purpose/services/dgt-purpose.service.ts deleted file mode 100644 index bb31e7d6..00000000 --- a/projects/dgt-shared-data/src/lib/purpose/services/dgt-purpose.service.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { Observable } from 'rxjs'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; -import { DGTPurpose } from '../models/dgt-purpose.model'; - -@DGTInjectable() -export abstract class DGTPurposeService implements DGTLDResourceService { - public abstract get(purposeId: string): Observable; - public abstract query(filter: Partial): Observable; - public abstract save(resource: DGTPurpose): Observable; - public abstract delete(resource: DGTPurpose): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid-jwt-extractor.service.ts b/projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid-jwt-extractor.service.ts deleted file mode 100644 index 18b5f41c..00000000 --- a/projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid-jwt-extractor.service.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { Injectable } from '@angular/core'; -import * as url from 'url'; - -@Injectable() -export class DGTSecurityPassportStrategySolidJWTExtractorService { - - // Note: express http converts all headers - // to lower case. - private readonly AUTH_HEADER = "authorization"; - private readonly LEGACY_AUTH_SCHEME = "JWT"; - private readonly BEARER_AUTH_SCHEME = 'bearer'; - - public fromHeader(header_name) { - return (request) => { - var token = null; - if (request.headers[header_name]) { - token = request.headers[header_name]; - } - return token; - }; - }; - - public fromBodyField(field_name) { - return (request) => { - var token = null; - if (request.body && Object.prototype.hasOwnProperty.call(request.body, field_name)) { - token = request.body[field_name]; - } - return token; - }; - }; - - public fromUrlQueryParameter(param_name) { - return (request) => { - var token = null, - parsed_url = url.parse(request.url, true); - if (parsed_url.query && Object.prototype.hasOwnProperty.call(parsed_url.query, param_name)) { - token = parsed_url.query[param_name]; - } - return token; - }; - }; - - - - public fromAuthHeaderWithScheme(auth_scheme) { - var auth_scheme_lower = auth_scheme.toLowerCase(); - return (request) => { - - var token = null; - if (request.headers[this.AUTH_HEADER]) { - var auth_params = this.parseAuthHeader(request.headers[this.AUTH_HEADER]); - if (auth_params && auth_scheme_lower === auth_params.scheme.toLowerCase()) { - token = auth_params.value; - } - } - return token; - }; - }; - - public fromAuthHeaderAsBearerToken() { - return this.fromAuthHeaderWithScheme(this.BEARER_AUTH_SCHEME); - }; - - public fromExtractors(extractors) { - if (!Array.isArray(extractors)) { - throw new TypeError('extractors.fromExtractors expects an array') - } - - return (request) => { - var token = null; - var index = 0; - while (!token && index < extractors.length) { - token = extractors[index].call(this, request); - index++; - } - return token; - } - }; - - - /** - * This extractor mimics the behavior of the v1.*.* extraction logic. - * - * This extractor exists only to provide an easy transition from the v1.*.* API to the v2.0.0 - * API. - * - * This extractor first checks the auth header, if it doesn't find a token there then it checks the - * specified body field and finally the url query parameters. - * - * @param options - * authScheme: Expected scheme when JWT can be found in HTTP Authorize header. Default is JWT. - * tokenBodyField: Field in request body containing token. Default is auth_token. - * tokenQueryParameterName: Query parameter name containing the token. Default is auth_token. - */ - public versionOneCompatibility(options) { - var authScheme = options.authScheme || this.LEGACY_AUTH_SCHEME, - bodyField = options.tokenBodyField || 'auth_token', - queryParam = options.tokenQueryParameterName || 'auth_token'; - - return (request) => { - var authHeaderExtractor = this.fromAuthHeaderWithScheme(authScheme); - var token = authHeaderExtractor(request); - - if (!token) { - var bodyExtractor = this.fromBodyField(bodyField); - token = bodyExtractor(request); - } - - if (!token) { - var queryExtractor = this.fromUrlQueryParameter(queryParam); - token = queryExtractor(request); - } - - return token; - }; - } - - private parseAuthHeader(hdrValue) { - var re = /(\S+)\s+(\S+)/; - if (typeof hdrValue !== 'string') { - return null; - } - var matches = hdrValue.match(re); - return matches && { scheme: matches[1], value: matches[2] }; - } -} diff --git a/projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid.service.ts b/projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid.service.ts deleted file mode 100644 index 89e89b03..00000000 --- a/projects/dgt-shared-data/src/lib/security/services/dgt-security-passport-strategy-solid.service.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { Strategy } from 'passport-strategy'; -import * as jwt from 'jsonwebtoken'; -import { JWT } from '@solid/jose'; - -/** - * Strategy constructor - * - * @param options - * secretOrKey: String or buffer containing the secret or PEM-encoded public key. Required unless secretOrKeyProvider is provided. - * secretOrKeyProvider: callback in the format secretOrKeyProvider(request, rawJwtToken, done)`, - * which should call done with a secret or PEM-encoded public key - * (asymmetric) for the given undecoded jwt token string and request - * combination. done has the signature function done(err, secret). - * REQUIRED unless `secretOrKey` is provided. - * jwtFromRequest: (REQUIRED) Function that accepts a reqeust as the only parameter and returns the either JWT as a string or null - * issuer: If defined issuer will be verified against this value - * audience: If defined audience will be verified against this value - * algorithms: List of strings with the names of the allowed algorithms. For instance, ["HS256", "HS384"]. - * ignoreExpiration: if true do not validate the expiration of the token. - * passReqToCallback: If true the, the verify callback will be called with args (request, jwt_payload, done_callback). - * @param verify - Verify callback with args (jwt_payload, done_callback) if passReqToCallback is false, - * (request, jwt_payload, done_callback) if true. - */ - -export class DGTSecurityPassportStrategySolidService extends Strategy { - public name = 'solid'; - public _secretOrKeyProvider; - public _verify; - public _jwtFromRequest; - public _passReqToCallback; - public _verifOpts; - - constructor(options, verify) { - super(); - - this._secretOrKeyProvider = options.secretOrKeyProvider; - - if (options.secretOrKey) { - if (this._secretOrKeyProvider) { - throw new TypeError('SolidStrategy has been given both a secretOrKey and a secretOrKeyProvider'); - } - this._secretOrKeyProvider = function (request, rawJwtToken, done) { - done(null, options.secretOrKey) - }; - } - - if (!this._secretOrKeyProvider) { - throw new TypeError('SolidStrategy requires a secret or key'); - } - - this._verify = verify; - if (!this._verify) { - throw new TypeError('SolidStrategy requires a verify callback'); - } - - this._jwtFromRequest = options.jwtFromRequest; - if (!this._jwtFromRequest) { - throw new TypeError('SolidStrategy requires a function to retrieve jwt from requests (see option jwtFromRequest)'); - } - - this._passReqToCallback = options.passReqToCallback; - var jsonWebTokenOptions = options.jsonWebTokenOptions || {}; - //for backwards compatibility, still allowing you to pass - //audience / issuer / algorithms / ignoreExpiration - //on the options. - this._verifOpts = this.assign(jsonWebTokenOptions, { - audience: options.audience, - issuer: options.issuer, - algorithms: options.algorithms, - ignoreExpiration: !!options.ignoreExpiration - }); - - } - /** - * Allow for injection of JWT Verifier. - * - * This improves testability by allowing tests to cleanly isolate failures in the JWT Verification - * process from failures in the passport related mechanics of authentication. - * - * Note that this should only be replaced in tests. - */ - public JwtVerifier(token, secretOrKey, options, callback) { - // return jwt.verify(token, secretOrKey, options, callback); - const decoded = jwt.decode(token); - - - - callback(null, decoded); - - return decoded; - }; - - /** - * Authenticate request based on JWT obtained from header or post body - */ - public authenticate(req, options) { - var token = this._jwtFromRequest(req); - - if (!token) { - return this.fail(null, null); - } - - this._secretOrKeyProvider(req, token, (secretOrKeyError, secretOrKey) => { - if (secretOrKeyError) { - this.fail(secretOrKeyError) - } else { - // Verify the JWT - this.JwtVerifier(token, secretOrKey, this._verifOpts, (jwt_err, payload) => { - if (jwt_err) { - return this.fail(jwt_err); - } else { - // Pass the parsed token to the user - var verified = (err, user, info) => { - if (err) { - return this.error(err); - } else if (!user) { - return this.fail(info); - } else { - return this.success(user, info); - } - }; - - try { - if (this._passReqToCallback) { - this._verify(req, payload, verified); - } else { - this._verify(payload, verified); - } - } catch (ex) { - this.error(ex); - } - } - }); - } - }); - }; - - private assign(target, varArgs) { - if (target == null) { // TypeError if undefined or null - throw new TypeError('Cannot convert undefined or null to object'); - } - - var to = Object(target); - - for (var index = 1; index < arguments.length; index++) { - var nextSource = arguments[index]; - - if (nextSource != null) { // Skip over if undefined or null - for (var nextKey in nextSource) { - // Avoid bugs when hasOwnProperty is shadowed - if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { - to[nextKey] = nextSource[nextKey]; - } - } - } - } - return to; - } -} diff --git a/projects/dgt-shared-data/src/lib/source/models/dgt-source-solid-configuration.model.ts b/projects/dgt-shared-data/src/lib/source/models/dgt-source-solid-configuration.model.ts deleted file mode 100644 index 1996ee02..00000000 --- a/projects/dgt-shared-data/src/lib/source/models/dgt-source-solid-configuration.model.ts +++ /dev/null @@ -1,57 +0,0 @@ -export interface DGTSourceSolidConfiguration { - // IDP Discovery - issuer: string; - authorization_endpoint: string; - token_endpoint: string; - userinfo_endpoint: string; - jwks_uri: string; - registration_endpoint: string; - response_types_supported: string[]; - response_modes_supported: string[]; - grant_types_supported: string[]; - subject_types_supported: string[]; - id_token_signing_alg_values_supported: string[]; - token_endpoint_auth_methods_supported: string[]; - token_endpoint_auth_signing_alg_values_supported: string[]; - display_values_supported: string[]; - claim_types_supported: string[]; - claims_supported: string[]; - claims_parameter_supported: boolean; - request_parameter_supported: boolean; - request_uri_parameter_supported: boolean; - require_request_uri_registration: boolean; - check_session_iframe: string; - end_session_endpoint: string; - - // Client registration - callbackUri: string; - client_id: string; - client_secret: string; - redirect_uris: string[]; - response_types: string[]; - grant_types: string[]; - application_type: string; - client_name: string; - logo_uri: string; - client_uri: string; - id_token_signed_response_alg: string; - token_endpoint_auth_method: string; - default_max_age: number; - post_logout_redirect_uris: string[]; - frontchannel_logout_session_required: boolean; - registration_access_token: string; - registration_client_uri: string; - client_id_issued_at: number; - client_secret_expires_at: number; - - // Key configuration - keys: { - kid: string, - kty: string, - alg: string, - n: string, - e: string, - key_ops: string[], - ext: boolean - }[]; -} diff --git a/projects/dgt-shared-data/src/lib/source/models/dgt-source-solid.model.ts b/projects/dgt-shared-data/src/lib/source/models/dgt-source-solid.model.ts deleted file mode 100644 index 63e8602f..00000000 --- a/projects/dgt-shared-data/src/lib/source/models/dgt-source-solid.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTSource } from './dgt-source.model'; -import { DGTSourceSolidConfiguration } from './dgt-source-solid-configuration.model'; - -export interface DGTSourceSolid extends DGTSource { - -} diff --git a/projects/dgt-shared-data/src/lib/source/models/dgt-source-state.model.ts b/projects/dgt-shared-data/src/lib/source/models/dgt-source-state.model.ts deleted file mode 100644 index 499ea7f7..00000000 --- a/projects/dgt-shared-data/src/lib/source/models/dgt-source-state.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTSourceState { - PREPARED = 'prepared', - NOTPREPARED = 'not prepared', -} diff --git a/projects/dgt-shared-data/src/lib/source/models/dgt-source-type.model.ts b/projects/dgt-shared-data/src/lib/source/models/dgt-source-type.model.ts deleted file mode 100644 index cedd7e25..00000000 --- a/projects/dgt-shared-data/src/lib/source/models/dgt-source-type.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTSourceType { - SOLID = 'solid', - MSSQL = 'mssql', - GRAVATAR = 'gravatar', -} diff --git a/projects/dgt-shared-data/src/lib/source/models/dgt-source.model.ts b/projects/dgt-shared-data/src/lib/source/models/dgt-source.model.ts deleted file mode 100644 index b2afb1a7..00000000 --- a/projects/dgt-shared-data/src/lib/source/models/dgt-source.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DGTSourceType } from './dgt-source-type.model'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTSourceState } from './dgt-source-state.model'; - -export interface DGTSource extends DGTLDResource { - icon: string; - description: string; - type: DGTSourceType; - configuration: T; - state?: DGTSourceState; -} diff --git a/projects/dgt-shared-data/src/lib/source/services/dgt-source.service.ts b/projects/dgt-shared-data/src/lib/source/services/dgt-source.service.ts deleted file mode 100644 index 60d9cd93..00000000 --- a/projects/dgt-shared-data/src/lib/source/services/dgt-source.service.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { DGTSource } from '../models/dgt-source.model'; -import { Observable } from 'rxjs'; -import { DGTErrorArgument, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; -import { DGTLDResourceService } from '../../linked-data/services/dgt-ld-resource.service'; - -@DGTInjectable() -export abstract class DGTSourceService implements DGTLDResourceService> { - - constructor( - protected logger: DGTLoggerService, - ) { } - - public abstract get(id: string): Observable>; - public abstract query(filter: Partial>): Observable[]>; - public abstract save(resource: DGTSource): Observable>; - public abstract delete(resource: DGTSource): Observable>; - - public abstract linkSource(inviteId: string, sourceId: string): Observable<{ state: string; loginUri: string; }>; - - /** - * Returns a list of sources matching query - * @param query string to match - * @param sources sources to filter - */ - public filterSources(query: string, sources: DGTSource[]): DGTSource[] { - return sources.filter((source: DGTSource) => { - const issuer: string = source.configuration.issuer.toLowerCase(); - const desc: string = source.description.toLowerCase(); - return issuer.includes(query) - || desc.includes(query) - || query.includes(issuer.split('//')[1]); - // "https://dirk.solid.community/profile/card#me" - // should not show an external source because solid.community is known - }); - } - - /** - * Checks if a given uri has a solid server running - * @param query uri to check - */ - public isExternalSource(query: string): Observable<{ success: boolean, uri: string }> { - const uri = this.parseUri(query); - throw new DGTErrorArgument('not implemented', 'isExternalSource'); - } - - /** - * Parses a uri - */ - public parseUri(uri: string): string { - // Add http prefix if necessary - if (!/^https?:\/\//.test(uri)) { - uri = 'https://'.concat(uri); - } - try { - return new URL(uri).origin; - } catch (err) { - this.logger.debug(DGTSourceService.name, 'URL is not valid', uri); - return null; - } - } -} diff --git a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-memory.model.ts b/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-memory.model.ts deleted file mode 100644 index 4cc2ee36..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-memory.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTSparqlDataset } from './dgt-sparql-dataset.model'; -import { DGTSparqlDatasetType } from './dgt-sparql-dataset-type.model'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; - -export interface DGTSparqlDatasetMemory extends DGTSparqlDataset { - type: DGTSparqlDatasetType.MEMORY; - triples: DGTLDTriple[]; -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-type.model.ts b/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-type.model.ts deleted file mode 100644 index 793e951b..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset-type.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTSparqlDatasetType { - MEMORY = 'memory' -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset.model.ts b/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset.model.ts deleted file mode 100644 index 29b80688..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-dataset.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTSparqlDatasetType } from './dgt-sparql-dataset-type.model'; - -export interface DGTSparqlDataset { - type: DGTSparqlDatasetType; -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-result.model.ts b/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-result.model.ts deleted file mode 100644 index c0676d1d..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/models/dgt-sparql-result.model.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface DGTSparqlResult { - head: { - vars: string[], - links: string[], - }, - results: { - bindings: { - [key: string]: { - type: string, - value: string, - } - }[], - } -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-communica.service.ts b/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-communica.service.ts deleted file mode 100644 index 1ca16fd4..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-communica.service.ts +++ /dev/null @@ -1,113 +0,0 @@ - -import { DGTSparqlService } from './dgt-sparql.service'; -import { Observable, from, of } from 'rxjs'; -import { DGTSparqlDatasetMemory } from '../models/dgt-sparql-dataset-memory.model'; -import { DGTLoggerService, DGTErrorArgument, DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { ActorInitSparql } from '@comunica/actor-init-sparql'; -import { newEngine } from '@comunica/actor-init-sparql-rdfjs'; -import { switchMap, map } from 'rxjs/operators'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; -import { Store, Quad, Quad_Subject, Quad_Predicate, Quad_Object, DataFactory, Term } from 'n3'; -import { DGTLDNode } from '../../linked-data/models/dgt-ld-node.model'; -import { DGTLDTermType } from '../../linked-data/models/dgt-ld-term-type.model'; -import { DGTSparqlResult } from '../models/dgt-sparql-result.model'; -import { Bindings, IActorQueryOperationOutputBindings } from '@comunica/bus-query-operation'; -import { IQueryResult } from '@comunica/actor-init-sparql/index-browser'; - -@DGTInjectable() -export class DGTSparqlCommunicaService extends DGTSparqlService { - private engine: ActorInitSparql; - - constructor(private logger: DGTLoggerService) { - super(); - - this.engine = newEngine(); - } - - public query(dataset: DGTSparqlDatasetMemory, query: string): Observable { - const store = this.toStore(dataset.triples); - - this.logger.debug(DGTSparqlCommunicaService.name, 'Converted triples to n3 store', { store }); - - return from( - this.engine.query(query, - { - sources: [ - { type: 'rdfjsSource', value: store } - ] - } - ) - ) - .pipe( - map((result: IQueryResult) => ({ result: result.type === 'bindings' ? result as IActorQueryOperationOutputBindings : null })), - switchMap(data => { - const bindingsList: Bindings[] = []; - - return new Observable((observer) => { - data.result.bindingsStream.on('end', () => { - this.logger.debug(DGTSparqlCommunicaService.name, 'On end'); - - const res: DGTSparqlResult = { - head: { - vars: data.result.variables, - links: null - }, - results: { - bindings: bindingsList as any - } - } - - observer.next(res); - observer.complete(); - }); - - data.result.bindingsStream.on('data', (bindings: Bindings) => { - this.logger.debug(DGTSparqlCommunicaService.name, 'On data', { bindings }); - - bindingsList.push(bindings); - }); - }) - }), - ); - } - - private toStore(triples: DGTLDTriple[]): Store { - this.logger.debug(DGTSparqlCommunicaService.name, 'Starting to convert triples to n3 store', { triples }); - - if (!triples) { - throw new DGTErrorArgument('Argument triples should be set.', triples); - } - - const res = new Store(); - - const quads: Quad[] = triples.map(triple => { - const subject = this.toTerm(triple.subject) as Quad_Subject; - const predicate = DataFactory.namedNode(triple.predicate) as Quad_Predicate; - const object = this.toTerm(triple.object) as Quad_Object; - - return DataFactory.quad(subject, predicate, object); - }); - - res.addQuads(quads) - - return res; - } - - private toTerm(node: DGTLDNode): Term { - let res = null; - - if (node) { - if (node.termType === DGTLDTermType.LITERAL) { - res = DataFactory.literal(node.value, node.dataType); - } else if (node.termType === DGTLDTermType.REFERENCE) { - res = DataFactory.namedNode(node.value); - } else { - res = DataFactory.literal(node.value); - } - } else { - res = DataFactory.blankNode; - } - - return res; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-query.service.ts b/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-query.service.ts deleted file mode 100644 index d0fbf66c..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql-query.service.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { DGTErrorArgument, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import _ from 'lodash'; -import { Generator, Update, Triple, Term } from 'sparqljs'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; -import { DGTLDTermType } from '../../linked-data/models/dgt-ld-term-type.model'; -import { DGTLDTriple } from '../../linked-data/models/dgt-ld-triple.model'; - -/** Transforms linked data to trustedapps, and the other way around. */ -@DGTInjectable() -export class DGTSparqlQueryService { - - constructor( - private logger: DGTLoggerService, - ) { } - - public generateSparqlUpdate( - updatedEntities: DGTLDResource[], - updateType: 'insert' | 'delete' | 'insertdelete', - originalEntities?: DGTLDResource[] - ): string { - if (!updatedEntities) { - throw new DGTErrorArgument( - 'updatedEntities should be set.', - updatedEntities - ); - } - if (!updateType) { - throw new DGTErrorArgument('updateType should be set.', updateType); - } - if (updateType === 'insertdelete' && !originalEntities) { - throw new DGTErrorArgument( - 'originalEntities should be set.', - originalEntities - ); - } - - this.logger.debug( - DGTSparqlQueryService.name, - 'Starting to generate SparQL for update', - { updatedEntities } - ); - - const updatedTriples: DGTLDTriple[] = _.flatten( - updatedEntities.map((entity) => entity.triples) - ); - - this.logger.debug( - DGTSparqlQueryService.name, - 'Transformed updatedEntities to triples', - { updatedTriples, updatedEntities } - ); - - const insertTriples: Triple[] = this.convertToTriples(updatedTriples); - - let deleteTriples: Triple[]; - if (updateType === 'insertdelete') { - const originalTriples: DGTLDTriple[] = _.flatten( - originalEntities.map((entity) => entity.triples) - ); - this.logger.debug( - DGTSparqlQueryService.name, - 'Transformed originalEntities to triples', - { originalTriples, originalEntities } - ); - deleteTriples = this.convertToTriples(originalTriples); - } - - this.logger.debug(DGTSparqlQueryService.name, 'Parsed triples.', { - insertTriples, - deleteTriples, - }); - - let query: Update = null; - - if (updateType === 'delete') { - query = { - type: 'update', - prefixes: {}, - updates: [ - { - updateType, - delete: [{ type: 'bgp', triples: insertTriples }], - }, - ], - }; - } else if (updateType === 'insert') { - query = { - type: 'update', - prefixes: {}, - updates: [ - { - updateType, - insert: [{ type: 'bgp', triples: insertTriples }], - }, - ], - }; - } else if (updateType === 'insertdelete') { - query = { - type: 'update', - prefixes: {}, - updates: [ - { - updateType, - insert: [{ type: 'bgp', triples: insertTriples }], - delete: [{ type: 'bgp', triples: deleteTriples }], - where: [{ type: 'bgp', triples: deleteTriples }], - }, - ], - }; - } - - this.logger.debug(DGTSparqlQueryService.name, 'Created query object.', { - query, - updatedEntities, - insertTriples, - deleteTriples, - }); - - const generator = new Generator(); - const body = generator.stringify(query); - - this.logger.debug(DGTSparqlQueryService.name, 'Created query string.', { - body, - query, - }); - - return body; - } - - public convertToTriples(triples: DGTLDTriple[]): Triple[] { - return triples.map((triple: DGTLDTriple) => { - let object: Term = `${triple.object.value}` as Term; - - if (triple.object.termType === DGTLDTermType.LITERAL) { - object = `\"${triple.object.value}\"^^${triple.object.dataType}` as Term; - } - - return { - subject: triple.subject.value as Term, - predicate: triple.predicate as Term, - object, - }; - }); - } -} diff --git a/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql.service.ts b/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql.service.ts deleted file mode 100644 index 09071637..00000000 --- a/projects/dgt-shared-data/src/lib/sparql/services/dgt-sparql.service.ts +++ /dev/null @@ -1,8 +0,0 @@ - -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import { DGTSparqlDataset } from '../models/dgt-sparql-dataset.model'; - -@DGTInjectable() -export abstract class DGTSparqlService { - -} \ No newline at end of file diff --git a/projects/dgt-shared-data/src/lib/workflow/actions/dgt-map-field.workflow-action.ts b/projects/dgt-shared-data/src/lib/workflow/actions/dgt-map-field.workflow-action.ts deleted file mode 100644 index f21a6d59..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/actions/dgt-map-field.workflow-action.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { DGTWorkflowAction } from '../models/dgt-workflow-action.model'; -import { DGTWorkflowActionType } from '../models/dgt-workflow-action-type.model'; -import { DGTErrorArgument, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { Observable, of } from 'rxjs'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export class DGTMapFieldWorkflowAction implements DGTWorkflowAction { - public type = DGTWorkflowActionType.REMOVE_PREFIX; - - constructor(private oldPredicate: string, private newPredicate: string, private logger: DGTLoggerService) { } - - public execute(resources: DGTLDResource[]): Observable { - this.logger.debug(DGTMapFieldWorkflowAction.name, 'Executing map field action', { oldPredicate: this.oldPredicate, newPredicate: this.newPredicate, resources }); - - if (!resources) { - throw new DGTErrorArgument('Argument resources should be set.', resources); - } - - const res = resources.map(resource => { - const updatedResource = { ...resource }; - - updatedResource.triples = updatedResource.triples.map(triple => { - const updatedTriple = { ...triple }; - - if (updatedTriple && updatedTriple.predicate === this.oldPredicate && this.newPredicate) { - updatedTriple.predicate = this.newPredicate; - } - - return updatedTriple; - }); - - return updatedResource; - }); - - return of(res); - } -} diff --git a/projects/dgt-shared-data/src/lib/workflow/actions/dgt-remove-prefix.workflow-action.ts b/projects/dgt-shared-data/src/lib/workflow/actions/dgt-remove-prefix.workflow-action.ts deleted file mode 100644 index ccd09187..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/actions/dgt-remove-prefix.workflow-action.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { DGTWorkflowAction } from '../models/dgt-workflow-action.model'; -import { DGTWorkflowActionType } from '../models/dgt-workflow-action-type.model'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { Observable, of } from 'rxjs'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export class DGTRemovePrefixWorkflowAction implements DGTWorkflowAction { - public type = DGTWorkflowActionType.REMOVE_PREFIX; - - constructor(private predicate: string, private prefix: string, private logger: DGTLoggerService) { } - - public execute(resources: DGTLDResource[]): Observable { - this.logger.debug(DGTRemovePrefixWorkflowAction.name, 'Executing remove prefix action', { predicate: this.predicate, prefix: this.prefix, resources }); - - if (!resources) { - throw new DGTErrorArgument('Argument resources should be set.', resources); - } - - const res = resources.map(resource => { - const updatedResource = { ...resource }; - - updatedResource.triples = updatedResource.triples.map(triple => { - const updatedTriple = { ...triple }; - - if (updatedTriple && updatedTriple.predicate === this.predicate, updatedTriple.object && updatedTriple.object.value.startsWith(this.prefix)) { - updatedTriple.object.value = updatedTriple.object.value.replace(this.prefix, ''); - } - - return updatedTriple; - }); - - return updatedResource; - }); - - return of(res); - } -} diff --git a/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action-type.model.ts b/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action-type.model.ts deleted file mode 100644 index b554c5da..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action-type.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTWorkflowActionType { - REMOVE_PREFIX = 'Remove prefix' -} diff --git a/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action.model.ts b/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action.model.ts deleted file mode 100644 index 4efea76b..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow-action.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTWorkflowActionType } from './dgt-workflow-action-type.model'; -import { Observable } from 'rxjs'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -export interface DGTWorkflowAction { - type: DGTWorkflowActionType; - execute(resources: DGTLDResource[]): Observable; -} diff --git a/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow.model.ts b/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow.model.ts deleted file mode 100644 index 1821bd31..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/models/dgt-workflow.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DGTWorkflowAction } from './dgt-workflow-action.model'; -import { DGTLDFilter } from '../../linked-data/models/dgt-ld-filter.model'; - -export interface DGTWorkflow { - actions: DGTWorkflowAction[]; - filter: DGTLDFilter; - source: string; - destination?: string; -} diff --git a/projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.spec.ts b/projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.spec.ts deleted file mode 100644 index 05772efe..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.spec.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { async } from '@angular/core/testing'; -import { DGTWorkflowService } from './dgt-workflow.service'; -import { DGTWorkflow } from '../models/dgt-workflow.model'; - -/* tslint:disable:no-unused-variable */ - -describe('DGTWorkflowService', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTWorkflowService); - - it('should be correctly instantiated', async(() => { - expect(testService.service).toBeTruthy(); - })); - - it('should register and get a workflow', async(() => { - const predicate = 'digita.ai/test' - - const workflow: DGTWorkflow = { - predicates: [predicate], - actions: [], - source: null //TODO - }; - testService.service.register(workflow); - - expect(testService.service.get(predicate)).toEqual([workflow]); - })); -}); diff --git a/projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.ts b/projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.ts deleted file mode 100644 index 4219d0e4..00000000 --- a/projects/dgt-shared-data/src/lib/workflow/services/dgt-workflow.service.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { DGTWorkflow } from '../models/dgt-workflow.model'; -import { Observable, of, forkJoin } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTExchange } from '../../exchanges/models/dgt-exchange.model'; -import { DGTLDFilterService } from '../../linked-data/services/dgt-ld-filter.service'; -import { DGTConnectorService } from '../../connector/services/dgt-connector.service'; -import { DGTLDResource } from '../../linked-data/models/dgt-ld-resource.model'; - -@DGTInjectable() -export class DGTWorkflowService { - - private workflows: DGTWorkflow[] = []; - - constructor( - private logger: DGTLoggerService, - private filters: DGTLDFilterService, - private connectors: DGTConnectorService, - private paramChecker: DGTParameterCheckerService, - ) { } - - public execute(exchange: DGTExchange, resources: T[]): Observable { - this.logger.debug(DGTWorkflowService.name, 'Executing workflow', { exchange, resources }); - - this.paramChecker.checkParametersNotNull({ exchange, resources }); - - return of({ exchange, resources, workflows: this.workflows.filter(workflow => workflow.source === exchange.source) }) - .pipe( - switchMap(data => (data.workflows.length === 0 ? of([data.resources]) : forkJoin(data.workflows.map(workflow => this.executeForWorkflow(workflow, data.exchange, data.resources)))) - .pipe(map(updatedTriples => ({ ...data, updatedTriples: _.flatten(updatedTriples) })))), - map(data => data.resources), - ); - } - - private executeForWorkflow(workflow: DGTWorkflow, exchange: DGTExchange, resources: DGTLDResource[]): Observable { - this.logger.debug(DGTWorkflowService.name, 'Executing a single workflow', { workflow, exchange, resources }); - - this.paramChecker.checkParametersNotNull({ workflow, resources }); - - return of({ workflow, resources, exchange }) - .pipe( - switchMap(data => this.filters.run(workflow.filter, data.resources) - .pipe(map(triples => ({ ...data, triples })))), - switchMap(data => forkJoin(workflow.actions.map(action => action.execute(data.triples))) - .pipe(map(updatedTriples => ({ ...data, updatedTriples: _.flatten(updatedTriples) })))), - switchMap(data => - data.workflow.destination ? - this.connectors.save(data.exchange, data.updatedTriples, data.workflow.destination).pipe( - map(newTriple => ({ ...data, newTriple })) - ) : of(data) - ), - map(data => data.triples), - ); - } - - public register(workflow: DGTWorkflow) { - this.logger.debug(DGTWorkflowService.name, 'Registring workflow', { workflow }); - - this.paramChecker.checkParametersNotNull({ workflow }); - - if (!this.workflows) { - this.workflows = []; - } - - this.workflows.push(workflow); - } - -} diff --git a/projects/dgt-shared-data/src/public-api.ts b/projects/dgt-shared-data/src/public-api.ts deleted file mode 100644 index eff4ef14..00000000 --- a/projects/dgt-shared-data/src/public-api.ts +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Public API Surface of dgt-shared-data - */ - -export * from './lib/dgt-shared-data.module'; -export { DGTActivityType } from './lib/metadata/models/dgt-activity-type.model'; -export { DGTActivityVisibility } from './lib/metadata/models/dgt-activity-visibility.model'; -export { DGTConsent } from './lib/consents/models/dgt-consent.model'; -export { DGTConsentService } from './lib/consents/services/dgt-consent.service'; -export { DGTConsentTransformerService } from './lib/consents/services/dgt-consent-transformer.service'; -export { DGTConsentSolidService } from './lib/consents/services/dgt-consent-solid.service'; -export { DGTExchangeService } from './lib/exchanges/services/dgt-exchange.service'; -export { DGTPurposeService } from './lib/purpose/services/dgt-purpose.service'; -export { DGTProfile } from './lib/profile/models/dgt-profile.model'; -export { DGTProfileService } from './lib/profile/services/dgt-profile.service'; -export { DGTProfileTransformerService } from './lib/profile/services/dgt-profile-transformer.service'; -export { DGTProfileSolidService } from './lib/profile/services/dgt-profile-solid.service'; -export { DGTQuery } from './lib/metadata/models/dgt-query.model'; -export { DGTQueryCondition } from './lib/metadata/models/dgt-query-condition.model'; -export { DGTQueryConditionOperator } from './lib/metadata/models/dgt-query-condition-operator.model'; -export { DGTQueryService } from './lib/metadata/services/dgt-query.service'; -export { DGTQueryPagination } from './lib/metadata/models/dgt-query-pagination.model'; -export { DGTMockDatabase } from './lib/metadata/models/dgt-mock-database.model'; -export { DGTLogicService } from './lib/logic/services/dgt-logic.service'; -export { DGTCacheService } from './lib/cache/services/dgt-cache.service'; -export { DGTCategory } from './lib/categories/models/dgt-category.model'; -export { DGTCategoryService } from './lib/categories/services/dgt-category.service'; -export { DGTLDFilter } from './lib/linked-data/models/dgt-ld-filter.model'; -export { DGTLDFilterService } from './lib/linked-data/services/dgt-ld-filter.service'; -export { DGTLDFilterType } from './lib/linked-data/models/dgt-ld-filter-type.model'; -export { DGTLDFilterSparql } from './lib/linked-data/models/dgt-ld-filter-sparql.model'; -export { DGTLDFilterBGP } from './lib/linked-data/models/dgt-ld-filter-bgp.model'; -export { DGTLDFilterHolder } from './lib/linked-data/models/dgt-ld-filter-holder.model'; -export { DGTLDFilterExchange } from './lib/linked-data/models/dgt-ld-filter-exchange.model'; -export { DGTLDTypeRegistration } from './lib/linked-data/models/dgt-ld-type-registration.model'; -export { DGTLDTypeRegistrationService } from './lib/linked-data/services/dgt-ld-type-registration.service'; -export { DGTLDTypeRegistrationTransformerService } from './lib/linked-data/services/dgt-ld-type-registration-transformer.service'; -export { DGTLDTypeRegistrationSolidService } from './lib/linked-data/services/dgt-ld-type-registration-solid.service'; -export { DGTLDTypeRegistrationMockService } from './lib/linked-data/services/dgt-ld-type-registration-mock.service'; -export { DGTLDService } from './lib/linked-data/services/dgt-ld.service'; -export { DGTLDResourceService } from './lib/linked-data/services/dgt-ld-resource.service'; -export { DGTFunctionResult } from './lib/logic/models/dgt-function-result.model'; -export { DGTFunctionResultState } from './lib/logic/models/dgt-function-result-state.model'; -export { DGTFile } from './lib/file/models/dgt-file.model'; -export { DGTFileService } from './lib/file/services/dgt-file.service'; -export { DGTFileType } from './lib/file/models/dgt-file-type.model'; -export { DGTExchange } from './lib/exchanges/models/dgt-exchange.model'; -export { DGTMapFieldWorkflowAction } from './lib/workflow/actions/dgt-map-field.workflow-action'; -export { DGTConnection } from './lib/connection/models/dgt-connection.model'; -export { DGTConnectionSolid } from './lib/connection/models/dgt-connection-solid.model'; -export { DGTConnectionSolidConfiguration } from './lib/connection/models/dgt-connection-solid-configuration.model'; -export { DGTConnectionState } from './lib/connection/models/dgt-connection-state.model'; -export { DGTConnectionService } from './lib/connection/services/dgt-connection-abstract.service'; -export { DGTRemovePrefixWorkflowAction } from './lib/workflow/actions/dgt-remove-prefix.workflow-action'; -export { DGTHolder } from './lib/holder/models/dgt-holder.model'; -export { DGTInvite } from './lib/invite/models/dgt-invite.model'; -export { DGTSourceService } from './lib/source/services/dgt-source.service'; -export { DGTSource } from './lib/source/models/dgt-source.model'; -export { DGTSourceSolid } from './lib/source/models/dgt-source-solid.model'; -export { DGTSourceSolidConfiguration } from './lib/source/models/dgt-source-solid-configuration.model'; -export { DGTConnector } from './lib/connector/models/dgt-connector.model'; -export { DGTSourceType } from './lib/source/models/dgt-source-type.model'; -export { DGTLDDataType } from './lib/linked-data/models/dgt-ld-data-type.model'; -export { DGTLDResource } from './lib/linked-data/models/dgt-ld-resource.model'; -export { DGTLDNode } from './lib/linked-data/models/dgt-ld-node.model'; -export { DGTLDTermType } from './lib/linked-data/models/dgt-ld-term-type.model'; -export { DGTLDTransformer } from './lib/linked-data/models/dgt-ld-transformer.model'; -export { DGTLDTriple } from './lib/linked-data/models/dgt-ld-triple.model'; -export { DGTLDUtils } from './lib/linked-data/services/dgt-ld-utils.service'; -export { DGTLDTripleFactoryService } from './lib/linked-data/services/dgt-ld-triple-factory.service'; -export { DGTWorkflow } from './lib/workflow/models/dgt-workflow.model'; -export { DGTWorkflowAction } from './lib/workflow/models/dgt-workflow-action.model'; -export { DGTWorkflowActionType } from './lib/workflow/models/dgt-workflow-action-type.model'; -export { DGTWorkflowService } from './lib/workflow/services/dgt-workflow.service'; -export { DGTInviteState } from './lib/invite/models/dgt-invite-state.model'; -export { DGTSourceState } from './lib/source/models/dgt-source-state.model'; -export { DGTDataValue } from './lib/data-value/models/data-value.model'; -export { DGTDataGroup } from './lib/data-value/models/data-group.model'; -export { DGTDataInterface } from './lib/data-value/models/data-category-interface.model'; -export { DGTDataValueTransformerService } from './lib/data-value/services/data-transformer-value.service'; -export { DGTDataInterfaceHostDirective } from './lib/data-value/directives/data-interface-host.directive'; -export { DGTDataValueService } from './lib/data-value/services/data-value.service'; -export { DGTLDFilterCombination } from './lib/linked-data/models/dgt-ld-filter-combination.model'; -export { DGTLDFilterByCombinationType } from './lib/linked-data/models/dgt-ld-filter-combination-type.model' -export { DGTEvent } from './lib/events/models/dgt-event.model'; -export { DGTEventService } from './lib/events/services/dgt-event.service'; -export { DGTEventSolidService } from './lib/events/services/dgt-event-solid.service'; -export { DGTEventMockService } from './lib/events/services/dgt-event-mock.service'; -export { DGTEventTransformerService } from './lib/events/services/dgt-event-transformer.service'; -export { DGTPurpose } from './lib/purpose/models/dgt-purpose.model'; -export { DGTSparqlService } from './lib/sparql/services/dgt-sparql.service'; -export { DGTSparqlCommunicaService } from './lib/sparql/services/dgt-sparql-communica.service'; -export { DGTSparqlDataset } from './lib/sparql/models/dgt-sparql-dataset.model'; -export { DGTSparqlDatasetType } from './lib/sparql/models/dgt-sparql-dataset-type.model'; -export { DGTSparqlDatasetMemory } from './lib/sparql/models/dgt-sparql-dataset-memory.model'; -export { DGTSparqlResult } from './lib/sparql/models/dgt-sparql-result.model'; -export { DGTConfigurationBaseWeb } from './lib/configuration/models/dgt-configuration-base-web.model'; -export { DGTConnectorService } from './lib/connector/services/dgt-connector.service'; -export { DGTHolderService } from './lib/holder/services/dgt-holder-abstract.service'; -export { DGTCacheType } from './lib/cache/models/DGTCacheType.model'; -export { DGTCacheInMemoryService } from './lib/cache/services/dgt-cache-in-memory.service'; -export { DGTCacheSolidService } from './lib/cache/services/dgt-cache-solid.service'; -export { DGTSparqlQueryService } from './lib/sparql/services/dgt-sparql-query.service'; -export { DGTLDResourceTransformerService } from './lib/linked-data/services/dgt-ld-resource-transformer.service'; -export { DGTLDFilterConnection } from './lib/linked-data/models/dgt-ld-filter-connection.model'; -export { DGTInviteService } from './lib/invite/services/dgt-invite-abstract.service'; -export { DGTSecurityPassportStrategySolidService } from './lib/security/services/dgt-security-passport-strategy-solid.service'; -export { DGTSecurityPassportStrategySolidJWTExtractorService } from './lib/security/services/dgt-security-passport-strategy-solid-jwt-extractor.service'; diff --git a/projects/dgt-shared-data/src/test.configuration.ts b/projects/dgt-shared-data/src/test.configuration.ts deleted file mode 100644 index 15b82444..00000000 --- a/projects/dgt-shared-data/src/test.configuration.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { RouterTestingModule } from '@angular/router/testing'; -import { DGTTestConfiguration } from '@digita-ai/dgt-shared-test'; -import { declarations, imports, providers } from './lib/dgt-shared-data.module'; -import { DGTDataService } from './lib/metadata/services/dgt-data.service'; -import { DGTMockDataService } from './lib/metadata/services/dgt-mock-data.service'; -import { DGTMockDatabase } from './lib/metadata/models/dgt-mock-database.model'; - -export const configuration: DGTTestConfiguration = { - module: { - declarations, - imports: [ - RouterTestingModule, - ...imports, - ], - providers: [ - ...providers, - { - provide: DGTMockDatabase, - useValue: new DGTMockDatabase([ - ]) - }, - { - provide: DGTDataService, - useClass: DGTMockDataService - } - ], - } -}; diff --git a/projects/dgt-shared-data/src/test.ts b/projects/dgt-shared-data/src/test.ts deleted file mode 100644 index e11ff1c9..00000000 --- a/projects/dgt-shared-data/src/test.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/dgt-shared-data/tsconfig.lib.json b/projects/dgt-shared-data/tsconfig.lib.json deleted file mode 100644 index 36984a24..00000000 --- a/projects/dgt-shared-data/tsconfig.lib.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/lib", - "target": "es2015", - "module": "es2015", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "inlineSources": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "dom", - "es2018" - ] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "enableResourceInlining": true - }, - "exclude": [ - "src/test.ts", - "**/*.spec.ts" - ] -} diff --git a/projects/dgt-shared-data/tsconfig.spec.json b/projects/dgt-shared-data/tsconfig.spec.json deleted file mode 100644 index 3b9bbe8a..00000000 --- a/projects/dgt-shared-data/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "node", - ] - }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-data/tslint.json b/projects/dgt-shared-data/tslint.json deleted file mode 100644 index 124133f8..00000000 --- a/projects/dgt-shared-data/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -} diff --git a/projects/dgt-shared-test/README.md b/projects/dgt-shared-test/README.md deleted file mode 100644 index 88c20096..00000000 --- a/projects/dgt-shared-test/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# DgtSharedTest - -This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0. - -## Code scaffolding - -Run `ng generate component component-name --project dgt-shared-test` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dgt-shared-test`. -> Note: Don't forget to add `--project dgt-shared-test` or else it will be added to the default project in your `angular.json` file. - -## Build - -Run `ng build dgt-shared-test` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Publishing - -After building your library with `ng build dgt-shared-test`, go to the dist folder `cd dist/dgt-shared-test` and run `npm publish`. - -## Running unit tests - -Run `ng test dgt-shared-test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/dgt-shared-test/karma.conf.js b/projects/dgt-shared-test/karma.conf.js deleted file mode 100644 index 983d80be..00000000 --- a/projects/dgt-shared-test/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dgt-shared-test'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/dgt-shared-test/ng-package.json b/projects/dgt-shared-test/ng-package.json deleted file mode 100644 index 6043fb23..00000000 --- a/projects/dgt-shared-test/ng-package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/dgt-shared-test", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public-api.ts" - }, - "whitelistedNonPeerDependencies": [ - "@angular/core", - "@angular/common" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-test/package.json b/projects/dgt-shared-test/package.json deleted file mode 100644 index 8c1b0877..00000000 --- a/projects/dgt-shared-test/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "@digita-ai/dgt-shared-test", - "version": "0.1.2", - "peerDependencies": { - "@angular/common": "~7.2.0", - "@angular/core": "~7.2.0" - }, - "publishConfig": { "registry": "https://npm.pkg.github.com" }, - "repository" : { - "type" : "git", - "url": "ssh://git@github.com/digita-ai/dgt-shared.git", - "directory": "projects/dgt-shared-test" - }, - "main": "src/public-api.ts", - "author": "Wouter Janssens", - "license": "ISC" -} diff --git a/projects/dgt-shared-test/src/lib/configuration/models/dgt-test-configuration.model.ts b/projects/dgt-shared-test/src/lib/configuration/models/dgt-test-configuration.model.ts deleted file mode 100644 index b79127f6..00000000 --- a/projects/dgt-shared-test/src/lib/configuration/models/dgt-test-configuration.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { TestModuleMetadata } from '@angular/core/testing'; - -export interface DGTTestConfiguration { - module: TestModuleMetadata; -} diff --git a/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-component.service.ts b/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-component.service.ts deleted file mode 100644 index 7906f6c4..00000000 --- a/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-component.service.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { Type } from '@angular/core'; -import { DGTTestRunner } from './dgt-test-runner.service'; -import { DGTTestConfiguration } from '../../configuration/models/dgt-test-configuration.model'; - -export class DGTTestRunnerComponent extends DGTTestRunner { - public component: T; - public fixture: ComponentFixture; - - constructor(configuration: DGTTestConfiguration) { - super(configuration); - } - - public setup(componentType: Type, detectChanges: boolean = true) { - beforeAll(() => { - jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; - }); - - beforeEach(async(() => { - TestBed.configureTestingModule(this.configuration.module) - .compileComponents(); - })); - - beforeEach(() => { - this.fixture = TestBed.createComponent(componentType); - this.component = this.fixture.componentInstance; - - if (detectChanges) { - this.fixture.detectChanges(); - } - }); - } -} diff --git a/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-service.service.ts b/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-service.service.ts deleted file mode 100644 index 13a7f7c4..00000000 --- a/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner-service.service.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { async, TestBed } from '@angular/core/testing'; -import { Type } from '@angular/core'; - -import { DGTTestRunner } from './dgt-test-runner.service'; -import { DGTTestConfiguration } from '../../configuration/models/dgt-test-configuration.model'; - -export class DGTTestRunnerService extends DGTTestRunner { - public service: T; - - constructor(configuration: DGTTestConfiguration) { - super(configuration); - } - - public setup(serviceType: Type) { - beforeAll(() => { - jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; - }); - - beforeEach(async(() => { - TestBed.configureTestingModule(this.configuration.module) - .compileComponents(); - })); - - beforeEach(() => { - this.service = TestBed.get(serviceType); - }); - } -} diff --git a/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner.service.ts b/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner.service.ts deleted file mode 100644 index dca7997f..00000000 --- a/projects/dgt-shared-test/src/lib/runners/services/dgt-test-runner.service.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTTestConfiguration } from '../../configuration/models/dgt-test-configuration.model'; - -export abstract class DGTTestRunner { - constructor(protected configuration: DGTTestConfiguration) { } -} diff --git a/projects/dgt-shared-test/src/public-api.ts b/projects/dgt-shared-test/src/public-api.ts deleted file mode 100644 index b1909b5b..00000000 --- a/projects/dgt-shared-test/src/public-api.ts +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Public API Surface of dgt-shared-test - */ - -export { DGTTestConfiguration } from './lib/configuration/models/dgt-test-configuration.model'; -export { DGTTestRunner } from './lib/runners/services/dgt-test-runner.service'; -export { DGTTestRunnerComponent } from './lib/runners/services/dgt-test-runner-component.service'; -export { DGTTestRunnerService } from './lib/runners/services/dgt-test-runner-service.service'; diff --git a/projects/dgt-shared-test/src/test.ts b/projects/dgt-shared-test/src/test.ts deleted file mode 100644 index e11ff1c9..00000000 --- a/projects/dgt-shared-test/src/test.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/dgt-shared-test/tsconfig.lib.json b/projects/dgt-shared-test/tsconfig.lib.json deleted file mode 100644 index 502f4b11..00000000 --- a/projects/dgt-shared-test/tsconfig.lib.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/lib", - "target": "es2015", - "module": "es2015", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "inlineSources": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "types": [ - "jasmine", - "node" - ], - "lib": [ - "dom", - "es2018" - ] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "enableResourceInlining": true - }, - "exclude": [ - "src/test.ts", - "**/*.spec.ts" - ] -} diff --git a/projects/dgt-shared-test/tsconfig.spec.json b/projects/dgt-shared-test/tsconfig.spec.json deleted file mode 100644 index f1e8c20c..00000000 --- a/projects/dgt-shared-test/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "node" - ] - }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] -} diff --git a/projects/dgt-shared-test/tslint.json b/projects/dgt-shared-test/tslint.json deleted file mode 100644 index 124133f8..00000000 --- a/projects/dgt-shared-test/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -} diff --git a/projects/dgt-shared-utils/README.md b/projects/dgt-shared-utils/README.md deleted file mode 100644 index 1088835f..00000000 --- a/projects/dgt-shared-utils/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# DgtSharedUtils - -This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0. - -## Code scaffolding - -Run `ng generate component component-name --project dgt-shared-utils` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dgt-shared-utils`. -> Note: Don't forget to add `--project dgt-shared-utils` or else it will be added to the default project in your `angular.json` file. - -## Build - -Run `ng build dgt-shared-utils` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Publishing - -After building your library with `ng build dgt-shared-utils`, go to the dist folder `cd dist/dgt-shared-utils` and run `npm publish`. - -## Running unit tests - -Run `ng test dgt-shared-utils` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/dgt-shared-utils/karma.conf.js b/projects/dgt-shared-utils/karma.conf.js deleted file mode 100644 index 22a88185..00000000 --- a/projects/dgt-shared-utils/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dgt-shared-utils'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/dgt-shared-utils/ng-package.json b/projects/dgt-shared-utils/ng-package.json deleted file mode 100644 index 78db81f7..00000000 --- a/projects/dgt-shared-utils/ng-package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/dgt-shared-utils", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public-api.ts" - }, - "whitelistedNonPeerDependencies": [ - "@angular/core", - "@angular/common", - "@angular/http" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-utils/package.json b/projects/dgt-shared-utils/package.json deleted file mode 100644 index 2fd274f0..00000000 --- a/projects/dgt-shared-utils/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@digita-ai/dgt-shared-utils", - "version": "0.1.2", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "build:watch": "ng build --watch", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e", - "publish": "npm publish" - }, - "peerDependencies": { - "@angular/common": "^7.2.7", - "@angular/core": "^7.2.7", - "@angular/http": "^7.2.7", - "@types/node": "~11.9.5" - }, - "devDependencies": { - "@digita-ai/dgt-shared-test": "0.1.2", - "@types/jasmine": "~2.8.8" - }, - "publishConfig": { "registry": "https://npm.pkg.github.com" }, - "repository" : { - "type" : "git", - "url": "ssh://git@github.com/digita-ai/dgt-shared.git", - "directory": "projects/dgt-shared-utils" - }, - "description": "This library shared utilities.", - "main": "src/public-api.ts", - "author": "Wouter Janssens", - "license": "ISC" -} diff --git a/projects/dgt-shared-utils/src/lib/collections/models/dgt-map.model.ts b/projects/dgt-shared-utils/src/lib/collections/models/dgt-map.model.ts deleted file mode 100644 index 9887e681..00000000 --- a/projects/dgt-shared-utils/src/lib/collections/models/dgt-map.model.ts +++ /dev/null @@ -1,99 +0,0 @@ -import * as _ from 'lodash'; - -export class DGTMap { - private array: Array<{ key: T, value: S }> = new Array<{ key: T, value: S }>(); - public get size(): number { return this.array.length; } - public [Symbol.toStringTag]: 'Map'; - - public static fromArray(array: Array<{ key: T, value: S }>): DGTMap { - const res = new DGTMap(); - - if (array) { - res.array = array; - } - - return res; - } - - constructor(map: DGTMap | Array<{ key: T, value: S }> = null) { - if (map instanceof DGTMap) { - this.array = map.array; - } else if (map instanceof Array) { - this.array = map; - } - } - - public clear(): void { - this.array = new Array<{ key: T, value: S }>(); - } - public delete(key: T): boolean { - _.remove(this.array, (tuple) => _.isEqual(key, tuple.key)); - - return true; - } - public forEach(callbackfn: (value: S, key: T) => void, thisArg?: any): void { - return this.array.forEach((tuple) => callbackfn(tuple.value, tuple.key)); - } - public get(key: T): S { - let res = null; - - const foundTuple = this.array.find(tuple => _.isEqual(key, tuple.key)); - - if (foundTuple) { - res = foundTuple.value; - } - return res; - } - public getByIndex(index: number): { key: T, value: S } { - return this.array[index]; - } - public findIndex(key: T): number { - return this.array.findIndex(e => e.key === key); - } - public has(key: T): boolean { - let res = false; - - const foundTuple = this.array.find(tuple => _.isEqual(key, tuple.key)); - if (foundTuple !== null && foundTuple !== undefined) { - res = true; - } - - return res; - } - public set(key: T, value: S): this { - if (this.has(key)) { - this.delete(key); - } - - this.array.push({ key, value }); - - return this; - } - public [Symbol.iterator](): IterableIterator<[number, { - key: T; - value: S; - }]> { - return this.entries(); - } - public entries(): IterableIterator<[number, { - key: T; - value: S; - }]> { - return this.array.entries(); - } - public keys(): IterableIterator { - return this.array.map(tuple => tuple.key).values(); - } - public values(): IterableIterator { - return this.array.map(tuple => tuple.value).values(); - } - - public toArray(): Array<{ key: T, value: S }> { - return Array.from(this.array); - } - - public getByValue(value: S): T { - return this.array.find(entry => entry.value === value).key; - } - -} diff --git a/projects/dgt-shared-utils/src/lib/configuration/models/dgt-configuration-base.model.ts b/projects/dgt-shared-utils/src/lib/configuration/models/dgt-configuration-base.model.ts deleted file mode 100644 index 07df3acd..00000000 --- a/projects/dgt-shared-utils/src/lib/configuration/models/dgt-configuration-base.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTLoggerLevel } from '../../logging/models/dgt-logger-level.model'; - -export interface DGTConfigurationBase { - baseURI: string; - logger: { - minimumLevel: DGTLoggerLevel - } -} diff --git a/projects/dgt-shared-utils/src/lib/configuration/services/dgt-configuration.service.ts b/projects/dgt-shared-utils/src/lib/configuration/services/dgt-configuration.service.ts deleted file mode 100644 index 457b7666..00000000 --- a/projects/dgt-shared-utils/src/lib/configuration/services/dgt-configuration.service.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTConfigurationBase } from '../models/dgt-configuration-base.model'; - -export abstract class DGTConfigurationService { - public abstract get(configFn: (config: T) => S): S; -} diff --git a/projects/dgt-shared-utils/src/lib/connectivity/services/dgt-connectivity.service.ts b/projects/dgt-shared-utils/src/lib/connectivity/services/dgt-connectivity.service.ts deleted file mode 100644 index 5444005d..00000000 --- a/projects/dgt-shared-utils/src/lib/connectivity/services/dgt-connectivity.service.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { OnDestroy } from '@angular/core'; -import { BehaviorSubject } from 'rxjs'; -import { DGTPlatformService } from '../../platform/services/dgt-platform.service'; -import { DGTPlatformType } from '../../platform/models/dgt-platform-type.model'; -import { DGTInjectable } from '../../decorators/dgt-injectable'; - -@DGTInjectable() -export class DGTConnectivityService implements OnDestroy { - - static EVENT_TYPE_ONLINE = 'online'; - static EVENT_TYPE_OFFLINE = 'offline'; - public status: BehaviorSubject = new BehaviorSubject(true); - - constructor(private platform: DGTPlatformService) { - if (this.platform.type === DGTPlatformType.BROWSER && window) { - this.bind(); - window.addEventListener(DGTConnectivityService.EVENT_TYPE_ONLINE, this.onOnline); - window.addEventListener(DGTConnectivityService.EVENT_TYPE_OFFLINE, this.onOffline); - } - } - - ngOnDestroy() { - if (this.platform.type === DGTPlatformType.BROWSER && window) { - window.removeEventListener(DGTConnectivityService.EVENT_TYPE_ONLINE, this.onOnline); - window.removeEventListener(DGTConnectivityService.EVENT_TYPE_OFFLINE, this.onOffline); - } - } - - private bind() { - this.onOnline = this.onOnline.bind(this); - this.onOffline = this.onOffline.bind(this); - } - - private onOnline() { - this.status.next(true); - } - - private onOffline() { - this.status.next(false); - } -} diff --git a/projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key.model.ts b/projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key.model.ts deleted file mode 100644 index ad738ecc..00000000 --- a/projects/dgt-shared-utils/src/lib/crypto/models/dgt-crypto-key.model.ts +++ /dev/null @@ -1 +0,0 @@ -export interface DGTCryptoKey extends JsonWebKey { } \ No newline at end of file diff --git a/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.spec.ts b/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.spec.ts deleted file mode 100644 index be7f85a2..00000000 --- a/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.spec.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { async } from '@angular/core/testing'; -import { DGTCryptoBrowserService } from './dgt-crypto-browser.service'; - -/* tslint:disable:no-unused-variable */ - -describe('DGTCryptoBrowserService', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTCryptoBrowserService); - - it('should be correctly instantiated', async(() => { - expect(testService.service).toBeTruthy(); - })); - - it('should log a debug message', async((done) => { - testService.service.generateKeyPair() - .subscribe( - (keyPair) => { - // public: alg='RS256', e='AQAB', ext=true, key_ops=['verify'], kty='RSA', n - // private: alg='RS256', d, dp, dq,e='AQAB' ,ext=true, key_ops=['sign'], kty='RSA', n, q, p, qi - expect(keyPair).toBeTruthy(); - done(); - } - ) - })); -}); - diff --git a/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.ts b/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.ts deleted file mode 100644 index 3bf30bb1..00000000 --- a/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto-browser.service.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { DGTCryptoService } from './dgt-crypto.service'; -import { from, forkJoin, Observable } from 'rxjs'; -import { switchMap, map, tap } from 'rxjs/operators'; -import { DGTLoggerService } from '../../logging/services/dgt-logger.service'; -import { DGTCryptoKeyPair } from '../models/dgt-crypto-key-pair.model'; -import { DGTInjectable } from '../../decorators/dgt-injectable'; - -@DGTInjectable() -export class DGTCryptoBrowserService extends DGTCryptoService { - - constructor(private logger: DGTLoggerService) { - super(); - } - - public generateKeyPair(): Observable { - this.logger.debug(DGTCryptoBrowserService.name, 'Generating key pair'); - - return from(crypto.subtle.generateKey( - { - name: 'RSASSA-PKCS1-v1_5', - modulusLength: 2048, - publicExponent: new Uint8Array([0x01, 0x00, 0x01]), - hash: { name: 'SHA-256' }, - }, - true, - ['sign', 'verify'] - )) - .pipe( - switchMap(data => forkJoin( - crypto.subtle.exportKey('jwk', data.publicKey), - crypto.subtle.exportKey('jwk', data.privateKey) - )), - map(data => { - const [publicJwk, privateJwk] = data; - - return { publicKey: publicJwk, privateKey: privateJwk }; - }), - tap(res => - this.logger.debug(DGTCryptoBrowserService.name, 'Generated keypair', { res }) - ) - ); - } - - public digest(data: Uint8Array): Observable { - this.logger.debug(DGTCryptoBrowserService.name, 'Calculating digest', { data }); - - return from(crypto.subtle.digest({ name: 'SHA-256' }, data)); - } - - public generateRandomNumbers(length: number): number[] { - this.logger.debug(DGTCryptoBrowserService.name, 'Generating random numbers', { length }); - - return Array.from(crypto.getRandomValues(new Uint8Array(length))); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto.service.ts b/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto.service.ts deleted file mode 100644 index f261583e..00000000 --- a/projects/dgt-shared-utils/src/lib/crypto/services/dgt-crypto.service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Observable } from 'rxjs'; - - -import { DGTCryptoKeyPair } from '../models/dgt-crypto-key-pair.model'; - -export abstract class DGTCryptoService { - public abstract digest(data: Uint8Array): Observable; - public abstract generateKeyPair(): Observable; - public abstract generateRandomNumbers(length: number): number[]; -} \ No newline at end of file diff --git a/projects/dgt-shared-utils/src/lib/decorators/dgt-injectable.ts b/projects/dgt-shared-utils/src/lib/decorators/dgt-injectable.ts deleted file mode 100644 index 5ff18070..00000000 --- a/projects/dgt-shared-utils/src/lib/decorators/dgt-injectable.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** Used to store require object */ -let res; - -/** - * This is a wrapper decorator that can be used in both Angular and nestjs projects - * It will determine between Angular and nestjs' @DGTInjectable() decorator - * So that services written in Angular projects can be used in nestjs projects and vice-versa - */ -export function DGTInjectable() { - if (!res) { - try { - res = require('@nestjs/common').Injectable; - } catch (e) { - res = require('@angular/core').Injectable; - } - } - return res(); -} diff --git a/projects/dgt-shared-utils/src/lib/decorators/dgt-project-type.ts b/projects/dgt-shared-utils/src/lib/decorators/dgt-project-type.ts deleted file mode 100644 index ee5f71aa..00000000 --- a/projects/dgt-shared-utils/src/lib/decorators/dgt-project-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTProjectType { - NESTJS = 'nestjs', - ANGULAR = 'angular' -} diff --git a/projects/dgt-shared-utils/src/lib/dgt-shared-utils.module.ts b/projects/dgt-shared-utils/src/lib/dgt-shared-utils.module.ts deleted file mode 100644 index bd8740f7..00000000 --- a/projects/dgt-shared-utils/src/lib/dgt-shared-utils.module.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NgModule, Type } from '@angular/core'; -import { DGTLoggerService } from './logging/services/dgt-logger.service'; -import { DGTErrorService } from './errors/services/dgt-error.service'; -import { DGTPlatformService } from './platform/services/dgt-platform.service'; -import { DGTConnectivityService } from './connectivity/services/dgt-connectivity.service'; -import { DGTHttpService } from './http/services/dgt-http.service'; -import { DGTHttpAngularService } from './http/services/dgt-http-angular.service'; -import { DGTCryptoBrowserService } from './crypto/services/dgt-crypto-browser.service'; -import { DGTParameterCheckerService } from './parameters/services/parameter-checker.service'; -import { DGTOriginConfigService } from './origin/services/dgt-origin-config.service'; -import { DGTOriginService } from './origin/services/dgt-origin.service'; - -export const declarations: (any[] | Type)[] = []; -export const imports = []; -export const providers = [ - DGTLoggerService, - DGTCryptoBrowserService, - DGTConnectivityService, - { - provide: DGTHttpService, - useClass: DGTHttpAngularService - }, - { - provide: DGTOriginService, - useClass: DGTOriginConfigService - }, - DGTErrorService, - DGTPlatformService, - DGTParameterCheckerService, -]; - -@NgModule({ - declarations, - imports, - providers, - exports: [ - ] -}) -export class DGTSharedUtilsModule { } diff --git a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-argument.model.ts b/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-argument.model.ts deleted file mode 100644 index a81f0b0a..00000000 --- a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-argument.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DGTError } from './dgt-error.model'; - -export class DGTErrorArgument extends DGTError { - public readonly name = DGTErrorArgument.name; - - constructor(message: string, public value: any, cause?: Error) { - super(message, cause); - - Object.setPrototypeOf(this, DGTErrorArgument.prototype); - } -} diff --git a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-config.model.ts b/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-config.model.ts deleted file mode 100644 index 024623cd..00000000 --- a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-config.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DGTError } from './dgt-error.model'; - -export class DGTErrorConfig extends DGTError { - public readonly name = DGTErrorConfig.name; - - constructor(message: string, public value: any, cause?: Error) { - super(message, cause); - - Object.setPrototypeOf(this, DGTErrorConfig.prototype); - } -} diff --git a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-http.model.ts b/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-http.model.ts deleted file mode 100644 index 79fcf939..00000000 --- a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-http.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DGTError } from './dgt-error.model'; - -export class DGTErrorHttp extends DGTError { - public readonly name = DGTErrorHttp.name; - - constructor(message: string, public value: any, cause?: Error) { - super(message, cause); - - Object.setPrototypeOf(this, DGTErrorHttp.prototype); - } -} diff --git a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-not-implemented.model.ts b/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-not-implemented.model.ts deleted file mode 100644 index 750b2b02..00000000 --- a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error-not-implemented.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DGTError } from './dgt-error.model'; - -export class DGTErrorNotImplemented extends DGTError { - public readonly name = DGTErrorNotImplemented.name; - - constructor() { - super('Function is not implemented', null); - - Object.setPrototypeOf(this, DGTErrorNotImplemented.prototype); - } -} diff --git a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error.model.ts b/projects/dgt-shared-utils/src/lib/errors/models/dgt-error.model.ts deleted file mode 100644 index 6d1160e7..00000000 --- a/projects/dgt-shared-utils/src/lib/errors/models/dgt-error.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -export class DGTError extends Error { - public readonly name = DGTError.name; - - constructor(messsage: string, public cause: Error) { - super(messsage); - - Object.setPrototypeOf(this, DGTError.prototype); - } -} diff --git a/projects/dgt-shared-utils/src/lib/http/models/dgt-http-response.model.ts b/projects/dgt-shared-utils/src/lib/http/models/dgt-http-response.model.ts deleted file mode 100644 index 394599df..00000000 --- a/projects/dgt-shared-utils/src/lib/http/models/dgt-http-response.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; - -export interface DGTHttpResponse { - data: T; - success: boolean; - status: number; - headers?: HttpHeaders; -} diff --git a/projects/dgt-shared-utils/src/lib/http/services/dgt-http-angular.service.ts b/projects/dgt-shared-utils/src/lib/http/services/dgt-http-angular.service.ts deleted file mode 100644 index 50df6d6b..00000000 --- a/projects/dgt-shared-utils/src/lib/http/services/dgt-http-angular.service.ts +++ /dev/null @@ -1,143 +0,0 @@ - -import { map, catchError, tap } from 'rxjs/operators'; - -import { Observable, of } from 'rxjs'; -import { HttpClient, HttpErrorResponse } from '@angular/common/http'; -import { DGTLoggerService } from '../../logging/services/dgt-logger.service'; -import { DGTHttpResponse } from '../models/dgt-http-response.model'; -import { DGTHttpService } from './dgt-http.service'; -import { DGTInjectable } from '../../decorators/dgt-injectable'; - -@DGTInjectable() -export class DGTHttpAngularService extends DGTHttpService { - - constructor(public http: HttpClient, public logger: DGTLoggerService) { - super(); - } - - public get(uri: string, headers?: { [key: string]: string }, isText: boolean = false): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Getting from URI', { uri }); - - let request = this.http.get(uri, { headers, observe: 'response' }); - - if (isText) { - request = this.http.get(uri, { headers, responseType: 'text', observe: 'response' }); - } - - return request - .pipe( - tap(data => this.logger.debug(DGTHttpAngularService.name, 'Received response', { data })), - map(response => ({ - data: response.body as T, - success: true, - status: response.status - })), - catchError(error => of(this.handleError(error))), - ); - } - - public post(uri: string, body: any, headers?: { [key: string]: string }): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Posting to URI', { uri, body }); - - return this.http.post(uri, body, { headers, observe: 'response' }) - .pipe( - map(response => ({ - data: response.body as T, - success: true, - status: response.status - })), - catchError(error => of(this.handleError(error))), - ); - } - - public put(uri: string, body: any, headers?: { [key: string]: string }): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Putting to URI', { uri, body }); - - return this.http.put(uri, body, { headers, observe: 'response' }) - .pipe( - map(response => ({ - data: response.body as T, - success: true, - status: response.status - })), - catchError(error => of(this.handleError(error))), - ); - } - - public delete(uri: string, headers?: { [key: string]: string }): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Deleting to URI', { uri, headers }); - - return this.http.delete(uri, { headers, observe: 'response' }) - .pipe( - map(response => ({ - data: response.body as T, - success: true, - status: response.status - })), - catchError(error => of(this.handleError(error))), - ); - } - - public patch(uri: string, body: any, headers?: { [key: string]: string }): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Patching to URI', { uri, body }); - - return this.http.patch(uri, body, { headers, observe: 'response' }) - .pipe( - map(response => ({ - data: response.body as T, - success: true, - status: response.status - })), - catchError(error => of(this.handleError(error))), - ); - } - - public head(uri: string, headers?: { [key: string]: string }): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Sending HEAD request', {uri}); - - return this.http.head(uri, {headers, observe: 'response'}) - .pipe( - map(response => ({ - data: response.body as T, - success: true, - status: response.status, - headers: response.headers - })), - catchError(error => of(this.handleError(error))), - ); - } - - public options(uri: string, headers?: { [key: string]: string }): Observable> { - this.logger.debug(DGTHttpAngularService.name, 'Sending OPTIONS request', {uri}); - - return this.http.options(uri, {headers, observe: 'response'}) - .pipe( - map(response => ({ - data: response.body as T, - success: true, - status: response.status, - headers: response.headers - })), - catchError(error => of(this.handleError(error))), - ); - } - - private handleError(error: HttpErrorResponse): DGTHttpResponse { - if (error.error instanceof ErrorEvent) { - // A client-side or network error occurred. Handle it accordingly. - this.logger.debug(DGTHttpAngularService.name, 'An error occurred:', error.error.message); - } else { - // The backend returned an unsuccessful response code. - // The response body may contain clues as to what went wrong, - this.logger.debug(DGTHttpAngularService.name, - `Backend returned code ${error.status}, ` + - `body was: ${error.error}`, error); - } - // return an observable with a user-facing error message - return { - data: null, - success: false, - status: error.status - }; - } -} diff --git a/projects/dgt-shared-utils/src/lib/logging/models/dgt-logger-level.model.ts b/projects/dgt-shared-utils/src/lib/logging/models/dgt-logger-level.model.ts deleted file mode 100644 index 9b41f42e..00000000 --- a/projects/dgt-shared-utils/src/lib/logging/models/dgt-logger-level.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum DGTLoggerLevel { - FATAL = 6, - ERROR = 5, - WARN = 4, - INFO = 3, - DEBUG = 2, - TRACE = 1 -} \ No newline at end of file diff --git a/projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.spec.ts b/projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.spec.ts deleted file mode 100644 index 1bdd1ea7..00000000 --- a/projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { DGTTestRunnerService } from '@digita-ai/dgt-shared-test'; -import { configuration } from '../../../test.configuration'; -import { DGTLoggerService } from './dgt-logger.service'; -import { async } from '@angular/core/testing'; - -/* tslint:disable:no-unused-variable */ - -describe('DGTLoggerService', () => { - const testService = new DGTTestRunnerService(configuration); - testService.setup(DGTLoggerService); - - it('should be correctly instantiated', async(() => { - expect(testService.service).toBeTruthy(); - })); - - it('should log a debug message', async(() => { - testService.service.debug('test', 'test'); - - expect(testService.service).toBeTruthy(); - })); -}); diff --git a/projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.ts b/projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.ts deleted file mode 100644 index e21c0df4..00000000 --- a/projects/dgt-shared-utils/src/lib/logging/services/dgt-logger.service.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { DGTErrorArgument } from '../../errors/models/dgt-error-argument.model'; - -import { DGTConfigurationService } from '../../configuration/services/dgt-configuration.service'; -import { DGTConfigurationBase } from '../../configuration/models/dgt-configuration-base.model'; -import { DGTLoggerLevel } from '../models/dgt-logger-level.model'; -import { DGTInjectable } from '../../decorators/dgt-injectable'; - -@DGTInjectable() -export class DGTLoggerService { - private readonly minimumLevel: DGTLoggerLevel; - - constructor(private config: DGTConfigurationService) { - this.minimumLevel = this.config.get(c => c.logger.minimumLevel); - } - - public debug(typeName: string, message: string, data?: any) { - if (!typeName) { - throw new DGTErrorArgument('Typename should be set', typeName); - } - - if (!message) { - throw new DGTErrorArgument('Message should be set', message); - } - - this.log(DGTLoggerLevel.DEBUG, typeName, message, data); - } - - public error(typeName: string, message: string, error?: Error | any, caught?: any) { - if (!typeName) { - throw new DGTErrorArgument('Typename should be set', typeName); - } - - if (!message) { - throw new DGTErrorArgument('Message should be set', message); - } - - this.log(DGTLoggerLevel.ERROR, typeName, message, { error, caught }); - } - - public log(level: DGTLoggerLevel, typeName: string, message: string, data?: any) { - if (!level) { - throw new DGTErrorArgument('Level should be set', typeName); - } - - if (!typeName) { - throw new DGTErrorArgument('Typename should be set', typeName); - } - - if (!message) { - throw new DGTErrorArgument('Message should be set', message); - } - - const displayDate: string = new Date().toLocaleTimeString(); - - if (level >= this.minimumLevel) { - if (level >= DGTLoggerLevel.WARN) { - if (data) { - console.error('[' + displayDate + ' ' + typeName + '] ' + message, '\n', data); - } else { - console.error('[' + displayDate + ' ' + typeName + '] ' + message); - } - } else { - if (data) { - console.log('[' + displayDate + ' ' + typeName + '] ' + message, '\n', data); - } else { - console.log('[' + displayDate + ' ' + typeName + '] ' + message); - } - } - } - } -} diff --git a/projects/dgt-shared-utils/src/lib/origin/services/dgt-origin-config.service.ts b/projects/dgt-shared-utils/src/lib/origin/services/dgt-origin-config.service.ts deleted file mode 100644 index 7c00c6b9..00000000 --- a/projects/dgt-shared-utils/src/lib/origin/services/dgt-origin-config.service.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { DGTOriginService } from './dgt-origin.service'; -import { DGTConfigurationService } from '../../configuration/services/dgt-configuration.service'; -import { DGTConfigurationBase } from '../../configuration/models/dgt-configuration-base.model'; -import { DGTInjectable } from '../../decorators/dgt-injectable'; - - -@DGTInjectable() -export class DGTOriginConfigService extends DGTOriginService { - - constructor(private config: DGTConfigurationService) { super(); } - - public get(): string { - return this.config.get(c => c.baseURI); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-utils/src/lib/origin/services/dgt-origin.service.ts b/projects/dgt-shared-utils/src/lib/origin/services/dgt-origin.service.ts deleted file mode 100644 index 025f92e4..00000000 --- a/projects/dgt-shared-utils/src/lib/origin/services/dgt-origin.service.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTInjectable } from '../../decorators/dgt-injectable'; - - -@DGTInjectable() -export abstract class DGTOriginService { - public abstract get(): string; -} \ No newline at end of file diff --git a/projects/dgt-shared-utils/src/lib/platform/models/dgt-platform-type.model.ts b/projects/dgt-shared-utils/src/lib/platform/models/dgt-platform-type.model.ts deleted file mode 100644 index d8ff4169..00000000 --- a/projects/dgt-shared-utils/src/lib/platform/models/dgt-platform-type.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTPlatformType { - NOT_SET, BROWSER, SERVER -} diff --git a/projects/dgt-shared-utils/src/lib/platform/services/dgt-platform.service.ts b/projects/dgt-shared-utils/src/lib/platform/services/dgt-platform.service.ts deleted file mode 100644 index ee309f03..00000000 --- a/projects/dgt-shared-utils/src/lib/platform/services/dgt-platform.service.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable, Inject, PLATFORM_ID } from '@angular/core'; -import { DGTPlatformType } from '../models/dgt-platform-type.model'; -import { isPlatformServer, isPlatformBrowser } from '@angular/common'; -import { DGTInjectable } from '../../decorators/dgt-injectable'; - -@DGTInjectable() -export class DGTPlatformService { - - public type: DGTPlatformType = DGTPlatformType.NOT_SET; - - constructor(@Inject(PLATFORM_ID) platformId?: string) { - if (platformId && isPlatformServer(platformId)) { - this.type = DGTPlatformType.SERVER; - } else if (platformId && isPlatformBrowser(platformId)) { - this.type = DGTPlatformType.BROWSER; - } else if(!platformId) { - this.type = DGTPlatformType.SERVER; - } - } -} diff --git a/projects/dgt-shared-utils/src/lib/tokens/solid/dgt-source-solid-token.model.ts b/projects/dgt-shared-utils/src/lib/tokens/solid/dgt-source-solid-token.model.ts deleted file mode 100644 index 0e4b5082..00000000 --- a/projects/dgt-shared-utils/src/lib/tokens/solid/dgt-source-solid-token.model.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { JWT, JWK } from '@solid/jose'; -import { Observable, from } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import { DGTErrorArgument } from '../../errors/models/dgt-error-argument.model'; - -const DEFAULT_MAX_AGE = 3600; // Default token expiration, in seconds - -export class DGTSourceSolidToken extends JWT { - - constructor(data: any, other: any) { - super(data, other); - } - - static issueFor(resourceServerUri: string, sessionKey: string, clientId: string, idToken: string): Observable { - if (resourceServerUri == null) { - throw new DGTErrorArgument('resourceServerUri is undefined', { resourceServerUri }); - } - if (sessionKey == null) { - throw new DGTErrorArgument('sessionKey is undefined', { sessionKey, clientId, resourceServerUri }); - } - if (clientId == null) { - throw new DGTErrorArgument('clientId is undefined', { clientId }); - } - if (idToken == null) { - throw new DGTErrorArgument('idToken is undefined', { idToken }); - } - const jwk = JSON.parse(sessionKey); - - let aud = ''; - try { - aud = new URL(resourceServerUri).origin; - } catch (e) { - throw new DGTErrorArgument(DGTSourceSolidToken.name, `Error while parsing uri: ${resourceServerUri}`, e); - } - - return from(JWK.importKey(jwk)) - .pipe( - map(importedSessionJwk => { - const options = { - aud, - key: importedSessionJwk, - iss: clientId, - idToken - }; - - return DGTSourceSolidToken.issue(options); - }), - switchMap((jwt: any) => from(jwt.encode())) - ); - } - - static issue(options) { - const { aud, key, iss } = options; - - const alg = key.alg; - const iat = options.iat || Math.floor(Date.now() / 1000); - const max = options.max || DEFAULT_MAX_AGE; - - const exp = iat + max; // token expiration - - const header = { alg }; - const payload = { iss, aud, exp, iat, id_token: options.idToken, token_type: 'pop' }; - - return new JWT({ header, payload, key: key.cryptoKey }, { filter: false }); - // return new DGTSourceSolidToken({ header, payload, key: key.cryptoKey }, { filter: false }); // cannot invoke without new on jwt - } - - private static decodeToken(accessToken: string): any { - if (!accessToken) { - throw new DGTErrorArgument('AccessToken should be set', accessToken); - } - const base64Url = accessToken.split('.')[1]; - const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); - const split = atob(base64).split('').map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''); - const jsonPayload = decodeURIComponent(split); - return JSON.parse(jsonPayload); - } - - static isExpired(accessToken: string): boolean { - const json = this.decodeToken(accessToken); - let expired = false; - if (json.exp) { - const unixNow = Math.round((new Date()).getTime() / 1000); - expired = json.exp < unixNow; - } - return expired; - } -} diff --git a/projects/dgt-shared-utils/src/public-api.ts b/projects/dgt-shared-utils/src/public-api.ts deleted file mode 100644 index 8eea7557..00000000 --- a/projects/dgt-shared-utils/src/public-api.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Public API Surface of dgt-shared-utils - */ -export { DGTSharedUtilsModule } from './lib/dgt-shared-utils.module'; -export { DGTMap } from './lib/collections/models/dgt-map.model'; -export { DGTPlatformService } from './lib/platform/services/dgt-platform.service'; -export { DGTPlatformType } from './lib/platform/models/dgt-platform-type.model'; -export { DGTConfigurationBase } from './lib/configuration/models/dgt-configuration-base.model'; -export { DGTConfigurationService } from './lib/configuration/services/dgt-configuration.service'; -export { DGTLoggerLevel } from './lib/logging/models/dgt-logger-level.model'; -export { DGTLoggerService } from './lib/logging/services/dgt-logger.service'; -export { DGTCryptoService } from './lib/crypto/services/dgt-crypto.service'; -export { DGTCryptoBrowserService } from './lib/crypto/services/dgt-crypto-browser.service'; -export { DGTCryptoKey } from './lib/crypto/models/dgt-crypto-key.model'; -export { DGTCryptoKeyPair } from './lib/crypto/models/dgt-crypto-key-pair.model'; -export { DGTError } from './lib/errors/models/dgt-error.model'; -export { DGTErrorArgument } from './lib/errors/models/dgt-error-argument.model'; -export { DGTErrorConfig } from './lib/errors/models/dgt-error-config.model'; -export { DGTErrorHttp } from './lib/errors/models/dgt-error-http.model'; -export { DGTErrorNotImplemented } from './lib/errors/models/dgt-error-not-implemented.model'; -export { DGTErrorService } from './lib/errors/services/dgt-error.service'; -export { DGTHttpService } from './lib/http/services/dgt-http.service'; -export { DGTHttpAngularService } from './lib/http/services/dgt-http-angular.service'; -export { DGTConnectivityService } from './lib/connectivity/services/dgt-connectivity.service'; -export { DGTInjectable } from './lib/decorators/dgt-injectable'; -export { DGTOriginService } from './lib/origin/services/dgt-origin.service'; -export { DGTOriginConfigService } from './lib/origin/services/dgt-origin-config.service'; -export { DGTParameterCheckerService } from './lib/parameters/services/parameter-checker.service'; -export { DGTSourceSolidToken } from './lib/tokens/solid/dgt-source-solid-token.model'; -export { DGTHttpResponse } from './lib/http/models/dgt-http-response.model'; diff --git a/projects/dgt-shared-utils/src/test.configuration.ts b/projects/dgt-shared-utils/src/test.configuration.ts deleted file mode 100644 index e5ef6b20..00000000 --- a/projects/dgt-shared-utils/src/test.configuration.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { RouterTestingModule } from '@angular/router/testing'; -import { DGTTestConfiguration } from '@digita-ai/dgt-shared-test'; -import { declarations, imports, providers } from './lib/dgt-shared-utils.module'; - -export const configuration: DGTTestConfiguration = { - module: { - declarations, - imports: [ - RouterTestingModule, - ...imports, - ], - providers: [ - ...providers, - ], - } -}; diff --git a/projects/dgt-shared-utils/src/test.ts b/projects/dgt-shared-utils/src/test.ts deleted file mode 100644 index e11ff1c9..00000000 --- a/projects/dgt-shared-utils/src/test.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/dgt-shared-utils/tsconfig.lib.json b/projects/dgt-shared-utils/tsconfig.lib.json deleted file mode 100644 index 36984a24..00000000 --- a/projects/dgt-shared-utils/tsconfig.lib.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/lib", - "target": "es2015", - "module": "es2015", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "inlineSources": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "dom", - "es2018" - ] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "enableResourceInlining": true - }, - "exclude": [ - "src/test.ts", - "**/*.spec.ts" - ] -} diff --git a/projects/dgt-shared-utils/tsconfig.spec.json b/projects/dgt-shared-utils/tsconfig.spec.json deleted file mode 100644 index b0a04fa7..00000000 --- a/projects/dgt-shared-utils/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "node", - ] - }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] -} diff --git a/projects/dgt-shared-utils/tslint.json b/projects/dgt-shared-utils/tslint.json deleted file mode 100644 index 124133f8..00000000 --- a/projects/dgt-shared-utils/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -} diff --git a/projects/dgt-shared-venture/README.md b/projects/dgt-shared-venture/README.md deleted file mode 100644 index 511b268a..00000000 --- a/projects/dgt-shared-venture/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# DgtSharedVenture - -This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0. - -## Code scaffolding - -Run `ng generate component component-name --project dgt-shared-venture` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dgt-shared-venture`. -> Note: Don't forget to add `--project dgt-shared-venture` or else it will be added to the default project in your `angular.json` file. - -## Build - -Run `ng build dgt-shared-venture` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Publishing - -After building your library with `ng build dgt-shared-venture`, go to the dist folder `cd dist/dgt-shared-venture` and run `npm publish`. - -## Running unit tests - -Run `ng test dgt-shared-venture` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/dgt-shared-venture/karma.conf.js b/projects/dgt-shared-venture/karma.conf.js deleted file mode 100644 index 2a493ffa..00000000 --- a/projects/dgt-shared-venture/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dgt-shared-venture'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/dgt-shared-venture/ng-package.json b/projects/dgt-shared-venture/ng-package.json deleted file mode 100644 index 1f750a59..00000000 --- a/projects/dgt-shared-venture/ng-package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/dgt-shared-venture", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public-api.ts" - }, - "whitelistedNonPeerDependencies": [ - "@angular/common", - "@angular/core", - "@angular/http", - "@digita-ai/dgt-shared-data", - "@digita-ai/dgt-shared-utils", - "@digita-ai/dgt-shared-web", - "@ngrx/store", - "@ngx-translate/core", - "@ngx-translate/http-loader", - "angularfire2", - "firebase" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-venture/package.json b/projects/dgt-shared-venture/package.json deleted file mode 100644 index 7d73ab47..00000000 --- a/projects/dgt-shared-venture/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@digita-ai/dgt-shared-venture", - "version": "0.1.2", - "peerDependencies": { - "@angular/cdk": "7.3.7", - "@angular/common": "^7.2.7", - "@angular/core": "^7.2.7", - "@angular/http": "^7.2.7", - "@angular/material": "7.3.7", - "@digita-ai/dgt-shared-data": "0.1.2", - "@digita-ai/dgt-shared-utils": "0.1.2", - "@digita-ai/dgt-shared-web": "0.1.2", - "@ngrx/store": "^7.3.0", - "@ngx-translate/core": "11.0.1", - "@ngx-translate/http-loader": "4.0.0", - "angularfire2": "5.1.1", - "firebase": "5.8.4", - "@types/node": "~11.9.5" - }, - "devDependencies": {}, - "description": "This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.", - "main": "src/public-api.ts", - "publishConfig": { "registry": "https://npm.pkg.github.com" }, - "repository" : { - "type" : "git", - "url": "ssh://git@github.com/digita-ai/dgt-shared.git", - "directory": "projects/dgt-shared-venture" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Wouter Janssens", - "license": "ISC" -} diff --git a/projects/dgt-shared-venture/src/lib/dgt-shared-venture.module.ts b/projects/dgt-shared-venture/src/lib/dgt-shared-venture.module.ts deleted file mode 100644 index 1c13a852..00000000 --- a/projects/dgt-shared-venture/src/lib/dgt-shared-venture.module.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; -import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; -import { TranslateHttpLoader } from '@ngx-translate/http-loader'; -import { DGTSharedUtilsModule } from '@digita-ai/dgt-shared-utils'; -import { DGTSharedDataModule, DGTDataService, DGTLogicService } from '@digita-ai/dgt-shared-data'; -import { DGTSharedWebModule } from '@digita-ai/dgt-shared-web'; -import { AngularFireStorageModule } from 'angularfire2/storage'; -import { AngularFireAuthModule } from 'angularfire2/auth'; -import { DGTFirebaseAuthService } from './security/services/dgt-firebase-auth.service'; -import { DGTVentureFileService } from './file/services/dgt-venture-file.service'; -import { DGTClientDataService } from './integrations/services/dgt-client-data.service'; -import { DGTClientLogicService } from './integrations/services/dgt-client-logic.service'; - -export function HttpLoaderFactory(http: HttpClient) { - return new TranslateHttpLoader(http); -} - -export const declarations = []; -export const imports = [ - CommonModule, - TranslateModule.forChild({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient] - } - }), - DGTSharedUtilsModule, - DGTSharedDataModule, - DGTSharedWebModule, - AngularFireAuthModule, - AngularFireStorageModule -]; -export const providers = [ - { - provide: DGTDataService, - useClass: DGTClientDataService - }, - { - provide: DGTLogicService, - useClass: DGTClientLogicService - }, - DGTVentureFileService, - DGTFirebaseAuthService, -]; - -@NgModule({ - declarations, - imports, - providers, - exports: [ - ] -}) -export class DGTSharedVentureModule { } diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement-type.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement-type.model.ts deleted file mode 100644 index 1212669b..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement-type.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTAcknowledgementType { - POA = 0, - PRIVACY = 1, - TERMS = 2 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement.model.ts deleted file mode 100644 index 28f34aa2..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-acknowledgement.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTAcknowledgementType } from './dgt-acknowledgement-type.model'; - -export interface DGTAcknowledgement { - date: Date; - type: DGTAcknowledgementType; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-address.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-address.model.ts deleted file mode 100644 index 0277436c..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-address.model.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as _ from 'lodash'; -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTAddress extends DGTEntity { - country: string, - state: string, - county: string, - city: string, - district: string, - postalCode: string, - street: string, - houseNumber: string, - poBox: string, - label: string, - validated: boolean -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-brand-state.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-brand-state.model.ts deleted file mode 100644 index af4ffce4..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-brand-state.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTBrandState { - INACTIVE = 0, - ACTIVE = 1 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-brand.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-brand.model.ts deleted file mode 100644 index e61da535..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-brand.model.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { DGTBrandState } from './dgt-brand-state.model'; -import { DGTEmailTemplateProfile } from '../../email/models/dgt-email-template-profile.model'; -import { DGTUpdateType } from './dgt-update-type.model'; -import { DGTI8NEntity } from '@digita-ai/dgt-shared-web'; - -export interface DGTBrand extends DGTI8NEntity, DGTEmailTemplateProfile { - category: string; - description: string; - gift: string; - label: string; - logo: string; - profile: string; - state: DGTBrandState; - templates: { [key in string]: string }; - type: DGTUpdateType; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-category.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-category.model.ts deleted file mode 100644 index 2d273de7..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-category.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTI8NEntity } from '@digita-ai/dgt-shared-web'; - -export interface DGTCategory extends DGTI8NEntity { - description: string; - icon: string; - label: string; - weight: number; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-date-type.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-date-type.model.ts deleted file mode 100644 index de063861..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-date-type.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTDateType { - EXACT = 0, - APPROXIMATION = 1, - UNKNOWN = 2 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-date.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-date.model.ts deleted file mode 100644 index 4c7cb18a..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-date.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTDateType } from './dgt-date-type.model'; - -export interface DGTDate { - date: Date; - type: DGTDateType; - approximation: number; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-identity.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-identity.model.ts deleted file mode 100644 index 1abdeb71..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-identity.model.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { DGTProfileGender } from './dgt-profile-gender.model'; - -export interface DGTIdentity { - name: string, - firstName: string, - callName: string, - gender: DGTProfileGender, - nationality: string, - placeOfBirth: string, - dateOfBirth: Date, -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-individual.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-individual.model.ts deleted file mode 100644 index 25017874..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-individual.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTProfile } from './dgt-profile.model'; - -export interface DGTIndividual extends DGTProfile { - milestone: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-invite.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-invite.model.ts deleted file mode 100644 index c77d302c..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-invite.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTInvite extends DGTEntity { - email: string; - profile: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone-state.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone-state.model.ts deleted file mode 100644 index d6089b0d..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone-state.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DGTMilestoneState { - REGISTERED = 1, - VALIDATED = 2, - CONFIRMED = 3, - ARCHIVED = 4 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone.model.ts deleted file mode 100644 index 22009492..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-milestone.model.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { DGTAddress } from './dgt-address.model'; -import { DGTDate } from './dgt-date.model'; -import { DGTIdentity } from './dgt-identity.model'; -import { DGTMilestoneState } from './dgt-milestone-state.model'; -import { DGTAcknowledgement } from './dgt-acknowledgement.model'; -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTMilestone extends DGTEntity { - lastAcknowledgement: Date; - acknowledgements: Array; - dateOfMove: DGTDate; - fromAddress: DGTAddress; - identity: DGTIdentity; - state: DGTMilestoneState; - toAddress: DGTAddress; - owner: string; - validation: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-partner.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-partner.model.ts deleted file mode 100644 index ad53eb90..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-partner.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DGTProfile } from './dgt-profile.model'; - -export interface DGTPartner extends DGTProfile { - name: string; - address: string; - logo: string; - user: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-postcard.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-postcard.model.ts deleted file mode 100644 index a85ade0f..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-postcard.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTAddress } from './dgt-address.model'; -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTPostcard extends DGTEntity { - address: DGTAddress; - milestone: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-gender.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-gender.model.ts deleted file mode 100644 index 4ac5ba15..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-gender.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTProfileGender { - MALE = 0, - FEMALE = 1, - OTHER = 2 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-type.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-type.model.ts deleted file mode 100644 index 2cd5b75b..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile-type.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DGTProfileType { - ADMIN = 1, - INDIVIDUAL = 2, - PARTNER = 3 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile.model.ts deleted file mode 100644 index ac3c2d35..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-profile.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTProfileType } from './dgt-profile-type.model'; -import { DGTUser } from '@digita-ai/dgt-shared-web'; - - -export interface DGTProfile extends DGTUser { - type: DGTProfileType; - user: string; - emailValidated: boolean; - phone: string; - email: string; - hasSentInvites: boolean; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-reset-password-request.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-reset-password-request.model.ts deleted file mode 100644 index 9012d3ea..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-reset-password-request.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTResetPasswordRequest extends DGTEntity { - state: string; - user: number; - email: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-update-state.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-update-state.model.ts deleted file mode 100644 index 52609fa4..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-update-state.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DGTUpdateState { - REQUESTED = 1, - CONFIRMED = 2, - REJECTED = 3, - PENDING = 4 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-update-type.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-update-type.model.ts deleted file mode 100644 index dcc3585e..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-update-type.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTUpdateType { - AUTOMATIC = 0, - MANUAL = 3 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-update.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-update.model.ts deleted file mode 100644 index 11a6fefe..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-update.model.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { DGTUpdateState } from './dgt-update-state.model'; -import { DGTUpdateType } from './dgt-update-type.model'; -import { DGTAddress } from './dgt-address.model'; -import { DGTIdentity } from './dgt-identity.model'; -import { DGTDate } from './dgt-date.model'; -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTUpdate extends DGTEntity { - brand: string; - brandName: string; - partner: string; - partnerName: string; - milestone: string; - profile: string; - state: DGTUpdateState; - type: DGTUpdateType; - fromAddress: DGTAddress; - toAddress: DGTAddress; - dateOfMove: DGTDate; - identity: DGTIdentity; - validationId: string; - dateOfValidity: Date; - gift: string; - phone: string; - email: string; - dateSent: Date; - feedback: string; -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-state.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-state.model.ts deleted file mode 100644 index 92df572e..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-state.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum DGTValidationState { - PENDING = 1, - REQUESTED = 2, - VALIDATED = 3, - EXCHANGED = 4, - CONFIRMED = 5, - ARCHIVED = 6 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-type.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-type.model.ts deleted file mode 100644 index b3ed8844..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation-type.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DGTValidationType { - IDCARD = 0, - BANCONTACT = 1 -} diff --git a/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation.model.ts b/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation.model.ts deleted file mode 100644 index 6b61f32f..00000000 --- a/projects/dgt-shared-venture/src/lib/domain/models/dgt-validation.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTValidationType } from './dgt-validation-type.model'; -import { DGTValidationState } from './dgt-validation-state.model'; -import { DGTIdentity } from './dgt-identity.model'; -import { DGTEntity } from '@digita-ai/dgt-shared-data'; - -export interface DGTValidation extends DGTEntity { - type: DGTValidationType, - user: string, - milestone: string, - state: DGTValidationState, - identity: DGTIdentity, -} diff --git a/projects/dgt-shared-venture/src/lib/email/models/dgt-email-attachment.model.ts b/projects/dgt-shared-venture/src/lib/email/models/dgt-email-attachment.model.ts deleted file mode 100644 index 212e3f3d..00000000 --- a/projects/dgt-shared-venture/src/lib/email/models/dgt-email-attachment.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface DGTEmailAttachment { - content: string; - filename: string; - type: string; -} diff --git a/projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-profile.model.ts b/projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-profile.model.ts deleted file mode 100644 index f80c1a60..00000000 --- a/projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-profile.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface DGTEmailTemplateProfile { - templates: { [key in string]: string }; -} diff --git a/projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-type.model.ts b/projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-type.model.ts deleted file mode 100644 index b2013adf..00000000 --- a/projects/dgt-shared-venture/src/lib/email/models/dgt-email-template-type.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum DGTEmailTemplateType { - MILESTONE_ARCHIVED = 'milestone-archived', - MILESTONE_CONFIRMED = 'milestone-confirmed', - INVITE_CREATED = 'invite-created', - UPDATE_CONFIRMED = 'update-confirmed', - UPDATE_CREATED = 'update-created', - UPDATE_REJECTED = 'update-rejected', -} diff --git a/projects/dgt-shared-venture/src/lib/email/models/dgt-email.model.ts b/projects/dgt-shared-venture/src/lib/email/models/dgt-email.model.ts deleted file mode 100644 index 8c42e806..00000000 --- a/projects/dgt-shared-venture/src/lib/email/models/dgt-email.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTEmailAttachment } from './dgt-email-attachment.model'; -import { DGTEmailTemplateType } from './dgt-email-template-type.model'; - -export class DGTEmail { - constructor - ( - public to: string, - public from: string, - public templateType: DGTEmailTemplateType, - public attachments?: Array - ) { } -} diff --git a/projects/dgt-shared-venture/src/lib/file/services/dgt-venture-file.service.ts b/projects/dgt-shared-venture/src/lib/file/services/dgt-venture-file.service.ts deleted file mode 100644 index 0cb8e5bf..00000000 --- a/projects/dgt-shared-venture/src/lib/file/services/dgt-venture-file.service.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { DGTFileService, DGTFileType, DGTFile } from '@digita-ai/dgt-shared-data'; -import { Observable, from } from 'rxjs'; -import { filter, map } from 'rxjs/operators'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { AngularFireStorage } from 'angularfire2/storage'; - - -@DGTInjectable() -export class DGTVentureFileService extends DGTFileService { - - constructor( - private logger: DGTLoggerService, - private storage: AngularFireStorage - ) { - super(); - } - - public uploadFile(type: DGTFileType, name: string, file: DGTFile): - Observable<{ totalBytes: number, bytesTransferred: number, type: DGTFileType, name: string }> { - const path = type + name; - - this.logger.debug(DGTVentureFileService.name, 'Starting file upload to path ' + path, file); - - return from(this.storage.upload(path, file.asBlob, { - contentType: file.type - })) - .pipe( - filter(snapshot => snapshot.bytesTransferred === snapshot.totalBytes), - map(snapshot => ({ - totalBytes: snapshot.totalBytes, - bytesTransferred: snapshot.bytesTransferred, - type, - name - })) - ); - } - - public downloadFileURI(type: DGTFileType, name: string): Observable { - const path = type + name; - - this.logger.debug(DGTVentureFileService.name, 'Starting to retrieve download URI for path ' + path); - - return this.storage.ref(path).getDownloadURL(); - } -} diff --git a/projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-data.service.ts b/projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-data.service.ts deleted file mode 100644 index d1987be2..00000000 --- a/projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-data.service.ts +++ /dev/null @@ -1,198 +0,0 @@ - -import { map } from 'rxjs/operators'; - -import { AngularFirestore, QueryFn } from 'angularfire2/firestore'; -import * as _ from 'lodash'; -import { Observable, from, forkJoin } from 'rxjs'; -import { firestore } from 'firebase'; -import { DGTDataService, DGTEntity, DGTQuery } from '@digita-ai/dgt-shared-data'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export class DGTClientDataService extends DGTDataService { - - constructor( - private logger: DGTLoggerService, - private afs: AngularFirestore - ) { - super(); - } - - public getEntities(entityType: string, query: DGTQuery): Observable { - let res: Observable = null; - - this.logger.debug(DGTClientDataService.name, 'Loading entities', { entityType, query }); - - if (query) { - const clientQuery = this.convertQuery(query); - this.logger.debug(DGTClientDataService.name, 'Converted query', { clientQuery }); - - res = this.afs.collection(entityType, clientQuery) - .snapshotChanges() - .pipe( - map(changes => _.map(changes, change => { - const entity: S = this.convertTimestamp(change.payload.doc.data()) as S; - entity.id = change.payload.doc.id; - - return entity; - }) - )); - } else { - res = this.afs.collection(entityType) - .snapshotChanges() - .pipe( - map(changes => _.map(changes, change => { - const entity: S = this.convertTimestamp(change.payload.doc.data()) as S; - entity.id = change.payload.doc.id; - - return entity; - }) - )); - } - - return res - } - - public getEntity(entityType: string, entityId: string): Observable { - this.logger.debug(DGTClientDataService.name, 'Loading DGTEntity for type ' + entityType + ' and ID ' + entityId); - - return this.afs.collection(entityType).doc(entityId).snapshotChanges().pipe(map(angularFireAction => { - let res: S = null; - - if (angularFireAction.payload.exists) { - const entity: S = this.convertTimestamp(angularFireAction.payload.data()) as S; - entity.id = angularFireAction.payload.id; - - res = entity - } - - return res; - })); - } - - public createEntity(entityType: string, entity: S): Observable { - let res: Observable = null; - - this.logger.debug(DGTClientDataService.name, 'Creating DGTEntity for type ' + entityType, entity); - - entity.createdAt = new Date(); - entity.updatedAt = new Date(); - - this.convertUndefinedToNull(entity); - - if (entity.id) { - res = from(this.afs.collection(entityType).doc(entity.id).set(entity)) - .pipe( - map(() => { - return entity; - }) - ); - } else { - res = from(this.afs.collection(entityType).add(entity)) - .pipe(map(reference => { - entity.id = reference.id; - - return entity; - }) - ); - } - - return res; - } - - public createEntities(entityType: string, entities: Array): Observable> { - let res: Observable> = null; - - this.logger.debug(DGTClientDataService.name, 'Creating entities for type ' + entityType, entities); - - if (entities) { - res = forkJoin( - entities.map(entity => { - let observable: Observable = null; - - entity.createdAt = new Date(); - entity.updatedAt = new Date(); - - this.convertUndefinedToNull(entity); - - if (entity.id) { - observable = from(this.afs.collection(entityType).doc(entity.id).set(entity)) - .pipe( - map(() => entity) - ); - } else { - observable = from(this.afs.collection(entityType).add(entity)) - .pipe( - map(reference => Object.assign({}, entity, { id: reference.id })) - ); - } - - return observable; - }) - ) - } - - return res; - } - - public deleteEntity(entityType: string, entityId: string): Observable { - throw new Error('Not implemented'); - } - - public updateEntity(entityType: string, entity: S): Observable { - this.logger.debug(DGTClientDataService.name, 'Updating DGTEntity for type ' + entityType, entity); - - entity.updatedAt = new Date(); - - this.convertUndefinedToNull(entity); - - return from(this.afs.collection(entityType).doc(entity.id).set(entity)) - .pipe( - map(() => entity) - ); - } - - public updateFields(entityType: string, entityId: string, entity: Partial): Observable> { - this.logger.debug(DGTClientDataService.name, 'Updating DGTEntity for type ' + entityType, entity); - - entity.updatedAt = new Date(); - - this.convertUndefinedToNull(entity); - - return from(this.afs.collection(entityType).doc(entityId).update(entity)) - .pipe( - map(() => entity) - ); - } - - private convertQuery(query: DGTQuery): QueryFn { - let res: QueryFn = null; - - if (query) { - this.logger.debug(DGTClientDataService.name, 'Converting queries', query); - - res = (ref: firestore.CollectionReference) => { - let compiledQuery: firestore.CollectionReference | firestore.Query = ref; - - if (query.conditions) { - query.conditions.forEach((condition) => { - compiledQuery = compiledQuery.where(condition.field, condition.operator, condition.value); - }) - } - - - // if (query.pagination) { - // const start = query.pagination.page * query.pagination.size; - // const end = (query.pagination.page + 1) * query.pagination.size - 1; - - // compiledQuery.startAt(start).limit(query.pagination.size) - // } - // compiledQuery.orderBy('createdAt', 'desc'); - - return compiledQuery; - }; - } - - return res; - } -} diff --git a/projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-logic.service.ts b/projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-logic.service.ts deleted file mode 100644 index e2db2b16..00000000 --- a/projects/dgt-shared-venture/src/lib/integrations/services/dgt-client-logic.service.ts +++ /dev/null @@ -1,21 +0,0 @@ - -import { AngularFireFunctions } from 'angularfire2/functions'; -import { Observable } from 'rxjs'; -import { tap } from 'rxjs/operators'; -import { DGTLogicService } from '@digita-ai/dgt-shared-data'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export class DGTClientLogicService implements DGTLogicService { - - constructor(private fns: AngularFireFunctions, private logger: DGTLoggerService) { } - - public execute(name: string, data: T): Observable { - this.logger.debug(DGTClientLogicService.name, 'Executing function', { name, data }); - - return this.fns.httpsCallable(name)(data) - .pipe( - tap(result => this.logger.debug(DGTClientLogicService.name, 'Function executed', { result, name, data })), - ); - } -} diff --git a/projects/dgt-shared-venture/src/lib/security/services/dgt-firebase-auth.service.ts b/projects/dgt-shared-venture/src/lib/security/services/dgt-firebase-auth.service.ts deleted file mode 100644 index ee4764b1..00000000 --- a/projects/dgt-shared-venture/src/lib/security/services/dgt-firebase-auth.service.ts +++ /dev/null @@ -1,177 +0,0 @@ - -import { from as observableFrom, Observable, forkJoin, combineLatest } from 'rxjs'; -import { map, tap, catchError, switchMap } from 'rxjs/operators'; - -import { AngularFireAuth } from 'angularfire2/auth'; -import { User } from 'firebase'; -import * as _ from 'lodash'; -import { SetUser, SetProfile } from '../../state/models/dgt-actions.model'; -import { DGTProfile } from '../../domain/models/dgt-profile.model'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { DGTBaseRootState, DGTAuthService, DGTStoreService, DGTUser } from '@digita-ai/dgt-shared-web'; -import { LoadEntity } from '@digita-ai/dgt-shared-web'; -import { DGTFirebaseBaseAppState } from '../../state/models/dgt-firebase-base-app-state.model'; -import { DGTDataService } from '@digita-ai/dgt-shared-data'; - -@DGTInjectable() -export class DGTFirebaseAuthService> extends DGTAuthService { - - protected user: User; - protected profile: DGTProfile; - protected profiles: Array; - public redirectResult: Observable; - - constructor(private data: DGTDataService, private authIntance: AngularFireAuth, private logger: DGTLoggerService, private store: DGTStoreService) { - super(); - - this.redirectResult = observableFrom(this.authIntance.auth.getRedirectResult()); - - this.redirectResult.pipe( - tap(result => { - this.logger.debug(DGTAuthService.name, 'Redirect result', result); - }), - catchError(err => { - this.logger.error(DGTAuthService.name, 'Redirect result failed', err); - - return null; - }), - ); - - combineLatest( - this.authIntance.authState, - this.store.select(state => state.app.profileList), - (user, profiles) => ({ user, profiles }) - ) - .subscribe(slice => { - let changed = false; - - if (this.user !== slice.user) { - this.logger.debug(DGTAuthService.name, 'Current user changed', slice.user); - this.user = slice.user; - changed = true; - - this.store.dispatch(new SetUser(slice.user)); - - if (slice.user) { - this.store.dispatch(new LoadEntity({ entityType: 'profile', entityId: slice.user.uid })); - } - } - - if (slice.profiles && slice.profiles !== this.profiles) { - this.logger.debug(DGTAuthService.name, 'Profiles changed', slice.profiles); - this.profiles = slice.profiles; - changed = true; - } - - if (changed && this.profiles && this.user) { - const foundProfile = this.profiles.find(profile => profile.id === this.user.uid); - - if (foundProfile && foundProfile !== this.profile) { - this.profile = foundProfile; - this.store.dispatch(new SetProfile(this.profile)); - } - } - }); - } - - public signIn(email: string, password: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Signing-in user.'); - - return observableFrom(this.authIntance.auth.signInWithEmailAndPassword(email, password)).pipe( - switchMap((userCredentials: firebase.auth.UserCredential) => this.data.getEntity('profile', userCredentials.user.uid)) - ); - } - - public signInWitEmailLink(email: string, link: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Signing-in user with email link.'); - - return observableFrom(this.authIntance.auth.signInWithEmailLink(email, link)).pipe( - switchMap((userCredentials: firebase.auth.UserCredential) => this.data.getEntity('profile', userCredentials.user.uid)) - ); - } - - public sendEmailLink(email: string, returnUrl: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Sending login link email.'); - - const actionCodeSettings = { - // URL you want to redirect back to. The domain (www.example.com) for this - // URL must be whitelisted in the Firebase Console. - url: returnUrl, - // This must be true. - handleCodeInApp: true - }; - - return observableFrom(this.authIntance.auth.sendSignInLinkToEmail(email, actionCodeSettings)); - } - - public isSignInEmailLink(link: string): boolean { - this.logger.debug(DGTFirebaseAuthService.name, 'Check if login link email.'); - - return this.authIntance.auth.isSignInWithEmailLink(link); - } - - public sendPasswordResetEmail(email: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Sending reset password email.'); - - return observableFrom(this.authIntance.auth.sendPasswordResetEmail(email)); - } - - public confirmPasswordReset(requestId: string, newPassword: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Confirming password reset.'); - - return observableFrom(this.authIntance.auth.confirmPasswordReset(requestId, newPassword)); - } - - public updateInfo(profile: { displayName: string, photoURL: string }, email: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Update user info.'); - - const observableProfile: Observable = observableFrom(this.authIntance.auth.currentUser.updateProfile(profile)); - const observableEmail: Observable = observableFrom(this.authIntance.auth.currentUser.updateEmail(email)); - - return forkJoin(observableEmail, observableProfile); - } - - public updatePassword(password: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Update user password.'); - - return observableFrom(this.authIntance.auth.currentUser.updatePassword(password)); - } - - public deleteAccount(): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Deleting user.'); - - return observableFrom(this.authIntance.auth.currentUser.delete()); - } - - public signOut(): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Signing-out user'); - - return observableFrom(this.authIntance.auth.signOut()); - } - - public createUser(email: string, password: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Creating user.'); - - return observableFrom(this.authIntance.auth.createUserWithEmailAndPassword(email, password)); - } - - public checkIfEmailExists(email: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Checking if user exists', email); - - return observableFrom(this.authIntance.auth.fetchProvidersForEmail(email)).pipe( - map(providers => (providers && providers.length > 0))); - } - - public verifyEmail(actionCode: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Verifying email address', actionCode); - - return observableFrom(this.authIntance.auth.applyActionCode(actionCode)); - } - - public getEmailFromActionCode(actionCode: string): Observable { - this.logger.debug(DGTFirebaseAuthService.name, 'Verifying email address', actionCode); - - return observableFrom(this.authIntance.auth.checkActionCode(actionCode)).pipe( - map(data => data.data.email)); - } -} diff --git a/projects/dgt-shared-venture/src/lib/state/models/dgt-actions.model.ts b/projects/dgt-shared-venture/src/lib/state/models/dgt-actions.model.ts deleted file mode 100644 index 7c8372ed..00000000 --- a/projects/dgt-shared-venture/src/lib/state/models/dgt-actions.model.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as _ from 'lodash'; -import { User } from 'firebase'; -import { DGTProfile } from '../../domain/models/dgt-profile.model'; -import { DGTAbstractAction, DGTAction } from '@digita-ai/dgt-shared-web'; - -export const ActionTypes = { - SET_USER: '[App] Set user', - SET_PROFILE: '[App] Set profile', -}; - -export class SetUser implements DGTAbstractAction { - type = ActionTypes.SET_USER; - - constructor(public payload: User, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class SetProfile implements DGTAbstractAction { - type = ActionTypes.SET_PROFILE; - - constructor(public payload: DGTProfile, public onSuccess: Array = null, public onFailure: Array = null) { - } -} diff --git a/projects/dgt-shared-venture/src/lib/state/models/dgt-firebase-base-app-state.model.ts b/projects/dgt-shared-venture/src/lib/state/models/dgt-firebase-base-app-state.model.ts deleted file mode 100644 index ca93f836..00000000 --- a/projects/dgt-shared-venture/src/lib/state/models/dgt-firebase-base-app-state.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { User } from 'firebase'; -import { DGTProfile } from '../../domain/models/dgt-profile.model'; -import { DGTBaseAppState } from '@digita-ai/dgt-shared-web'; - -export interface DGTFirebaseBaseAppState extends DGTBaseAppState { - authenticatedUser: User; - authenticatedProfile: DGTProfile; - profileList: Array; -} diff --git a/projects/dgt-shared-venture/src/public-api.ts b/projects/dgt-shared-venture/src/public-api.ts deleted file mode 100644 index 582963c4..00000000 --- a/projects/dgt-shared-venture/src/public-api.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Public API Surface of dgt-shared-venture - */ - -export { DGTSharedVentureModule } from './lib/dgt-shared-venture.module'; -export { DGTAddress } from './lib/domain/models/dgt-address.model'; -export { DGTAcknowledgement } from './lib/domain/models/dgt-acknowledgement.model'; -export { DGTAcknowledgementType } from './lib/domain/models/dgt-acknowledgement-type.model'; -export { DGTBrand } from './lib/domain/models/dgt-brand.model'; -export { DGTBrandState } from './lib/domain/models/dgt-brand-state.model'; -export { DGTCategory } from './lib/domain/models/dgt-category.model'; -export { DGTDate } from './lib/domain/models/dgt-date.model'; -export { DGTDateType } from './lib/domain/models/dgt-date-type.model'; -export { DGTEmail } from './lib/email/models/dgt-email.model'; -export { DGTEmailAttachment } from './lib/email/models/dgt-email-attachment.model'; -export { DGTEmailTemplateProfile } from './lib/email/models/dgt-email-template-profile.model'; -export { DGTEmailTemplateType } from './lib/email/models/dgt-email-template-type.model'; -export { DGTFirebaseAuthService } from './lib/security/services/dgt-firebase-auth.service'; -export { DGTIdentity } from './lib/domain/models/dgt-identity.model'; -export { DGTIndividual } from './lib/domain/models/dgt-individual.model'; -export { DGTInvite } from './lib/domain/models/dgt-invite.model'; -export { DGTPartner } from './lib/domain/models/dgt-partner.model'; -export { DGTMilestone } from './lib/domain/models/dgt-milestone.model'; -export { DGTPostcard } from './lib/domain/models/dgt-postcard.model'; -export { DGTProfile } from './lib/domain/models/dgt-profile.model'; -export { DGTProfileGender } from './lib/domain/models/dgt-profile-gender.model'; -export { DGTMilestoneState } from './lib/domain/models/dgt-milestone-state.model'; -export { DGTProfileType } from './lib/domain/models/dgt-profile-type.model'; -export { DGTResetPasswordRequest } from './lib/domain/models/dgt-reset-password-request.model'; -export { DGTUpdate } from './lib/domain/models/dgt-update.model'; -export { DGTUpdateState } from './lib/domain/models/dgt-update-state.model'; -export { DGTUpdateType } from './lib/domain/models/dgt-update-type.model'; -export { DGTValidation } from './lib/domain/models/dgt-validation.model'; -export { DGTValidationState } from './lib/domain/models/dgt-validation-state.model'; -export { DGTValidationType } from './lib/domain/models/dgt-validation-type.model'; -export { DGTFirebaseBaseAppState } from './lib/state/models/dgt-firebase-base-app-state.model'; -export { DGTVentureFileService } from './lib/file/services/dgt-venture-file.service'; -export { DGTClientDataService } from './lib/integrations/services/dgt-client-data.service'; -export { DGTClientLogicService } from './lib/integrations/services/dgt-client-logic.service'; -export * from './lib/state/models/dgt-actions.model'; diff --git a/projects/dgt-shared-venture/src/test.configuration.ts b/projects/dgt-shared-venture/src/test.configuration.ts deleted file mode 100644 index 014913a7..00000000 --- a/projects/dgt-shared-venture/src/test.configuration.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { RouterTestingModule } from '@angular/router/testing'; -import { DGTTestConfiguration } from '@digita-ai/dgt-shared-test'; -import { declarations, imports, providers } from './lib/dgt-shared-venture.module'; - -export const configuration: DGTTestConfiguration = { - module: { - declarations, - imports: [ - RouterTestingModule, - ...imports, - ], - providers: [ - ...providers - ], - } -}; diff --git a/projects/dgt-shared-venture/src/test.ts b/projects/dgt-shared-venture/src/test.ts deleted file mode 100644 index e11ff1c9..00000000 --- a/projects/dgt-shared-venture/src/test.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/dgt-shared-venture/tsconfig.lib.json b/projects/dgt-shared-venture/tsconfig.lib.json deleted file mode 100644 index 36984a24..00000000 --- a/projects/dgt-shared-venture/tsconfig.lib.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/lib", - "target": "es2015", - "module": "es2015", - "moduleResolution": "node", - "declaration": true, - "sourceMap": true, - "inlineSources": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "dom", - "es2018" - ] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "enableResourceInlining": true - }, - "exclude": [ - "src/test.ts", - "**/*.spec.ts" - ] -} diff --git a/projects/dgt-shared-venture/tsconfig.spec.json b/projects/dgt-shared-venture/tsconfig.spec.json deleted file mode 100644 index f1e8c20c..00000000 --- a/projects/dgt-shared-venture/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "node" - ] - }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] -} diff --git a/projects/dgt-shared-venture/tslint.json b/projects/dgt-shared-venture/tslint.json deleted file mode 100644 index 124133f8..00000000 --- a/projects/dgt-shared-venture/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -} diff --git a/projects/dgt-shared-web/README.md b/projects/dgt-shared-web/README.md deleted file mode 100644 index cf2d82f8..00000000 --- a/projects/dgt-shared-web/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# DgtSharedWeb - -This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0. - -## Code scaffolding - -Run `ng generate component component-name --project dgt-shared-web` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project dgt-shared-web`. -> Note: Don't forget to add `--project dgt-shared-web` or else it will be added to the default project in your `angular.json` file. - -## Build - -Run `ng build dgt-shared-web` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Publishing - -After building your library with `ng build dgt-shared-web`, go to the dist folder `cd dist/dgt-shared-web` and run `npm publish`. - -## Running unit tests - -Run `ng test dgt-shared-web` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/projects/dgt-shared-web/karma.conf.js b/projects/dgt-shared-web/karma.conf.js deleted file mode 100644 index d110a874..00000000 --- a/projects/dgt-shared-web/karma.conf.js +++ /dev/null @@ -1,32 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage/dgt-shared-web'), - reports: ['html', 'lcovonly'], - fixWebpackSourcePaths: true - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome'], - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/projects/dgt-shared-web/ng-package.json b/projects/dgt-shared-web/ng-package.json deleted file mode 100644 index b773a804..00000000 --- a/projects/dgt-shared-web/ng-package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", - "dest": "../../dist/dgt-shared-web", - "deleteDestPath": false, - "lib": { - "entryFile": "src/public-api.ts", - "styleIncludePaths": [ - "theme" - ] - }, - "whitelistedNonPeerDependencies": [ - "@angular/core", - "@angular/common", - "@angular/http", - "@angular/cdk", - "@angular/material", - "@digita-ai/dgt-shared-utils", - "@digita-ai/dgt-shared-data", - "@ngrx/effects", - "@ngrx/router-store", - "@ngrx/store", - "@ngrx/store-devtools", - "@ngx-translate/core", - "awesome-phonenumber", - "locale2", - "redux-beacon", - "@redux-beacon/google-analytics", - "@redux-beacon/google-tag-manager", - "moment", - "solid-auth-client" - ] -} \ No newline at end of file diff --git a/projects/dgt-shared-web/package.json b/projects/dgt-shared-web/package.json deleted file mode 100644 index 36dff48b..00000000 --- a/projects/dgt-shared-web/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "@digita-ai/dgt-shared-web", - "version": "0.1.2", - "peerDependencies": { - "@angular/cdk": "7.3.7", - "@angular/common": "^7.2.7", - "@angular/core": "^7.2.7", - "@angular/flex-layout": "7.0.0-beta.23", - "@angular/material": "7.3.7", - "@digita-ai/dgt-shared-data": "0.1.2", - "@digita-ai/dgt-shared-utils": "0.1.2", - "@ngrx/effects": "^7.3.0", - "@ngrx/router-store": "^7.3.0", - "@ngrx/store": "^7.3.0", - "@ngrx/store-devtools": "^7.3.0", - "@ngx-translate/core": "11.0.1", - "@ngx-translate/http-loader": "4.0.0", - "@redux-beacon/google-analytics": "^1.1.1", - "@redux-beacon/google-tag-manager": "^1.0.1", - "@solid/oidc-rp": "^0.10.0", - "awesome-phonenumber": "^2.5.0", - "base64url": "^3.0.1", - "buffer": "^5.4.3", - "locale2": "^2.3.1", - "moment": "^2.23.0", - "redux-beacon": "^2.0.3", - "solid-auth-client": "^2.4.1", - "@types/node": "~11.9.5" - }, - "description": "This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.", - "main": "src/public-api.ts", - "devDependencies": { - "@types/solid-auth-client": "^2.3.1" - }, - "publishConfig": { "registry": "https://npm.pkg.github.com" }, - "repository" : { - "type" : "git", - "url": "ssh://git@github.com/digita-ai/dgt-shared.git", - "directory": "projects/dgt-shared-web" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Wouter Janssens", - "license": "ISC" -} diff --git a/projects/dgt-shared-web/src/lib/categories/services/dgt-category-remote.service.ts b/projects/dgt-shared-web/src/lib/categories/services/dgt-category-remote.service.ts deleted file mode 100644 index 9eb9fab8..00000000 --- a/projects/dgt-shared-web/src/lib/categories/services/dgt-category-remote.service.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { DGTCategory, DGTCategoryService, DGTConfigurationBaseWeb } from '@digita-ai/dgt-shared-data'; -import { DGTConfigurationService, DGTErrorArgument, DGTHttpService, DGTInjectable, DGTLoggerService } from "@digita-ai/dgt-shared-utils"; -import { Observable, of } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTCategoryRemoteService extends DGTCategoryService { - constructor(private store: DGTStateStoreService>, private http: DGTHttpService, private logger: DGTLoggerService, private config: DGTConfigurationService) { - super(); - } - - get(uri: string): Observable { - this.logger.debug(DGTCategoryRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}category/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - query(filter: Partial): Observable { - this.logger.debug(DGTCategoryRemoteService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}category` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => _.filter(response.data, filter)), - ); - } - save(resource: DGTCategory): Observable { - throw new Error('Method not implemented.'); - } - delete(resource: DGTCategory): Observable { - throw new Error('Method not implemented.'); - } -} diff --git a/projects/dgt-shared-web/src/lib/connection/services/dgt-connection-remote.service.ts b/projects/dgt-shared-web/src/lib/connection/services/dgt-connection-remote.service.ts deleted file mode 100644 index 94fa3d80..00000000 --- a/projects/dgt-shared-web/src/lib/connection/services/dgt-connection-remote.service.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { DGTConnectionService, DGTConnection, DGTConfigurationBaseWeb, DGTConnectionState } from '@digita-ai/dgt-shared-data'; -import { DGTConfigurationService, DGTErrorArgument, DGTErrorNotImplemented, DGTHttpService, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { of, Observable } from 'rxjs'; -import { map, switchMap, tap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTConnectionRemoteService extends DGTConnectionService { - - constructor( - public store: DGTStateStoreService>, - private http: DGTHttpService, - private config: DGTConfigurationService, - private logger: DGTLoggerService, - ) { - super(); - } - - public save(resource: DGTConnection): Observable> { - throw new DGTErrorNotImplemented(); - } - - public get(uri: string): Observable> { - this.logger.debug(DGTConnectionRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}connection/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get>(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - - public delete(resource: DGTConnection): Observable> { - throw new DGTErrorNotImplemented(); - } - - public query(filter: Partial>): Observable[]> { - this.logger.debug(DGTConnectionRemoteService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}connection` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get[]>(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => _.filter>(response.data, filter)), - ); - } - - public getConnectionsWithWebId(webId: string): Observable[]> { - throw new DGTErrorNotImplemented(); - } - - public getConnectionForInvite(inviteId: string, sourceId: string): Observable<{ state: DGTConnectionState, loginUri: string }> { - this.logger.debug(DGTConnectionRemoteService.name, 'Sending link request to the backend', { inviteId, sourceId }); - - if (!inviteId) { - throw new DGTErrorArgument('Argument inviteId should be set.', inviteId); - } - - if (!sourceId) { - throw new DGTErrorArgument('Argument sourceId should be set.', sourceId); - } - - return of({ sourceId, inviteId }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}invite/${data.inviteId}/link/${data.sourceId}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.post(data.uri, '', { Authorization: `Bearer ${data.accessToken}` })), - map(res => res.data) - ); - } - - public sendTokensForInvite(inviteId: string, fragment: string): Observable> { - this.logger.debug(DGTConnectionRemoteService.name, 'Sending tokens to the backend and verifying rights', { inviteId, fragvalue: fragment }); - - if (!inviteId) { - throw new DGTErrorArgument('Argument inviteId should be set.', inviteId); - } - - if (!fragment) { - throw new DGTErrorArgument('Argument fragment should be set.', fragment); - } - - const splitPerParam = fragment.split('&'); - - let body = {}; - - splitPerParam.forEach(param => { - const key = param.split('=')[0]; - const val = param.split('=')[1]; - body = { ...body, [key]: val } - }); - - const headers = { 'Content-Type': 'application/json' }; - - return of({ inviteId, body, headers }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}invite/${data.inviteId}/connection` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.post>(data.uri, body, { Authorization: `Bearer ${data.accessToken}`, 'Content-Type': 'application/json' })), - map(res => res.data) - ); - } -} diff --git a/projects/dgt-shared-web/src/lib/connection/services/dgt-connection-state.service.ts b/projects/dgt-shared-web/src/lib/connection/services/dgt-connection-state.service.ts deleted file mode 100644 index 7e4bd1e7..00000000 --- a/projects/dgt-shared-web/src/lib/connection/services/dgt-connection-state.service.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { DGTConnectionService, DGTConnection } from '@digita-ai/dgt-shared-data'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { of, Observable } from 'rxjs'; -import { map, switchMap, take } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTConnectionStateService extends DGTConnectionService { - - constructor(private store: DGTStateStoreService>, private logger: DGTLoggerService,) { - super(); - } - - public save(resource: DGTConnection): Observable> { - throw new DGTErrorNotImplemented(); - } - - public get(uri: string): Observable> { - this.logger.debug(DGTConnectionStateService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - switchMap(data => this.store.select[]>(state => state.app.connections) - .pipe(map(connections => ({ ...data, connections })))), - map(data => data.connections ? data.connections.find(c => c.uri === data.uri) : null), - take(1), - ); - } - - public delete(resource: DGTConnection): Observable> { - throw new DGTErrorNotImplemented(); - } - - public query(filter: Partial>): Observable[]> { - this.logger.debug(DGTConnectionStateService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - switchMap(data => this.store.select[]>(state => state.app.connections) - .pipe(map(connections => ({ ...data, connections })))), - map(data => _.filter(data.connections, data.filter)), - take(1), - ) - } - - public getConnectionsWithWebId(webId: string): Observable[]> { - throw new DGTErrorNotImplemented(); - } - - public getConnectionForInvite(inviteId: string, sourceId: string): Observable { - throw new DGTErrorNotImplemented(); - } - - public sendTokensForInvite(inviteId: string, fragvalue: string): Observable> { - throw new DGTErrorNotImplemented(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.html deleted file mode 100644 index e995134f..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - {{ 'common.data.categories.' + category.title + '-title' | translate}} - - - - {{ 'common.data.categories.' + category.title + '-description' | translate}} - - - -
    -
    - - Save Changes - -
    - - - - - - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.scss deleted file mode 100644 index 01acbe21..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.scss +++ /dev/null @@ -1,34 +0,0 @@ -@import 'styles'; - -:host { - margin-bottom: $measure-gutter-large; - display: block; -} - -dgt-section-action { - - display: flex; - - button { - background: inherit; - padding: 0; - border: none; - outline: none; - cursor: pointer; - - i { - font-size: 1.25rem; - display: block; - padding: 0.5rem; - width: 1.25rem; - height: 1.25rem; - text-align: center; - } - } -} - -dgt-button { - margin-top: $measure-gutter-xlarge; - display: block; - height: $measure-gutter-xlarge*2; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.spec.ts deleted file mode 100644 index aca5ebd6..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.spec.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { configuration } from 'test.configuration'; -import { mockValueName, mockValues, mockCategoryName, mockValueRole } from 'test.data.mock-data'; -import { DGTDataCategoryComponent } from './data-category.component'; -import { Navigate } from '@digita-ai/dgt-shared-web'; - -describe('DGTBrowserDataCategoryComponent', () => { - - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTDataCategoryComponent, false); - let hostElement: HTMLElement; - - beforeEach(() => { - hostElement = testService.fixture.nativeElement; - testService.component.values = [mockValueName]; - testService.component.category = mockCategoryName; - testService.fixture.detectChanges(); - }); - - describe('viewCategoryPage function', () => { - it('should dispatch Navigate', () => { - spyOn(testService.component.store, 'dispatch'); - testService.component.viewCategoryPage(mockCategoryName); - expect(testService.component.store.dispatch).toHaveBeenCalledWith(new Navigate( { path: [`/data/category/${mockCategoryName.title}`] } )); - }); - }); - - describe('onValueUpdated function', () => { - it('should throw error when value is null', () => { - expect( () => - testService.component.onValueUpdated(null) - ).toThrow(); - }); - it('should throw error when value.value is null', () => { - expect( () => - testService.component.onValueUpdated({value: null, newObject: 'test'}) - ).toThrow(); - }); - it('should throw error when value.newObject is null', () => { - expect( () => - testService.component.onValueUpdated({value: mockValueName, newObject: null}) - ).toThrow(); - }); - it('should add value to valuesToUpdate Map', () => { - const originalLength = testService.component.valuesToUpdate.size; - const newValue = {value: mockValueRole, newObject: 'test-role'}; - testService.component.onValueUpdated(newValue); - expect(testService.component.valuesToUpdate.size).toBeGreaterThan(originalLength); - expect(testService.component.valuesToUpdate.get(newValue.value.uri)).toBeTruthy(); - }); - }); - - describe('updateValues function', () => { - it('should emit valuesUpdated', () => { - spyOn(testService.component.valueUpdated, 'emit'); - const entity = {value: mockValueName, newObject: 'test-obj'}; - const map = new Map().set('test', entity); - testService.component.updateValues(map); - expect(testService.component.valueUpdated.emit).toHaveBeenCalledWith(entity); - }); - }); - - describe('html view', () => { - it('should contain category icon', () => { - const icon: HTMLElement = hostElement.querySelector('dgt-section-icon'); - expect(icon).toBeTruthy(); - }); - - it('should contain category description', () => { - const title: HTMLElement = hostElement.querySelector('dgt-section-title'); - expect(title.innerHTML).toContain(mockCategoryName.description); - }) - describe('update button', () => { - it('should not display when valuesToUpdate is empty', () => { - testService.component.valuesToUpdate.clear(); - testService.fixture.detectChanges(); - const button: HTMLButtonElement = hostElement.querySelector('dgt-section-content dgt-button button'); - expect(button).toBeFalsy(); - }); - it('should display when valuesToUpdate has values', () => { - testService.component.valuesToUpdate.set(mockValueName.uri, {value: mockValueName, newObject: 'test-name-two'}); - testService.fixture.detectChanges(); - const button: HTMLButtonElement = hostElement.querySelector('dgt-section-content dgt-button button'); - expect(button).toBeTruthy(); - }); - it('should call updateValues on click', () => { - testService.component.valuesToUpdate.set(mockValueName.uri, {value: mockValueName, newObject: 'test-name-two'}); - testService.fixture.detectChanges(); - spyOn(testService.component, 'updateValues'); - const button: HTMLButtonElement = hostElement.querySelector('dgt-section-content dgt-button button'); - button.click(); - expect(testService.component.updateValues).toHaveBeenCalledWith(testService.component.valuesToUpdate); - }); - }); - describe('action button info', () => { - it('should call viewCategoryPage when clicked', () => { - spyOn(testService.component, 'viewCategoryPage'); - const button: HTMLButtonElement = hostElement.querySelector('dgt-section-action button'); - button.click(); - expect(testService.component.viewCategoryPage).toHaveBeenCalledWith(mockCategoryName); - }); - }); - describe('action button more', () => { - // TBD - }); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.ts deleted file mode 100644 index 74306995..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-category/dgt-data-category.component.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Component, Input, ViewChild, Output, EventEmitter, AfterViewInit } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTCategory } from '@digita-ai/dgt-shared-data'; -import { DGTParameterCheckerService, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { DGTDataInterfaceFactoryService } from '../../services/dgt-data-interface-factory.service'; -import { DGTDataValue, DGTDataInterfaceHostDirective } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-category', - templateUrl: './dgt-data-category.component.html', - styleUrls: ['./dgt-data-category.component.scss'] -}) -export class DGTDataCategoryComponent implements AfterViewInit { - - /** Updates in children that need updating */ - public valuesToUpdate: Map; - - @ViewChild(DGTDataInterfaceHostDirective) host: DGTDataInterfaceHostDirective; - - /** Data values that belong under this group */ - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - this.updateReceived(values, this.category); - } - - /** Categories of this group */ - private _category: DGTCategory; - public get category(): DGTCategory { - return this._category; - } - @Input() public set category(category: DGTCategory) { - this._category = category; - this.updateReceived(this.values, category); - } - - /** Used to emit feedbackEvent events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - - /** Used to emit infoClicked events */ - @Output() - infoClicked: EventEmitter; - - constructor( - private interfaces: DGTDataInterfaceFactoryService, - private paramChecker: DGTParameterCheckerService, - private logger: DGTLoggerService - ) { - this.valueUpdated = new EventEmitter(); - this.infoClicked = new EventEmitter(); - this.valuesToUpdate = new Map(); - } - - ngAfterViewInit(): void { - if (this.host) { - this.interfaces.create(this.host, this.category, this.values); - } - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: {value: DGTDataValue, newObject: any}): void { - this.paramChecker.checkParametersNotNull({val}, 1); - this.valuesToUpdate.set(val.value.uri, val); - } - - public updateValues(values: Map): void { - values.forEach(value => this.valueUpdated.emit(value)); - this.valuesToUpdate.clear(); - } - - public clickedInfo(category: DGTCategory): void { - this.logger.debug(DGTDataCategoryComponent.name, 'Clicked info in category component, emitting'); - this.infoClicked.emit(category); - } - - updateReceived(values: DGTDataValue[], categories: DGTCategory): any { - if (values && categories) { - this.ngAfterViewInit(); - } - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.html deleted file mode 100644 index 0dd4b779..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - {{'common.data.terms.' + value.predicate | translate}} - - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.scss deleted file mode 100644 index bb33f9b4..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import 'styles'; - -:host { - margin-bottom: $measure-gutter-large; - display: block; -} - -mat-form-field { - width: 100%; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.spec.ts deleted file mode 100644 index 3e76fb8e..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataFieldComponent } from './data-field.component'; -import { configuration } from 'test.configuration'; -import { mockValueName } from 'test.data.mock-data'; -import { DGTCategoryField } from '@digita-ai/dgt-shared-data'; -import { DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; - -describe('DGTBrowserDataFieldComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataFieldComponent); - let hostElement: HTMLElement; - - beforeEach(() => { - hostElement = testService.fixture.nativeElement; - testService.component.field = { - description: 'Full name', - fields: [ - 'http://www.w3.org/2006/vcard/ns#fn', - 'http://xmlns.com/foaf/0.1/name' - ], - } as DGTCategoryField; - testService.component.value = [mockValueName]; - testService.fixture.detectChanges(); - }); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); - - describe('onValueUpdated function', () => { - - const keypressA = new KeyboardEvent('test', {key: 'A'}); - const keypressEnter = new KeyboardEvent('test', {key: 'Enter'}); - - it('should emit valueUpdated when on keypress', () => { - spyOn(testService.component.valueUpdated, 'emit'); - testService.component.onValueUpdated(mockValueName, 'test-name', keypressA); - expect(testService.component.valueUpdated.emit).toHaveBeenCalledWith({value: mockValueName, newObject: 'test-name'}); - }); - it('should emit submit when keypress is enter', () => { - spyOn(testService.component.submit, 'emit'); - testService.component.onValueUpdated(mockValueName, 'test-name', keypressEnter); - expect(testService.component.submit.emit).toHaveBeenCalled(); - }); - it('should throw DGTErrorArgument when value is null', () => { - expect(() => { testService.component.onValueUpdated(null, 'test', keypressA) }).toThrowError(DGTErrorArgument); - }); - it('should throw DGTErrorArgument when newObject is null', () => { - expect(() => { testService.component.onValueUpdated(mockValueName, null, keypressA) }).toThrowError(DGTErrorArgument); - }); - }); - - describe('html view', () => {; - - describe('input field', () => { - - it('should contain correct value', () => { - expect(testService.component.formGroup.get('desc').value).toEqual(mockValueName.object.value); - }); - }) - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.ts deleted file mode 100644 index 9934f3d4..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-field/dgt-data-field.component.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Component, Input, Output, EventEmitter } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { FormGroup, FormControl } from '@angular/forms'; -import { DGTDataValue } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-field', - templateUrl: './dgt-data-field.component.html', - styleUrls: ['./dgt-data-field.component.scss'] -}) -/** The Data Field component shows a text representation of a value */ -export class DGTDataFieldComponent { - - public formGroup: FormGroup; - - /** The values for this field */ - private _value: DGTDataValue; - public get value(): DGTDataValue { - return this._value; - } - @Input() public set value(value: DGTDataValue) { - this._value = value; - this.formGroup.setValue({desc: this.value.object.value}); - } - - /** Used to emit valueUpdated events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - /** Used to emit updateValue events */ - @Output() - submit: EventEmitter; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.formGroup = new FormGroup({ - desc: new FormControl(), - }); - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - /** - * @param value Value to update - * @param newObject the object value to update to - * @param keypress keyboardevent - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(value: DGTDataValue, newObject: any, keypress: KeyboardEvent): void { - this.paramChecker.checkParametersNotNull({value, newObject}); - if (keypress.key === 'Enter') { - this.submit.emit(); - } else { - this.valueUpdated.emit({value, newObject}); - } - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.html deleted file mode 100644 index fe2581d0..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - {{ 'common.data.groups.' + group.id | translate}} - - - - - diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.scss deleted file mode 100644 index 13678ade..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import 'styles'; - -dgt-data-category { - width: 100%; - margin-bottom: $measure-gutter-xlarge; - display: block; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.spec.ts deleted file mode 100644 index 4f40e9d5..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.spec.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { configuration } from 'test.configuration'; -import { mockValueName, mockGroupIdentiy, mockValues, mockCategoryName } from 'test.data.mock-data'; -import { DGTDataGroupComponent } from './data-group.component'; - -describe('DGTBrowserDataGroupComponent', () => { - - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTDataGroupComponent, false); - let hostElement: HTMLElement; - - beforeEach(() => { - hostElement = testService.fixture.nativeElement; - testService.component.values = [mockValues[0]]; - testService.component.categories = [mockCategoryName]; - testService.component.group = mockGroupIdentiy; - testService.fixture.detectChanges(); - }); - - describe('function: onValueChanged', () => { - it('should emit valuedChanged when parameters are valid', () => { - spyOn(testService.component.valueUpdated, 'emit'); - testService.component.onValueUpdated({ - value: mockValueName, - newObject: mockValueName.object.value - }); - expect(testService.component.valueUpdated.emit).toHaveBeenCalled(); - }); - it('should throw error when val is null', () => { - expect( () => - testService.component.onValueUpdated(null) - ).toThrow(); - }); - }); - - describe('html view', () => { - it('should render correct group title', () => { - const title: HTMLElement = hostElement.querySelector('dgt-page-content-group-header'); - expect(title.innerHTML).toEqual(mockGroupIdentiy.description); - }) - - it('should contain dgt-data-category elements', () => { - const categories = hostElement.querySelectorAll('dgt-data-category'); - expect(categories.length).toBeGreaterThan(0); - }) - - it('should only render dgt-data-category for which values exist', () => { - const categories = hostElement.querySelectorAll('dgt-data-category'); - expect(categories.length).toEqual(testService.component.categories.length); - }) - }); - -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.ts deleted file mode 100644 index cc464dc9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-group/dgt-data-group.component.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { DGTDataValueService, DGTCategory, DGTDataGroup, DGTDataValue } from '@digita-ai/dgt-shared-data'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; - -@Component({ - selector: 'dgt-data-group', - templateUrl: './dgt-data-group.component.html', - styleUrls: ['./dgt-data-group.component.scss'] -}) -/** This component acts as a container for categories that belong together */ -export class DGTDataGroupComponent implements OnInit { - - /** Group of this component */ - @Input() public group: DGTDataGroup; - - /** Data values that belong under this group */ - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - this.updateReceived(values, this.categories); - } - - /** Categories of this group */ - private _categories: DGTCategory[]; - public get categories(): DGTCategory[] { - return this._categories; - } - @Input() public set categories(categories: DGTCategory[]) { - this._categories = categories; - this.updateReceived(this.values, categories); - } - - /** Used to emit feedbackEvent events */ - @Output() - public valueUpdated: EventEmitter<{ value: DGTDataValue, newObject: any }>; - - /** Used to emit infoClicked events */ - @Output() - infoClicked: EventEmitter; - - /** Data values grouped by category uri */ - public groupedValues; - /** Categories grouped by category uri */ - public groupedCategories; - - constructor( - private datavalueService: DGTDataValueService, - private paramChecker: DGTParameterCheckerService, - private logger: DGTLoggerService - ) { - this.groupedValues = new Map(); - this.valueUpdated = new EventEmitter(); - this.infoClicked = new EventEmitter(); - } - - ngOnInit() { } - - /** - * This function will be called when values or categories get updated - * It groups the categories and values by category uri - * @param values values to group - * @param categories categories to group - */ - public updateReceived(values: DGTDataValue[], categories: DGTCategory[]) { - this.logger.debug(DGTDataGroupComponent.name, 'Received update', { values, categories }); - - if (values && categories) { - // Categories for which a value exists - if (this.categories.length > 0) { - this.groupedCategories = _.groupBy(categories, category => category.uri); - - // grouping values by category - this.categories.forEach(category => { - if (category.uri) { - this.datavalueService.getValuesOfCategories([category], values) - .subscribe(valuesOfCategory => { - this.groupedValues.set( - category.uri, - valuesOfCategory - ); - }); - } - }); - } - } - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: { value: DGTDataValue, newObject: any }): void { - this.paramChecker.checkParametersNotNull({ val }, 1); - this.valueUpdated.emit(val); - } - - /** - * @param category Category on which info has been clicked - * @throws DGTErrorArgument when category is not set - * @emits - */ - public onInfoClicked(category: DGTCategory): void { - this.logger.debug(DGTDataGroupComponent.name, 'Clicked info in category component, emitting'); - this.paramChecker.checkParametersNotNull({ category }, 1); - this.infoClicked.emit(category); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.html deleted file mode 100644 index e86d8796..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#hasGender' | translate}} - - - None - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#Male' | translate}} - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#Female' | translate}} - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#None' | translate}} - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#Other' | translate}} - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#Unknown' | translate}} - - - - - - - - {{ 'common.data.terms.http://www.w3.org/2006/vcard/ns#bday' | translate}} - - - - - - - - {{ 'common.data.terms.https://www.w3.org/ns/person#placeOfBirth' | translate}} - - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.spec.ts deleted file mode 100644 index a14f273f..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataInterfaceDescentComponent } from './data-interface-descent.component'; - -describe('DataInterfaceDescentComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataInterfaceDescentComponent); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.ts deleted file mode 100644 index 04f2cf87..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTCategory } from '@digita-ai/dgt-shared-data'; -import { FormGroup, FormControl } from '@angular/forms'; -import { DGTDataValue, DGTDataInterface } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-interface-descent', - templateUrl: './dgt-data-interface-descent.component.html', - styleUrls: ['./dgt-data-interface-descent.component.scss'] -}) -export class DGTDataInterfaceDescentComponent implements OnInit, DGTDataInterface { - - /** The form to display the data in */ - public formGroup: FormGroup; - - /** the category of this component */ - private _category: DGTCategory; - public get category(): DGTCategory { - return this._category; - } - @Input() public set category(category: DGTCategory) { - this._category = category; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - /** values needed to display descent data */ - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - public gender: string; - public dateOfBirth: string; - public placeOfBirth: string; - - /** Used to emit feedbackEvent events */ - @Output() - valueUpdated: EventEmitter<{ value: DGTDataValue, newObject: any }>; - - /** Used to emit submit events */ - @Output() - submit: EventEmitter; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - - this.formGroup = new FormGroup({ - gender: new FormControl(), - dateOfBirth: new FormControl(), - placeOfBirth: new FormControl(), - }); - } - - ngOnInit() { - } - - private updateReceived(values: DGTDataValue[], category: DGTCategory) { - this.logger.debug(DGTDataInterfaceDescentComponent.name, 'Update received', { values, category }); - this.paramChecker.checkParametersNotNull({values, category}); - - const genderReferences = values.filter(genderReference => { - const genderReferenceObject = genderReference.object.value; - const isHasGender = genderReference.predicate === 'http://www.w3.org/2006/vcard/ns#hasGender'; - const hasGenderType = values.find(value => value.predicate === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' && value.object.value === 'http://www.w3.org/2006/vcard/ns#Gender' && value.subject.value === genderReferenceObject) ? true : false; - const hasGenderValue = values.find(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#value' && value.subject.value === genderReferenceObject) ? true : false; - - this.logger.debug(DGTDataInterfaceDescentComponent.name, 'Checking gender reference', { genderReference, isHasGender, hasGenderType, hasGenderValue }); - return isHasGender && hasGenderType && hasGenderValue; - }); - - this.logger.debug(DGTDataInterfaceDescentComponent.name, 'Filtered gender references', { genderRederences: genderReferences }); - - if (genderReferences && genderReferences.length > 0) { - const genderReference = genderReferences[0]; - const genderReferenceObject = genderReference.object.value; - const genderValue = values.find(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#value' && value.subject.value === genderReferenceObject); - - this.logger.debug(DGTDataInterfaceDescentComponent.name, 'Retrieved gender value for first gender reference', { genderReference, genderValue }); - - if (genderValue) { - this.gender = genderValue.object.value; - } - } - - const dateOfBirthValue = values.find(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#bday'); - - if (dateOfBirthValue) { - this.dateOfBirth = dateOfBirthValue.object.value; - } - - const placeOfBirthValue = values.find(value => value.predicate === 'https://www.w3.org/ns/person#placeOfBirth'); - - if (placeOfBirthValue) { - this.placeOfBirth = placeOfBirthValue.object.value; - } - - this.formGroup.patchValue({ - gender: this.gender, - dateOfBirth: this.dateOfBirth, - placeOfBirth: this.placeOfBirth - }); - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: { value: DGTDataValue, newObject: any }): void { - this.paramChecker.checkParametersNotNull({val}, 1); - this.valueUpdated.emit(val); - } - - /** - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onSubmit(): void { - this.submit.emit(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.html deleted file mode 100644 index a700f21a..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - {{ 'common.data.terms.' + type | translate}} - - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.spec.ts deleted file mode 100644 index 99e87934..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataInterfaceEmailValueComponent } from './data-interface-email-value.component'; - -describe('DGTBrowserDataInterfaceEmailValueComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataInterfaceEmailValueComponent); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.ts deleted file mode 100644 index 1468d3fe..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { FormGroup, FormControl } from '@angular/forms'; -import { DGTDataValue } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-interface-email-value', - templateUrl: './dgt-data-interface-email-value.component.html', - styleUrls: ['./dgt-data-interface-email-value.component.scss'] -}) -/** The Data Value component is a detailed view of a single Data Value */ -export class DGTDataInterfaceEmailValueComponent implements OnInit { - - /** The form to display the data in */ - public formGroup: FormGroup; - - /** The data value of this component */ - private _value: DGTDataValue; - @Input() - public get value(): DGTDataValue { - return this._value; - } - public set value(value: DGTDataValue) { - this._value = value; - - if (this.value && this.email) { - this.updateReceived(this.value, this.email); - } - } - - /** Used to emit valueUpdated events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - - /** Used to emit submit events */ - @Output() - submit: EventEmitter; - - /** input: email */ - private _email: string; - public get email(): string { - return this._email; - } - @Input() - public set email(v: string) { - this._email = v; - - if (this.value && this.email) { - this.updateReceived(this.value, this.email); - } - } - - /** input: type */ - private _type: string; - public get type(): string { - return this._type; - } - @Input() - public set type(v: string) { - this._type = v; - } - - /** cleaned version of email to be displayed */ - public emailCleaned: string = null; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.formGroup = new FormGroup({ - email: new FormControl(), - }); - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - ngOnInit() { } - - /** - * On every update of the value input, update the form group values - * @param values all values of this field - */ - private updateReceived(value: DGTDataValue, email: string) { - this.logger.debug(DGTDataInterfaceEmailValueComponent.name, 'Update received', { value, email }); - this.paramChecker.checkParametersNotNull({value, email}); - - const emailSplit = email.split('mailto:'); - - if (emailSplit && emailSplit.length > 0) { - this.emailCleaned = emailSplit[1]; - } else { - this.emailCleaned = email; - } - - this.formGroup.setValue({ - email: this.emailCleaned, - }); - } - - /** - * @param value Value to update - * @param newObject the object value to update to - * @param keypress keyboardevent - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(value: DGTDataValue, email: string, keypress: KeyboardEvent): void { - this.paramChecker.checkParametersNotNull({value, email}); - if (keypress.keyCode === 13) { - this.submit.emit(); - } else { - const parsedEmail = `mailto:${email}`; - this.valueUpdated.emit({value, newObject: parsedEmail}); - } - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.html deleted file mode 100644 index 8bf3045b..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.spec.ts deleted file mode 100644 index dfd80c38..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataInterfaceEmailComponent } from './data-interface-email.component'; -import { DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; -import { mockCategoryEmail, mockTypeWork, mockValueEmail, mockReferenceEmail } from 'test.data.mock-data'; - -describe('DataInterfaceEmailComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataInterfaceEmailComponent); - let hostElement: HTMLElement; - - beforeEach(() => { - testService.component.category = mockCategoryEmail; - testService.component.values = [mockValueEmail, mockReferenceEmail, mockTypeWork]; - testService.fixture.detectChanges(); - hostElement = testService.fixture.nativeElement; - }); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); - - describe('onValueUpdated function', () => { - it('should emit valueUpdated with correct val', () => { - spyOn(testService.component.valueUpdated, 'emit'); - testService.component.onValueUpdated({value: mockValueEmail, newObject: 'test'}); - expect(testService.component.valueUpdated.emit).toHaveBeenCalled(); - }); - it('should throw DGTErrorArgument if val is null', () => { - expect(() => { testService.component.onValueUpdated(null) }).toThrowError(DGTErrorArgument); - }); - }); - - describe('onSubmit function', () => { - it('should emit submit', () => { - spyOn(testService.component.submit, 'emit'); - testService.component.onSubmit(); - expect(testService.component.submit.emit).toHaveBeenCalled(); - }); - }); - - describe('html view', () => { - it('should contain interface-email-values', () => { - const emailValues = hostElement.querySelectorAll('dgt-data-interface-email-value'); - expect(emailValues.length).toBeGreaterThan(0); - }); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.ts deleted file mode 100644 index 5a78817d..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTMap, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTCategory } from '@digita-ai/dgt-shared-data'; -import { DGTDataValue, DGTDataInterface } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-interface-email', - templateUrl: './dgt-data-interface-email.component.html', - styleUrls: ['./dgt-data-interface-email.component.scss'] -}) -export class DGTDataInterfaceEmailComponent implements OnInit, DGTDataInterface { - - /** The category of this component */ - private _category: DGTCategory; - public get category(): DGTCategory { - return this._category; - } - @Input() public set category(category: DGTCategory) { - this._category = category; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - /** all DGTDataValues of which we want to display the email */ - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - public emails: DGTMap; - - private emailValues: DGTDataValue[]; - - /** Used to emit feedbackEvent events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - - /** Used to emit submit events */ - @Output() - submit: EventEmitter; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - ngOnInit() { } - - private updateReceived(values: DGTDataValue[], category: DGTCategory) { - this.logger.debug(DGTDataInterfaceEmailComponent.name, 'Update received', { values, category }); - this.paramChecker.checkParametersNotNull({values, category}); - - const emailReferences = values.filter(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#hasEmail'); - const emailValues = values.filter(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#value'); - this.emailValues = emailValues; - const emailTypes = values.filter(value => value.predicate === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'); - - this.logger.debug(DGTDataInterfaceEmailComponent.name, 'Filtered email values and references', { emailReferences, emailValues }); - - if (emailReferences && emailValues && emailTypes) { - const emailsReferencesWithValues = emailReferences.map<{ key: DGTDataValue; value: { email: string, type: string }; }>(emailReference => { - const emailReferenceObject = emailReference.object.value; - - const emailValue = emailValues.find(val => val.subject.value === emailReferenceObject); - const emailType = emailTypes.find(type => type.subject.value === emailReferenceObject); - const value = emailValue && emailType ? { email: emailValue.object.value, type: emailType.object.value } : null; - - return { - key: emailReference, - value - }; - }); - - this.logger.debug(DGTDataInterfaceEmailComponent.name, 'Combined email references with values', { emailsReferencesWithValues }); - this.emails = new DGTMap(emailsReferencesWithValues); - this.logger.debug(DGTDataInterfaceEmailComponent.name, 'Filtered emails', { emails: this.emails }); - } - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: {value: DGTDataValue, newObject: any}): void { - this.paramChecker.checkParametersNotNull({val}); - const oldValue = this.emailValues.find(value => value.subject.value === val.value.object.value); - this.valueUpdated.emit({value: oldValue, newObject: val.newObject}); - } - - /** - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onSubmit(): void { - this.submit.emit(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.html deleted file mode 100644 index ed24ab35..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - {{ 'common.data.terms.' + type | translate}} - - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.spec.ts deleted file mode 100644 index 6492187e..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.spec.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataInterfacePhoneValueComponent } from './data-interface-phone-value.component'; - -describe('DGTBrowserDataInterfacePhoneValueComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataInterfacePhoneValueComponent); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.ts deleted file mode 100644 index d624bb8c..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { FormGroup, FormControl } from '@angular/forms'; -import { DGTDataValue } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-interface-phone-value', - templateUrl: './dgt-data-interface-phone-value.component.html', - styleUrls: ['./dgt-data-interface-phone-value.component.scss'] -}) -/** The Data Value component is a detailed view of a single Data Value */ -export class DGTDataInterfacePhoneValueComponent implements OnInit { - - /** The form to display the data in */ - public formGroup: FormGroup; - - /** The data value of this component */ - private _value: DGTDataValue; - @Input() - public get value(): DGTDataValue { - return this._value; - } - public set value(value: DGTDataValue) { - this._value = value; - - if (this.value && this.phone) { - this.updateReceived(this.value, this.phone); - } - } - - /** Used to emit valueUpdated events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - - /** Used to emit submit events */ - @Output() - submit: EventEmitter; - - /** input: phone */ - private _phone: string; - public get phone(): string { - return this._phone; - } - @Input() - public set phone(v: string) { - this._phone = v; - - if (this.value && this.phone) { - this.updateReceived(this.value, this.phone); - } - } - - /** input: type */ - private _type: string; - public get type(): string { - return this._type; - } - @Input() - public set type(v: string) { - this._type = v; - } - - /** cleaned version of phone numbera to be displayed */ - public phoneCleaned: string = null; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.formGroup = new FormGroup({ - phone: new FormControl(), - }); - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - ngOnInit() { } - - /** - * On every update of the value input, update the form group values - * @param values all values of this field - */ - private updateReceived(value: DGTDataValue, phone: string) { - this.logger.debug(DGTDataInterfacePhoneValueComponent.name, 'Update received', { value, phone }); - this.paramChecker.checkParametersNotNull({value, phone}); - - const phoneSplit = phone.split('tel:'); - - if (phoneSplit && phoneSplit.length > 0) { - this.phoneCleaned = phoneSplit[1]; - } else { - this.phoneCleaned = phone; - } - - this.formGroup.setValue({ - phone: this.phoneCleaned, - }); - } - - /** - * @param value Value to update - * @param string Updated phone number - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(value: DGTDataValue, phone: string): void { - const parsedPhone = `tel:${phone}`; - this.paramChecker.checkParametersNotNull({value, phone}); - this.valueUpdated.emit({value, newObject: parsedPhone}); - } - - /** - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onSubmit(): void { - this.submit.emit(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.html deleted file mode 100644 index 65d47c6d..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.spec.ts deleted file mode 100644 index 2d44ed67..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataInterfacePhoneComponent } from './data-interface-phone.component'; -import { mockCategoryPhone, mockValuePhone, mockReferencePhone, mockTypeWork } from 'test.data.mock-data'; -import { DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; - -describe('DataInterfaceEmailComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataInterfacePhoneComponent, false); - let hostElement: HTMLElement; - - beforeEach(() => { - testService.component.category = mockCategoryPhone; - testService.component.values = [mockValuePhone, mockReferencePhone, mockTypeWork]; - testService.fixture.detectChanges(); - hostElement = testService.fixture.nativeElement; - }) - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); - - describe('onValueUpdated function', () => { - it('should emit valueUpdated with correct val', () => { - spyOn(testService.component.valueUpdated, 'emit'); - testService.component.onValueUpdated({value: mockValuePhone, newObject: 'test'}); - expect(testService.component.valueUpdated.emit).toHaveBeenCalled(); - }); - it('should throw DGTErrorArgument if val is null', () => { - expect(() => { testService.component.onValueUpdated(null) }).toThrowError(DGTErrorArgument); - }); - }); - - describe('onSubmit function', () => { - it('should emit submit', () => { - spyOn(testService.component.submit, 'emit'); - testService.component.onSubmit(); - expect(testService.component.submit.emit).toHaveBeenCalled(); - }); - }); - - describe('html view', () => { - it('should contain interface-phone-values', () => { - const phoneValues = hostElement.querySelectorAll('dgt-data-interface-phone-value'); - expect(phoneValues.length).toBeGreaterThan(0); - }); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.ts deleted file mode 100644 index 6366db88..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTMap, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTCategory } from '@digita-ai/dgt-shared-data'; -import { DGTDataValue, DGTDataInterface } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-interface-phone', - templateUrl: './dgt-data-interface-phone.component.html', - styleUrls: ['./dgt-data-interface-phone.component.scss'] -}) -export class DGTDataInterfacePhoneComponent implements OnInit, DGTDataInterface { - - /** The category of this component */ - private _category: DGTCategory; - public get category(): DGTCategory { - return this._category; - } - @Input() public set category(category: DGTCategory) { - this._category = category; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - /** all DGTDataValues of which we want to display the phone */ - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - public phoneNumbers: DGTMap; - - private phoneValues: DGTDataValue[]; - - /** Used to emit feedbackEvent events */ - @Output() - valueUpdated: EventEmitter<{ value: DGTDataValue, newObject: any }>; - - /** Used to emit submit events */ - @Output() - submit: EventEmitter; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - ngOnInit() { } - - private updateReceived(values: DGTDataValue[], category: DGTCategory) { - this.logger.debug(DGTDataInterfacePhoneComponent.name, 'Update received', { values, category }); - this.paramChecker.checkParametersNotNull({ values, category }); - - const phoneReferences = values.filter(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#hasTelephone'); - const phoneValues = values.filter(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#value'); - this.phoneValues = phoneValues; - const phoneTypes = values.filter(value => value.predicate === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'); - this.logger.debug(DGTDataInterfacePhoneComponent.name, 'Filtered hasTelephone values and references', { phoneReferences, phoneValues }); - - if (phoneReferences && phoneValues && phoneTypes) { - const phoneReferencesWithValues = phoneReferences.map<{ key: DGTDataValue; value: { phone: string, type: string }; }>(phoneReference => { - const phoneReferenceObject = phoneReference.object.value; - - const phoneValue = phoneValues.find(val => val.subject.value === phoneReferenceObject); - const phoneType = phoneTypes.find(type => type.subject.value === phoneReferenceObject); - const value = phoneValue && phoneType ? { phone: phoneValue.object.value, type: phoneType.object.value } : null; - - return { - key: phoneReference, - value - }; - }); - - this.logger.debug(DGTDataInterfacePhoneComponent.name, 'Combined phone references with values', { phoneReferencesWithValues }); - this.phoneNumbers = new DGTMap(phoneReferencesWithValues); - this.logger.debug(DGTDataInterfacePhoneComponent.name, 'Filtered phone number', { phoneNumbers: this.phoneNumbers }); - } - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: { value: DGTDataValue, newObject: any }): void { - this.paramChecker.checkParametersNotNull({ val }); - const oldValue = this.phoneValues.find(value => value.subject.value === val.value.object.value); - this.valueUpdated.emit({ value: oldValue, newObject: val.newObject }); - } - - /** - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onSubmit(): void { - this.submit.emit(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.html deleted file mode 100644 index a50e3dee..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.spec.ts deleted file mode 100644 index 897bdb05..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { mockValueName, mockCategoryName } from 'test.data.mock-data'; -import { DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; -import { DGTBrowserDataInterfaceStandardComponent } from './data-interface-standard.component'; - -describe('DGTBrowserDataInterfaceStandardComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataInterfaceStandardComponent, false); - let hostElement: HTMLElement; - - beforeEach(() => { - hostElement = testService.fixture.nativeElement; - testService.component.category = mockCategoryName; - testService.component.values = [mockValueName]; - testService.fixture.detectChanges(); - }); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); - - describe('html view', () => { - it('should contain data fields', () => { - const dataFields = hostElement.querySelectorAll('dgt-data-field'); - expect(dataFields.length).toBeGreaterThan(0); - }); - }); - - describe('onValueUpdated function', () => { - it('should emit valueUpdated with correct val', () => { - const payload = {value: mockValueName, newObject: 'test'}; - spyOn(testService.component.valueUpdated, 'emit'); - testService.component.onValueUpdated(payload); - expect(testService.component.valueUpdated.emit).toHaveBeenCalledWith(payload); - }); - it('should throw DGTErrorArgument if val is null', () => { - expect(() => { testService.component.onValueUpdated(null) }).toThrowError(DGTErrorArgument); - }); - }); - - describe('onSubmit function', () => { - it('should emit submit', () => { - spyOn(testService.component.submit, 'emit'); - testService.component.onSubmit(); - expect(testService.component.submit.emit).toHaveBeenCalled(); - }); - }); - -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.ts deleted file mode 100644 index 24c96d22..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTCategory, DGTDataInterface, DGTDataValue, DGTLDFilterService } from '@digita-ai/dgt-shared-data'; -import { DGTLDFilterBGP } from '@digita-ai/dgt-shared-data'; -import { map } from 'rxjs/operators'; - -@Component({ - selector: 'dgt-data-interface-standard', - templateUrl: './dgt-data-interface-standard.component.html', - styleUrls: ['./dgt-data-interface-standard.component.scss'] -}) -/** - * The default way of displaying data. This component used the data-field component - * to display itd values. - */ -export class DGTDataInterfaceStandardComponent implements OnInit, DGTDataInterface { - - /** Holds the category this interface belongs to */ - private _category: DGTCategory; - public get category(): DGTCategory { - return this._category; - } - @Input() public set category(category: DGTCategory) { - this._category = category; - - this.updateReceived(this.values, category); - } - - /** holds the values to display */ - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - - this.updateReceived(values, this.category); - } - - /** List of category fields for which a value exists */ - public filteredFields: DGTDataValue[]; - - /** Used to emit feedbackEvent events */ - @Output() - public valueUpdated: EventEmitter<{ value: DGTDataValue, newObject: any }>; - /** Used to emit submit events */ - @Output() - public submit: EventEmitter; - - constructor( - private paramChecker: DGTParameterCheckerService, - private logger: DGTLoggerService, - private filterService: DGTLDFilterService, - ) { - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - ngOnInit() { } - - private updateReceived(values: DGTDataValue[], category: DGTCategory) { - this.logger.debug(DGTDataInterfaceStandardComponent.name, 'Update received', { values, category }); - - if (values && category) { - this.filterService.run(category.filter, values).subscribe( - (vals: DGTDataValue[]) => this.filteredFields = vals - ); - /* const filteredPredicates = _.flatten(category.filters - .map((filter: DGTLDFilterBGP) => filter.predicates) - ); - - this.filteredFields = values - .filter((value: DGTDataValue) => - filteredPredicates.some(predicate => predicate === value.predicate) - ); */ - } - } - - /** - * @param val the original value and its updated object value - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: { value: DGTDataValue, newObject: any }): void { - this.paramChecker.checkParametersNotNull({ val }, 1); - this.valueUpdated.emit(val); - } - - /** - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onSubmit(): void { - this.submit.emit(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.html deleted file mode 100644 index 3d96de17..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.html +++ /dev/null @@ -1,7 +0,0 @@ - -Surveys \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.scss deleted file mode 100644 index 5dfac0d9..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.scss +++ /dev/null @@ -1 +0,0 @@ -@import 'styles'; diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.ts deleted file mode 100644 index 2858c0c8..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import * as _ from 'lodash'; -import { DGTLoggerService, DGTMap, DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; -import { DGTCategory } from '@digita-ai/dgt-shared-data'; -import { DGTDataValue, DGTDataInterface } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-interface-surveys', - templateUrl: './dgt-data-interface-surveys.component.html', - styleUrls: ['./dgt-data-interface-surveys.component.scss'] -}) -export class DGTDataInterfaceSurveysComponent implements OnInit, DGTDataInterface { - - private _category: DGTCategory; - public get category(): DGTCategory { - return this._category; - } - @Input() public set category(category: DGTCategory) { - this._category = category; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - private _values: DGTDataValue[]; - public get values(): DGTDataValue[] { - return this._values; - } - @Input() public set values(values: DGTDataValue[]) { - this._values = values; - - if (this.values && this.category) { - this.updateReceived(this.values, this.category); - } - } - - public surveys: DGTMap; - - /** Used to emit feedbackEvent events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - - @Output() - submit: EventEmitter; - - constructor(private logger: DGTLoggerService) { - this.valueUpdated = new EventEmitter(); - this.submit = new EventEmitter(); - } - - ngOnInit() { - } - - private updateReceived(values: DGTDataValue[], category: DGTCategory) { - this.logger.debug(DGTDataInterfaceSurveysComponent.name, 'Update received', { values, category }); - - if (!values) { - throw new DGTErrorArgument('Argument values should be set.', values); - } - - if (!category) { - throw new DGTErrorArgument('Argument category should be set.', category); - } - - const surveyReferences = values.filter(value => value.predicate === 'http://digita.ai/voc/health#survey'); - - surveyReferences.map(surveyReference => { - - }); - // const emailValues = values.filter(value => value.predicate === 'http://www.w3.org/2006/vcard/ns#value'); - // const emailTypes = values.filter(value => value.predicate === 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'); - - // this.logger.debug(DGTBrowserDataInterfaceEmailComponent.name, 'Filtered email values and references', { emailReferences, emailValues }); - - // if (emailReferences && emailValues && emailTypes) { - // const emailsReferencesWithValues = emailReferences.map<{ key: DGTDataValue; value: { email: string, type: string }; }>(emailReference => { - // const emailReferenceObject = emailReference.object.value; - - // const emailValue = emailValues.find(val => val.subject.value === emailReferenceObject); - // const emailType = emailTypes.find(type => type.subject.value === emailReferenceObject); - // const value = emailValue && emailType ? { email: emailValue.object.value, type: emailType.object.value } : null; - - // return { - // key: emailReference, - // value - // }; - // }); - - // this.logger.debug(DGTBrowserDataInterfaceEmailComponent.name, 'Combined email references with values', { emailsReferencesWithValues }); - - // this.emails = new DGTMap(emailsReferencesWithValues); - - // this.logger.debug(DGTBrowserDataInterfaceEmailComponent.name, 'Filtered emails', { emails: this.emails }); - // } - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(val: {value: DGTDataValue, newObject: any}): void { - if (!val) { - throw new DGTErrorArgument('Argument value should be set.', val); - } - this.valueUpdated.emit(val); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.html b/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.html deleted file mode 100644 index 7b55855b..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - {{value.predicate}} - - - - - - - Subject - - - - Object - - - - - - - - Save Changes - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.scss b/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.scss deleted file mode 100644 index c33d4bbc..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import 'styles'; - -mat-form-field:not(:first-child) { - margin-top: $measure-gutter-xlarge; -} -dgt-button { - margin-top: $measure-gutter-xlarge; - display: block; - height: $measure-gutter-xlarge*2; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.spec.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.spec.ts deleted file mode 100644 index 92fdd346..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.spec.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { configuration } from 'test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTBrowserDataValueComponent } from './data-value.component'; -import { mockValueName, mockValueRole } from 'test.data.mock-data'; -import { DGTErrorArgument } from '@digita-ai/dgt-shared-utils'; - -describe('DGTBrowserDataValueComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTBrowserDataValueComponent); - let hostElement: HTMLElement; - - beforeEach(() => { - hostElement = testService.fixture.nativeElement; - testService.component.value = mockValueName; - testService.fixture.detectChanges(); - }); - - it('should be created', () => { - expect(testService.component).toBeTruthy(); - }); - - describe('onValueUpdated function', () => { - it('should throw DGTErrorArgument when value is null', () => { - expect( () => - testService.component.onValueUpdated(null, 'test') - ).toThrowError(DGTErrorArgument); - }); - it('should throw DGTErrorArgument when newObject is null', () => { - expect( () => - testService.component.onValueUpdated(mockValueName, null) - ).toThrowError(DGTErrorArgument); - }); - - it('should emit valueUpdated when called', () => { - spyOn(testService.component.valueUpdated, 'emit'); - testService.component.onValueUpdated(mockValueName, mockValueName.object.value); - expect(testService.component.valueUpdated.emit).toHaveBeenCalled(); - }); - }); - - describe('updateReceived function', () => { - it('should update formGroup with new values', () => { - testService.component.updateReceived(mockValueRole); - const subject = testService.component.formGroup.get('subject'); - const object = testService.component.formGroup.get('object'); - expect(subject).toBeTruthy(); - expect(subject.value).toEqual(mockValueRole.subject.value); - expect(object).toBeTruthy(); - expect(object.value).toEqual(mockValueRole.triples[0].object.value); - }); - }); - - describe('html view', () => { - - describe('section title', () => { - it('should contain predicate name', () => { - const title: HTMLElement = hostElement.querySelector('dgt-section-title'); - expect(title.innerHTML).toContain(mockValueName.triples[0].predicate.name); - }); - }); - - describe('section subtitle', () => { - it('should contain predicate', () => { - const subtitle: HTMLElement = hostElement.querySelector('dgt-section-subtitle'); - const predicate = mockValueName.triples[0].predicate; - expect(subtitle.innerHTML).toContain(predicate); - }); - }); - - describe('form', () => { - - let form: HTMLElement; - - beforeEach(() => { - form = hostElement.querySelector('dgt-form-control'); - }); - - it('should contain correct subject value', () => { - expect(testService.component.formGroup.get('subject').value) - .toContain(mockValueName.subject.value); - }); - - it('should contain correct object value', () => { - expect(testService.component.formGroup.get('object').value) - .toContain(mockValueName.object.value); - }); - }); - }); -}); diff --git a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.ts b/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.ts deleted file mode 100644 index e5eebd69..00000000 --- a/projects/dgt-shared-web/src/lib/data/components/dgt-data-value/dgt-data-value.component.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { DGTLoggerService, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { FormGroup, FormControl } from '@angular/forms'; -import { DGTDataValue } from '@digita-ai/dgt-shared-data'; - -@Component({ - selector: 'dgt-data-value', - templateUrl: './dgt-data-value.component.html', - styleUrls: ['./dgt-data-value.component.scss'] -}) -/** The Data Value component is a detailed view of a single Data Value */ -export class DGTDataValueComponent implements OnInit { - - /** The form to display the data in */ - public formGroup: FormGroup; - - /** The data value of this component */ - private _value: DGTDataValue; - @Input() - public get value(): DGTDataValue { - return this._value; - } - public set value(value: DGTDataValue) { - this._value = value; - this.updateReceived(value); - } - - /** Used to emit valueUpdated events */ - @Output() - valueUpdated: EventEmitter<{value: DGTDataValue, newObject: any}>; - - constructor( - private logger: DGTLoggerService, - private paramChecker: DGTParameterCheckerService - ) { - this.formGroup = new FormGroup({ - subject: new FormControl(), - object: new FormControl() - }); - this.valueUpdated = new EventEmitter<{value: DGTDataValue, newObject: any}>(); - } - - ngOnInit() { - } - - /** - * On every update of the value input, update the form group values - * @param values all values of this field - */ - public updateReceived(value: DGTDataValue) { - if (value && value.subject && value.object) { - this.formGroup.setValue({ - subject: value.subject.value, - object: value.object.value - }); - } else { - this.logger.debug(DGTDataValueComponent.name, 'value was not set', value); - } - } - - /** - * @param value Value to update - * @throws DGTErrorArgument when value is not set - * @emits - */ - public onValueUpdated(value: DGTDataValue, newObject: string): void { - this.paramChecker.checkParametersNotNull({value, newObject}); - this.valueUpdated.emit({value, newObject}); - this.formGroup.markAsPristine(); - } -} diff --git a/projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-factory.service.ts b/projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-factory.service.ts deleted file mode 100644 index a2cff70e..00000000 --- a/projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-factory.service.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Injectable, ComponentFactoryResolver, } from '@angular/core'; -import { DGTCategory, DGTDataValue } from '@digita-ai/dgt-shared-data'; -import { DGTInjectable, DGTParameterCheckerService } from '@digita-ai/dgt-shared-utils'; -import { DGTDataInterfaceHostDirective } from '@digita-ai/dgt-shared-data'; -import { DGTDataInterfaceResolverService } from './dgt-data-interface-resolver.service'; - -@DGTInjectable() -export class DGTDataInterfaceFactoryService { - constructor( - private resolver: DGTDataInterfaceResolverService, - private componentFactoryResolver: ComponentFactoryResolver, - private paramChecker: DGTParameterCheckerService, - ) { } - - public create(host: DGTDataInterfaceHostDirective, category: DGTCategory, values: DGTDataValue[]) { - this.paramChecker.checkParametersNotNull({viewcontainerref: host.viewContainerRef, category}); - // let viewContainerRef: ViewContainerRef = this.activitiesHost.viewContainerRef; - - host.viewContainerRef.clear(); - - const type = this.resolver.getComponentType(category); - - if (type !== null) { - const componentFactory = this.componentFactoryResolver.resolveComponentFactory(type); - const componentRef = host.viewContainerRef.createComponent(componentFactory); - componentRef.instance.category = category; - componentRef.instance.values = values; - componentRef.instance.valueUpdated.subscribe(event => host.onValueUpdated(event)); - componentRef.instance.submit.subscribe(() => host.onSubmit()); - componentRef.changeDetectorRef.detectChanges(); - } - } -} diff --git a/projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-resolver.service.ts b/projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-resolver.service.ts deleted file mode 100644 index 5b86e629..00000000 --- a/projects/dgt-shared-web/src/lib/data/services/dgt-data-interface-resolver.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable, Type } from '@angular/core'; -import { DGTCategory, DGTDataInterface } from '@digita-ai/dgt-shared-data'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export abstract class DGTDataInterfaceResolverService { - public abstract getComponentType(category: DGTCategory): Type -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/date/services/dgt-date-to-label.service.ts b/projects/dgt-shared-web/src/lib/date/services/dgt-date-to-label.service.ts deleted file mode 100644 index 04bfeff3..00000000 --- a/projects/dgt-shared-web/src/lib/date/services/dgt-date-to-label.service.ts +++ /dev/null @@ -1,66 +0,0 @@ - -import moment from 'moment'; -import { TranslateService } from '@ngx-translate/core'; -import { Observable, of } from 'rxjs'; -import { DGTErrorArgument, DGTInjectable } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export class DGTDateToLabelService { - - constructor( - private translate: TranslateService - ) { } - - public dateToReadableString(date: Date): Observable { - if (!date) { - throw new DGTErrorArgument('date should be set.', date); - } - - if (moment(date).isSame(moment(), 'day')) { - return this.translate.get('common.date.today'); - } else if (moment(date).isSame(moment().subtract(1, 'days'), 'day')) { - return this.translate.get('common.date.yesterday'); - } else { - return of(date.toDateString()); - } - } - - public dateToTimeAgoString(date: Date): Observable { - if (!date) { - throw new DGTErrorArgument('date should be set.', date); - } - - const now = moment(new Date()); - const duration = moment.duration(now.diff(date)); - const minutes = Math.round(duration.asMinutes()); - if (minutes < 60) { - if (minutes < 2) { - return this.translate.get('common.date.justNow'); - } else { - return this.translate.get('common.date.minutesAgo', {minutes} ); - } - } else { - const hours = Math.round(duration.asHours()); - if (hours < 24) { - return hours === 1 ? this.translate.get('common.date.hourAgo', { hours } ) : - this.translate.get('common.date.hoursAgo', { hours }); - } else { - const days = Math.round(duration.asDays()); - if (days < 31) { - return days === 1 ? this.translate.get('common.date.dayAgo', { days } ) : - this.translate.get('common.date.daysAgo', { days }); - } else { - const months = Math.round(duration.asMonths()); - if (months < 12) { - return months === 1 ? this.translate.get('common.date.monthAgo', { months } ) : - this.translate.get('common.date.monthsAgo', { months }); - } else { - const years = Math.round(duration.asYears()); - return years === 1 ? this.translate.get('common.date.yearAgo', { years } ) : - this.translate.get('common.date.yearsAgo', { years }); - } - } - } - } - } -} diff --git a/projects/dgt-shared-web/src/lib/dgt-shared-web.module.ts b/projects/dgt-shared-web/src/lib/dgt-shared-web.module.ts deleted file mode 100644 index de87228d..00000000 --- a/projects/dgt-shared-web/src/lib/dgt-shared-web.module.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { NgModule, Type } from '@angular/core'; -import { DGTTitleService } from './interface/services/dgt-title.service'; -import { DGTPhoneValidator } from './validation/validators/dgt-phone.validator'; -import { DGTCompareValidator } from './validation/validators/dgt-compare.validator'; -import { DGTI8NService } from './i8n/services/dgt-i8n.service'; -import { DGTSharedUtilsModule } from '@digita-ai/dgt-shared-utils'; -import { DGTSharedDataModule } from '@digita-ai/dgt-shared-data'; -import { - MatPaginatorModule, - MatTableModule, - MatSortModule, - MatDialogModule, - MatButtonModule, - MatFormFieldModule, - MatInputModule, - MatSelectModule, - MatMenuModule, -} from '@angular/material'; -import { DGTButtonComponent } from './interface/components/dgt-button/dgt-button.component'; -import { DGTButtonConfirmComponent } from './interface/components/dgt-button-confirm/dgt-button-confirm.component'; -import { CommonModule } from '@angular/common'; -import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; -import { TranslateHttpLoader } from '@ngx-translate/http-loader'; -import { HttpClient } from '@angular/common/http'; -import { DGTFormValidationComponent } from './form/components/dgt-form-validation/dgt-form-validation.component'; -import { DGTFormControlComponent } from './form/components/dgt-form-control/dgt-form-control.component'; -import { DGTFormDateComponent } from './form/components/dgt-form-date/dgt-form-date.component'; -import { DGTFormElementComponent } from './form/components/dgt-form-element/dgt-form-element.component'; -import { DGTFormComponent } from './form/components/dgt-form/dgt-form.component'; -import { DGTFormFileComponent } from './form/components/dgt-form-file/dgt-form-file.component'; -import { DGTFormLabelComponent } from './form/components/dgt-form-label/dgt-form-label.component'; -import { DGTFormAfterValidator } from './form/validators/dgt-form-after.validator'; -import { DGTFormBeforeValidator } from './form/validators/dgt-form-before.validator'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { FlexLayoutModule } from '@angular/flex-layout'; -import { DGTChipComponent } from './interface/components/dgt-chip/dgt-chip.component'; -import { DGTLoadingPageComponent } from './interface/components/dgt-loading-page/dgt-loading-page.component'; -import { DGTBrowserIsSupportedGuard } from './interface/guards/dgt-browser-is-supported.guard'; -import { DGTNotificationsComponent } from './interface/components/dgt-notifications/dgt-notifications.component'; -import { DGTSectionComponent } from './interface/components/dgt-section/dgt-section.component'; -import { DGTSectionTitleComponent } from './interface/components/dgt-section-title/dgt-section-title.component'; -import { DGTSectionContentComponent } from './interface/components/dgt-section-content/dgt-section-content.component'; -import { DGTPageComponent } from './interface/components/dgt-page/dgt-page.component'; -import { DGTPageContentComponent } from './interface/components/dgt-page-content/dgt-page-content.component'; -import { DGTPageSidenavComponent } from './interface/components/dgt-page-sidenav/dgt-page-sidenav.component'; -import { DGTPageSubHeaderComponent } from './interface/components/dgt-page-sub-header/dgt-page-sub-header.component'; -import { DGTPagePaneComponent } from './interface/components/dgt-page-pane/dgt-page-pane.component'; -import { DGTSectionHelpComponent } from './interface/components/dgt-section-help/dgt-section-help.component'; -import { DGTSectionSummaryComponent } from './interface/components/dgt-section-summary/dgt-section-summary.component'; -import { DGTSectionResetComponent } from './interface/components/dgt-section-reset/dgt-section-reset.component'; -import { DGTDialogComponent } from './interface/components/dgt-dialog/dgt-dialog.component'; -import { DGTDialogActionComponent } from './interface/components/dgt-dialog-action/dgt-dialog-action.component'; -import { DGTDialogContentComponent } from './interface/components/dgt-dialog-content/dgt-dialog-content.component'; -import { DGTLinkComponent } from './interface/components/dgt-link/dgt-link.component'; -import { DGTSectionHelpTitleComponent } from './interface/components/dgt-section-help-title/dgt-section-help-title.component'; -import { DGTNotificationComponent } from './interface/components/dgt-notification/dgt-notification.component'; -import { DGTPageHeaderProfileComponent } from './interface/components/dgt-page-header-profile/dgt-page-header-profile.component'; -import { RouterModule } from '@angular/router'; -import { DGTPageRailComponent } from './interface/components/dgt-page-rail/dgt-page-rail.component'; -import { DGTPageRailItemComponent } from './interface/components/dgt-page-rail-item/dgt-page-rail-item.component'; -import { DGTSectionSubtitleComponent } from './interface/components/dgt-section-subtitle/dgt-section-subtitle.component'; -import { DGTSectionIconComponent } from './interface/components/dgt-section-icon/dgt-section-icon.component'; -import { DGTSectionActionComponent } from './interface/components/dgt-section-action/dgt-section-action.component'; -import { DGTPageContentHeaderComponent } from './interface/components/dgt-page-content-header/dgt-page-content-header.component'; -import { DGTPageContentHeaderSubtitleComponent } from './interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component'; -import { DGTPageContentHeaderTitleComponent } from './interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component'; -import { DGTPageContentGroupHeader } from './interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component'; -import { DGTCharmComponent } from './interface/components/dgt-charm/dgt-charm.component'; -import { DGTPageHeaderTitleComponent } from './interface/components/dgt-page-header-title/dgt-page-header-title.component'; -import { DGTPageHeaderComponent } from './interface/components/dgt-page-header/dgt-page-header.component'; -import { DGTPageHeaderLogoComponent } from './interface/components/dgt-page-header-logo/dgt-page-header-logo.component'; -import { DGTPageHeaderControlsComponent } from './interface/components/dgt-page-header-controls/dgt-page-header-controls.component'; -import { DGTDataInterfaceStandardComponent } from './data/components/dgt-data-interface-standard/dgt-data-interface-standard.component'; -import { DGTDataInterfaceSurveysComponent } from './data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component'; -import { DGTDataValueComponent } from './data/components/dgt-data-value/dgt-data-value.component'; -import { DGTDataInterfacePhoneValueComponent } from './data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component'; -import { DGTDataInterfacePhoneComponent } from './data/components/dgt-data-interface-phone/dgt-data-interface-phone.component'; -import { DGTDataInterfaceEmailComponent } from './data/components/dgt-data-interface-email/dgt-data-interface-email.component'; -import { DGTDataFieldComponent } from './data/components/dgt-data-field/dgt-data-field.component'; -import { DGTDataInterfaceDescentComponent } from './data/components/dgt-data-interface-descent/dgt-data-interface-descent.component'; -import { DGTDataInterfaceEmailValueComponent } from './data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component'; -import { DGTDataCategoryComponent } from './data/components/dgt-data-category/dgt-data-category.component'; -import { DGTDataGroupComponent } from './data/components/dgt-data-group/dgt-data-group.component'; -import { DGTSectionAvatarComponent } from './interface/components/dgt-section-avatar/dgt-section-avatar.component'; -import { DGTSectionImageComponent } from './interface/components/dgt-section-image/dgt-section-image.component'; -import { DGTDateToLabelService } from './date/services/dgt-date-to-label.service'; -import { DGTMenuComponent } from './interface/components/dgt-menu/dgt-menu.component'; - -// export const REDUCER_TOKEN = new InjectionToken>('Registered Reducers'); - -export function HttpLoaderFactory(http: HttpClient) { - return new TranslateHttpLoader(http); -} - -export const declarations = [ - DGTButtonComponent, - DGTButtonConfirmComponent, - DGTCharmComponent, - DGTFormValidationComponent, - DGTFormControlComponent, - DGTFormDateComponent, - DGTFormElementComponent, - DGTFormComponent, - DGTFormFileComponent, - DGTFormLabelComponent, - DGTChipComponent, - DGTLoadingPageComponent, - DGTDialogComponent, - DGTDialogActionComponent, - DGTDialogContentComponent, - DGTLinkComponent, - DGTSectionComponent, - DGTSectionActionComponent, - DGTSectionAvatarComponent, - DGTSectionImageComponent, - DGTSectionHelpComponent, - DGTSectionHelpTitleComponent, - DGTSectionIconComponent, - DGTSectionResetComponent, - DGTSectionSummaryComponent, - DGTSectionSubtitleComponent, - DGTSectionTitleComponent, - DGTSectionContentComponent, - DGTPageComponent, - DGTPageSubHeaderComponent, - DGTPageSidenavComponent, - DGTPageSubHeaderComponent, - DGTPagePaneComponent, - DGTPageRailComponent, - DGTPageRailItemComponent, - DGTPageContentComponent, - DGTNotificationComponent, - DGTNotificationsComponent, - DGTPageHeaderProfileComponent, - DGTPageHeaderTitleComponent, - DGTPageContentHeaderComponent, - DGTPageHeaderComponent, - DGTPageContentHeaderSubtitleComponent, - DGTPageContentHeaderTitleComponent, - DGTPageContentGroupHeader, - DGTPageHeaderLogoComponent, - DGTPageHeaderControlsComponent, - DGTPageHeaderTitleComponent, - DGTDataValueComponent, - DGTDataInterfaceSurveysComponent, - DGTDataInterfaceStandardComponent, - DGTDataInterfacePhoneValueComponent, - DGTDataInterfacePhoneComponent, - DGTDataInterfaceEmailValueComponent, - DGTDataInterfaceEmailComponent, - DGTDataFieldComponent, - DGTDataInterfaceDescentComponent, - DGTDataCategoryComponent, - DGTDataGroupComponent, - DGTMenuComponent, -]; -export const imports: (any[] | Type)[] = [ - CommonModule, - FormsModule, - ReactiveFormsModule, - RouterModule, - FlexLayoutModule, - MatButtonModule, - MatDialogModule, - MatTableModule, - MatSortModule, - MatFormFieldModule, - MatInputModule, - MatPaginatorModule, - MatSelectModule, - DGTSharedUtilsModule, - DGTSharedDataModule, - MatMenuModule, -]; -export const providers = [ - DGTTitleService, - DGTI8NService, - DGTPhoneValidator, - DGTCompareValidator, - DGTFormAfterValidator, - DGTFormBeforeValidator, - DGTBrowserIsSupportedGuard, - DGTDateToLabelService, -]; - -@NgModule({ - declarations, - providers, - imports: [ - ...imports, - TranslateModule.forRoot({ - loader: { - provide: TranslateLoader, - useFactory: HttpLoaderFactory, - deps: [HttpClient], - }, - }), - ], - exports: [...imports, ...declarations], -}) -export class DGTSharedWebModule { } diff --git a/projects/dgt-shared-web/src/lib/events/models/dgt-events-actions.model.ts b/projects/dgt-shared-web/src/lib/events/models/dgt-events-actions.model.ts deleted file mode 100644 index 0911a525..00000000 --- a/projects/dgt-shared-web/src/lib/events/models/dgt-events-actions.model.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { DGTProfile, DGTEvent, DGTSourceSolid, DGTConnectionSolid, DGTExchange } from '@digita-ai/dgt-shared-data'; -import { DGTAbstractAction } from '../../state/models/dgt-abstract-action.model'; -import { DGTAction } from '../../state/models/dgt-action.model'; - -export const DGTEventsActionTypes = { - LOAD_EVENTS: '[Timeline] Load Events', - LOAD_EVENTS_FINISHED: '[Timeline] Load Events Finished', - REMOVE_EVENT: '[Timeline] Remove Event', - REMOVE_EVENT_FINISHED: '[Timeline] Remove Event Finished', - FEEDBACK_EVENT: '[Timeline] Feedback Event', - REGISTER_EVENT: '[Timeline] Register Event', - REGISTER_EVENT_FINISHED: '[Timeline] Register Event Finished', -}; - -export interface DGTEventsLoadPayload { - exchange: DGTExchange; - profile: DGTProfile; -} - -export class DGTEventsLoad implements DGTAbstractAction { - type = DGTEventsActionTypes.LOAD_EVENTS; - constructor(public payload: DGTEventsLoadPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} - - -export interface DGTEventsLoadFinishedPayload { - events: DGTEvent[]; - exchange: DGTExchange; -} - -export class DGTEventsLoadFinished implements DGTAbstractAction { - type = DGTEventsActionTypes.LOAD_EVENTS_FINISHED; - constructor(public payload: DGTEventsLoadFinishedPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} - - -export interface DGTEventsRemovePayload { - exchange: DGTExchange; - events: DGTEvent[] -} - -export class DGTEventsRemove implements DGTAbstractAction { - type = DGTEventsActionTypes.REMOVE_EVENT; - constructor(public payload: DGTEventsRemovePayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} - - -export interface DGTEventsRemoveFinishedPayload { - events: DGTEvent[]; -} - -export class DGTEventsRemoveFinished implements DGTAbstractAction { - type = DGTEventsActionTypes.REMOVE_EVENT_FINISHED; - constructor(public payload: DGTEventsRemoveFinishedPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} - - -export interface DGTEventsFeedbackPayload { - event: DGTEvent; -} - -export class DGTEventsFeedback implements DGTAbstractAction { - type = DGTEventsActionTypes.FEEDBACK_EVENT; - constructor(public payload: DGTEventsFeedbackPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} - -export interface DGTEventsRegisterPayload { - event: DGTEvent; - profile: DGTProfile; -} -export class DGTEventsRegister implements DGTAbstractAction { - type = DGTEventsActionTypes.REGISTER_EVENT; - - constructor(public payload: DGTEventsRegisterPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} - -export interface DGTEventsRegisterFinishedPayload { - event: DGTEvent; -} -export class DGTEventsRegisterFinished implements DGTAbstractAction { - type = DGTEventsActionTypes.REGISTER_EVENT_FINISHED; - - constructor(public payload: DGTEventsRegisterFinishedPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} diff --git a/projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-remote.service.ts b/projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-remote.service.ts deleted file mode 100644 index 512b44cb..00000000 --- a/projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-remote.service.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { DGTExchange, DGTExchangeService, DGTConfigurationBaseWeb } from '@digita-ai/dgt-shared-data'; -import { DGTConfigurationService, DGTErrorArgument, DGTHttpService, DGTInjectable, DGTLoggerService } from "@digita-ai/dgt-shared-utils"; -import { Observable, of } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTExchangeRemoteService extends DGTExchangeService { - constructor(private store: DGTStateStoreService>, private http: DGTHttpService, private logger: DGTLoggerService, private config: DGTConfigurationService) { - super(); - } - - get(uri: string): Observable { - this.logger.debug(DGTExchangeRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}exchange/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - query(filter: Partial): Observable { - this.logger.debug(DGTExchangeRemoteService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}exchange` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => _.filter(response.data, filter)), - ); - } - save(resource: DGTExchange): Observable { - throw new Error('Method not implemented.'); - } - delete(resource: DGTExchange): Observable { - throw new Error('Method not implemented.'); - } - -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-state.service.ts b/projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-state.service.ts deleted file mode 100644 index 3eb4a143..00000000 --- a/projects/dgt-shared-web/src/lib/exchanges/services/dgt-exchange-state.service.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { DGTExchangeService, DGTExchange } from '@digita-ai/dgt-shared-data'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { of, Observable } from 'rxjs'; -import { map, switchMap, take } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTExchangeStateService extends DGTExchangeService { - - constructor(private store: DGTStateStoreService>, private logger: DGTLoggerService,) { - super(); - } - - public save(resource: DGTExchange): Observable { - throw new DGTErrorNotImplemented(); - } - - public get(uri: string): Observable { - this.logger.debug(DGTExchangeStateService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - switchMap(data => this.store.select(state => state.app.exchanges) - .pipe(map(exchanges => ({ ...data, exchanges })))), - map(data => data.exchanges ? data.exchanges.find(c => c.uri === data.uri) : null), - take(1), - ); - } - - public delete(resource: DGTExchange): Observable { - throw new DGTErrorNotImplemented(); - } - - public query(filter: Partial): Observable { - throw new DGTErrorNotImplemented(); - } - - public getExchangesWithWebId(webId: string): Observable { - throw new DGTErrorNotImplemented(); - } -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.html deleted file mode 100644 index dbf3bf6f..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.ts deleted file mode 100644 index 24fc7f6e..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-control/dgt-form-control.component.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { AbstractControl } from '@angular/forms'; - -@Component({ - selector: 'dgt-form-control', - templateUrl: './dgt-form-control.component.html', - styleUrls: ['./dgt-form-control.component.scss'] -}) -export class DGTFormControlComponent implements OnInit { - - private _control: AbstractControl = null; - - @Input() - set control(control: AbstractControl) { - this._control = control; - } - - get control(): AbstractControl { return this._control; } - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.html deleted file mode 100644 index 6215fd97..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.html +++ /dev/null @@ -1,19 +0,0 @@ -
    - - {{'common.components.form-date.day-placeholder' | translate}} - - - - {{'common.components.form-date.month-placeholder' | translate}} - - - - {{'common.components.form-date.year-placeholder' | translate}} - - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.scss b/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.spec.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.spec.ts deleted file mode 100644 index b7e34778..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.spec.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { async } from '@angular/core/testing'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTFormDateComponent } from './dgt-form-date.component'; -import moment from 'moment'; -import { configuration } from 'projects/dgt-shared-web/src/test.configuration'; - -describe('DGTFormDateComponent', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTFormDateComponent); - - it('should create', async(() => { - expect(testService.component).toBeTruthy(); - })); - - it('should set date to null by default', async(() => { - expect(testService.component.value).toBeNull(); - })); - - it('should set date to null when only day field is filled', async(() => { - const hostElement: HTMLElement = testService.fixture.nativeElement; - - const inputElement: HTMLInputElement = hostElement.querySelector('input#day'); - inputElement.value = '1'; - inputElement.dispatchEvent(new Event('input')); - - testService.fixture.detectChanges(); - - expect(testService.component.value).toBeNull(); - })); - - it('should set date when all fields are filled', async(() => { - const hostElement: HTMLElement = testService.fixture.nativeElement; - - const dayInputElement: HTMLInputElement = hostElement.querySelector('input#day'); - dayInputElement.value = '1'; - dayInputElement.dispatchEvent(new Event('input')); - - const monthInputElement: HTMLInputElement = hostElement.querySelector('input#month'); - monthInputElement.value = '1'; - monthInputElement.dispatchEvent(new Event('input')); - - const yearInputElement: HTMLInputElement = hostElement.querySelector('input#year'); - yearInputElement.value = '2019'; - yearInputElement.dispatchEvent(new Event('input')); - - testService.fixture.detectChanges(); - - expect(moment(testService.component.value).isSame(new Date(Date.UTC(2019, 0, 1)))).toBeTruthy(); - })); - - it('should set date to null when invalid date is provided', async(() => { - const hostElement: HTMLElement = testService.fixture.nativeElement; - - const dayInputElement: HTMLInputElement = hostElement.querySelector('input#day'); - dayInputElement.value = '1'; - dayInputElement.dispatchEvent(new Event('input')); - - const monthInputElement: HTMLInputElement = hostElement.querySelector('input#month'); - monthInputElement.value = '20'; - monthInputElement.dispatchEvent(new Event('input')); - - const yearInputElement: HTMLInputElement = hostElement.querySelector('input#year'); - yearInputElement.value = '2019'; - yearInputElement.dispatchEvent(new Event('input')); - - testService.fixture.detectChanges(); - - expect(testService.component.value).toBeNull(); - })); - - it('should set date to null when invalid date is provided after a valid date', async(() => { - const hostElement: HTMLElement = testService.fixture.nativeElement; - - const dayInputElement: HTMLInputElement = hostElement.querySelector('input#day'); - dayInputElement.value = '1'; - dayInputElement.dispatchEvent(new Event('input')); - - const monthInputElement: HTMLInputElement = hostElement.querySelector('input#month'); - monthInputElement.value = '1'; - monthInputElement.dispatchEvent(new Event('input')); - - const yearInputElement: HTMLInputElement = hostElement.querySelector('input#year'); - yearInputElement.value = '2019'; - yearInputElement.dispatchEvent(new Event('input')); - - testService.fixture.detectChanges(); - - monthInputElement.value = '20'; - monthInputElement.dispatchEvent(new Event('input')); - - testService.fixture.detectChanges(); - - expect(testService.component.value).toBeNull(); - })); -}); diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.ts deleted file mode 100644 index 3cddeee7..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-date/dgt-form-date.component.ts +++ /dev/null @@ -1,218 +0,0 @@ -import { Component, Input, EventEmitter, Output, OnDestroy, HostBinding, ElementRef, Optional, Self, HostListener } from '@angular/core'; -import { MatFormFieldControl } from '@angular/material'; -import { NgControl, FormGroup, FormControl, Validators, ControlValueAccessor } from '@angular/forms'; -import { Subject } from 'rxjs'; -import { coerceBooleanProperty } from '@angular/cdk/coercion'; -import { FocusMonitor } from '@angular/cdk/a11y'; -import * as _ from 'lodash'; -import moment from 'moment'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@Component({ - selector: 'dgt-form-date', - templateUrl: './dgt-form-date.component.html', - styleUrls: ['./dgt-form-date.component.scss'], - providers: [{ provide: MatFormFieldControl, useExisting: DGTFormDateComponent }] -}) -export class DGTFormDateComponent implements MatFormFieldControl, OnDestroy, ControlValueAccessor { - static nextId = 0; - public formGroup: FormGroup; - - private _year: number; - public get year(): number { - return this._year; - } - public set year(v: number) { - this.logger.debug(DGTFormDateComponent.name, 'Updating year', { oldValue: this._year, newValue: v }); - - if (this._year !== v) { - this._year = v; - - this.setDate(this.year, this.month, this.day); - } - } - - private _month: number; - public get month(): number { - return this._month; - } - public set month(v: number) { - this.logger.debug(DGTFormDateComponent.name, 'Updating month', { oldValue: this._month, newValue: v }); - - if (this._month !== v) { - this._month = v; - - this.setDate(this.year, this.month, this.day); - } - } - - private _day: number; - public get day(): number { - return this._day; - } - public set day(v: number - ) { - this.logger.debug(DGTFormDateComponent.name, 'Updating day', { oldValue: this._day, newValue: v }); - - if (this._day !== v) { - this._day = v; - - this.setDate(this.year, this.month, this.day); - } - } - - public stateChanges: Subject = new Subject(); - - @HostBinding() id = `dgt-form-date-${DGTFormDateComponent.nextId++}`; - public focused: boolean; - get empty() { - const n = this.formGroup.value; - return !n.year && !n.month && !n.day; - } - @HostBinding('class.floating') - get shouldLabelFloat() { - return true; - } - get required() { - return this._required; - } - @Input() - set required(req) { - this._required = coerceBooleanProperty(req); - this.stateChanges.next(); - } - private _required = false; - get disabled(): boolean { return this._disabled; } - @Input() - set disabled(value: boolean) { - this._disabled = coerceBooleanProperty(value); - this._disabled ? this.formGroup.disable() : this.formGroup.enable(); - this.stateChanges.next(); - } - private _disabled = false; - public errorState = false; - public controlType = 'dgt-form-date'; - public autofilled = false; - - @HostBinding('attr.aria-describedby') describedBy = ''; - get placeholder() { - return this._placeholder; - } - @Input() - set placeholder(plh) { - this._placeholder = plh; - this.stateChanges.next(); - } - private _placeholder: string; - - private _value: Date = null; - @Output() valueChange = new EventEmitter(); - - get value(): Date { - return this._value; - } - - @Input() - set value(val: Date) { - this.logger.debug(DGTFormDateComponent.name, 'Setting new date', { oldValue: this.value, newValue: val }); - - if (!_.isEqual(val, this._value)) { - this._value = val; - - if (val) { - const parsedMoment = moment(val); - this._year = parsedMoment.year(); - this._month = parsedMoment.month() + 1; - this._day = parsedMoment.date(); - } - this.valueChange.emit(val); - this.stateChanges.next(); - } - - this.onChanged(val); - } - - constructor( - private logger: DGTLoggerService, - private fm: FocusMonitor, - private elRef: ElementRef, - @Optional() @Self() public ngControl: NgControl - ) { - this.formGroup = new FormGroup({ - 'year': new FormControl(this.year, [ - Validators.required - ]), - 'month': new FormControl(this.month, [ - Validators.required - ]), - 'day': new FormControl(this.day, [ - Validators.required - ]), - }); - - // Replace the provider from above with this. - if (this.ngControl != null) { - // Setting the value accessor directly (instead of using - // the providers) to avoid running into a circular import. - this.ngControl.valueAccessor = this; - } - - fm.monitor(elRef.nativeElement, true).subscribe(origin => { - this.logger.debug(DGTFormDateComponent.name, 'Focus monitor triggered', { origin }); - - this.focused = !!origin; - this.stateChanges.next(); - }); - } - - setDescribedByIds(ids: string[]) { - this.describedBy = ids.join(' '); - } - - onChanged(value) { - this.logger.debug(DGTFormDateComponent.name, 'Calling change event', { value }); - - this.onChange(value); - this.onTouched(); - } - onChange: (_: any) => void = () => { }; - onTouched: any = () => { }; - onContainerClick(event: MouseEvent) { - if ((event.target as Element).tagName.toLowerCase() !== 'input') { - this.elRef.nativeElement.querySelector('input').focus(); - } - } - - ngOnDestroy() { - this.stateChanges.complete(); - this.fm.stopMonitoring(this.elRef.nativeElement); - } - - writeValue(obj: any): void { - this.logger.debug(DGTFormDateComponent.name, 'Writing value', { current: this.value, new: obj }); - - if (obj && obj !== this.value) { - this.value = obj; - } - } - registerOnChange(fn: (_: any) => void): void { - if (fn) { - this.onChange = fn; - } - } - registerOnTouched(fn: any): void { - this.onTouched = fn; - } - setDisabledState?(isDisabled: boolean): void { - this.disabled = isDisabled; - } - setDate(year: number, month: number, day: number) { - const parsedMoment = moment.utc({year, month: month - 1, date: day}); - - if (year && month && day && parsedMoment.isValid() && year > 1900) { - this.value = parsedMoment.toDate(); - } else { - this.value = null; - } - } -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.html deleted file mode 100644 index 8b88af27..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.html +++ /dev/null @@ -1,6 +0,0 @@ -
    - -
    - -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.scss b/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.scss deleted file mode 100644 index 5b4b34ba..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -@import 'styles'; - -:host { - margin-bottom: $measure-gutter-xlarge; - &:last-child { - margin-bottom: 0px; - } -} -.form-group { - margin-bottom: 0px; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.ts deleted file mode 100644 index d3b62081..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-element/dgt-form-element.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Component, ContentChildren, QueryList, Input, AfterContentInit } from '@angular/core'; -import { DGTFormValidationComponent } from '../dgt-form-validation/dgt-form-validation.component'; -import { DGTFormControlComponent } from '../dgt-form-control/dgt-form-control.component'; -import { AbstractControl, FormGroup } from '@angular/forms'; - -@Component({ - selector: 'dgt-form-element', - templateUrl: './dgt-form-element.component.html', - styleUrls: ['./dgt-form-element.component.scss'] -}) -export class DGTFormElementComponent implements AfterContentInit { - public inline = false; - - private _controlName: string = null; - - @Input() - set controlName(controlName: string) { - this._controlName = controlName; - - this.updateFormGroup(this.formGroup, this.controlName); - } - - get controlName(): string { return this._controlName; } - - private _formGroup: FormGroup = null; - - @Input() - set formGroup(formGroup: FormGroup) { - this._formGroup = formGroup; - - this.updateFormGroup(this.formGroup, this.controlName); - } - - get formGroup(): FormGroup { return this._formGroup; } - - public control: AbstractControl; - - @ContentChildren(DGTFormControlComponent) public controlComponents: QueryList; - @ContentChildren(DGTFormValidationComponent) public validationComponents: QueryList; - - public get showValidation(): boolean { - let res = false; - - if (this.control) { - res = this.control.invalid && (this.control.dirty || this.control.touched); - } - - return res; - } - - constructor() { } - - ngAfterContentInit() { - - } - - public updateFormGroup(formGroup: FormGroup, controlName: string) { - if (formGroup && controlName) { - this.control = this.formGroup.controls[controlName]; - - this.controlComponents.forEach(element => element.control = this.control); - this.validationComponents.forEach(element => element.control = this.control); - } - } - -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.html deleted file mode 100644 index e005a3f4..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - {{'common.components.form-file.upload' | translate}} - - - - - {{'common.components.form-file.redo' | translate}} - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.scss b/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.ts deleted file mode 100644 index 38490e10..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-file/dgt-form-file.component.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { Component, Input, EventEmitter, Output, OnDestroy, HostBinding, ElementRef, Optional, Self, ViewChild } from '@angular/core'; -import { MatFormFieldControl } from '@angular/material'; -import { NgControl, ControlValueAccessor } from '@angular/forms'; -import { Subject } from 'rxjs'; -import { coerceBooleanProperty } from '@angular/cdk/coercion'; -import { FocusMonitor } from '@angular/cdk/a11y'; -import * as _ from 'lodash'; -import { DGTFile } from '@digita-ai/dgt-shared-data'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@Component({ - selector: 'dgt-form-file', - templateUrl: './dgt-form-file.component.html', - styleUrls: ['./dgt-form-file.component.scss'], - providers: [{ provide: MatFormFieldControl, useExisting: DGTFormFileComponent }] -}) -export class DGTFormFileComponent implements MatFormFieldControl, OnDestroy, ControlValueAccessor { - static nextId = 0; - @ViewChild('file') file; - public fileObject: File = null; - public stateChanges: Subject = new Subject(); - - @HostBinding() id = `dgt-form-file-${DGTFormFileComponent.nextId++}`; - public focused: boolean; - get empty() { - return !this.value; - } - @HostBinding('class.floating') - get shouldLabelFloat() { - return true; - } - get required() { - return this._required; - } - @Input() - set required(req) { - this._required = coerceBooleanProperty(req); - this.stateChanges.next(); - } - private _required = false; - get disabled(): boolean { return this._disabled; } - @Input() - set disabled(value: boolean) { - this._disabled = coerceBooleanProperty(value); - this.stateChanges.next(); - } - private _disabled = false; - public errorState = false; - public controlType = 'dgt-form-file'; - public autofilled = false; - - @HostBinding('attr.aria-describedby') describedBy = ''; - get placeholder() { - return this._placeholder; - } - @Input() - set placeholder(plh) { - this._placeholder = plh; - this.stateChanges.next(); - } - private _placeholder: string; - - private _value: DGTFile = null; - @Output() valueChange = new EventEmitter(); - - get value(): DGTFile { - return this._value; - } - - @Input() - set value(val: DGTFile) { - this.logger.debug(DGTFormFileComponent.name, 'Setting new date', { oldValue: this.value, newValue: val }); - - if (!_.isEqual(val, this._value)) { - this._value = val; - - this.valueChange.emit(val); - this.stateChanges.next(); - } - - this.onChanged(val); - } - - constructor( - private logger: DGTLoggerService, - private fm: FocusMonitor, - private elRef: ElementRef, - @Optional() @Self() public ngControl: NgControl - ) { - - // Replace the provider from above with this. - if (this.ngControl != null) { - // Setting the value accessor directly (instead of using - // the providers) to avoid running into a circular import. - this.ngControl.valueAccessor = this; - } - - fm.monitor(elRef.nativeElement, true).subscribe(origin => { - this.logger.debug(DGTFormFileComponent.name, 'Focus monitor triggered', { origin }); - - this.focused = !!origin; - this.stateChanges.next(); - }); - } - - setDescribedByIds(ids: string[]) { - this.describedBy = ids.join(' '); - } - - onChanged(value) { - this.logger.debug(DGTFormFileComponent.name, 'Calling change event', { value }); - - this.onChange(value); - this.onTouched(); - } - onChange: (_: any) => void = () => { }; - onTouched: any = () => { }; - onContainerClick(event: MouseEvent) { - if ((event.target as Element).tagName.toLowerCase() !== 'input') { - this.elRef.nativeElement.querySelector('input').focus(); - } - } - - ngOnDestroy() { - this.stateChanges.complete(); - this.fm.stopMonitoring(this.elRef.nativeElement); - } - - writeValue(obj: any): void { - this.logger.debug(DGTFormFileComponent.name, 'Writing value', { current: this.value, new: obj }); - - if (obj && obj !== this.value) { - this.value = obj; - } - } - registerOnChange(fn: (_: any) => void): void { - if (fn) { - this.onChange = fn; - } - } - registerOnTouched(fn: any): void { - this.onTouched = fn; - } - setDisabledState?(isDisabled: boolean): void { - this.disabled = isDisabled; - } - - public onTriggerFileUpload() { - this.file.nativeElement.click(); - } - - public redoPicture() { - this.value = null; - } - - onFilesAdded() { - const files: { [key: string]: File } = this.file.nativeElement.files; - console.log(files); - for (const key in files) { - // tslint:disable-next-line:radix - if (!isNaN(parseInt(key))) { - this.fileObject = files[key]; - - const reader = new FileReader(); - reader.onloadend = (e: any) => { - this.logger.debug(DGTFormFileComponent.name, 'Filereader finished reading file', e); - const orginalImage = DGTFile.fromArrayBuffer(this.fileObject.type, e.target.result); - - this.value = orginalImage; - }; - reader.readAsArrayBuffer(this.fileObject); - } - } - } -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.scss b/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.ts deleted file mode 100644 index 4c348d2d..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-label/dgt-form-label.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-form-label', - templateUrl: './dgt-form-label.component.html', - styleUrls: ['./dgt-form-label.component.scss'] -}) -export class DGTFormLabelComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.html deleted file mode 100644 index c7af608b..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.scss b/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.scss deleted file mode 100644 index 21844315..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import 'styles'; -.validation-message { - background-color: $color-danger-normal; - color: $color-foreground-inverse; - padding: $measure-gutter-normal; - margin-bottom: $measure-gutter-normal; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.ts deleted file mode 100644 index bd77428e..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form-validation/dgt-form-validation.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { AbstractControl } from '@angular/forms'; - -@Component({ - selector: 'dgt-form-validation', - templateUrl: './dgt-form-validation.component.html', - styleUrls: ['./dgt-form-validation.component.scss'] -}) -export class DGTFormValidationComponent implements OnInit { - - private _control: AbstractControl = null; - - @Input() - set control(control: AbstractControl) { - this._control = control; - } - - get control(): AbstractControl { return this._control; } - - private _validationName: string = null; - - @Input() - set validationName(validationName: string) { - this._validationName = validationName; - } - - get validationName(): string { return this._validationName; } - - public get showMessage(): boolean { - let res = false; - - if (this.control && this.control.errors && this.validationName) { - res = this.control.errors[this.validationName] != null; - } - - return res; - } - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.html b/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.html deleted file mode 100644 index 23cbec5d..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.scss b/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.scss deleted file mode 100644 index e4cd5d90..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import 'styles'; - -form { - margin-top: $measure-gutter-xlarge; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.ts b/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.ts deleted file mode 100644 index b33b7aff..00000000 --- a/projects/dgt-shared-web/src/lib/form/components/dgt-form/dgt-form.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, Input, ContentChildren, QueryList, AfterContentInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; -import { DGTFormElementComponent } from '../dgt-form-element/dgt-form-element.component'; - -@Component({ - selector: 'dgt-form', - templateUrl: './dgt-form.component.html', - styleUrls: ['./dgt-form.component.scss'] -}) -export class DGTFormComponent implements AfterContentInit { - - @Input() public inline = false; - - private _formGroup: FormGroup = null; - - @Input() - set formGroup(formGroup: FormGroup) { - this._formGroup = formGroup; - - this.updateFormGroup(formGroup); - } - - get formGroup(): FormGroup { return this._formGroup; } - - @ContentChildren(DGTFormElementComponent) public elementComponents: QueryList; - - constructor() { } - - ngAfterContentInit() { - this.updateFormGroup(this.formGroup); - } - - public updateFormGroup(formGroup: FormGroup) { - if (this.elementComponents) { - this.elementComponents.forEach(element => { - element.formGroup = this.formGroup; - element.inline = this.inline; - }); - } - } - -} diff --git a/projects/dgt-shared-web/src/lib/form/validators/dgt-form-after.validator.ts b/projects/dgt-shared-web/src/lib/form/validators/dgt-form-after.validator.ts deleted file mode 100644 index bf19d291..00000000 --- a/projects/dgt-shared-web/src/lib/form/validators/dgt-form-after.validator.ts +++ /dev/null @@ -1,26 +0,0 @@ - -import { ValidatorFn, AbstractControl } from '@angular/forms'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import moment from 'moment'; - -@DGTInjectable() -export class DGTFormAfterValidator { - public validate(afterDate: Date): ValidatorFn { - return (control: AbstractControl): { [key: string]: any } => { - let res: { [key: string]: any } = { 'after': true }; - - if (afterDate && control && control.value) { - const afterMoment = moment(afterDate); - const valueMoment = moment(control.value); - - if (valueMoment && afterMoment && valueMoment.isAfter(afterMoment)) { - res = null; - } - } else if (afterDate && control && !control.value) { - res = null; - } - - return res; - }; - } -} diff --git a/projects/dgt-shared-web/src/lib/form/validators/dgt-form-before.validator.ts b/projects/dgt-shared-web/src/lib/form/validators/dgt-form-before.validator.ts deleted file mode 100644 index 176bd226..00000000 --- a/projects/dgt-shared-web/src/lib/form/validators/dgt-form-before.validator.ts +++ /dev/null @@ -1,26 +0,0 @@ - -import { ValidatorFn, AbstractControl } from '@angular/forms'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import moment from 'moment'; - -@DGTInjectable() -export class DGTFormBeforeValidator { - public validate(beforeDate: Date): ValidatorFn { - return (control: AbstractControl): { [key: string]: any } => { - let res: { [key: string]: any } = { 'before': true }; - - if (beforeDate && control && control.value) { - const beforeMoment = moment(beforeDate); - const valueMoment = moment(control.value); - - if (valueMoment && beforeMoment && valueMoment.isBefore(beforeMoment)) { - res = null; - } - } else if (beforeDate && control && !control.value) { - res = null; - } - - return res; - }; - } -} diff --git a/projects/dgt-shared-web/src/lib/holders/services/dgt-holder-remote.service.ts b/projects/dgt-shared-web/src/lib/holders/services/dgt-holder-remote.service.ts deleted file mode 100644 index 004286ff..00000000 --- a/projects/dgt-shared-web/src/lib/holders/services/dgt-holder-remote.service.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { DGTConfigurationService, DGTErrorArgument, DGTErrorNotImplemented, DGTHttpService, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { DGTHolder, DGTHolderService, DGTConfigurationBaseWeb } from '@digita-ai/dgt-shared-data'; -import { Observable, of } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTHolderRemoteService extends DGTHolderService { - constructor(private store: DGTStateStoreService>, private http: DGTHttpService, private logger: DGTLoggerService, private config: DGTConfigurationService) { - super(); - } - - public get(uri: string): Observable { - this.logger.debug(DGTHolderRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}holder/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - - public query(filter: Partial): Observable { - this.logger.debug(DGTHolderRemoteService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}holder` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => _.filter(response.data, filter)), - ); - } - - public save(resource: DGTHolder): Observable { - throw new DGTErrorNotImplemented(); - } - - public delete(resource: DGTHolder): Observable { - throw new DGTErrorNotImplemented(); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/i8n/models/dgt-i8n-locale.model.ts b/projects/dgt-shared-web/src/lib/i8n/models/dgt-i8n-locale.model.ts deleted file mode 100644 index 567bceb2..00000000 --- a/projects/dgt-shared-web/src/lib/i8n/models/dgt-i8n-locale.model.ts +++ /dev/null @@ -1,17 +0,0 @@ -export class DGTI8NLocale { - public language: string; - public country: string; - - constructor(locale: string) { - const splitLocale: string[] = locale.split('-'); - - if (splitLocale && splitLocale.length === 2) { - this.language = splitLocale[0]; - this.country = splitLocale[1]; - } - } - - public toString(): string { - return this.language + '-' + this.country; - } -} diff --git a/projects/dgt-shared-web/src/lib/i8n/services/dgt-i8n.service.ts b/projects/dgt-shared-web/src/lib/i8n/services/dgt-i8n.service.ts deleted file mode 100644 index 9f0676d0..00000000 --- a/projects/dgt-shared-web/src/lib/i8n/services/dgt-i8n.service.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Injectable, Injector } from '@angular/core'; -import * as locale2 from 'locale2'; -import * as _ from 'lodash'; -import { DGTI8NLocale } from '../models/dgt-i8n-locale.model'; -import { TranslateService } from '@ngx-translate/core'; -import { DGTInjectable, DGTLoggerService, DGTPlatformService, DGTPlatformType } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export class DGTI8NService { - - constructor( - private platform: DGTPlatformService, - private injector: Injector, - private translate: TranslateService, - private logger: DGTLoggerService - ) { } - - public getUrlLocale(domainLocaleMapping: any): DGTI8NLocale { - let res = null; - - const mapping: { - domain: string; - locale: string; - }[] = domainLocaleMapping; - - if (this.platform.type === DGTPlatformType.BROWSER && mapping) { - const mappingInstance = _.find(mapping, { domain: window.location.hostname }); - - if (mappingInstance) { - res = new DGTI8NLocale(mappingInstance.locale); - } - } else if (this.platform.type === DGTPlatformType.SERVER && mapping) { - const req = this.injector.get('request'); - - let domain = req.get('x-forwarded-host'); - - if (!domain) { - domain = req.get('host'); - } - - const mappingInstance = _.find<{ - domain: string; - locale: string; - }>(mapping, { domain }); - - if (mappingInstance) { - res = new DGTI8NLocale(mappingInstance.locale); - } - - } - - return res; - } - - public getBrowserLocale(domainLocaleMapping: any): DGTI8NLocale { - let res = new DGTI8NLocale(locale2); - - if (!_.find(domainLocaleMapping, (o) => { - return (o.language === res.language && o.country === res.country); - })) { - res = null; - } - - return res; - } - - public get getUserLocale(): DGTI8NLocale { - return null; - } - - public getLocale(defaultLocale: DGTI8NLocale, domainLocaleMapping: any): DGTI8NLocale { - this.logger.debug(DGTI8NService.name, 'Starting to get default locale', { defaultLocale, domainLocaleMapping }); - - let res = defaultLocale; - - const urlLocale = this.getUrlLocale(domainLocaleMapping); - if (urlLocale) { - res = urlLocale; - } - - // if (this.browserLocale) { - // res = this.browserLocale; - // } - - // if (this.userLocale) { - // res = this.userLocale; - // } - - return res; - } - - public applyDefaultLocale(locale: DGTI8NLocale) { - // this language will be used as a fallback when a translation isn't found in the current language - this.translate.setDefaultLang(locale.toString()); - } - - public applyLocale(locale: DGTI8NLocale) { - // the lang to use, if the lang isn't available, it will use the current loader to get them - this.translate.use(locale.toString()); - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.html deleted file mode 100644 index e8b61c0e..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.html +++ /dev/null @@ -1,18 +0,0 @@ -
    -
    - -
    -
    -

    {{'common.components.dgt-button-confirm.description' | translate}}

    -
    -
    - - -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.scss deleted file mode 100644 index c8695c8d..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.scss +++ /dev/null @@ -1,17 +0,0 @@ -@import 'styles'; -.dashboard-information { - height: 100%; - .dashboard-information-icon { - background-color: $color-foreground-inverse; - padding: 0px; - text-align: center; - img { - border-radius: 50%; - } - } - .dashboard-help-actions, - .dashboard-information-description { - width: 100%; - text-align: center; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.ts deleted file mode 100644 index 86ddc8c8..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-button-confirm/dgt-button-confirm.component.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { MatDialogRef } from '@angular/material'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@Component({ - selector: 'dgt-button-confirm', - templateUrl: './dgt-button-confirm.component.html', - styleUrls: ['./dgt-button-confirm.component.scss'] -}) -export class DGTButtonConfirmComponent implements OnInit { - - constructor(private logger: DGTLoggerService, private dialogRef: MatDialogRef) { } - - ngOnInit() { - } - - public close(result: boolean) { - this.logger.debug(DGTButtonConfirmComponent.name, 'Closing button confirmation', result); - this.dialogRef.close(result); - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.html deleted file mode 100644 index be34213e..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.html +++ /dev/null @@ -1,14 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.scss deleted file mode 100644 index e2dc0277..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.scss +++ /dev/null @@ -1,7 +0,0 @@ -button { - width: 100%; - - .button-content { - text-align: center; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.ts deleted file mode 100644 index f78e2bed..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-button/dgt-button.component.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { DGTColor } from '../../models/dgt-color.model'; -import { MatDialog } from '@angular/material'; -import { DGTButtonConfirmComponent } from '../dgt-button-confirm/dgt-button-confirm.component'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@Component({ - selector: 'dgt-button', - templateUrl: './dgt-button.component.html', - styleUrls: ['./dgt-button.component.scss'] -}) -export class DGTButtonComponent implements OnInit { - - @Input() public color: DGTColor = DGTColor.BASIC; - @Input() public confirm = false; - @Input() public disabled = false; - @Input() public loading = false; - @Input() public showContent = true; - @Input() public loadingEnabled = true; - @Output() public called: EventEmitter = new EventEmitter(); - - public get colorBase(): string { - let res = 'basic'; - - if (this.color) { - res = this.color; - } - - return res; - } - - constructor(private logger: DGTLoggerService, private dialog: MatDialog) { } - - ngOnInit() { - } - - public onClick() { - - this.loading = true && this.loadingEnabled; - - if (this.confirm) { - this.logger.debug(DGTButtonComponent.name, 'Button clicked, launching confirm dialog'); - - const dialogRef = this.dialog.open(DGTButtonConfirmComponent, { - width: '450px', - height: '300px', - }); - - dialogRef.afterClosed().subscribe(result => { - this.logger.debug(DGTButtonComponent.name, 'Button confirmation closed', result); - if (result) { - this.called.emit(); - } - }); - } else { - this.logger.debug(DGTButtonComponent.name, 'Button clicked, emitting click'); - this.called.emit(); - } - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.html deleted file mode 100644 index 68a43f4a..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
    -
    - -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.scss deleted file mode 100644 index ca7306ca..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.scss +++ /dev/null @@ -1,18 +0,0 @@ -@import "styles"; - -:host { - display: block; - height: 100%; -} - -.charm-wrapper { - height: 100%; - width: 100%; - background-color: $color-background-normal; - border-radius: 50%; - - .charm-content { - max-width: 30px; - max-height: 30px; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.ts deleted file mode 100644 index 5ede8982..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-charm/dgt-charm.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import * as _ from 'lodash'; - -@Component({ - selector: 'dgt-charm', - templateUrl: './dgt-charm.component.html', - styleUrls: ['./dgt-charm.component.scss'] -}) -export class DGTCharmComponent { - - constructor() { } -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.html deleted file mode 100644 index 1ba2cd9b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.html +++ /dev/null @@ -1,9 +0,0 @@ -
    -
    - -
    -
    - -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.scss deleted file mode 100644 index f57e2da7..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.scss +++ /dev/null @@ -1,48 +0,0 @@ -@import 'styles'; - -.chip { - color: $color-foreground-normal; - border: 1px solid $color-foreground-normal; - border-radius: 15px; - text-align: center; - min-width: 130px; - &.primary { - color: $color-primary-dark; - border-color: $color-primary-dark; - .chip-icon { - background-color: $color-primary-dark; - } - } - &.accent { - color: $color-accent-dark; - border-color: $color-accent-dark; - .chip-icon { - background-color: $color-accent-dark; - } - } - &.success { - color: $color-success-normal; - border-color: $color-success-normal; - .chip-icon { - background-color: $color-success-normal; - } - } - &.danger { - color: $color-danger-normal; - border-color: $color-danger-normal; - .chip-icon { - background-color: $color-danger-normal; - } - } - - .chip-icon { - padding: $measure-gutter-normal; - color:$color-foreground-inverse; - border-top-left-radius: 15px; - border-bottom-left-radius: 15px; - min-width: 27px; - } - .chip-label { - padding: $measure-gutter-normal; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.ts deleted file mode 100644 index 3c4d4c68..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-chip/dgt-chip.component.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Component, OnInit, Input} from '@angular/core'; -import { DGTColor } from '../../models/dgt-color.model'; - -@Component({ - selector: 'dgt-chip', - templateUrl: './dgt-chip.component.html', - styleUrls: ['./dgt-chip.component.scss'] -}) -export class DGTChipComponent implements OnInit { - - @Input() public color: DGTColor = DGTColor.BASIC; - - public get colorBase(): string { - let res = 'basic'; - - if (this.color) { - res = this.color - } - - return res; - } - - constructor() { } - - ngOnInit() { - } -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.ts deleted file mode 100644 index 77b1c47c..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-action/dgt-dialog-action.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-dialog-action', - templateUrl: './dgt-dialog-action.component.html', - styleUrls: ['./dgt-dialog-action.component.scss'] -}) -export class DGTDialogActionComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.ts deleted file mode 100644 index b551ade6..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog-content/dgt-dialog-content.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-dialog-content', - templateUrl: './dgt-dialog-content.component.html', - styleUrls: ['./dgt-dialog-content.component.scss'] -}) -export class DGTDialogContentComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.html deleted file mode 100644 index a60b5ea9..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.html +++ /dev/null @@ -1,11 +0,0 @@ -
    -
    - -
    -
    - -
    -
    - -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.scss deleted file mode 100644 index cc43a1f3..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import 'styles'; -.dialog { - height: 100%; - .dialog-icon { - height: 56px; - width: 56px; - border-radius: 50%; - border: 5px solid $color-primary-normal; - background-color: $color-foreground-inverse; - padding: 0px; - text-align: center; - img { - width: 40px; - height: 40px; - border-radius: 50%; - } - } - .dialog-actions, - .dialog-description { - width: 100% - } - .dialog-actions { - margin-bottom: $measure-gutter-xlarge; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.ts deleted file mode 100644 index 552abac0..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-dialog/dgt-dialog.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-dialog', - templateUrl: './dgt-dialog.component.html', - styleUrls: ['./dgt-dialog.component.scss'] -}) -export class DGTDialogComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.html deleted file mode 100644 index 3b5d75cd..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.html +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.scss deleted file mode 100644 index c610bd6b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -button { - width: 100%; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.ts deleted file mode 100644 index 0d30e65e..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-link/dgt-link.component.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; -import { DGTColor } from '../../models/dgt-color.model'; - -@Component({ - selector: 'dgt-link', - templateUrl: './dgt-link.component.html', - styleUrls: ['./dgt-link.component.scss'] -}) -export class DGTLinkComponent implements OnInit { - - @Input() public color: DGTColor = DGTColor.BASIC; - @Input() public route: Array = null; - @Output() public called: EventEmitter = new EventEmitter(); - - public get colorBase(): string { - let res = 'basic'; - - if (this.color) { - res = this.color - } - - return res; - } - - constructor() { } - - ngOnInit() { - } -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.html deleted file mode 100644 index 223890bb..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.html +++ /dev/null @@ -1,4 +0,0 @@ -
    - - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.scss deleted file mode 100644 index b61f0ae9..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.scss +++ /dev/null @@ -1,6 +0,0 @@ -@import 'styles'; -:host { - height: 100%; - width: 100%; - display: flex; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.ts deleted file mode 100644 index fb475974..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-loading-page/dgt-loading-page.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'dgt-loading-page', - templateUrl: './dgt-loading-page.component.html', - styleUrls: ['./dgt-loading-page.component.scss'], -}) -export class DGTLoadingPageComponent { - - constructor() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.html deleted file mode 100644 index 38192435..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.scss deleted file mode 100644 index 8b137891..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.scss +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.spec.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.spec.ts deleted file mode 100644 index fb1ba4b8..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.spec.ts +++ /dev/null @@ -1,40 +0,0 @@ -// import { DGTBrowserTimelineEventMenuComponent } from './timeline-event-menu.component'; -// import { async } from '@angular/core/testing'; -// import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -// import { configuration } from 'test.configuration'; -// import { eventJustNow } from 'test.events.mock-data'; - -// describe('DGTBrowserTimelineEventMenuComponent', () => { -// let hostElement: HTMLElement; -// const testService = -// new DGTTestRunnerComponent(configuration); -// testService.setup(DGTBrowserTimelineEventMenuComponent); - -// const events = [{...eventJustNow}]; - -// beforeEach( () => { -// testService.component.events = events; -// hostElement = testService.fixture.nativeElement; -// testService.fixture.detectChanges(); -// }); - -// it('should create', async(() => { -// expect(testService.component).toBeTruthy(); -// })); - -// describe('eventFeedback Emitter Tests', () => { -// it('should emit eventFeedback when onEventFeedback() is called', async(() => { -// spyOn(testService.component.eventFeedback, 'emit'); -// testService.component.onEventFeedback(events); -// expect(testService.component.eventFeedback.emit).toHaveBeenCalledWith(events); -// })); -// }); - -// describe('eventRemoved Emitter Tests', () => { -// it('should emit eventRemoved when onEventRemoved() is called', async(() => { -// spyOn(testService.component.eventRemoved, 'emit'); -// testService.component.onEventRemoved(events); -// expect(testService.component.eventRemoved.emit).toHaveBeenCalledWith(events); -// })); -// }); -// }); diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.ts deleted file mode 100644 index 9d58c4e7..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-menu/dgt-menu.component.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { - Component, - ViewChild, -} from '@angular/core'; -import { MatMenu } from '@angular/material'; - -@Component({ - selector: 'dgt-menu', - templateUrl: './dgt-menu.component.html', - styleUrls: ['./dgt-menu.component.scss'], -}) - -export class DGTMenuComponent { - /** - * Angular Material Menu to display - * Needed to open the menu programatically - */ - @ViewChild(MatMenu) menu: MatMenu; - - constructor( - ) { } - - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.css b/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.css deleted file mode 100644 index 32cd6810..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.css +++ /dev/null @@ -1,29 +0,0 @@ -.alert { - color: #fff; - padding: 5px; - margin-bottom: 10px; -} - -.alert .alert-text { - font-size: 14px; -} - -.alert.alert-success { - background-color: #62a420; - border-color: #62a420; -} - -.alert.alert-warning { - background-color: #FFA401; - border-color: #FFA401; -} - -.alert.alert-info { - background-color: #2E81B2; - border-color: #2E81B2; -} - -.alert.alert-error { - background-color: #e62700; - border-color: #e62700; -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.html deleted file mode 100644 index 936caaf9..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.html +++ /dev/null @@ -1,7 +0,0 @@ -
    - - - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.ts deleted file mode 100644 index 583e353d..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-notification/dgt-notification.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Component, Input, Output, EventEmitter } from '@angular/core'; -import { DGTNotificationType } from '../../models/dgt-notification-type.model'; - -@Component({ - selector: 'dgt-notification', - templateUrl: './dgt-notification.component.html', - styleUrls: ['./dgt-notification.component.css'] -}) -export class DGTNotificationComponent { - - @Input() public type: DGTNotificationType; - @Output() public notificationDismissed: EventEmitter = new EventEmitter(); - - constructor() { } - - public onNotificationDismissed() { - this.notificationDismissed.emit(); - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.css b/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.css deleted file mode 100644 index cad83a34..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.css +++ /dev/null @@ -1,3 +0,0 @@ -.alerts { - width: 100%; -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.html deleted file mode 100644 index 230c234c..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.html +++ /dev/null @@ -1,6 +0,0 @@ -
    - - {{notification.message | translate}} - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.ts deleted file mode 100644 index f839804e..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-notifications/dgt-notifications.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Component, Input, Output, EventEmitter } from '@angular/core'; -import { DGTNotification } from '../../models/dgt-notification.model'; - -@Component({ - selector: 'dgt-notifications', - templateUrl: './dgt-notifications.component.html', - styleUrls: ['./dgt-notifications.component.css'] -}) -export class DGTNotificationsComponent { - - @Input() public notifications: Array; - @Output() public notificationDismissed: EventEmitter = new EventEmitter(); - - constructor() { } - - public onNotificationDismissed(notification: DGTNotification) { - this.notificationDismissed.emit(notification); - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.html deleted file mode 100644 index 5f359ea9..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.scss deleted file mode 100644 index 7993231e..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import "../../../../../theme/utilities/measures"; - -:host { - width: 100%; - padding: $measure-gutter-xlarge 0 $measure-gutter-xlarge 0; - font-weight: bold; - text-transform: uppercase; - text-align: center; - display: block; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.ts deleted file mode 100644 index 80230c6c..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-content-group-header', - templateUrl: './dgt-page-content-group-header.component.html', - styleUrls: ['./dgt-page-content-group-header.component.scss'] -}) -export class DGTPageContentGroupHeader implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.ts deleted file mode 100644 index 38c7d6e5..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-content-header-subtitle', - templateUrl: './dgt-page-content-header-subtitle.component.html', - styleUrls: ['./dgt-page-content-header-subtitle.component.scss'] -}) -export class DGTPageContentHeaderSubtitleComponent implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.ts deleted file mode 100644 index a10d47cb..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-content-header-title', - templateUrl: './dgt-page-content-header-title.component.html', - styleUrls: ['./dgt-page-content-header-title.component.scss'] -}) -export class DGTPageContentHeaderTitleComponent implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.html deleted file mode 100644 index ddfd8c35..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.html +++ /dev/null @@ -1,8 +0,0 @@ -
    -
    - -
    -
    - -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.scss deleted file mode 100644 index eae701b5..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.scss +++ /dev/null @@ -1,29 +0,0 @@ -@import "../../../../../theme/utilities/colors"; -@import "../../../../../theme/utilities/measures"; - -:host { - height: 90px; - width: 100%; - margin: 0; - display: block; - border-bottom: 1px solid $color-primary-dark; - background-color: $color-grey-light; - color: $color-primary-dark; - position: sticky; - right: 0; - top: 0; - z-index: 10; -} - -.sub-header-container { - padding: $measure-gutter-xlarge; -} - -.sub-header-title{ - font-weight: bold; - text-transform: uppercase; - width: 100%; -} -.sub-header-subtitle{ - width: 100%; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.ts deleted file mode 100644 index 5b2b2324..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content-header/dgt-page-content-header.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-content-header', - templateUrl: './dgt-page-content-header.component.html', - styleUrls: ['./dgt-page-content-header.component.scss'] -}) -export class DGTPageContentHeaderComponent implements OnInit { - - constructor() { } - - ngOnInit() { } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.ts deleted file mode 100644 index 8cb30747..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-content/dgt-page-content.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; - -@Component({ - selector: 'dgt-page-content', - templateUrl: './dgt-page-content.component.html', - styleUrls: ['./dgt-page-content.component.scss'] -}) -export class DGTPageContentComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.ts deleted file mode 100644 index 7a32872d..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-header-controls', - templateUrl: './dgt-page-header-controls.component.html', - styleUrls: ['./dgt-page-header-controls.component.scss'], -}) -export class DGTPageHeaderControlsComponent implements OnInit { - constructor() {} - - ngOnInit() {} -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.scss deleted file mode 100644 index 0fcde1c5..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import 'styles'; - -:host { - display: block; - height: 30px; - width: 30px; - padding: $measure-gutter-large; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.ts deleted file mode 100644 index decd8c1b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-header-logo', - templateUrl: './dgt-page-header-logo.component.html', - styleUrls: ['./dgt-page-header-logo.component.scss'], -}) -export class DGTPageHeaderLogoComponent implements OnInit { - constructor() {} - - ngOnInit() {} -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.html deleted file mode 100644 index 04de37d8..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.html +++ /dev/null @@ -1,16 +0,0 @@ - - - {{profile.email}} - - - - {{profile.email}} - - - - {{profile.email}} - - - - {{'dashboard.pages.dashboard.sign-in' | translate}} - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.scss deleted file mode 100644 index 029021cf..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.scss +++ /dev/null @@ -1,25 +0,0 @@ -@import 'styles'; -a, -i { - position: relative; -} - -i { - margin-right: $measure-gutter-large; -} - -a[data-badge]:after, -i[data-badge]:after { - content: attr(data-badge); - position: absolute; - top: -9px; - right: -9px; - font-size: .6em; - background: #fff; - color: $color-accent-dark; - width: 11px; - height: 11px; - text-align: center; - line-height: 11px; - border-radius: 50%; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.spec.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.spec.ts deleted file mode 100644 index 4c5e5035..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { async } from '@angular/core/testing'; -import { DGTPageHeaderProfileComponent } from './dgt-page-header-profile.component'; -import { configuration } from '../../../../../test.configuration'; -import { DGTTestRunnerComponent } from '@digita-ai/dgt-shared-test'; -import { DGTUser } from '@digita-ai/dgt-shared-web'; - -describe('DGTPageHeaderProfile', () => { - const testService = new DGTTestRunnerComponent(configuration); - testService.setup(DGTPageHeaderProfileComponent); - - it('should create', async(() => { - expect(testService.component).toBeTruthy(); - })); - - it('should show login link when not logged in', async(() => { - const hostElement: HTMLElement = testService.fixture.nativeElement; - const element: HTMLElement = hostElement.querySelector('.profile-anonymous'); - expect(element).toBeTruthy(); - })); - - it('should show profile link when logged in as individual', async(() => { - testService.component.profile = { - id: '3', - email: 'mymove-ut-individual1@digita.ai', - emailValidated: true, - phone: '000000000', - references: null, - locale: null, - createdAt: new Date(), - updatedAt: new Date() - } as DGTUser; - - testService.fixture.detectChanges(); - - const hostElement: HTMLElement = testService.fixture.nativeElement; - const element: HTMLElement = hostElement.querySelector('.profile-individual'); - expect(element).toBeTruthy(); - })); -}); diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.ts deleted file mode 100644 index 70f5123e..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; - -@Component({ - selector: 'dgt-page-header-profile', - templateUrl: './dgt-page-header-profile.component.html', - styleUrls: ['./dgt-page-header-profile.component.scss'] -}) -export class DGTPageHeaderProfileComponent implements OnInit { - - @Input() public profile: any; - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.ts deleted file mode 100644 index 73e51639..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header-title/dgt-page-header-title.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-header-title', - templateUrl: './dgt-page-header-title.component.html', - styleUrls: ['./dgt-page-header-title.component.scss'], -}) -export class DGTPageHeaderTitleComponent implements OnInit { - constructor() {} - - ngOnInit() {} -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.ts deleted file mode 100644 index f9806603..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-header/dgt-page-header.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-header', - templateUrl: './dgt-page-header.component.html', - styleUrls: ['./dgt-page-header.component.scss'], -}) -export class DGTPageHeaderComponent implements OnInit { - constructor() {} - - ngOnInit() {} -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.scss deleted file mode 100644 index e353d059..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.scss +++ /dev/null @@ -1,5 +0,0 @@ -:host { - height: 100%; - width: 180px; - background-color: white; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.ts deleted file mode 100644 index 228eccdb..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-pane/dgt-page-pane.component.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-pane', - templateUrl: './dgt-page-pane.component.html', - styleUrls: ['./dgt-page-pane.component.scss'], -}) -export class DGTPagePaneComponent implements OnInit { - - constructor() { } - - ngOnInit() { } -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.html deleted file mode 100644 index 1240be8d..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.scss deleted file mode 100644 index 72db9cca..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.scss +++ /dev/null @@ -1,30 +0,0 @@ -@import 'styles'; - -:host { - display: block; - width: 50px; - height: 50px; - background-color: $color-foreground-inverse; - color: $color-primary-dark; - border-radius: 50%; - text-align: center; - margin-bottom: $measure-gutter-xlarge; - - .split-page-rail-item { - height: 100%; - display: flex; - } -} - -:host(.selected) { - padding: 5px; - height: 40px; - width: 40px; - - .split-page-rail-item { - border: 2px solid $color-primary-dark; - border-radius: 50%; - height: 36px; - width: 36px; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.ts deleted file mode 100644 index 27bd6331..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Component, OnInit, Input, HostBinding } from '@angular/core'; - -@Component({ - selector: 'dgt-page-rail-item', - templateUrl: './dgt-page-rail-item.component.html', - styleUrls: ['./dgt-page-rail-item.component.scss'], -}) -export class DGTPageRailItemComponent implements OnInit { - - @Input() @HostBinding('class.selected') selected = false; - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.scss deleted file mode 100644 index 19a0e60b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import 'styles'; - -:host { - display: block; - // width: 100%; - height: 100%; - background-color: $color-primary-dark !important; - padding: $measure-gutter-xlarge !important; - border-right: 1px solid $color-primary-normal !important; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.ts deleted file mode 100644 index b1a711bd..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-rail/dgt-page-rail.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-rail', - templateUrl: './dgt-page-rail.component.html', - styleUrls: ['./dgt-page-rail.component.scss'] -}) -export class DGTPageRailComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.ts deleted file mode 100644 index f6038f02..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-sidenav', - templateUrl: './dgt-page-sidenav.component.html', - styleUrls: ['./dgt-page-sidenav.component.scss'] -}) -export class DGTPageSidenavComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.ts deleted file mode 100644 index 7b4876fc..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-page-sub-header', - templateUrl: './dgt-page-sub-header.component.html', - styleUrls: ['./dgt-page-sub-header.component.scss'] -}) -export class DGTPageSubHeaderComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.html deleted file mode 100644 index d8e16553..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.html +++ /dev/null @@ -1,94 +0,0 @@ -
    -
    - - - - -
    -

    {{ 'app.application-name' | translate }}

    -
    - -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    -
    - -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.scss deleted file mode 100644 index 4345a449..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.scss +++ /dev/null @@ -1,130 +0,0 @@ -@import 'styles'; -:host { - height: 100%; - width: 100%; - display: flex; -} - -.split { - overflow: hidden; - .split-header { - - background-color: $color-primary-dark; - - .split-header-hamburger { - - margin: $measure-gutter-large; - - i { - line-height: $measure-font-normal * 2; - font-size: $measure-font-normal * 2; - padding: $measure-gutter-normal; - } - } - - .split-header-logo { - margin: $measure-gutter-large; - } - - .split-header-name h1 { - font-size: $measure-font-large; - margin: $measure-gutter-large; - color: $color-foreground-inverse; - } - .split-header-controls { - padding: $measure-gutter-large; - margin: $measure-gutter-large; - } - } - .split-body { - .split-rail { - background-color: $color-primary-dark; - width: 90px; - min-width: 90px; - border-right: 0px; - padding: 0px; - } - .split-sidenav { - background-color: $color-primary-normal; - width: 300px; - min-width: 300px; - border-right: 0px; - padding: $measure-gutter-large; - } - .split-content { - .split-content-header { - background-color: $color-foreground-inverse; - } - .split-content-details { - overflow-y: auto; - overflow-x: hidden; - } - .split-content-details-padding { - padding: $measure-gutter-xlarge; - } - .split-content-pane{ - padding: $measure-gutter-large $measure-gutter-large $measure-gutter-xlarge 0; - } - @media only screen and (max-width: 599px) { - .split-content-details { - padding: 0px; - } - } - } - } -} - -.split-fab-container { - position: fixed; - bottom: 15px; - right: 0px; - z-index: 100; - display: flex; - flex-direction: row; - justify-content: flex-end; - max-width: 100%; - .split-fab-button { - z-index: 100; - margin-right: 15px; - } - .split-fab-avatar { - z-index: 100; - margin-right: 15px; - height: 56px; - width: 56px; - border-radius: 50%; - border: 5px solid $color-primary-normal; - background-color: $color-foreground-inverse; - padding: 0px; - img { - width: 40px; - height: 40px; - border-radius: 50%; - } - } - .split-fab-message { - background: $color-primary-normal; - color: $color-foreground-inverse; - float: right; - z-index: 100; // flex: 0 0 300px; - // margin-right: 50px; - padding: 10px; - position: relative; - -webkit-transition: all 2s; - /* Safari */ - transition: all 2s; - } - .split-fab-message:after { - content: ''; - position: absolute; - right: 0; - bottom: 0; - width: 0; - height: 0; - border: 28px solid transparent; - border-left-color: $color-primary-normal; - border-right: 0; // border-bottom: 0; - margin-top: -28px; - margin-right: -28px; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.ts deleted file mode 100644 index cb18891f..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-page/dgt-page.component.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core'; -import { MediaObserver, MediaChange } from '@angular/flex-layout'; -import { of } from 'rxjs'; -import { delay, tap } from 'rxjs/operators'; -import { trigger, transition, style, animate } from '@angular/animations'; -import { DGTLoggerService } from '@digita-ai/dgt-shared-utils'; - -@Component({ - selector: 'dgt-page', - templateUrl: './dgt-page.component.html', - styleUrls: ['./dgt-page.component.scss'], - animations: [ - trigger( - 'myAnimation', - [ - transition( - ':enter', [ - style({ transform: 'translateX(100%)', opacity: 0 }), - animate('350ms', style({ transform: 'translateX(0)', 'opacity': 1 })) - ] - ), - transition( - ':leave', [ - style({ transform: 'translateX(0)', 'opacity': 1 }), - animate('350ms', style({ transform: 'translateX(100%)', 'opacity': 0 })) - ] - )] - ) - ], -}) -export class DGTPageComponent implements OnInit { - /** Enables the left side navigation */ - @Input() public sidenavEnabled = true; - /** The width of the side navigation */ - @Input() public sidenavSize = '300px'; - - /** Enables the left rail */ - @Input() public railEnabled = true; - /** Show header always */ - @Input() public headerEnabled = true; - /** Show header on mobile*/ - @Input() public mobileHeaderEnabled = false; - @Input() public headerLogoEnabled = true; - @Input() public subHeaderEnabled = true; - - /** Enables the right sidepane */ - @Input() public paneEnabled = false; - - @Input() public contentPaddingEnabled = true; - @Input() public fabEnabled = false; - @Output() public fabClicked: EventEmitter = new EventEmitter(); - @Input() public fabHelpSummary = ''; - @Input() public fabHelpSummaryEnabled = false; - public isFabHelpSummaryShown = false; - public opened = true; - public isSmallDevice = false; - - constructor(private media: MediaObserver, private logger: DGTLoggerService) { - this.opened = this.media.isActive('gt-sm'); - this.isSmallDevice = !this.media.isActive('gt-sm'); - - this.media.media$.subscribe((value: MediaChange) => { - this.opened = this.media.isActive('gt-sm'); - this.isSmallDevice = !this.media.isActive('gt-sm'); - - this.logger.debug(DGTPageComponent.name, 'Captured media change', { opened: this.opened, isSmallDevice: this.isSmallDevice }); - }); - } - - ngOnInit() { - if (this.fabHelpSummaryEnabled) { - of(null) - .pipe( - delay(3000), - tap(() => this.isFabHelpSummaryShown = true), - delay(15000), - tap(() => this.isFabHelpSummaryShown = false) - ) - .subscribe(() => console.log('finished')); - } - } - - public onFabClicked() { - this.fabClicked.emit(); - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.ts deleted file mode 100644 index e049bf75..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-action/dgt-section-action.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-action', - templateUrl: './dgt-section-action.component.html', - styleUrls: ['./dgt-section-action.component.scss'] -}) -export class DGTSectionActionComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.ts deleted file mode 100644 index 754217c4..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-avatar/dgt-section-avatar.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-avatar', - templateUrl: './dgt-section-avatar.component.html', - styleUrls: ['./dgt-section-avatar.component.scss'] -}) -export class DGTSectionAvatarComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.ts deleted file mode 100644 index 99fd06ef..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-content/dgt-section-content.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-content', - templateUrl: './dgt-section-content.component.html', - styleUrls: ['./dgt-section-content.component.scss'] -}) -export class DGTSectionContentComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.html deleted file mode 100644 index 95a0b70b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.ts deleted file mode 100644 index d3b1ecaf..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help-title/dgt-section-help-title.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-help-title', - templateUrl: './dgt-section-help-title.component.html', - styleUrls: ['./dgt-section-help-title.component.scss'] -}) -export class DGTSectionHelpTitleComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.html deleted file mode 100644 index b5e5c3ae..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.html +++ /dev/null @@ -1,17 +0,0 @@ - - -
    -
    - -
    -
    -
    -

    - -

    -
    -
    - -
    -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.scss deleted file mode 100644 index c0b13ac4..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.scss +++ /dev/null @@ -1,46 +0,0 @@ -@import 'styles'; - -:host { - display: block; - margin-bottom: $measure-gutter-large; - - &:last-child { - margin-bottom: 0px; - } -} - -.help { - color: $color-foreground-inverse; - - .help-avatar-container { - text-align: center; - width: 100%; - - .help-avatar { - height: 56px; - width: 56px; - border-radius: 50%; - border: 5px solid $color-primary-normal; - background-color: $color-foreground-inverse; - padding: 0px; - text-align: center; - margin-left: auto; - margin-right: auto; - - img { - width: 40px; - height: 40px; - border-radius: 50%; - } - } - } - - .help-title { - text-align: center; - - h1 { - color: $color-foreground-inverse; - font-size: 1.8em; - } - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.ts deleted file mode 100644 index 872400a2..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-help/dgt-section-help.component.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'dgt-section-help', - templateUrl: './dgt-section-help.component.html', - styleUrls: ['./dgt-section-help.component.scss'] -}) -export class DGTSectionHelpComponent { - - @Input() public summary = ''; - - constructor() { } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.scss deleted file mode 100644 index f09d3252..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -:host { - display: block; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.ts deleted file mode 100644 index 25e46094..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-icon/dgt-section-icon.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-icon', - templateUrl: './dgt-section-icon.component.html', - styleUrls: ['./dgt-section-icon.component.scss'] -}) -export class DGTSectionIconComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.ts deleted file mode 100644 index aa76d5bf..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-image/dgt-section-image.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-image', - templateUrl: './dgt-section-image.component.html', - styleUrls: ['./dgt-section-image.component.scss'] -}) -export class DGTSectionImageComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.ts deleted file mode 100644 index 6ff9fed2..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-reset/dgt-section-reset.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-reset', - templateUrl: './dgt-section-reset.component.html', - styleUrls: ['./dgt-section-reset.component.scss'] -}) -export class DGTSectionResetComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.scss deleted file mode 100644 index 100da8c6..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "styles"; - -:host { - font-size: $measure-font-small; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.ts deleted file mode 100644 index 11be25bc..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-subtitle', - templateUrl: './dgt-section-subtitle.component.html', - styleUrls: ['./dgt-section-subtitle.component.scss'] -}) -export class DGTSectionSubtitleComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.ts deleted file mode 100644 index 363691b0..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-summary/dgt-section-summary.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-summary', - templateUrl: './dgt-section-summary.component.html', - styleUrls: ['./dgt-section-summary.component.scss'] -}) -export class DGTSectionSummaryComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.html deleted file mode 100644 index 6dbc7430..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.scss deleted file mode 100644 index 3d647cc0..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import "styles"; - -:host { - font-weight: bold; - font-size: $measure-font-large; - line-height: 17px; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.ts deleted file mode 100644 index 63e9ca52..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section-title/dgt-section-title.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'dgt-section-title', - templateUrl: './dgt-section-title.component.html', - styleUrls: ['./dgt-section-title.component.scss'] -}) -export class DGTSectionTitleComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -} diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.html b/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.html deleted file mode 100644 index 9fe4ca9a..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.html +++ /dev/null @@ -1,49 +0,0 @@ -
    -
    - -
    -
    -
    - -
    -
    -
    - - - - - -
    -
    - -
    -
    - -
    -
    - -
    - - - - - - {{'common.components.dgt-section.loading' | translate}} - -
    - -
    - -
    -
    -
    - -
    -
    -
    -
    \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.scss b/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.scss deleted file mode 100644 index 92c37719..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import 'styles'; -:host { - display: block; - margin-bottom: $measure-gutter-xlarge !important; - &:last-child { - margin-bottom: 0px; - } -} - -.section-subtitle{ - font-size: 12px; -} - -.section { - background-color: $color-foreground-inverse; - border: $measure-gutter-normal solid transparent; - padding: $measure-gutter-xlarge; - &.blue { - background-color: $color-primary-normal; - color: $color-foreground-inverse; - } - &.warning { - border-left: $measure-gutter-normal solid $color-danger-normal; - } - &.success { - border-left: $measure-gutter-normal solid $color-success-normal; - } - dgt-charm { - height: 50px; - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.ts b/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.ts deleted file mode 100644 index 6e20d7a6..00000000 --- a/projects/dgt-shared-web/src/lib/interface/components/dgt-section/dgt-section.component.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Component, Input, EventEmitter, Output } from '@angular/core'; -import { DGTSectionState } from '../../models/dgt-section-style.model'; -import * as _ from 'lodash'; - -@Component({ - selector: 'dgt-section', - templateUrl: './dgt-section.component.html', - styleUrls: ['./dgt-section.component.scss'] -}) -export class DGTSectionComponent { - - public get showSummary(): boolean { - let res = false; - - if (_.includes([DGTSectionState.SUCCESS, DGTSectionState.LOCKED, DGTSectionState.LOADING], this.state)) { - res = true; - } - - return res; - } - public get showTitle(): boolean { - let res = false; - - if (_.includes([DGTSectionState.NORMAL, DGTSectionState.BLUE, DGTSectionState.COLLAPSED, - DGTSectionState.SUCCESS, DGTSectionState.LOCKED, DGTSectionState.LOADING, DGTSectionState.WARNING], this.state) && this.enableTitle) { - res = true; - } - - return res; - } - public get showReset(): boolean { - let res = false; - - if (_.includes([DGTSectionState.SUCCESS], this.state)) { - res = true; - } - - return res; - } - public get showLoading(): boolean { - let res = false; - - if (_.includes([DGTSectionState.LOADING], this.state)) { - res = true; - } - - return res; - } - @Input() public enableTitle = true; - @Input() public showSubtitle = false; - @Input() public showIcon = false; - @Input() public showContent = false; - @Input() public showAvatar = false; - @Input() public showImage = false; - @Input() public showActions = false; - @Input() public state: DGTSectionState = DGTSectionState.NORMAL; - @Output() public reset: EventEmitter = new EventEmitter(); - - constructor() { } - - public onReset() { - this.reset.emit(); - } -} diff --git a/projects/dgt-shared-web/src/lib/interface/guards/dgt-browser-is-supported.guard.ts b/projects/dgt-shared-web/src/lib/interface/guards/dgt-browser-is-supported.guard.ts deleted file mode 100644 index d128bea7..00000000 --- a/projects/dgt-shared-web/src/lib/interface/guards/dgt-browser-is-supported.guard.ts +++ /dev/null @@ -1,40 +0,0 @@ - -import { CanLoad, Route, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild } from '@angular/router'; -import { Observable } from 'rxjs'; -import { DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { Navigate } from '../../state/models/dgt-actions.model'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTBrowserIsSupportedGuard implements CanLoad, CanActivate, CanActivateChild { - canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable | Promise { - return this.isBrowserSupported(); - } - - canLoad(route: Route): boolean | Observable | Promise { - return this.isBrowserSupported(); - } - - canActivate(route: ActivatedRouteSnapshot, routeState: RouterStateSnapshot): boolean { - return this.isBrowserSupported(); - } - - private isBrowserSupported(): boolean { - let res = true; - - this.logger.debug(DGTBrowserIsSupportedGuard.name, 'Starting to check browser support', { userAgent: window.navigator.userAgent }); - - if (window.navigator.userAgent.match(/(MSIE|Trident)/)) { - this.logger.debug(DGTBrowserIsSupportedGuard.name, 'Identitified browser as internet explorer, redirecting.', { userAgent: window.navigator.userAgent }); - res = false; - - this.store.dispatch(new Navigate({ path: ['/support', 'browser-support'] })); - } - - return res; - } - - constructor(private logger: DGTLoggerService, private store: DGTStateStoreService>) { } -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-color.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-color.model.ts deleted file mode 100644 index ce080262..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-color.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DGTColor { - ACCENT = 'accent', - BASIC = 'basic', - PRIMARY = 'primary', - WARN = 'warn' -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-notification-type.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-notification-type.model.ts deleted file mode 100644 index af0a87f5..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-notification-type.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DGTNotificationType { - INFO = 'info', - WARN = 'warn', - DANGER = 'danger', - SUCCESS = 'success' -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-notification.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-notification.model.ts deleted file mode 100644 index 72ad681f..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-notification.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTNotificationType } from './dgt-notification-type.model'; - -export class DGTNotification { - constructor(public type: DGTNotificationType, public message: string, public ttl: number = 1) { } -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-section-container.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-section-container.model.ts deleted file mode 100644 index 375ca21b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-section-container.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTSectionState } from './dgt-section-style.model'; - -export abstract class DGTSectionContainer { - public state: DGTSectionState; -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-section-style.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-section-style.model.ts deleted file mode 100644 index 2d2df985..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-section-style.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -export enum DGTSectionState { - BLUE = 'blue', - COLLAPSED = 'collapsed', - LOADING = 'loading', - LOCKED = 'locked', - NORMAL = 'normal', - SUCCESS = 'success', - WARNING = 'warning' -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-smart-element.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-smart-element.model.ts deleted file mode 100644 index 92ad3b3b..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-smart-element.model.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTNotification } from './dgt-notification.model'; -import { DismissNotification } from '../../state/models/dgt-actions.model'; -import { OnDestroy } from '@angular/core'; -import { Subject } from 'rxjs'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -export abstract class DGTSmartElement> implements OnDestroy { - public notifications: Array; - public unsubscribe: Subject = new Subject(); - - constructor(protected store: DGTStateStoreService) { - this.store.select(state => state.app.notifications).subscribe((notifications: DGTNotification[]) => this.notifications = notifications); - } - - ngOnDestroy(): void { - if (this.unsubscribe) { - this.unsubscribe.next(); - this.unsubscribe.complete(); - } - } - - onNotificationDismissed(notification: DGTNotification) { - if (notification) { - this.store.dispatch(new DismissNotification(notification.message)); - } - } -} diff --git a/projects/dgt-shared-web/src/lib/interface/models/dgt-smart-form.model.ts b/projects/dgt-shared-web/src/lib/interface/models/dgt-smart-form.model.ts deleted file mode 100644 index b3925ff3..00000000 --- a/projects/dgt-shared-web/src/lib/interface/models/dgt-smart-form.model.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { FormGroup } from '@angular/forms'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTSmartElement } from './dgt-smart-element.model'; -import { DGTRobotVerificationResponse } from '../../validation/models/dgt-robot-verification-response.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -export abstract class DGTSmartForm> extends DGTSmartElement { - public captchaResponse: DGTRobotVerificationResponse = DGTRobotVerificationResponse.ROBOT; - public abstract formGroup: FormGroup; - - constructor(protected store: DGTStateStoreService) { - super(store); - } - - public get isValid(): boolean { - let res = false; - - if (this.formGroup.valid - && this.captchaResponse === DGTRobotVerificationResponse.HUMAN - ) { - res = true; - } - - return res; - } - - public onResolved(response: DGTRobotVerificationResponse) { - this.captchaResponse = response; - } -} diff --git a/projects/dgt-shared-web/src/lib/interface/services/dgt-title.service.ts b/projects/dgt-shared-web/src/lib/interface/services/dgt-title.service.ts deleted file mode 100644 index 23dcb7be..00000000 --- a/projects/dgt-shared-web/src/lib/interface/services/dgt-title.service.ts +++ /dev/null @@ -1,37 +0,0 @@ - -import { Title } from '@angular/platform-browser'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import * as _ from 'lodash'; - -@DGTInjectable() -export class DGTTitleService { - - constructor(public titleService: Title) { } - - setPageTitle(pageTitle: string) { - const currentTitle: string = this.titleService.getTitle(); - const currentTitleSplit: string[] = currentTitle.split('|'); - - if (currentTitleSplit.length > 1) { - const plannerTitle: string = _.last(currentTitleSplit).trim(); - - this.titleService.setTitle(pageTitle + ' | ' + plannerTitle); - } else { - this.titleService.setTitle(pageTitle + ' | ' + currentTitle); - } - } - - setPlannerTitle(plannerTitle: string) { - const currentTitle: string = this.titleService.getTitle(); - const currentTitleSplit: string[] = currentTitle.split('|'); - - if (currentTitleSplit.length > 1) { - const pageTitle: string = _.first(currentTitleSplit).trim(); - - this.titleService.setTitle(pageTitle + ' | ' + plannerTitle); - } else { - this.titleService.setTitle(currentTitle + ' | ' + plannerTitle); - } - } - -} diff --git a/projects/dgt-shared-web/src/lib/invites/services/dgt-invite-remote.service.ts b/projects/dgt-shared-web/src/lib/invites/services/dgt-invite-remote.service.ts deleted file mode 100644 index 714f7212..00000000 --- a/projects/dgt-shared-web/src/lib/invites/services/dgt-invite-remote.service.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { DGTInvite, DGTInviteService, DGTConfigurationBaseWeb } from '@digita-ai/dgt-shared-data'; -import { Injectable } from '@angular/core'; -import { Observable, of } from 'rxjs'; -import { DGTHttpService, DGTLoggerService, DGTErrorArgument, DGTConfigurationService } from '@digita-ai/dgt-shared-utils'; -import { map, switchMap, tap } from 'rxjs/operators'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@Injectable() -export class DGTInviteRemoteService extends DGTInviteService { - constructor( - private http: DGTHttpService, - private logger: DGTLoggerService, - private config: DGTConfigurationService, - public store: DGTStateStoreService>, - ) { - super(); - } - - get(uri: string): Observable { - if (!uri) { - throw new DGTErrorArgument('Argument inviteId should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}invite/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - query(filter: Partial): Observable { - throw new Error('Method not implemented.'); - } - save(resource: DGTInvite): Observable { - throw new Error('Method not implemented.'); - } - delete(resource: DGTInvite): Observable { - throw new Error('Method not implemented.'); - } - - public verify(inviteId: string): Observable { - this.logger.debug(DGTInviteRemoteService.name, 'Starting to verify invite', { inviteId }); - - if (!inviteId) { - throw new DGTErrorArgument('Argument inviteId should be set.', inviteId); - } - - return of({ inviteId }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}invite/${data.inviteId}/verify` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - tap(invite => this.logger.debug(DGTInviteRemoteService.name, 'Verified invite', invite)), - map(response => response.data), - ); - } -} diff --git a/projects/dgt-shared-web/src/lib/profile/models/dgt-profile-actions.model.ts b/projects/dgt-shared-web/src/lib/profile/models/dgt-profile-actions.model.ts deleted file mode 100644 index d6d7f3b8..00000000 --- a/projects/dgt-shared-web/src/lib/profile/models/dgt-profile-actions.model.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { DGTProfile, DGTConnectionSolid, DGTSourceSolid, DGTExchange } from '@digita-ai/dgt-shared-data'; -import { DGTAbstractAction } from '../../state/models/dgt-abstract-action.model'; -import { DGTAction } from '../../state/models/dgt-action.model'; - -export const DGTProfileActionTypes = { - LOAD_PROFILE: '[App] Load profile', - LOAD_PROFILE_FINISHED: '[App] Load profile finished', -}; - -export interface DGTProfileLoadPayload { - exchange: DGTExchange; -} - -export class DGTProfileLoad implements DGTAbstractAction { - type = DGTProfileActionTypes.LOAD_PROFILE; - - constructor(public payload: DGTProfileLoadPayload, public onSuccess: Array = null, public onFailure: Array = null) { } -} - -export interface DGTProfileLoadFinishedPayload { - profile: DGTProfile; -} - -export class DGTProfileLoadFinished implements DGTAbstractAction { - type = DGTProfileActionTypes.LOAD_PROFILE_FINISHED; - - constructor(public payload: DGTProfileLoadFinishedPayload, - public onSuccess: Array = null, - public onFailure: Array = null) { } -} diff --git a/projects/dgt-shared-web/src/lib/purposes/services/dgt-purpose-remote.service.ts b/projects/dgt-shared-web/src/lib/purposes/services/dgt-purpose-remote.service.ts deleted file mode 100644 index 28b5b0c8..00000000 --- a/projects/dgt-shared-web/src/lib/purposes/services/dgt-purpose-remote.service.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { DGTConfigurationBaseWeb, DGTPurpose, DGTPurposeService } from '@digita-ai/dgt-shared-data'; -import { DGTConfigurationService, DGTErrorArgument, DGTHttpService, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { Observable, of } from 'rxjs'; -import * as _ from 'lodash'; -import { DGTExchangeRemoteService } from '../../exchanges/services/dgt-exchange-remote.service'; -import { map, switchMap } from 'rxjs/operators'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTPurposeRemoteService extends DGTPurposeService { - constructor(private store: DGTStateStoreService>, private http: DGTHttpService, private logger: DGTLoggerService, private config: DGTConfigurationService) { - super(); - } - - get(uri: string): Observable { - this.logger.debug(DGTPurposeRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}purpose/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - query(filter: Partial): Observable { - this.logger.debug(DGTExchangeRemoteService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}purpose` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => _.filter(response.data, filter)), - ); - } - save(resource: DGTPurpose): Observable { - throw new Error('Method not implemented.'); - } - delete(resource: DGTPurpose): Observable { - throw new Error('Method not implemented.'); - } - -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/source/services/dgt-source-remote.service.ts b/projects/dgt-shared-web/src/lib/source/services/dgt-source-remote.service.ts deleted file mode 100644 index a6596ca1..00000000 --- a/projects/dgt-shared-web/src/lib/source/services/dgt-source-remote.service.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { DGTSource, DGTSourceService, DGTConfigurationBaseWeb } from '@digita-ai/dgt-shared-data'; -import { DGTConfigurationService, DGTErrorArgument, DGTErrorNotImplemented, DGTHttpService, DGTInjectable, DGTLoggerService } from "@digita-ai/dgt-shared-utils"; -import { Observable, of } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTSourceRemoteService extends DGTSourceService { - constructor(private store: DGTStateStoreService>, private http: DGTHttpService, logger: DGTLoggerService, private config: DGTConfigurationService) { - super(logger); - } - - get(uri: string): Observable> { - this.logger.debug(DGTSourceRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}source/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get>(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => response.data), - ); - } - query(filter: Partial>): Observable[]> { - this.logger.debug(DGTSourceRemoteService.name, 'Starting to query', { filter }); - - if (!filter) { - throw new DGTErrorArgument('Argument filter should be set.', filter); - } - - return of({ filter }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}source` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get[]>(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - map(response => _.filter>(response.data, filter)), - ); - } - save(resource: DGTSource): Observable> { - throw new DGTErrorNotImplemented(); - } - delete(resource: DGTSource): Observable> { - throw new DGTErrorNotImplemented(); - } - linkSource(inviteId: string, sourceId: string): Observable<{ state: string; loginUri: string; }> { - throw new DGTErrorNotImplemented(); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/source/services/dgt-source-state.service.ts b/projects/dgt-shared-web/src/lib/source/services/dgt-source-state.service.ts deleted file mode 100644 index bcc809bd..00000000 --- a/projects/dgt-shared-web/src/lib/source/services/dgt-source-state.service.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { DGTSourceService, DGTSource } from '@digita-ai/dgt-shared-data'; -import { DGTErrorArgument, DGTErrorNotImplemented, DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { of, Observable } from 'rxjs'; -import { map, switchMap, take } from 'rxjs/operators'; -import * as _ from 'lodash'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; - -@DGTInjectable() -export class DGTSourceStateService extends DGTSourceService { - - constructor(private store: DGTStateStoreService>, logger: DGTLoggerService,) { - super(logger); - } - - public save(resource: DGTSource): Observable> { - throw new DGTErrorNotImplemented(); - } - - public get(uri: string): Observable> { - this.logger.debug(DGTSourceStateService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - switchMap(data => this.store.select[]>(state => state.app.sources) - .pipe(map(sources => ({ ...data, sources })))), - map(data => data.sources ? data.sources.find(c => c.uri === data.uri) : null), - take(1), - ); - } - - public delete(resource: DGTSource): Observable> { - throw new DGTErrorNotImplemented(); - } - - public query(filter: Partial>): Observable[]> { - throw new DGTErrorNotImplemented(); - } - - public getConnectionsWithWebId(webId: string): Observable[]> { - throw new DGTErrorNotImplemented(); - } - - public linkSource(inviteId: string, sourceId: string): Observable<{ state: string; loginUri: string; }> { - throw new DGTErrorNotImplemented(); - } -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-abstract-action.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-abstract-action.model.ts deleted file mode 100644 index 556c8828..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-abstract-action.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTAction } from './dgt-action.model'; - -export interface DGTAbstractAction extends DGTAction { - payload: T; - onSuccess: Array; - onFailure: Array; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-action.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-action.model.ts deleted file mode 100644 index 4e04b22c..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-action.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Action } from '@ngrx/store/src/models'; - -export interface DGTAction extends Action { - payload: any; - onSuccess: Array; - onFailure: Array; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-actions.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-actions.model.ts deleted file mode 100644 index c7506d89..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-actions.model.ts +++ /dev/null @@ -1,117 +0,0 @@ -import * as _ from 'lodash'; -import { NavigationExtras } from '@angular/router'; -import { DGTAbstractAction } from './dgt-abstract-action.model'; -import { DGTAction } from './dgt-action.model'; -import { DGTNotification } from '../../interface/models/dgt-notification.model'; -import { DGTI8NLocale } from '../../i8n/models/dgt-i8n-locale.model'; - -export const ActionTypes = { - SET_LOCALE: '[App] Set locale', - SET_DEFAULT_LOCALE: '[App] Set default locale', - NAVIGATE: '[App] Navigate', - NAVIGATE_EXTERNAL: '[App] Navigate external', - ADD_NOTIFICATION: '[App] Add notification', - DISMISS_NOTIFICATION: '[App] Dismiss notification', - DISMISS_ALL_NOTIFICATIONS: '[App] Dismiss all notifications', - CHECK_CONNECTION: '[App] Check connection', - CHECK_CONNECTION_FINISH: '[App] Check connection finish', - CHECK_UPDATES: '[App] Check updates', - HANDLE_ERROR: '[App] Handle error', - COOKIES_NOTICE_DECISION: '[App] Cookies notice decision made', - NGRX_NAVIGATED: '@ngrx/router-store/navigated', -}; - -export class SetLocale implements DGTAbstractAction { - type = ActionTypes.SET_LOCALE; - - constructor(public payload: DGTI8NLocale, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class SetDefaultLocale implements DGTAbstractAction { - type = ActionTypes.SET_DEFAULT_LOCALE; - - constructor(public payload: DGTI8NLocale, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export interface NavigatePayload { - path: any[]; - query?: object; - extras?: NavigationExtras; -} -export class Navigate implements DGTAbstractAction { - type = ActionTypes.NAVIGATE; - - constructor(public payload: NavigatePayload, public onSuccess: Array = null, public onFailure: Array = null) { } -} - -export class NavigateExternal implements DGTAbstractAction { - type = ActionTypes.NAVIGATE_EXTERNAL; - - constructor(public payload: string, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class AddNotification implements DGTAbstractAction { - type = ActionTypes.ADD_NOTIFICATION; - - constructor(public payload: DGTNotification, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class DismissNotification implements DGTAbstractAction { - type = ActionTypes.DISMISS_NOTIFICATION; - - constructor(public payload: string, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class CheckUpdates implements DGTAbstractAction { - type = ActionTypes.CHECK_UPDATES; - payload = null; - - constructor(public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class CheckConnection implements DGTAbstractAction { - type = ActionTypes.CHECK_CONNECTION; - payload = null; - - constructor(public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class CheckConnectionFinish implements DGTAbstractAction { - type = ActionTypes.CHECK_CONNECTION_FINISH; - - constructor(public payload: boolean, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export interface HandleErrorPayload { - typeName: string; - error: Error; - caught: any; -} - -export class HandleError implements DGTAbstractAction { - type = ActionTypes.HANDLE_ERROR; - - constructor(public payload: HandleErrorPayload, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class CookiesNoticeDecision implements DGTAbstractAction { - type = ActionTypes.COOKIES_NOTICE_DECISION; - - constructor(public payload: boolean, public onSuccess: Array = null, public onFailure: Array = null) { - } -} - -export class DismissAllNotifications implements DGTAbstractAction<{}> { - type = ActionTypes.DISMISS_ALL_NOTIFICATIONS; - constructor(public payload: {}, public onSuccess: Array = null, public onFailure: Array = null) { - } -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-app-root.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-app-root.model.ts deleted file mode 100644 index 68a1d3f1..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-app-root.model.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { ActionReducerMap, Action, MetaReducer } from '@ngrx/store'; -import { EventsMap, EventsMapper } from 'redux-beacon'; - -export abstract class DGTAppRoot { - public reducers: ActionReducerMap; - public metaReducers: Array>; - public events: EventsMap | EventsMapper; - public actions: {[key: string]: string}; - - // private _features: Array>; - // public get features(): Array> { - // return this._features; - // } - // public set features(v: Array>) { - // this._features = v; - - // if (this.features) { - // this.actionReducerMap = null; - - // this.actionReducerMap = Object.assign({}, this.actionReducerMap, { - // app: AppReducer.getInstance().reduce, - // router: routerReducer - // }); - - // this.features.forEach((feature) => { - // const update = {}; - // update[feature.name] = feature.featureReducer.reduce; - - // this.actionReducerMap = Object.assign({}, this.actionReducerMap, update); - // }) - // } - // } - -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-base-app-state.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-base-app-state.model.ts deleted file mode 100644 index 7f80e621..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-base-app-state.model.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DGTNotification } from '../../interface/models/dgt-notification.model'; -import { DGTI8NLocale } from '../../i8n/models/dgt-i8n-locale.model'; -import { DGTConnection, DGTExchange, DGTSource } from '@digita-ai/dgt-shared-data'; - -export interface DGTBaseAppState { - notifications: Array; - locale: DGTI8NLocale; - defaultLocale: DGTI8NLocale; - accessToken: string; - connections: DGTConnection[]; - sources: DGTSource[]; - exchanges: DGTExchange[]; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-base-root-state.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-base-root-state.model.ts deleted file mode 100644 index c172ce5f..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-base-root-state.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DGTBaseAppState } from './dgt-base-app-state.model'; - -export interface DGTBaseRootState { - app: T; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-feature-definition.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-feature-definition.model.ts deleted file mode 100644 index afd74199..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-feature-definition.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { EventsMap, EventsMapper } from 'redux-beacon'; -import { DGTAction } from './dgt-action.model'; - -export interface DGTFeatureDefinition { - name: string; - reduce: (state: T, action: DGTAction) => T; - initialState: T; - events: EventsMap | EventsMapper; - actionsTypes: { [key: string]: string }; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-feature.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-feature.model.ts deleted file mode 100644 index 6a4fbd00..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-feature.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface DGTFeature { - name: string; - featureReducer: any; - initialFeatureState: any; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-reducer-method.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-reducer-method.model.ts deleted file mode 100644 index 6e27131b..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-reducer-method.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTAction } from './dgt-action.model'; - - -export interface DGTReducerMethod { - trigger: string; - method: (action: T, state: S) => S; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-reducer-reduce.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-reducer-reduce.model.ts deleted file mode 100644 index 9c83773c..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-reducer-reduce.model.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DGTReducerMethod } from './dgt-reducer-method.model'; -import { DGTAction } from './dgt-action.model'; - -export function reduceFactory(initialState: T, methods: Array>): (state: T, action: DGTAction) => T { - return (state: T, action: DGTAction) => { - let res: T = state; - - if (!res && initialState) { - res = initialState; - } - - if (methods) { - const triggeredMethods = methods.filter(method => method.trigger === action.type); - - triggeredMethods.forEach(method => { - res = method.method(action, res); - }); - } - - return res; - }; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-reducer.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-reducer.model.ts deleted file mode 100644 index 8f5c5734..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-reducer.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DGTReducerMethod } from './dgt-reducer-method.model'; -import { DGTAction } from './dgt-action.model'; - -export interface DGTReducer { - initialState: T; - methods: Array>; -} diff --git a/projects/dgt-shared-web/src/lib/state/models/dgt-state-selector.model.ts b/projects/dgt-shared-web/src/lib/state/models/dgt-state-selector.model.ts deleted file mode 100644 index cfa20137..00000000 --- a/projects/dgt-shared-web/src/lib/state/models/dgt-state-selector.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Observable } from 'rxjs'; - -export interface DGTStateSelector { - execute(input: K): Observable; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/state/services/dgt-state-effects-base-web.service.ts b/projects/dgt-shared-web/src/lib/state/services/dgt-state-effects-base-web.service.ts deleted file mode 100644 index 1089e853..00000000 --- a/projects/dgt-shared-web/src/lib/state/services/dgt-state-effects-base-web.service.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { mergeMap, map, catchError, tap, switchMap, first } from 'rxjs/operators'; -import { Actions, Effect, ofType, ROOT_EFFECTS_INIT } from '@ngrx/effects'; -import { from, of } from 'rxjs'; -import { Router } from '@angular/router'; -import { DGTErrorService, DGTLoggerService, DGTErrorConfig, DGTConfigurationService, DGTInjectable, DGTConnectivityService } from '@digita-ai/dgt-shared-utils'; -import { DGTProfileService, DGTLDTypeRegistrationService, DGTConfigurationBaseWeb } from '@digita-ai/dgt-shared-data'; -import * as _ from 'lodash'; -import { DGTProfileActionTypes, DGTProfileLoad, DGTProfileLoadFinished } from '../../profile/models/dgt-profile-actions.model'; -import { DGTEventsRegister } from '../../events/models/dgt-events-actions.model'; -import { DGTI8NLocale } from '../../i8n/models/dgt-i8n-locale.model'; -import { ActionTypes, AddNotification, CheckConnection, CheckConnectionFinish, CheckUpdates, DismissAllNotifications, HandleError, Navigate, NavigateExternal, SetDefaultLocale, SetLocale } from '../models/dgt-actions.model'; -import { DGTNotification } from '../../interface/models/dgt-notification.model'; -import { DGTNotificationType } from '../../interface/models/dgt-notification-type.model'; -import { DGTI8NService } from '../../i8n/services/dgt-i8n.service'; -import { ApplicationRef } from '@angular/core'; -import { SwUpdate } from '@angular/service-worker'; - -@DGTInjectable() -export class DGTStateEffectsBaseWebService { - /** Determines (default) locale */ - @Effect() - /** Determines (default) locale */ - init$ = this.actions$ - .pipe( - ofType(ROOT_EFFECTS_INIT), - mergeMap(() => { - this.logger.debug(DGTStateEffectsBaseWebService.name, 'Starting to determine the default locale'); - const defaultLocale: DGTI8NLocale = new DGTI8NLocale(this.config.get(keys => keys.locale.default)); - - this.logger.debug(DGTStateEffectsBaseWebService.name, 'Starting to determine the active locale'); - const locale: DGTI8NLocale = this.i8n.getLocale(defaultLocale, this.config.get(keys => keys.locale.mapping)); - - return [ - new SetDefaultLocale(defaultLocale), - new SetLocale(locale) - ]; - }), - catchError((error, caught) => of(new HandleError({ typeName: ROOT_EFFECTS_INIT, error, caught }))), - ); - - @Effect() - /** Determines (default) locale */ - checkForUpdates$ = this.actions$ - .pipe( - ofType(ROOT_EFFECTS_INIT), - mergeMap(() => this.appRef.isStable - .pipe( - first(isStable => isStable === true && this.config.get(c => c.enableServiceWorker)), - tap(data => this.updates.checkForUpdate()), - tap(data => this.logger.debug(DGTStateEffectsBaseWebService.name, 'Checked for updates')), - map(data => new CheckUpdates()), - )), - catchError((error, caught) => of(new HandleError({ typeName: ROOT_EFFECTS_INIT, error, caught }))), - ); - - @Effect({ dispatch: false }) - /** Determines (default) locale */ - update$ = this.actions$ - .pipe( - ofType(ActionTypes.CHECK_UPDATES), - mergeMap(() => this.updates.available - .pipe( - tap(data => this.logger.debug(DGTStateEffectsBaseWebService.name, 'Updates available')), - switchMap(data => from(this.updates.activateUpdate())), - tap(data => this.logger.debug(DGTStateEffectsBaseWebService.name, 'Update activated')), - tap(data => document.location.reload()), - )), - catchError((error, caught) => of(new HandleError({ typeName: CheckUpdates.name, error, caught }))), - ); - - @Effect({ dispatch: false }) - /** Navigates to a path */ - navigate$ = this.actions$ - .pipe( - ofType(ActionTypes.NAVIGATE), - map((action: Navigate) => action.payload), - tap(({ path, query: queryParams, extras }) => this.router.navigate(path, { queryParams, ...extras })), - catchError((error, caught) => of(new HandleError({ typeName: Navigate.name, error, caught }))), - ); - - @Effect({ dispatch: false }) - /** Navigates to an external URI */ - navigateExternal$ = this.actions$ - .pipe( - ofType(ActionTypes.NAVIGATE_EXTERNAL), - map((action: NavigateExternal) => action.payload), - tap((payload: any) => window.location.href = payload), - catchError((error, caught) => of(new HandleError({ typeName: NavigateExternal.name, error, caught }))), - ); - - @Effect({ dispatch: false }) - /** Sets the locale */ - setLocale$ = this.actions$ - .pipe( - ofType(ActionTypes.SET_LOCALE), - tap((action: SetLocale) => this.i8n.applyLocale(action.payload)), - catchError((error, caught) => of(new HandleError({ typeName: SetLocale.name, error, caught }))), - ); - - @Effect() - /** Dismisses all notifications */ - onNavigate$ = this.actions$ - .pipe( - ofType(ActionTypes.NGRX_NAVIGATED), - map(() => new DismissAllNotifications({})), - catchError((error, caught) => of(new HandleError({ typeName: ActionTypes.NGRX_NAVIGATED, error, caught }))), - ); - - @Effect({ dispatch: false }) - /** Sets the default locale */ - setDefaultLocale$ = this.actions$ - .pipe( - ofType(ActionTypes.SET_DEFAULT_LOCALE), - tap((action: SetDefaultLocale) => this.i8n.applyDefaultLocale(action.payload)), - catchError((error, caught) => of(new HandleError({ typeName: SetDefaultLocale.name, error, caught }))), - ); - - @Effect() - /** Checks the current connection status */ - checkConnection$ = this.actions$ - .pipe( - ofType(ActionTypes.CHECK_CONNECTION), - mergeMap(() => this.connection.status), - map(online => new CheckConnectionFinish(online)), - catchError((err, caught) => of(new HandleError({ - typeName: CheckConnection.name, - error: err, - caught - }))) - ); - - @Effect() - /** Handles error and adds a new notification, then checks connection */ - handleError$ = this.actions$ - .pipe( - ofType(ActionTypes.HANDLE_ERROR), - tap((action: HandleError) => this.errors.handle(action.payload.typeName, action.payload.error, action.payload.caught)), - mergeMap(() => of(new AddNotification(new DGTNotification( - DGTNotificationType.DANGER, - 'app.notifications.unexpected-error' - )))), - ); - - @Effect() - /** Loads profiles, registers an event */ - loadProfile$ = this.actions$.pipe( - ofType(DGTProfileActionTypes.LOAD_PROFILE), - mergeMap((action: DGTProfileLoad) => this.profiles.get(action.payload.exchange) - .pipe(map(profile => ({ profile, action })))), - tap(data => this.logger.debug(DGTProfileLoad.name, 'Retrieved profile for exchange', data)), - switchMap(data => this.registrationsService.registerMissingTypeRegistrations(data.profile) - .pipe(map(typeRegistrationsRegistered => ({ ...data, typeRegistrationsRegistered })))), - tap(data => this.logger.debug(DGTProfileLoad.name, 'Registered missing type registrations', data)), - // add typeRegistrations to the profile - map(data => ({ ...data, profile: { ...data.profile, typeRegistrations: [...data.profile.typeRegistrations, ...data.typeRegistrationsRegistered] } })), - switchMap(data => { - const profileLoaded = this.config.get(c => c.events.templates.profileLoaded) - - if (!profileLoaded) { - throw new DGTErrorConfig('Config key events.templates.profileLoaded should be set.', profileLoaded); - } - return [ - new DGTProfileLoadFinished({ profile: data.profile }), - new DGTEventsRegister({ - event: { - ...profileLoaded, - exchange: data.action.payload.exchange.uri, - }, - profile: data.profile, - }), - ] - } - ), - catchError((error, caught) => of(new HandleError({ typeName: DGTProfileLoad.name, error, caught }))), - ); - - constructor( - protected errors: DGTErrorService, - protected actions$: Actions, - protected router: Router, - protected connection: DGTConnectivityService, - protected i8n: DGTI8NService, - protected logger: DGTLoggerService, - protected config: DGTConfigurationService, - protected profiles: DGTProfileService, - protected registrationsService: DGTLDTypeRegistrationService, - protected updates: SwUpdate, - protected appRef: ApplicationRef, - ) { } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-filter.model.ts b/projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-filter.model.ts deleted file mode 100644 index 8555ebf2..00000000 --- a/projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-filter.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTStateSelector } from '../models/dgt-state-selector.model'; -import { DGTLDTriple, DGTLDFilterService, DGTLDFilter } from '@digita-ai/dgt-shared-data'; -import { Observable } from 'rxjs'; - -export class DGTStateSelectorFilter implements DGTStateSelector { - - constructor(private filter: DGTLDFilterService, private filters: DGTLDFilter[]) { } - - execute(input: DGTLDTriple[]): Observable { - return this.filter.run(this.filters, input); - } -} diff --git a/projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-query.model.ts b/projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-query.model.ts deleted file mode 100644 index 9e8cc917..00000000 --- a/projects/dgt-shared-web/src/lib/state/services/dgt-state-selector-query.model.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DGTStateSelector } from '../models/dgt-state-selector.model'; -import { DGTQueryService, DGTQuery } from '@digita-ai/dgt-shared-data'; -import { Observable, of } from 'rxjs'; - -export class DGTStateSelectorQuery implements DGTStateSelector { - - constructor(private queries: DGTQueryService, private query: DGTQuery) { } - - execute(input: K): Observable { - return of(this.queries.execute(input, this.query)); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/lib/state/services/dgt-state-store-ngrx.service.ts b/projects/dgt-shared-web/src/lib/state/services/dgt-state-store-ngrx.service.ts deleted file mode 100644 index 128873de..00000000 --- a/projects/dgt-shared-web/src/lib/state/services/dgt-state-store-ngrx.service.ts +++ /dev/null @@ -1,34 +0,0 @@ - -import { Store } from '@ngrx/store'; -import { Observable, of } from 'rxjs'; -import { switchMap } from 'rxjs/operators'; -import { DGTBaseRootState } from '../models/dgt-base-root-state.model'; -import { DGTStateStoreService } from './dgt-state-store.service'; -import { DGTAction } from '../models/dgt-action.model'; -import { DGTInjectable, DGTLoggerService } from '@digita-ai/dgt-shared-utils'; -import { DGTBaseAppState } from '../models/dgt-base-app-state.model'; -import { DGTQueryService } from '@digita-ai/dgt-shared-data'; -import { DGTStateSelector } from '../models/dgt-state-selector.model'; - -@DGTInjectable() -export class DGTStateStoreNGRXService> extends DGTStateStoreService { - - constructor(private logger: DGTLoggerService, private store: Store, private queries: DGTQueryService) { - super(); - } - - public dispatch(action: DGTAction) { - this.logger.debug(DGTStateStoreNGRXService.name, 'Dispatching action.', action); - - this.store.dispatch(action); - } - - public select(mapFn: (state: T) => K, selector?: DGTStateSelector): Observable { - this.logger.debug(DGTStateStoreNGRXService.name, 'Selecting value from store.', { mapFn, selector }); - - return this.store.select(mapFn) - .pipe( - switchMap(data => selector ? selector.execute(data) : of(data as any)) - ); - } -} diff --git a/projects/dgt-shared-web/src/lib/state/services/dgt-state-store.service.ts b/projects/dgt-shared-web/src/lib/state/services/dgt-state-store.service.ts deleted file mode 100644 index a7c71a0d..00000000 --- a/projects/dgt-shared-web/src/lib/state/services/dgt-state-store.service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Observable } from 'rxjs'; -import { DGTAction } from '../models/dgt-action.model'; -import { DGTBaseRootState } from '../models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../models/dgt-base-app-state.model'; -import { DGTStateSelector } from '../models/dgt-state-selector.model'; - -export abstract class DGTStateStoreService> { - public abstract dispatch(action: DGTAction); - public abstract select(mapFn: (state: T) => K, selector?: DGTStateSelector): Observable; -} diff --git a/projects/dgt-shared-web/src/lib/validation/models/dgt-robot-verification-response.model.ts b/projects/dgt-shared-web/src/lib/validation/models/dgt-robot-verification-response.model.ts deleted file mode 100644 index b28e8801..00000000 --- a/projects/dgt-shared-web/src/lib/validation/models/dgt-robot-verification-response.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum DGTRobotVerificationResponse { - HUMAN = 0, ROBOT = 1 -} diff --git a/projects/dgt-shared-web/src/lib/validation/validators/dgt-compare.validator.ts b/projects/dgt-shared-web/src/lib/validation/validators/dgt-compare.validator.ts deleted file mode 100644 index 8a68ab2f..00000000 --- a/projects/dgt-shared-web/src/lib/validation/validators/dgt-compare.validator.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ElementRef, Injectable } from '@angular/core'; -import { ValidatorFn, AbstractControl } from '@angular/forms'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; - -@DGTInjectable() -export class DGTCompareValidator { - public validate(originalTextField: ElementRef, comparedTextField: ElementRef, errorField: string): ValidatorFn { - return (control: AbstractControl): { [key: string]: any } => { - - if (comparedTextField.nativeElement.value !== originalTextField.nativeElement.value) { - control.get(errorField).setErrors({ compare: true }); - } - - return null; - }; - } -} diff --git a/projects/dgt-shared-web/src/lib/validation/validators/dgt-phone.validator.ts b/projects/dgt-shared-web/src/lib/validation/validators/dgt-phone.validator.ts deleted file mode 100644 index 7ffbcc69..00000000 --- a/projects/dgt-shared-web/src/lib/validation/validators/dgt-phone.validator.ts +++ /dev/null @@ -1,37 +0,0 @@ - -import { ValidatorFn, AbstractControl } from '@angular/forms'; -import { DGTInjectable } from '@digita-ai/dgt-shared-utils'; -import AwesomePhonenumber from 'awesome-phonenumber'; - -@DGTInjectable() -export class DGTPhoneValidator { - public validate(defaultCountry: string): ValidatorFn { - return (control: AbstractControl): { [key: string]: any } => { - let res: { [key: string]: any } = { phone: true }; - - if (defaultCountry && control && control.value) { - const validator: AwesomePhonenumber = new AwesomePhonenumber(control.value, defaultCountry); - - if (validator.isValid()) { - res = null; - } - } else if (defaultCountry && control && !control.value) { - res = null; - } - - return res; - }; - } - - public parse(defaultCountry: string, phoneNumber: string) { - let res = ''; - - if (defaultCountry && phoneNumber) { - const validator: AwesomePhonenumber = new AwesomePhonenumber(phoneNumber, defaultCountry); - - res = validator.getNumber(); - } - - return res; - } -} diff --git a/projects/dgt-shared-web/src/lib/values/services/dgt-value-remote.service.ts b/projects/dgt-shared-web/src/lib/values/services/dgt-value-remote.service.ts deleted file mode 100644 index 941c9577..00000000 --- a/projects/dgt-shared-web/src/lib/values/services/dgt-value-remote.service.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { DGTDataValue, DGTDataValueService, DGTHolder, DGTLDFilterService, DGTConfigurationBaseWeb, DGTDataValueTransformerService } from '@digita-ai/dgt-shared-data'; -import { DGTConfigurationService, DGTErrorArgument, DGTHttpService, DGTInjectable, DGTLoggerService, DGTParameterCheckerService } from "@digita-ai/dgt-shared-utils"; -import { Observable, of } from 'rxjs'; -import { map, switchMap } from 'rxjs/operators'; -import { DGTStateStoreService } from '../../state/services/dgt-state-store.service'; -import { DGTBaseRootState } from '../../state/models/dgt-base-root-state.model'; -import { DGTBaseAppState } from '../../state/models/dgt-base-app-state.model'; -import * as _ from 'lodash'; -@DGTInjectable() -export class DGTValueRemoteService extends DGTDataValueService { - constructor( - private store: DGTStateStoreService>, - private http: DGTHttpService, - logger: DGTLoggerService, - private config: DGTConfigurationService, - private transformer: DGTDataValueTransformerService, - paramChecker: DGTParameterCheckerService, - filters: DGTLDFilterService - ) { - super(logger, paramChecker, filters); - } - - get(uri: string): Observable { - this.logger.debug(DGTValueRemoteService.name, 'Starting to get', { uri }); - - if (!uri) { - throw new DGTErrorArgument('Argument uri should be set.', uri); - } - - return of({ uri }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}value/${data.uri}` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - switchMap(response => this.transformer.toDomain([response.data])), - map(values => _.head(values)), - ); - } - query(filter: Partial): Observable { - throw new Error('Method not implemented.'); - } - save(resource: DGTDataValue): Observable { - throw new Error('Method not implemented.'); - } - delete(resource: DGTDataValue): Observable { - throw new Error('Method not implemented.'); - } - getForHolder(holder: DGTHolder): Observable { - this.logger.debug(DGTValueRemoteService.name, 'Starting to get', { holder }); - - if (!holder) { - throw new DGTErrorArgument('Argument holder should be set.', holder); - } - - return of({ holder }) - .pipe( - map(data => ({ ...data, uri: `${this.config.get(c => c.server.uri)}holder/${data.holder.uri}/resources` })), - switchMap(data => this.store.select(state => state.app.accessToken).pipe(map(accessToken => ({ ...data, accessToken })))), - switchMap(data => this.http.get(data.uri, { Authorization: `Bearer ${data.accessToken}` })), - switchMap(response => this.transformer.toDomain(response.data)), - ); - } -} \ No newline at end of file diff --git a/projects/dgt-shared-web/src/public-api.ts b/projects/dgt-shared-web/src/public-api.ts deleted file mode 100644 index 3da8941b..00000000 --- a/projects/dgt-shared-web/src/public-api.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Public API Surface of dgt-shared-web - */ -export { DGTPageContentGroupHeader } from './lib/interface/components/dgt-page-content-group-header/dgt-page-content-group-header.component'; -export { DGTPageContentHeaderComponent } from './lib/interface/components/dgt-page-content-header/dgt-page-content-header.component'; -export { DGTPageContentHeaderTitleComponent } from './lib/interface/components/dgt-page-content-header-title/dgt-page-content-header-title.component'; -export { DGTPageContentHeaderSubtitleComponent } from './lib/interface/components/dgt-page-content-header-subtitle/dgt-page-content-header-subtitle.component'; -export { DGTSharedWebModule } from './lib/dgt-shared-web.module'; -export { DGTAbstractAction } from './lib/state/models/dgt-abstract-action.model'; -export { DGTAction } from './lib/state/models/dgt-action.model'; -export { DGTAppRoot } from './lib/state/models/dgt-app-root.model'; -export { DGTBaseAppState } from './lib/state/models/dgt-base-app-state.model'; -export { DGTBaseRootState } from './lib/state/models/dgt-base-root-state.model'; -export { DGTButtonComponent } from './lib/interface/components/dgt-button/dgt-button.component'; -export { DGTButtonConfirmComponent } from './lib/interface/components/dgt-button-confirm/dgt-button-confirm.component'; -export { DGTCharmComponent } from './lib/interface/components/dgt-charm/dgt-charm.component'; -export { DGTCompareValidator } from './lib/validation/validators/dgt-compare.validator'; -export { DGTFeature } from './lib/state/models/dgt-feature.model'; -export { DGTFeatureDefinition } from './lib/state/models/dgt-feature-definition.model'; -export { DGTNotification } from './lib/interface/models/dgt-notification.model'; -export { DGTNotificationType } from './lib/interface/models/dgt-notification-type.model'; -export { DGTPhoneValidator } from './lib/validation/validators/dgt-phone.validator'; -export { DGTStateStoreNGRXService } from './lib/state/services/dgt-state-store-ngrx.service'; -export { DGTReducer } from './lib/state/models/dgt-reducer.model'; -export { DGTReducerMethod } from './lib/state/models/dgt-reducer-method.model'; -export { reduceFactory } from './lib/state/models/dgt-reducer-reduce.model'; -export { DGTRobotVerificationResponse } from './lib/validation/models/dgt-robot-verification-response.model'; -export { DGTSmartElement } from './lib/interface/models/dgt-smart-element.model'; -export { DGTSmartForm } from './lib/interface/models/dgt-smart-form.model'; -export { DGTStateStoreService } from './lib/state/services/dgt-state-store.service'; -export { DGTTitleService } from './lib/interface/services/dgt-title.service'; -export { DGTI8NLocale } from './lib/i8n/models/dgt-i8n-locale.model'; -export { DGTI8NService } from './lib/i8n/services/dgt-i8n.service'; -export * from './lib/state/models/dgt-actions.model'; -export { DGTFormDateComponent } from './lib/form/components/dgt-form-date/dgt-form-date.component'; -export { DGTFormBeforeValidator } from './lib/form/validators/dgt-form-before.validator'; -export { DGTFormAfterValidator } from './lib/form/validators/dgt-form-after.validator'; -export { DGTFormFileComponent } from './lib/form/components/dgt-form-file/dgt-form-file.component'; -export { DGTFormValidationComponent } from './lib/form/components/dgt-form-validation/dgt-form-validation.component'; -export { DGTFormControlComponent } from './lib/form/components/dgt-form-control/dgt-form-control.component'; -export { DGTFormElementComponent } from './lib/form/components/dgt-form-element/dgt-form-element.component'; -export { DGTFormComponent } from './lib/form/components/dgt-form/dgt-form.component'; -export { DGTFormLabelComponent } from './lib/form/components/dgt-form-label/dgt-form-label.component'; -export { DGTSectionComponent } from './lib/interface/components/dgt-section/dgt-section.component'; -export { DGTSectionActionComponent } from './lib/interface/components/dgt-section-action/dgt-section-action.component'; -export { DGTSectionAvatarComponent } from './lib/interface/components/dgt-section-avatar/dgt-section-avatar.component'; -export { DGTSectionImageComponent } from './lib/interface/components/dgt-section-image/dgt-section-image.component'; -export { DGTSectionTitleComponent } from './lib/interface/components/dgt-section-title/dgt-section-title.component'; -export { DGTSectionSubtitleComponent } from './lib/interface/components/dgt-section-subtitle/dgt-section-subtitle.component'; -export { DGTSectionContentComponent } from './lib/interface/components/dgt-section-content/dgt-section-content.component'; -export { DGTPageComponent } from './lib/interface/components/dgt-page/dgt-page.component'; -export { DGTPageContentComponent } from './lib/interface/components/dgt-page-content/dgt-page-content.component'; -export { DGTPageSidenavComponent } from './lib/interface/components/dgt-page-sidenav/dgt-page-sidenav.component'; -export { DGTPageHeaderComponent } from './lib/interface/components/dgt-page-header/dgt-page-header.component'; -export { DGTPageHeaderLogoComponent } from './lib/interface/components/dgt-page-header-logo/dgt-page-header-logo.component'; -export { DGTPageHeaderControlsComponent } from './lib/interface/components/dgt-page-header-controls/dgt-page-header-controls.component'; -export { DGTPageHeaderTitleComponent } from './lib/interface/components/dgt-page-header-title/dgt-page-header-title.component'; -export { DGTPageSubHeaderComponent } from './lib/interface/components/dgt-page-sub-header/dgt-page-sub-header.component'; -export { DGTPagePaneComponent } from './lib/interface/components/dgt-page-pane/dgt-page-pane.component'; -export { DGTPageRailComponent } from './lib/interface/components/dgt-page-rail/dgt-page-rail.component'; -export { DGTPageRailItemComponent } from './lib/interface/components/dgt-page-rail-item/dgt-page-rail-item.component'; -export { DGTPageHeaderProfileComponent } from './lib/interface/components/dgt-page-header-profile/dgt-page-header-profile.component'; -export { DGTSectionHelpComponent } from './lib/interface/components/dgt-section-help/dgt-section-help.component'; -export { DGTSectionSummaryComponent } from './lib/interface/components/dgt-section-summary/dgt-section-summary.component'; -export { DGTSectionResetComponent } from './lib/interface/components/dgt-section-reset/dgt-section-reset.component'; -export { DGTDialogComponent } from './lib/interface/components/dgt-dialog/dgt-dialog.component'; -export { DGTDialogActionComponent } from './lib/interface/components/dgt-dialog-action/dgt-dialog-action.component'; -export { DGTDialogContentComponent } from './lib/interface/components/dgt-dialog-content/dgt-dialog-content.component'; -export { DGTLoadingPageComponent } from './lib/interface/components/dgt-loading-page/dgt-loading-page.component'; -export { DGTBrowserIsSupportedGuard } from './lib/interface/guards/dgt-browser-is-supported.guard'; -export { DGTNotificationsComponent } from './lib/interface/components/dgt-notifications/dgt-notifications.component'; -export { DGTChipComponent } from './lib/interface/components/dgt-chip/dgt-chip.component'; -export { DGTLinkComponent } from './lib/interface/components/dgt-link/dgt-link.component'; -export { DGTSectionHelpTitleComponent } from './lib/interface/components/dgt-section-help-title/dgt-section-help-title.component'; -export { DGTNotificationComponent } from './lib/interface/components/dgt-notification/dgt-notification.component'; -export { DGTSectionContainer } from './lib/interface/models/dgt-section-container.model'; -export { DGTSectionState } from './lib/interface/models/dgt-section-style.model'; -export { DGTColor } from './lib/interface/models/dgt-color.model'; -export { DGTDataInterfaceFactoryService } from './lib/data/services/dgt-data-interface-factory.service'; -export { DGTDataInterfaceResolverService } from './lib/data/services/dgt-data-interface-resolver.service'; -export { DGTDataFieldComponent } from './lib/data/components/dgt-data-field/dgt-data-field.component'; -export { DGTDataInterfaceDescentComponent } from './lib/data/components/dgt-data-interface-descent/dgt-data-interface-descent.component'; -export { DGTDataInterfaceEmailComponent } from './lib/data/components/dgt-data-interface-email/dgt-data-interface-email.component'; -export { DGTDataInterfaceEmailValueComponent } from './lib/data/components/dgt-data-interface-email-value/dgt-data-interface-email-value.component'; -export { DGTDataInterfacePhoneComponent } from './lib/data/components/dgt-data-interface-phone/dgt-data-interface-phone.component'; -export { DGTDataInterfacePhoneValueComponent } from './lib/data/components/dgt-data-interface-phone-value/dgt-data-interface-phone-value.component'; -export { DGTDataInterfaceStandardComponent } from './lib/data/components/dgt-data-interface-standard/dgt-data-interface-standard.component'; -export { DGTDataInterfaceSurveysComponent } from './lib/data/components/dgt-data-interface-surveys/dgt-data-interface-surveys.component'; -export { DGTDataValueComponent } from './lib/data/components/dgt-data-value/dgt-data-value.component'; -export { DGTDataCategoryComponent } from './lib/data/components/dgt-data-category/dgt-data-category.component'; -export { DGTDataGroupComponent } from './lib/data/components/dgt-data-group/dgt-data-group.component'; -export { DGTStateEffectsBaseWebService } from './lib/state/services/dgt-state-effects-base-web.service'; -export * from './lib/profile/models/dgt-profile-actions.model'; -export * from './lib/events/models/dgt-events-actions.model'; -export { DGTDateToLabelService } from './lib/date/services/dgt-date-to-label.service'; -export { DGTSourceRemoteService } from './lib/source/services/dgt-source-remote.service'; -export { DGTPurposeRemoteService } from './lib/purposes/services/dgt-purpose-remote.service'; -export { DGTCategoryRemoteService } from './lib/categories/services/dgt-category-remote.service'; -export { DGTConnectionRemoteService } from './lib/connection/services/dgt-connection-remote.service'; -export { DGTExchangeRemoteService } from './lib/exchanges/services/dgt-exchange-remote.service'; -export { DGTHolderRemoteService } from './lib/holders/services/dgt-holder-remote.service'; -export { DGTValueRemoteService } from './lib/values/services/dgt-value-remote.service'; -export { DGTMenuComponent } from './lib/interface/components/dgt-menu/dgt-menu.component'; -export { DGTExchangeStateService } from './lib/exchanges/services/dgt-exchange-state.service'; -export { DGTConnectionStateService } from './lib/connection/services/dgt-connection-state.service'; -export { DGTSourceStateService } from './lib/source/services/dgt-source-state.service'; -export { DGTInviteRemoteService } from './lib/invites/services/dgt-invite-remote.service'; diff --git a/projects/dgt-shared-web/src/test.configuration.ts b/projects/dgt-shared-web/src/test.configuration.ts deleted file mode 100644 index 260463cf..00000000 --- a/projects/dgt-shared-web/src/test.configuration.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { RouterTestingModule } from '@angular/router/testing'; -import { DGTTestConfiguration } from '@digita-ai/dgt-shared-test'; -import { declarations, imports, providers } from './lib/dgt-shared-web.module'; - -export const configuration: DGTTestConfiguration = { - module: { - declarations, - imports: [ - RouterTestingModule, - ...imports, - ], - providers: [ - ...providers - ], - } -}; diff --git a/projects/dgt-shared-web/src/test.ts b/projects/dgt-shared-web/src/test.ts deleted file mode 100644 index e11ff1c9..00000000 --- a/projects/dgt-shared-web/src/test.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: any; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/projects/dgt-shared-web/theme/components/_alert.scss b/projects/dgt-shared-web/theme/components/_alert.scss deleted file mode 100644 index 5e88e153..00000000 --- a/projects/dgt-shared-web/theme/components/_alert.scss +++ /dev/null @@ -1,9 +0,0 @@ -// clr-alert .alert-app-level.alert-info { -// background-color: $color-primary-dark; -// .alert-actions a { -// height: $component-component-normal; -// line-height: $component-component-normal; -// border-width: $component-component-border; -// border-radius: 0px; -// } -// } \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/components/_button.scss b/projects/dgt-shared-web/theme/components/_button.scss deleted file mode 100644 index 2efcec4d..00000000 --- a/projects/dgt-shared-web/theme/components/_button.scss +++ /dev/null @@ -1,99 +0,0 @@ -.mat-button { - height: $component-component-normal; - line-height: $component-component-normal; - border-width: $component-component-border; - border-radius: 0px; - box-shadow: initial; - color: $color-foreground-normal; -} - -a.mat-raised-button, -button.mat-raised-button, -button.mat-raised-button:not([class*=mat-elevation-z]) { - height: $component-component-normal; - line-height: $component-component-normal; - border-width: $component-component-border; - border-radius: 0px; - box-shadow: initial; - background-color: $color-background-normal; - border: 1px solid $color-background-normal; - color: $color-foreground-normal; - &:disabled, - &.mat-primary:disabled, - &.mat-accent:disabled, - &.mat-warn:disabled, - &.mat-accent[disabled] { - background-color: $color-foreground-inverse; - border: 1px solid $color-background-normal; - color: $color-foreground-normal; - pointer-events: none; - cursor: default; - } - &.mat-primary { - box-shadow: initial; - border-radius: 0px; - border: 1px solid $color-primary-normal; - background-color: $color-primary-normal; - color: $color-foreground-inverse; - } - &.mat-accent { - box-shadow: initial; - border-radius: 0px; - background-color: $color-accent-dark; - border: 1px solid $color-accent-dark; - color: $color-foreground-inverse; - } - &.mat-warn { - border: 1px solid $color-danger-normal; - background-color: $color-danger-normal; - color: $color-foreground-inverse; - } - &.btn-facebook { - background-color: $color-facebook-normal; - border-color: $color-facebook-normal; - &:hover { - background-color: $color-facebook-dark; - border-color: $color-facebook-dark; - } - &:active { - background-color: $color-facebook-normal; - border-color: $color-facebook-dark; - } - &.btn-link { - color: $color-primary-normal; - } - } -} - -a.mat-primary.inversed, -button.mat-primary.inversed { - color: $color-foreground-inverse; -} - -// clr-button-group.btn-primary button, -// .btn-group.btn-primary .btn { -// height: $component-component-normal; -// border-width: $component-component-border; -// background-color: $color-primary-normal; -// border-color: $color-primary-normal; -// color: $color-foreground-inverse; -// border-style: solid; -// border-radius: 0px; -// cursor: pointer; -// &:hover, &.active { -// background-color: $color-primary-light; -// border-color: $color-primary-light; -// } -// } -// .card-footer .btn-group button.btn:not(:last-child) { -// margin-right: 1px; -// } - -a.block, -button.block, -mat-form-field.block, -mat-form-field.block input -dgt-button.block { - width: 100%; - display: block; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/components/_form.scss b/projects/dgt-shared-web/theme/components/_form.scss deleted file mode 100644 index 76b7e1cf..00000000 --- a/projects/dgt-shared-web/theme/components/_form.scss +++ /dev/null @@ -1,169 +0,0 @@ -*, -form { - .form-block { - margin-top: 0px; - margin-bottom: $measure-gutter-xxlarge; - } - - .form-group { - margin: $measure-gutter-large 0; - - &:first-child { - margin-top: 0px; - } - - div[class^="col-"] { - padding: 0px; - } - - // input { - // border-color: $color-foreground-normal; - // color: $color-foreground-normal; - // height: $component-component-normal; - // padding: $measure-gutter-normal; - // margin: $measure-gutter-normal; - // margin: 0; - // &.ng-invalid:not(.ng-untouched) { - // margin-bottom: 0px; - // border-bottom-color: $color-danger-normal; - // } - // } - &.row [class*=col-]>label { - color: $color-foreground-normal; - height: $component-component-normal; - padding: $measure-gutter-normal; - margin: $measure-gutter-normal; - margin-left: 0px; - padding-left: 0px; - } - } -} - -mat-form-field { - span i.fas { - color: $color-foreground-normal; - padding-right: $measure-gutter-large; - } - - &.inversed { - input { - color: $color-foreground-inverse; - } - - .mat-form-field-underline, - .mat-form-field-ripple { - background-color: $color-foreground-inverse; - } - - label.mat-form-field-label { - color: $color-foreground-inverse; - } - } - - &.no-underline { - .mat-form-field-underline { - height: 0px; - background-color: transparent; - - .mat-form-field-ripple { - display: none; - } - } - - >.mat-form-field-wrapper { - padding-bottom: 0px; - } - } -} - -.mat-form-field-outline-start, .mat-form-field-outline-end { - border-radius: 0 !important; -} - -.mat-form-field-infix { - width: auto !important; -} - -mat-form-field.mat-form-field-appearance-outline .mat-form-field-wrapper { - margin: 0px !important; - padding: 0px !important; -} - -.mat-form-field-appearance-outline .mat-form-field-flex, .mat-form-field-appearance-standard .mat-form-field-flex { - padding-top: 0px !important; -} - -// mat-slide-toggle { -// /deep/ .mat-slide-toggle-content { -// font-size: 1em; -// } -// } - -mat-checkbox { - // /deep/ .mat-checkbox-checkmark-path { - // stroke: $color-foreground-inverse !important; - // } - - // /deep/ .mat-checkbox-checkmark { - // width: 80%; - // left: 10%; - // top: 10%; - // } - - &.inversed { - - // .mat-checkbox-inner-container .mat-checkbox-frame { - // border-color: $color-foreground-inverse; - // } - .mat-checkbox-label { - color: $color-foreground-inverse; - } - - // .mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-background { - // background-color: $color-foreground-inverse; - // } - // /deep/ .mat-checkbox-background { - // background-color: transparent; - // } - - .mat-checkbox-frame { - border-color: $color-foreground-inverse; - } - } -} - -mat-radio-button { - &.inversed { - color: $color-foreground-inverse; - - .mat-radio-container .mat-radio-outer-circle { - border-color: $color-foreground-inverse; - } - - &.mat-radio-checked { - .mat-radio-container .mat-radio-outer-circle { - border-color: $color-foreground-inverse; - } - - .mat-radio-container .mat-radio-inner-circle { - background-color: $color-foreground-inverse; - } - } - } -} - -input[type="search"] { - -webkit-appearance: none; -} - -// mat-checkbox { -// color: rgb(0,178,0); -// /deep/ .mat-checkbox-background { -// background-color: rgb(0,178,0); -// } -// /deep/ &.mat-checkbox-focused{ -// .mat-ink-ripple{ -// background-color: rgba(0, 178, 0, .26); -// } -// } -// } \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/components/_loading.scss b/projects/dgt-shared-web/theme/components/_loading.scss deleted file mode 100644 index 07d0f477..00000000 --- a/projects/dgt-shared-web/theme/components/_loading.scss +++ /dev/null @@ -1,22 +0,0 @@ -app-root { - width: 100%; -} - -.loading-dialog { - margin-left: auto; - margin-right: auto; - margin-top: 200px; - width: 100px; - text-align: center; - color: $color-primary-normal; -} - -.loading-dialog .loading-logo { - margin-bottom: $measure-gutter-large; - width: 100px; -} - -.loading-dialog .loading-text { - font-family: 'Fira Sans', sans-serif !important; - color: $color-foreground-inverse; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/components/_other.scss b/projects/dgt-shared-web/theme/components/_other.scss deleted file mode 100644 index 22dfe4e1..00000000 --- a/projects/dgt-shared-web/theme/components/_other.scss +++ /dev/null @@ -1,110 +0,0 @@ -html, -body { - height: 100%; - width: 100%; - display: flex; -} - -body { - background-color: $color-background-normal; - margin: 0px; -} - -.mat-drawer-container { - background-color: transparent !important; -} - -.mat-tab-body .mat-tab-body-content { - padding: $measure-gutter-large; -} - -dgt-page-sidenav { - color: $color-foreground-inverse; - .split-sidenav-primary-action { - padding: $measure-gutter-large; - background-color: $color-primary-light; - border-color: $color-primary-light; - height: auto; - margin-bottom: $measure-gutter-xxlarge; - .split-sidenav-primary-action-label { - white-space: normal; - word-wrap: break-word; - line-height: 1em; - font-size: 0.9em; - } - } - .mat-nav-list { - a.mat-list-item { - color: $color-foreground-inverse; - font-size: 1em; - height: $component-component-normal; - .mat-list-item-content { - padding-left: $measure-gutter-large; - padding-right: $measure-gutter-large; - } - i { - margin-right: $measure-gutter-normal; - } - } - } -} - -mat-list.mat-list { - padding-top: $measure-gutter-large; - .mat-subheader { - color: $color-foreground-light; - font-size: 1em; - padding-left: 0px; - padding-right: 0px; - padding-top: $measure-gutter-large; - padding-bottom: $measure-gutter-large; - } - .mat-list-item { - color: $color-foreground-normal; - font-size: 1em; - padding-left: 0px; - padding-right: 0px; - padding-top: $measure-gutter-large; - padding-bottom: $measure-gutter-large; - height: auto; - .mat-list-item-content { - padding: 0px; - .mat-list-text { - h4.mat-line { - font-weight: bold; - } - p.mat-line { - font-size: 1em; - } - p.mat-line:nth-child(n+2) { - font-size: 1em !important; - } - } - } - } -} - -mat-expansion-panel { - .mat-expansion-panel-header { - font-size: 1em; - padding-left: $measure-gutter-large; - padding-right: $measure-gutter-large; - } - .mat-expansion-panel-content { - font-size: 1em; - .mat-expansion-panel-body { - padding-left: $measure-gutter-large; - padding-right: $measure-gutter-large; - } - } -} - -.text-container { - img { - max-width: 100%; - } -} - -.mat-drawer-backdrop.mat-drawer-shown { - background-color: rgba(0, 0, 0, 0); -} \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/components/_text.scss b/projects/dgt-shared-web/theme/components/_text.scss deleted file mode 100644 index b95c7d64..00000000 --- a/projects/dgt-shared-web/theme/components/_text.scss +++ /dev/null @@ -1,40 +0,0 @@ -body, -h1, -h2, -h3, -.sidenav .nav-group label { - font-family: 'Fira Sans', sans-serif !important; - color: $color-foreground-normal; -} - -html, -body { - font-size: 14px; -} - -h1, -h2, -h3, -h4 { - font-size: $measure-font-large; - margin: 0px; -} - -a { - cursor: pointer !important; - color: $color-primary-dark; - &:link, - &:visited { - color: $color-primary-dark; - } -} - -em { - font-weight: bold; - font-style: normal; -} - -p { - margin-top: $measure-gutter-xlarge; - margin-bottom: $measure-gutter-xlarge; -} \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/styles.scss b/projects/dgt-shared-web/theme/styles.scss deleted file mode 100644 index 4b1aa8e9..00000000 --- a/projects/dgt-shared-web/theme/styles.scss +++ /dev/null @@ -1,35 +0,0 @@ -////////////////////////////////////// -// Import utilities -////////////////////////////////////// -@import 'utilities/colors'; -@import 'utilities/measures'; -////////////////////////////////////// -// Import reusable styles -////////////////////////////////////// -// @import 'components/text'; -// @import 'components/alert'; -// @import 'components/button'; -// @import 'components/form'; -// @import 'components/loading'; -// @import 'components/other'; - -// @import '~@angular/material/theming'; -// // Plus imports for other components in your app. -// $custom-typography: mat-typography-config( $font-family: 'Fira Sans, sans-serif', $headline: mat-typography-level(32px, 48px, 700), $body-1: mat-typography-level(16px, 24px, 500)); -// // Include the dgt styles for Angular Material. We include this here so that you only -// // have to load a single css file for Angular Material in your app. -// // Be sure that you only ever include this mixin once! -// @include mat-core($custom-typography); -// // Define the palettes for your theme using the Material Design palettes available in palette.scss -// // (imported above). For each palette, you can optionally specify a default, lighter, and darker -// // hue. Available color palettes: https://www.google.com/design/spec/style/color.html -// $candy-app-primary: mat-palette($color-primary-palette, 100, 50, 200); -// $candy-app-accent: mat-palette($color-accent-palette, 100, 50, 200); -// // The warn palette is optional (defaults to red). -// $candy-app-warn: mat-palette($mat-red); -// // Create the theme object (a Sass map containing all of the palettes). -// $candy-app-theme: mat-light-theme($candy-app-primary, $candy-app-accent, $candy-app-warn); -// // Include theme styles for core and each component used in your app. -// // Alternatively, you can import and @include the theme mixins for each component -// // that you are using. -// @include angular-material-theme($candy-app-theme); diff --git a/projects/dgt-shared-web/theme/utilities/_colors.scss b/projects/dgt-shared-web/theme/utilities/_colors.scss deleted file mode 100644 index a8a087af..00000000 --- a/projects/dgt-shared-web/theme/utilities/_colors.scss +++ /dev/null @@ -1,140 +0,0 @@ -// $color-background-normal: #eee; - -// $color-foreground-normal: #595959; -// $color-foreground-light: #898989; -// $color-foreground-inverse: #fff; - -// $color-grey-light: #fff; -// $color-grey-normal: #eee; -// $color-grey-dark: #ddd; - -$color-background-normal: #eee; - -$color-foreground-normal: #001028; -$color-foreground-light: #001028; -$color-foreground-inverse: #fff; - -$color-grey-light: #fff; -$color-grey-normal: #eee; -$color-grey-dark: #ddd; - -$color-grey-palette: ( - 50: $color-grey-light, - 100: $color-grey-normal, - 200: $color-grey-dark, - 300: #7faedd, - 400: #7faedd, - 500: #7faedd, - 600: #7faedd, - 700: #7faedd, - 800: #7faedd, - 900: #7faedd, - A100: #7faedd, - A200: #7faedd, - A400: #7faedd, - A700: #7faedd, - contrast: ( - 50: white, - 100: white, - 200: white, - 300: white, - 400: white, - 500: white, - 600: white, - 700: white, - 800: white, - 900: white, - A100: white, - A200: white, - A400: white, - A700: white, - ) -); - -// $color-primary-light: #3AA5E3; -// $color-primary-normal: #3494CC; -// $color-primary-dark: #2E81B2; - -$color-primary-light: #518DF5; -$color-primary-normal: #3E6BB5; -$color-primary-dark: #2B4C7F; - -$color-primary-palette: ( - 50: $color-primary-light, - 100: $color-primary-normal, - 200: $color-primary-dark, - 300: #7faedd, - 400: #7faedd, - 500: #7faedd, - 600: #7faedd, - 700: #7faedd, - 800: #7faedd, - 900: #7faedd, - A100: #7faedd, - A200: #7faedd, - A400: #7faedd, - A700: #7faedd, - contrast: ( - 50: white, - 100: white, - 200: white, - 300: white, - 400: white, - 500: white, - 600: white, - 700: white, - 800: white, - 900: white, - A100: white, - A200: white, - A400: white, - A700: white, - ) -); - -// $color-accent-light: #F9C678; -// $color-accent-normal: #FFAD2F; -// $color-accent-dark: #F0A32C; - -$color-accent-light: #8FBE00; -$color-accent-normal: #8FBE00; -$color-accent-dark: #8FBE00; - -$color-accent-palette: ( - 50: $color-accent-light, - 100: $color-accent-normal, - 200: $color-accent-dark, - 300: #7faedd, - 400: #7faedd, - 500: #7faedd, - 600: #7faedd, - 700: #7faedd, - 800: #7faedd, - 900: #7faedd, - A100: #7faedd, - A200: #7faedd, - A400: #7faedd, - A700: #7faedd, - contrast: ( - 50: white, - 100: white, - 200: white, - 300: white, - 400: white, - 500: white, - 600: white, - 700: white, - 800: white, - 900: white, - A100: white, - A200: white, - A400: white, - A700: white, - ) -); - -$color-facebook-normal: #4A67AD; -$color-facebook-dark: #425C9B; - -$color-success-normal: #62a420; -$color-danger-normal: #e62700; \ No newline at end of file diff --git a/projects/dgt-shared-web/theme/utilities/_measures.scss b/projects/dgt-shared-web/theme/utilities/_measures.scss deleted file mode 100644 index 12dc893e..00000000 --- a/projects/dgt-shared-web/theme/utilities/_measures.scss +++ /dev/null @@ -1,16 +0,0 @@ -$measure-gutter-top: 60px; -$measure-gutter-normal: 5px; -$measure-gutter-large: 10px; -$measure-gutter-xlarge: 20px; -$measure-gutter-xxlarge: 40px; -$measure-gutter-xxxlarge: 80px; - - -$component-component-border: 1px; -$component-component-normal: 36px; - -$site-max-width: 800px; - -$measure-font-normal: 1rem; -$measure-font-small: 0.90rem; -$measure-font-large: 1.10rem; \ No newline at end of file diff --git a/projects/dgt-shared-web/tsconfig.lib.json b/projects/dgt-shared-web/tsconfig.lib.json deleted file mode 100644 index 5a84a193..00000000 --- a/projects/dgt-shared-web/tsconfig.lib.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/lib", - "declaration": true, - "sourceMap": true, - "inlineSources": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "skipTemplateCodegen": true, - "strictMetadataEmit": true, - "fullTemplateTypeCheck": true, - "strictInjectionParameters": true, - "enableResourceInlining": true, - "disableTypeScriptVersionCheck": true, - }, - "exclude": [ - "src/test.ts", - "**/*.spec.ts", - "node_modules/**/*" - ] -} diff --git a/projects/dgt-shared-web/tsconfig.spec.json b/projects/dgt-shared-web/tsconfig.spec.json deleted file mode 100644 index f1e8c20c..00000000 --- a/projects/dgt-shared-web/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "types": [ - "node" - ] - }, - "files": [ - "src/test.ts" - ], - "include": [ - "**/*.spec.ts", - "**/*.d.ts" - ] -} diff --git a/projects/dgt-shared-web/tslint.json b/projects/dgt-shared-web/tslint.json deleted file mode 100644 index 124133f8..00000000 --- a/projects/dgt-shared-web/tslint.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tslint.json", - "rules": { - "directive-selector": [ - true, - "attribute", - "lib", - "camelCase" - ], - "component-selector": [ - true, - "element", - "lib", - "kebab-case" - ] - } -} diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index a34e1133..00000000 --- a/scripts/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -ng build dgt-shared-test -ng build dgt-shared-utils -ng build dgt-shared-data -ng build dgt-shared-web -ng build dgt-shared-connectors \ No newline at end of file diff --git a/scripts/cloneAll.sh b/scripts/cloneAll.sh deleted file mode 100755 index e2f7c2ec..00000000 --- a/scripts/cloneAll.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -LOCAL_PATH="/Users/sander/digita" -declare -a arr=("git@github.com:digita-ai/dgt-shared.git" "git@github.com:digita-ai/dgt-platform-api.git" "git@github.com:digita-ai/dgt-browser.git" "git@github.com:digita-ai/dgt-platform-web.git" "git@github.com:digita-ai/dgt-platform-public.git" "git@github.com:digita-ai/dgt-docs.git") -USERNAME="John Doe" -EMAIL="john@digita.ai" - -# git config --global user.name $USERNAME -# git config --global user.email $EMAIL - - -if [[ ! -e $LOCAL_PATH ]]; then - mkdir -p $LOCAL_PATH -elif [[ ! -d $LOCAL_PATH ]]; then - echo "$LOCAL_PATH already exists but is not a directory" 1>&2 -fi -cd $LOCAL_PATH - -for i in "${arr[@]}" -do - echo git clone $i - git clone $i -done - diff --git a/scripts/link.sh b/scripts/link.sh deleted file mode 100755 index de7582e5..00000000 --- a/scripts/link.sh +++ /dev/null @@ -1,13 +0,0 @@ -#bin/bash -cd ../projects/dgt-shared-test; -yarn link; -cd ../dgt-shared-utils -yarn link; -cd ../dgt-shared-data; -yarn link; -cd ../dgt-shared-connectors; -yarn link; -cd ../dgt-shared-web; -yarn link; -cd ../../scripts; -# ./build.sh; diff --git a/scripts/linkAndBuild.sh b/scripts/linkAndBuild.sh deleted file mode 100755 index 70319ea1..00000000 --- a/scripts/linkAndBuild.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash - -set -euxo pipefail; - -ng build dgt-shared-test && - -cd dist/dgt-shared-test && -yarn link && -cd ../.. && - -cd projects/dgt-shared-utils && -yarn link @digita-ai/dgt-shared-test && -cd ../.. && - -ng build dgt-shared-utils && -cd dist/dgt-shared-utils && -yarn link && -cd ../.. && - -cd projects/dgt-shared-data && -yarn link @digita-ai/dgt-shared-test && -yarn link @digita-ai/dgt-shared-utils && -cd ../.. && - -ng build dgt-shared-data && -cd dist/dgt-shared-data && -yarn link && -cd ../.. && - -cd projects/dgt-shared-web && -yarn link @digita-ai/dgt-shared-test && -yarn link @digita-ai/dgt-shared-utils && -yarn link @digita-ai/dgt-shared-data && -cd ../.. && - -ng build dgt-shared-web && - -cd projects/dgt-shared-connectors && -yarn link @digita-ai/dgt-shared-test && -yarn link @digita-ai/dgt-shared-utils && -yarn link @digita-ai/dgt-shared-data && -cd ../.. && - -ng build dgt-shared-connectors && - -cd dist/dgt-shared-web && -yarn link && -cd ../dgt-shared-connectors && -yarn link && -cd ../.. && - -yarn link @digita-ai/dgt-shared-utils && -yarn link @digita-ai/dgt-shared-data; - - diff --git a/scripts/publish.sh b/scripts/publish.sh deleted file mode 100755 index 28eae25f..00000000 --- a/scripts/publish.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -npm publish dist/dgt-shared-test -npm publish dist/dgt-shared-utils -npm publish dist/dgt-shared-data -npm publish dist/dgt-shared-web -npm publish dist/dgt-shared-connectors \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 60f7fb9b..00000000 --- a/tsconfig.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "compileOnSave": false, - "angularCompilerOptions": { - "disableTypeScriptVersionCheck": true, - }, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "module": "es2015", - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "allowSyntheticDefaultImports": true, - "importHelpers": true, - "skipLibCheck": true, - "esModuleInterop": true, - "target": "es2015", - "typeRoots": [ - "node_modules/@types" - ], - "types": [ - "node", - ], - "lib": [ - "es2018", - "dom" - ], - "paths": { - "@digita-ai/dgt-shared-utils": [ - "dist/dgt-shared-utils" - ], - "@digita-ai/dgt-shared-utils/*": [ - "dist/dgt-shared-utils/*" - ], - "@digita-ai/dgt-shared-web": [ - "dist/dgt-shared-web" - ], - "@digita-ai/dgt-shared-web/*": [ - "dist/dgt-shared-web/*" - ], - "@digita-ai/dgt-shared-data": [ - "dist/dgt-shared-data" - ], - "@digita-ai/dgt-shared-data/*": [ - "dist/dgt-shared-data/*" - ], - "@digita-ai/dgt-shared-venture": [ - "dist/dgt-shared-venture" - ], - "@digita-ai/dgt-shared-venture/*": [ - "dist/dgt-shared-venture/*" - ], - "@angular/*": [ - "node_modules/@angular/*" - ], - "@digita-ai/dgt-shared-connectors": [ - "dist/dgt-shared-connectors" - ], - "@digita-ai/dgt-shared-connectors/*": [ - "dist/dgt-shared-connectors/*" - ], - "@digita-ai/dgt-shared-test": [ - "dist/dgt-shared-test" - ], - "@digita-ai/dgt-shared-test/*": [ - "dist/dgt-shared-test/*" - ] - } - } -} \ No newline at end of file diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 868ecba0..00000000 --- a/tslint.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "extends": "tslint:recommended", - "rulesDirectory": [ - "codelyzer" - ], - "rules": { - "array-type": false, - "arrow-parens": false, - "deprecation": { - "severity": "warn" - }, - "import-blacklist": [ - true, - "rxjs/Rx" - ], - "interface-name": false, - "max-classes-per-file": false, - "max-line-length": [ - true, - 140 - ], - "member-access": false, - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-consecutive-blank-lines": false, - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-empty": false, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-use-before-declare": true, - "no-var-requires": false, - "object-literal-key-quotes": [ - true, - "as-needed" - ], - "object-literal-sort-keys": false, - "ordered-imports": false, - "quotemark": [ - true, - "single" - ], - "trailing-comma": false, - "no-output-on-prefix": true, - "use-input-property-decorator": true, - "use-output-property-decorator": true, - "use-host-property-decorator": true, - "no-input-rename": true, - "no-output-rename": true, - "use-life-cycle-interface": true, - "use-pipe-transform-interface": true, - "component-class-suffix": true, - "directive-class-suffix": true - } -}