From 3d6e91acdb26e6e206d22fe3d51751bdc3fb737f Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 12:32:21 +0100 Subject: [PATCH 01/30] RDM-3023 Move palette to ui toolkit lib. --- server.ts | 4 +- src/app/app.config.guard.ts | 9 +- src/app/app.config.ts | 39 +- src/app/app.module.ts | 6 + src/app/cases/case.resolver.ts | 2 +- src/app/cases/cases.module.ts | 12 +- .../creator/case-creator-submit.component.ts | 5 +- .../create-case-event-trigger.resolver.ts | 6 +- .../filters/create-case-filters.component.ts | 2 +- .../case-event-trigger.component.ts | 4 +- .../event-trigger/event-trigger.resolver.ts | 3 +- .../printer/case-print-documents.resolver.ts | 2 +- src/app/cases/viewer/case-viewer.component.ts | 7 +- src/app/core/activity/activity.service.ts | 4 +- src/app/core/addresses/address.model.ts | 9 - src/app/core/addresses/addresses.service.ts | 20 - src/app/core/auth/auth.service.spec.ts | 62 - src/app/core/auth/auth.service.ts | 27 - src/app/core/auth/oauth2.service.ts | 3 +- .../case-editor/case-edit-wizard.guard.ts | 5 +- .../case-editor/wizard-factory.service.ts | 2 +- src/app/core/cases/case-history.service.ts | 3 +- src/app/core/cases/case-tab.model.ts | 3 +- src/app/core/cases/case-view.model.ts | 2 +- src/app/core/cases/cases.service.ts | 10 +- src/app/core/core.module.ts | 10 +- .../definitions/definitions.service.spec.ts | 2 +- .../core/definitions/definitions.service.ts | 2 +- src/app/core/draft/draft.service.ts | 5 +- src/app/core/form/form-error.service.spec.ts | 188 - src/app/core/form/form-error.service.ts | 47 - .../core/form/form-validators.service.spec.ts | 27 - src/app/core/form/form-validators.service.ts | 24 - src/app/core/form/form-value.service.spec.ts | 72 - src/app/core/form/form-value.service.ts | 64 - src/app/core/http/http-error.model.spec.ts | 73 - src/app/core/http/http-error.model.ts | 36 - src/app/core/http/http-error.service.spec.ts | 173 - src/app/core/http/http-error.service.ts | 57 - src/app/core/http/http.service.spec.ts | 289 - src/app/core/http/http.service.ts | 114 - src/app/core/order/order.service.ts | 2 +- src/app/core/order/orderable.model.ts | 3 - src/app/core/pagination/pagination.service.ts | 2 +- src/app/core/profile/profile.service.ts | 2 +- src/app/core/search/field.model.ts | 2 +- src/app/core/search/search-input.model.ts | 2 +- .../core/search/search-input.test.fixture.ts | 2 +- src/app/core/search/search.service.ts | 2 +- src/app/error/error.component.ts | 2 +- src/app/fixture/shared.fixture.ts | 22 - src/app/oauth2/oauth2-redirect.component.ts | 2 +- .../case-edit-confirm.component.ts | 2 +- .../case-editor/case-edit-form.component.ts | 2 +- .../case-editor/case-edit-page.component.ts | 11 +- .../case-editor/case-edit-submit.component.ts | 12 +- .../shared/case-editor/case-edit.component.ts | 8 +- src/app/shared/case-editor/case-edit.spec.ts | 30 - .../label-substitution.service.spec.ts | 175 - .../case-editor/label-substitution.service.ts | 134 - .../case-editor/page-validation.service.ts | 5 +- src/app/shared/case-editor/wizard.model.ts | 2 +- .../case-history/case-history.component.ts | 2 +- ...conditional-show-registrar.service.spec.ts | 45 - .../conditional-show-registrar.service.ts | 23 - .../conditional-show.directive.spec.ts | 219 - .../conditional-show.directive.ts | 162 - .../conditional-show.model.spec.ts | 162 - .../conditional-show.model.ts | 48 - .../conditional-show.module.ts | 18 - .../document-dialog.component.html | 16 - .../document-dialog.component.scss | 22 - .../document-dialog.component.spec.ts | 31 - .../document-dialog.component.ts | 26 - .../documentManagement.service.spec.ts | 8 +- .../documentManagement.service.ts | 6 +- src/app/shared/domain/case-details.ts | 11 - src/app/shared/domain/case-event-data.ts | 11 - .../shared/domain/case-field.service.spec.ts | 105 - src/app/shared/domain/case-field.service.ts | 27 - .../case-view/case-event-trigger.model.ts | 32 - .../case-view/case-view-trigger.model.ts | 2 +- .../domain/definition/case-event.model.ts | 2 +- .../domain/definition/case-field.model.ts | 24 - .../domain/definition/case-state.model.ts | 2 +- .../domain/definition/case-type.model.ts | 2 +- .../definition/field-type-enum.model.ts | 21 - .../domain/definition/field-type.model.ts | 21 - .../definition/fixed-list-item.model.ts | 4 - .../domain/document/document-data.model.ts | 21 - src/app/shared/domain/draft.ts | 19 - .../shared/domain/wizard-page-field.model.ts | 7 - .../shared/domain/wizard-page.model.spec.ts | 43 - src/app/shared/domain/wizard-page.model.ts | 34 - .../shared/error/callback-errors.component.ts | 2 +- src/app/shared/event-log/event-log.module.ts | 2 +- .../event-trigger/event-trigger.component.ts | 2 +- .../shared/header/case-header.component.ts | 2 +- .../header/event-trigger-header.component.ts | 2 +- .../markdown/markdown.component.spec.ts | 74 - src/app/shared/markdown/markdown.component.ts | 11 - src/app/shared/markdown/markdown.html | 1 - src/app/shared/markdown/markdown.module.ts | 16 - .../palette/address/address-option.model.ts | 21 - .../shared/palette/address/address.module.ts | 26 - .../write-address-field.component.spec.ts | 309 - .../address/write-address-field.component.ts | 117 - .../palette/address/write-address-field.html | 37 - .../palette/address/write-address-field.scss | 8 - .../abstract-field-read.component.ts | 18 - .../abstract-field-write.component.ts | 21 - .../palette/base-field/base-field.module.ts | 23 - .../field-read-label.component.spec.ts | 87 - .../base-field/field-read-label.component.ts | 27 - .../palette/base-field/field-read-label.html | 7 - .../palette/base-field/field-read-label.scss | 30 - .../base-field/field-read.component.spec.ts | 139 - .../base-field/field-read.component.ts | 42 - .../shared/palette/base-field/field-read.html | 3 - .../base-field/field-write.component.spec.ts | 110 - .../base-field/field-write.component.ts | 65 - .../base-field/palette-context.enum.ts | 4 - .../palette/collection/collection-field.scss | 25 - .../read-collection-field.component.spec.ts | 131 - .../read-collection-field.component.ts | 11 - .../collection/read-collection-field.html | 14 - .../write-collection-field.component.spec.ts | 308 - .../write-collection-field.component.ts | 129 - .../collection/write-collection-field.html | 34 - .../shared/palette/complex/complex.module.ts | 40 - .../complex/fields-filter.pipe.spec.ts | 442 - .../palette/complex/fields-filter.pipe.ts | 101 - .../read-complex-field-raw.component.spec.ts | 411 - .../read-complex-field-raw.component.ts | 15 - .../complex/read-complex-field-raw.html | 8 - .../complex/read-complex-field-raw.scss | 12 - ...read-complex-field-table.component.spec.ts | 403 - .../read-complex-field-table.component.ts | 9 - .../complex/read-complex-field-table.html | 24 - .../complex/read-complex-field-table.scss | 45 - .../read-complex-field.component.spec.ts | 109 - .../complex/read-complex-field.component.ts | 12 - .../palette/complex/read-complex-field.html | 12 - .../write-complex-field.component.spec.ts | 587 - .../complex/write-complex-field.component.ts | 54 - .../palette/complex/write-complex-field.html | 15 - .../date/read-date-field.component.spec.ts | 78 - .../palette/date/read-date-field.component.ts | 8 - .../date/write-date-field.component.spec.ts | 72 - .../date/write-date-field.component.ts | 21 - .../shared/palette/date/write-date-field.html | 16 - .../document/document-url.pipe.spec.ts | 33 - .../palette/document/document-url.pipe.ts | 15 - .../palette/document/document.module.ts | 28 - .../read-document-field.component.spec.ts | 87 - .../document/read-document-field.component.ts | 8 - .../palette/document/read-document-field.html | 1 - .../write-document-field.component.spec.ts | 231 - .../write-document-field.component.ts | 134 - .../document/write-document-field.html | 16 - .../email/read-email-field.component.spec.ts | 67 - .../email/read-email-field.component.ts | 16 - .../email/write-email-field.component.spec.ts | 86 - .../email/write-email-field.component.ts | 16 - .../palette/email/write-email-field.html | 11 - .../palette/fixed-list/fixed-list.module.ts | 30 - .../fixed-list/fixed-list.pipe.spec.ts | 57 - .../palette/fixed-list/fixed-list.pipe.ts | 16 - .../read-fixed-list-field.component.spec.ts | 84 - .../read-fixed-list-field.component.ts | 8 - .../write-fixed-list-field.component.spec.ts | 111 - .../write-fixed-list-field.component.ts | 17 - .../fixed-list/write-fixed-list-field.html | 16 - .../label/label-field.component.spec.ts | 96 - .../palette/label/label-field.component.ts | 12 - src/app/shared/palette/label/label-field.html | 6 - .../money-gbp-input.component.spec.ts | 183 - .../money-gbp/money-gbp-input.component.ts | 126 - .../palette/money-gbp/money-gbp.module.ts | 30 - .../read-money-gbp-field.component.spec.ts | 147 - .../read-money-gbp-field.component.ts | 26 - .../write-money-gbp-field.component.spec.ts | 79 - .../write-money-gbp-field.component.ts | 16 - .../money-gbp/write-money-gbp-field.html | 17 - .../multi-select-list.module.ts | 27 - .../multi-select-list/multi-select-list.scss | 15 - ...-multi-select-list-field.component.spec.ts | 108 - .../read-multi-select-list-field.component.ts | 9 - .../read-multi-select-list-field.html | 7 - ...-multi-select-list-field.component.spec.ts | 128 - ...write-multi-select-list-field.component.ts | 47 - .../write-multi-select-list-field.html | 22 - .../read-number-field.component.spec.ts | 66 - .../number/read-number-field.component.ts | 8 - .../write-number-field.component.spec.ts | 86 - .../number/write-number-field.component.ts | 16 - .../palette/number/write-number-field.html | 11 - .../palette/order-summary/fee-value.model.ts | 5 - .../shared/palette/order-summary/fee.model.ts | 6 - .../order-summary/order-summary.model.ts | 7 - .../order-summary/order-summary.module.ts | 30 - ...read-order-summary-field.component.spec.ts | 218 - .../read-order-summary-field.component.ts | 21 - .../read-order-summary-field.html | 14 - .../read-order-summary-field.scss | 58 - .../read-order-summary-row.component.ts | 21 - .../order-summary/read-order-summary-row.html | 3 - .../order-summary/read-order-summary-row.scss | 22 - ...rite-order-summary-field.component.spec.ts | 227 - .../write-order-summary-field.component.ts | 40 - .../write-order-summary-field.html | 1 - src/app/shared/palette/palette.module.ts | 106 - .../shared/palette/palette.service.spec.ts | 205 - src/app/shared/palette/palette.service.ts | 85 - ...ent-history-viewer-field.component.spec.ts | 76 - ...-payment-history-viewer-field.component.ts | 21 - .../case-payment-history-viewer-field.html | 1 - .../case-payment-history-viewer.module.ts | 24 - .../read-phone-uk-field.component.spec.ts | 67 - .../phone-uk/read-phone-uk-field.component.ts | 8 - .../write-phone-uk-field.component.spec.ts | 86 - .../write-phone-uk-field.component.ts | 17 - .../phone-uk/write-phone-uk-field.html | 10 - .../read-text-area-field.component.spec.ts | 86 - .../read-text-area-field.component.ts | 7 - .../write-text-area-field.component.spec.ts | 84 - .../write-text-area-field.component.ts | 16 - .../text-area/write-text-area-field.html | 11 - .../text/read-text-field.component.spec.ts | 66 - .../palette/text/read-text-field.component.ts | 7 - .../text/write-text-field.component.spec.ts | 86 - .../text/write-text-field.component.ts | 16 - .../shared/palette/text/write-text-field.html | 10 - .../palette/unsupported-field.component.ts | 6 - .../shared/palette/utils/dash.pipe.spec.ts | 27 - src/app/shared/palette/utils/dash.pipe.ts | 11 - .../shared/palette/utils/date.pipe.spec.ts | 117 - src/app/shared/palette/utils/date.pipe.ts | 80 - .../palette/utils/field-label.pipe.spec.ts | 32 - .../shared/palette/utils/field-label.pipe.ts | 17 - .../palette/utils/first-error.pipe.spec.ts | 41 - .../shared/palette/utils/first-error.pipe.ts | 25 - .../palette/utils/is-compound.pipe.spec.ts | 43 - .../shared/palette/utils/is-compound.pipe.ts | 22 - .../palette/utils/is-mandatory.pipe.spec.ts | 39 - .../shared/palette/utils/is-mandatory.pipe.ts | 15 - .../palette/utils/is-read-only.pipe.spec.ts | 39 - .../shared/palette/utils/is-read-only.pipe.ts | 15 - src/app/shared/palette/utils/utils.module.ts | 34 - .../read-yes-no-field.component.spec.ts | 61 - .../yes-no/read-yes-no-field.component.ts | 21 - .../write-yes-no-field.component.spec.ts | 99 - .../yes-no/write-yes-no-field.component.ts | 23 - .../palette/yes-no/write-yes-no-field.html | 22 - .../shared/palette/yes-no/yes-no.module.ts | 29 - .../palette/yes-no/yes-no.service.spec.ts | 86 - .../shared/palette/yes-no/yes-no.service.ts | 49 - .../remove-dialog.component.html | 17 - .../remove-dialog.component.scss | 22 - .../remove-dialog.component.spec.ts | 58 - .../remove-dialog/remove-dialog.component.ts | 23 - .../search/search-result-view-column.model.ts | 2 +- .../shared/search/search-result-view.model.ts | 2 +- .../shared/search/search-result.component.ts | 2 +- src/app/shared/shared.module.ts | 10 +- .../label-substitutor.directive.spec.ts | 808 -- .../label-substitutor.directive.ts | 50 - .../substitutor/label-substitutor.module.ts | 18 - .../shared/utils/case-reference.pipe.spec.ts | 18 - src/app/shared/utils/case-reference.pipe.ts | 16 - src/app/shared/utils/fields.purger.ts | 92 - src/app/shared/utils/fields.utils.ts | 125 - src/app/shared/utils/shared-utils.module.ts | 16 - .../workbasket-input-filter.service.ts | 2 +- src/app/workbasket/workbasket-input.model.ts | 2 +- src/app/workbasket/workbasket.module.ts | 2 +- tsconfig.json | 2 +- yarn.lock | 9718 ----------------- 278 files changed, 95 insertions(+), 23393 deletions(-) delete mode 100644 src/app/core/addresses/address.model.ts delete mode 100644 src/app/core/addresses/addresses.service.ts delete mode 100644 src/app/core/auth/auth.service.spec.ts delete mode 100644 src/app/core/auth/auth.service.ts delete mode 100644 src/app/core/form/form-error.service.spec.ts delete mode 100644 src/app/core/form/form-error.service.ts delete mode 100644 src/app/core/form/form-validators.service.spec.ts delete mode 100644 src/app/core/form/form-validators.service.ts delete mode 100644 src/app/core/form/form-value.service.spec.ts delete mode 100644 src/app/core/form/form-value.service.ts delete mode 100644 src/app/core/http/http-error.model.spec.ts delete mode 100644 src/app/core/http/http-error.model.ts delete mode 100644 src/app/core/http/http-error.service.spec.ts delete mode 100644 src/app/core/http/http-error.service.ts delete mode 100644 src/app/core/http/http.service.spec.ts delete mode 100644 src/app/core/http/http.service.ts delete mode 100644 src/app/core/order/orderable.model.ts delete mode 100644 src/app/fixture/shared.fixture.ts delete mode 100644 src/app/shared/case-editor/case-edit.spec.ts delete mode 100644 src/app/shared/case-editor/label-substitution.service.spec.ts delete mode 100644 src/app/shared/case-editor/label-substitution.service.ts delete mode 100644 src/app/shared/conditional-show/conditional-show-registrar.service.spec.ts delete mode 100644 src/app/shared/conditional-show/conditional-show-registrar.service.ts delete mode 100644 src/app/shared/conditional-show/conditional-show.directive.spec.ts delete mode 100644 src/app/shared/conditional-show/conditional-show.directive.ts delete mode 100644 src/app/shared/conditional-show/conditional-show.model.spec.ts delete mode 100644 src/app/shared/conditional-show/conditional-show.model.ts delete mode 100644 src/app/shared/conditional-show/conditional-show.module.ts delete mode 100644 src/app/shared/document-dialog/document-dialog.component.html delete mode 100644 src/app/shared/document-dialog/document-dialog.component.scss delete mode 100644 src/app/shared/document-dialog/document-dialog.component.spec.ts delete mode 100644 src/app/shared/document-dialog/document-dialog.component.ts rename src/app/{core => shared}/documentManagement/documentManagement.service.spec.ts (88%) rename src/app/{core => shared}/documentManagement/documentManagement.service.ts (80%) delete mode 100644 src/app/shared/domain/case-details.ts delete mode 100644 src/app/shared/domain/case-event-data.ts delete mode 100644 src/app/shared/domain/case-field.service.spec.ts delete mode 100644 src/app/shared/domain/case-field.service.ts delete mode 100644 src/app/shared/domain/case-view/case-event-trigger.model.ts delete mode 100644 src/app/shared/domain/definition/case-field.model.ts delete mode 100644 src/app/shared/domain/definition/field-type-enum.model.ts delete mode 100644 src/app/shared/domain/definition/field-type.model.ts delete mode 100644 src/app/shared/domain/definition/fixed-list-item.model.ts delete mode 100644 src/app/shared/domain/document/document-data.model.ts delete mode 100644 src/app/shared/domain/draft.ts delete mode 100644 src/app/shared/domain/wizard-page-field.model.ts delete mode 100644 src/app/shared/domain/wizard-page.model.spec.ts delete mode 100644 src/app/shared/domain/wizard-page.model.ts delete mode 100644 src/app/shared/markdown/markdown.component.spec.ts delete mode 100644 src/app/shared/markdown/markdown.component.ts delete mode 100644 src/app/shared/markdown/markdown.html delete mode 100644 src/app/shared/markdown/markdown.module.ts delete mode 100644 src/app/shared/palette/address/address-option.model.ts delete mode 100644 src/app/shared/palette/address/address.module.ts delete mode 100644 src/app/shared/palette/address/write-address-field.component.spec.ts delete mode 100644 src/app/shared/palette/address/write-address-field.component.ts delete mode 100644 src/app/shared/palette/address/write-address-field.html delete mode 100644 src/app/shared/palette/address/write-address-field.scss delete mode 100644 src/app/shared/palette/base-field/abstract-field-read.component.ts delete mode 100644 src/app/shared/palette/base-field/abstract-field-write.component.ts delete mode 100644 src/app/shared/palette/base-field/base-field.module.ts delete mode 100644 src/app/shared/palette/base-field/field-read-label.component.spec.ts delete mode 100644 src/app/shared/palette/base-field/field-read-label.component.ts delete mode 100644 src/app/shared/palette/base-field/field-read-label.html delete mode 100644 src/app/shared/palette/base-field/field-read-label.scss delete mode 100644 src/app/shared/palette/base-field/field-read.component.spec.ts delete mode 100644 src/app/shared/palette/base-field/field-read.component.ts delete mode 100644 src/app/shared/palette/base-field/field-read.html delete mode 100644 src/app/shared/palette/base-field/field-write.component.spec.ts delete mode 100644 src/app/shared/palette/base-field/field-write.component.ts delete mode 100644 src/app/shared/palette/base-field/palette-context.enum.ts delete mode 100644 src/app/shared/palette/collection/collection-field.scss delete mode 100644 src/app/shared/palette/collection/read-collection-field.component.spec.ts delete mode 100644 src/app/shared/palette/collection/read-collection-field.component.ts delete mode 100644 src/app/shared/palette/collection/read-collection-field.html delete mode 100644 src/app/shared/palette/collection/write-collection-field.component.spec.ts delete mode 100644 src/app/shared/palette/collection/write-collection-field.component.ts delete mode 100644 src/app/shared/palette/collection/write-collection-field.html delete mode 100644 src/app/shared/palette/complex/complex.module.ts delete mode 100644 src/app/shared/palette/complex/fields-filter.pipe.spec.ts delete mode 100644 src/app/shared/palette/complex/fields-filter.pipe.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field-raw.component.spec.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field-raw.component.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field-raw.html delete mode 100644 src/app/shared/palette/complex/read-complex-field-raw.scss delete mode 100644 src/app/shared/palette/complex/read-complex-field-table.component.spec.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field-table.component.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field-table.html delete mode 100644 src/app/shared/palette/complex/read-complex-field-table.scss delete mode 100644 src/app/shared/palette/complex/read-complex-field.component.spec.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field.component.ts delete mode 100644 src/app/shared/palette/complex/read-complex-field.html delete mode 100644 src/app/shared/palette/complex/write-complex-field.component.spec.ts delete mode 100644 src/app/shared/palette/complex/write-complex-field.component.ts delete mode 100644 src/app/shared/palette/complex/write-complex-field.html delete mode 100644 src/app/shared/palette/date/read-date-field.component.spec.ts delete mode 100644 src/app/shared/palette/date/read-date-field.component.ts delete mode 100644 src/app/shared/palette/date/write-date-field.component.spec.ts delete mode 100644 src/app/shared/palette/date/write-date-field.component.ts delete mode 100644 src/app/shared/palette/date/write-date-field.html delete mode 100644 src/app/shared/palette/document/document-url.pipe.spec.ts delete mode 100644 src/app/shared/palette/document/document-url.pipe.ts delete mode 100644 src/app/shared/palette/document/document.module.ts delete mode 100644 src/app/shared/palette/document/read-document-field.component.spec.ts delete mode 100644 src/app/shared/palette/document/read-document-field.component.ts delete mode 100644 src/app/shared/palette/document/read-document-field.html delete mode 100644 src/app/shared/palette/document/write-document-field.component.spec.ts delete mode 100644 src/app/shared/palette/document/write-document-field.component.ts delete mode 100644 src/app/shared/palette/document/write-document-field.html delete mode 100644 src/app/shared/palette/email/read-email-field.component.spec.ts delete mode 100644 src/app/shared/palette/email/read-email-field.component.ts delete mode 100644 src/app/shared/palette/email/write-email-field.component.spec.ts delete mode 100644 src/app/shared/palette/email/write-email-field.component.ts delete mode 100644 src/app/shared/palette/email/write-email-field.html delete mode 100644 src/app/shared/palette/fixed-list/fixed-list.module.ts delete mode 100644 src/app/shared/palette/fixed-list/fixed-list.pipe.spec.ts delete mode 100644 src/app/shared/palette/fixed-list/fixed-list.pipe.ts delete mode 100644 src/app/shared/palette/fixed-list/read-fixed-list-field.component.spec.ts delete mode 100644 src/app/shared/palette/fixed-list/read-fixed-list-field.component.ts delete mode 100644 src/app/shared/palette/fixed-list/write-fixed-list-field.component.spec.ts delete mode 100644 src/app/shared/palette/fixed-list/write-fixed-list-field.component.ts delete mode 100644 src/app/shared/palette/fixed-list/write-fixed-list-field.html delete mode 100644 src/app/shared/palette/label/label-field.component.spec.ts delete mode 100644 src/app/shared/palette/label/label-field.component.ts delete mode 100644 src/app/shared/palette/label/label-field.html delete mode 100644 src/app/shared/palette/money-gbp/money-gbp-input.component.spec.ts delete mode 100644 src/app/shared/palette/money-gbp/money-gbp-input.component.ts delete mode 100644 src/app/shared/palette/money-gbp/money-gbp.module.ts delete mode 100644 src/app/shared/palette/money-gbp/read-money-gbp-field.component.spec.ts delete mode 100644 src/app/shared/palette/money-gbp/read-money-gbp-field.component.ts delete mode 100644 src/app/shared/palette/money-gbp/write-money-gbp-field.component.spec.ts delete mode 100644 src/app/shared/palette/money-gbp/write-money-gbp-field.component.ts delete mode 100644 src/app/shared/palette/money-gbp/write-money-gbp-field.html delete mode 100644 src/app/shared/palette/multi-select-list/multi-select-list.module.ts delete mode 100644 src/app/shared/palette/multi-select-list/multi-select-list.scss delete mode 100644 src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.spec.ts delete mode 100644 src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.ts delete mode 100644 src/app/shared/palette/multi-select-list/read-multi-select-list-field.html delete mode 100644 src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.spec.ts delete mode 100644 src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.ts delete mode 100644 src/app/shared/palette/multi-select-list/write-multi-select-list-field.html delete mode 100644 src/app/shared/palette/number/read-number-field.component.spec.ts delete mode 100644 src/app/shared/palette/number/read-number-field.component.ts delete mode 100644 src/app/shared/palette/number/write-number-field.component.spec.ts delete mode 100644 src/app/shared/palette/number/write-number-field.component.ts delete mode 100644 src/app/shared/palette/number/write-number-field.html delete mode 100644 src/app/shared/palette/order-summary/fee-value.model.ts delete mode 100644 src/app/shared/palette/order-summary/fee.model.ts delete mode 100644 src/app/shared/palette/order-summary/order-summary.model.ts delete mode 100644 src/app/shared/palette/order-summary/order-summary.module.ts delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-field.component.spec.ts delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-field.component.ts delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-field.html delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-field.scss delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-row.component.ts delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-row.html delete mode 100644 src/app/shared/palette/order-summary/read-order-summary-row.scss delete mode 100644 src/app/shared/palette/order-summary/write-order-summary-field.component.spec.ts delete mode 100644 src/app/shared/palette/order-summary/write-order-summary-field.component.ts delete mode 100644 src/app/shared/palette/order-summary/write-order-summary-field.html delete mode 100644 src/app/shared/palette/palette.module.ts delete mode 100644 src/app/shared/palette/palette.service.spec.ts delete mode 100644 src/app/shared/palette/palette.service.ts delete mode 100644 src/app/shared/palette/payment/case-payment-history-viewer-field.component.spec.ts delete mode 100644 src/app/shared/palette/payment/case-payment-history-viewer-field.component.ts delete mode 100644 src/app/shared/palette/payment/case-payment-history-viewer-field.html delete mode 100644 src/app/shared/palette/payment/case-payment-history-viewer.module.ts delete mode 100644 src/app/shared/palette/phone-uk/read-phone-uk-field.component.spec.ts delete mode 100644 src/app/shared/palette/phone-uk/read-phone-uk-field.component.ts delete mode 100644 src/app/shared/palette/phone-uk/write-phone-uk-field.component.spec.ts delete mode 100644 src/app/shared/palette/phone-uk/write-phone-uk-field.component.ts delete mode 100644 src/app/shared/palette/phone-uk/write-phone-uk-field.html delete mode 100644 src/app/shared/palette/text-area/read-text-area-field.component.spec.ts delete mode 100644 src/app/shared/palette/text-area/read-text-area-field.component.ts delete mode 100644 src/app/shared/palette/text-area/write-text-area-field.component.spec.ts delete mode 100644 src/app/shared/palette/text-area/write-text-area-field.component.ts delete mode 100644 src/app/shared/palette/text-area/write-text-area-field.html delete mode 100644 src/app/shared/palette/text/read-text-field.component.spec.ts delete mode 100644 src/app/shared/palette/text/read-text-field.component.ts delete mode 100644 src/app/shared/palette/text/write-text-field.component.spec.ts delete mode 100644 src/app/shared/palette/text/write-text-field.component.ts delete mode 100644 src/app/shared/palette/text/write-text-field.html delete mode 100644 src/app/shared/palette/unsupported-field.component.ts delete mode 100644 src/app/shared/palette/utils/dash.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/dash.pipe.ts delete mode 100644 src/app/shared/palette/utils/date.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/date.pipe.ts delete mode 100644 src/app/shared/palette/utils/field-label.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/field-label.pipe.ts delete mode 100644 src/app/shared/palette/utils/first-error.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/first-error.pipe.ts delete mode 100644 src/app/shared/palette/utils/is-compound.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/is-compound.pipe.ts delete mode 100644 src/app/shared/palette/utils/is-mandatory.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/is-mandatory.pipe.ts delete mode 100644 src/app/shared/palette/utils/is-read-only.pipe.spec.ts delete mode 100644 src/app/shared/palette/utils/is-read-only.pipe.ts delete mode 100644 src/app/shared/palette/utils/utils.module.ts delete mode 100644 src/app/shared/palette/yes-no/read-yes-no-field.component.spec.ts delete mode 100644 src/app/shared/palette/yes-no/read-yes-no-field.component.ts delete mode 100644 src/app/shared/palette/yes-no/write-yes-no-field.component.spec.ts delete mode 100644 src/app/shared/palette/yes-no/write-yes-no-field.component.ts delete mode 100644 src/app/shared/palette/yes-no/write-yes-no-field.html delete mode 100644 src/app/shared/palette/yes-no/yes-no.module.ts delete mode 100644 src/app/shared/palette/yes-no/yes-no.service.spec.ts delete mode 100644 src/app/shared/palette/yes-no/yes-no.service.ts delete mode 100644 src/app/shared/remove-dialog/remove-dialog.component.html delete mode 100644 src/app/shared/remove-dialog/remove-dialog.component.scss delete mode 100644 src/app/shared/remove-dialog/remove-dialog.component.spec.ts delete mode 100644 src/app/shared/remove-dialog/remove-dialog.component.ts delete mode 100644 src/app/shared/substitutor/label-substitutor.directive.spec.ts delete mode 100644 src/app/shared/substitutor/label-substitutor.directive.ts delete mode 100644 src/app/shared/substitutor/label-substitutor.module.ts delete mode 100644 src/app/shared/utils/case-reference.pipe.spec.ts delete mode 100644 src/app/shared/utils/case-reference.pipe.ts delete mode 100644 src/app/shared/utils/fields.purger.ts delete mode 100644 src/app/shared/utils/fields.utils.ts delete mode 100644 src/app/shared/utils/shared-utils.module.ts delete mode 100644 yarn.lock diff --git a/server.ts b/server.ts index dbbd74b2b..9cb6b623d 100644 --- a/server.ts +++ b/server.ts @@ -45,6 +45,8 @@ const CONFIG = { 'activity_max_request_per_batch': parseInt(process.env['CCD_ACTIVITY_MAX_REQUEST_PER_BATCH'], 10) || 25 }; +const APP_SERVER_CONFIG = new AppServerConfig(CONFIG); + // * NOTE :: leave this as require() since this file is built Dynamically from webpack const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main'); @@ -55,7 +57,7 @@ app.engine('html', ngExpressEngine({ bootstrap: AppServerModuleNgFactory, providers: [ provideModuleMap(LAZY_MODULE_MAP), - { provide: AppConfig, useValue: new AppServerConfig(CONFIG) }, + { provide: AppConfig, useValue: APP_SERVER_CONFIG }, ] })); diff --git a/src/app/app.config.guard.ts b/src/app/app.config.guard.ts index 661408942..5b4d33287 100644 --- a/src/app/app.config.guard.ts +++ b/src/app/app.config.guard.ts @@ -1,15 +1,20 @@ import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router'; import { AppConfig } from './app.config'; import { Injectable } from '@angular/core'; +import { AbstractAppConfig } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class AppConfigGuard implements CanActivate { - constructor(private appConfig: AppConfig) {} + constructor(private appConfig: AppConfig, private abstractAppConfig: AbstractAppConfig) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { return this.appConfig.load() - .then(() => true); + .then(() => { + console.log('2appConfig', this.appConfig); + console.log('2abstractAppConfig', this.abstractAppConfig); + return true; + }); } } diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 3fc2bb12a..169a3507b 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -3,15 +3,15 @@ import { Http } from '@angular/http'; import { Observable } from 'rxjs'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch'; +import { CaseEventData, AbstractAppConfig, Config } from '@hmcts/ccd-case-ui-toolkit'; import { environment } from '../environments/environment'; -import { CaseEventData } from './shared/domain/case-event-data'; @Injectable() -export class AppConfig { +export class AppConfig extends AbstractAppConfig { - protected config: Config; - - constructor(private http: Http) {} + constructor(private http: Http) { + super(); + } public load(): Promise { console.log('Loading app config...'); @@ -29,7 +29,7 @@ export class AppConfig { }) .subscribe((config: Config) => { this.config = config; - console.log('Loading app config: OK'); + console.log('Loading app config: OK, config=', this.config); resolve(); }); }); @@ -148,30 +148,3 @@ export class AppConfig { return this.getCaseDataUrl() + `/caseworkers/:uid/jurisdictions/${jid}/case-types/${ctid}/event-trigger/${eventData.event.id}/drafts/`; } } - -export class Config { - activity_batch_collection_delay_ms: number; - activity_max_request_per_batch: number; - activity_next_poll_request_ms: number; - activity_retry: number; - activity_url: string; - api_url: string; - case_data_url: string; - document_management_url: string; - login_url: string; - logout_url: string; - oauth2_client_id: string; - oauth2_token_endpoint_url: string; - pagination_page_size: number; - postcode_lookup_url: string; - print_service_url: string; - remote_document_management_url: string; - remote_print_service_url: string; - smart_survey_url: string; - payments_url: string; - unsupported_browser_url: string; - chrome_min_required_version: number; - ie_min_required_version: number; - edge_min_required_version: number; - firefox_min_required_version: number; -} diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 1eed06137..d12a3b444 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -17,6 +17,8 @@ import { SharedModule } from './shared/shared.module'; import { isPlatformBrowser } from '@angular/common'; import { OAuth2RedirectModule } from './oauth2/oauth2-redirect.module'; import { AppConfigGuard } from './app.config.guard'; +import { AbstractAppConfig } from '@hmcts/ccd-case-ui-toolkit'; +import { AppServerConfig } from './app.server.config'; @NgModule({ imports: [ @@ -39,6 +41,10 @@ import { AppConfigGuard } from './app.config.guard'; providers: [ AppConfig, AppConfigGuard, + { + provide: AbstractAppConfig, + useClass: AppConfig + } ], bootstrap: [AppComponent] }) diff --git a/src/app/cases/case.resolver.ts b/src/app/cases/case.resolver.ts index fe3299a99..f039373e6 100644 --- a/src/app/cases/case.resolver.ts +++ b/src/app/cases/case.resolver.ts @@ -7,7 +7,7 @@ import { Response } from '@angular/http'; import { AlertService } from '../core/alert/alert.service'; import 'rxjs/add/operator/catch'; import { DraftService } from '../core/draft/draft.service'; -import { Draft } from '../shared/domain/draft'; +import { Draft } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class CaseResolver implements Resolve { diff --git a/src/app/cases/cases.module.ts b/src/app/cases/cases.module.ts index 3ad944ab5..1391216b8 100644 --- a/src/app/cases/cases.module.ts +++ b/src/app/cases/cases.module.ts @@ -2,15 +2,15 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterModule } from '@angular/router'; import { SharedModule } from '../shared/shared.module'; -import { CaseReferencePipe } from '../shared/utils/case-reference.pipe'; import { CaseResolver } from './case.resolver'; import { CaseViewerComponent } from './viewer/case-viewer.component'; -import { PaletteModule } from '../shared/palette/palette.module'; +import { PaletteModule, PaletteUtilsModule, ConditionalShowModule, MarkdownModule, + LabelSubstitutionService, RemoveDialogComponent, CaseReferencePipe, LabelSubstitutorModule, + FieldsPurger } from '@hmcts/ccd-case-ui-toolkit'; import { EventLogModule } from '../shared/event-log/event-log.module'; import { EventTriggerResolver } from './event-trigger/event-trigger.resolver'; import { CaseEventTriggerComponent } from './event-trigger/case-event-trigger.component'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { PaletteUtilsModule } from '../shared/palette/utils/utils.module'; import { CaseCreatorComponent } from './creator/case-creator.component'; import { CreateCaseFiltersComponent } from './creator/filters/create-case-filters.component'; import { CasePrinterComponent } from './printer/case-printer.component'; @@ -22,17 +22,11 @@ import { CallbackErrorsComponent } from '../shared/error/callback-errors.compone import { CaseUIToolkitModule } from '@hmcts/ccd-case-ui-toolkit'; import { CaseEditPageComponent } from '../shared/case-editor/case-edit-page.component'; import { CaseEditSubmitComponent } from '../shared/case-editor/case-edit-submit.component'; -import { ConditionalShowModule } from '../shared/conditional-show/conditional-show.module'; import { CaseEditFormComponent } from '../shared/case-editor/case-edit-form.component'; -import { MarkdownModule } from '../shared/markdown/markdown.module'; -import { LabelSubstitutionService } from '../shared/case-editor/label-substitution.service'; -import { LabelSubstitutorModule } from '../shared/substitutor/label-substitutor.module'; import { CaseEditConfirmComponent } from '../shared/case-editor/case-edit-confirm.component'; import { PrintUrlPipe } from './printer/print-url.pipe'; import { MatDialogModule } from '@angular/material'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { RemoveDialogComponent } from '../shared/remove-dialog/remove-dialog.component'; -import { FieldsPurger } from '../shared/utils/fields.purger'; import { PageValidationService } from '../shared/case-editor/page-validation.service'; @NgModule({ diff --git a/src/app/cases/creator/case-creator-submit.component.ts b/src/app/cases/creator/case-creator-submit.component.ts index d27adaf5e..ed6841e40 100644 --- a/src/app/cases/creator/case-creator-submit.component.ts +++ b/src/app/cases/creator/case-creator-submit.component.ts @@ -1,14 +1,11 @@ import { Component, OnInit } from '@angular/core'; -import { CaseReferencePipe } from '../../shared/utils/case-reference.pipe'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, CaseEventData, Draft, CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; import { Observable } from 'rxjs/Observable'; -import { CaseEventData } from '../../shared/domain/case-event-data'; import { EventStatusService } from '../../core/cases/event-status.service'; import { DraftService } from '../../core/draft/draft.service'; -import { Draft } from '../../shared/domain/draft'; @Component({ selector: 'ccd-case-creator-submit', diff --git a/src/app/cases/creator/create-case-event-trigger.resolver.ts b/src/app/cases/creator/create-case-event-trigger.resolver.ts index 538ca4fb8..4995a0800 100644 --- a/src/app/cases/creator/create-case-event-trigger.resolver.ts +++ b/src/app/cases/creator/create-case-event-trigger.resolver.ts @@ -1,13 +1,11 @@ import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, Draft, DRAFT, HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { AlertService } from '../../core/alert/alert.service'; -import { HttpError } from '../../core/http/http-error.model'; import { CasesService } from '../../core/cases/cases.service'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/catch'; -import { Draft } from '../../shared/domain/draft'; @Injectable() export class CreateCaseEventTriggerResolver implements Resolve { @@ -36,7 +34,7 @@ export class CreateCaseEventTriggerResolver implements Resolve let caseTypeId = route.paramMap.get(CreateCaseEventTriggerResolver.PARAM_CASE_TYPE_ID); let eventTriggerId = route.paramMap.get(CreateCaseEventTriggerResolver.PARAM_EVENT_ID); let ignoreWarning = route.queryParamMap.get(CreateCaseEventTriggerResolver.QUERY_PARAM_IGNORE_WARNING); - let draftId = route.queryParamMap.get(Draft.DRAFT); + let draftId = route.queryParamMap.get(DRAFT); let caseId = undefined; if (-1 === CreateCaseEventTriggerResolver.IGNORE_WARNING_VALUES.indexOf(ignoreWarning)) { diff --git a/src/app/cases/creator/filters/create-case-filters.component.ts b/src/app/cases/creator/filters/create-case-filters.component.ts index 0fd3a75ef..4e2db4390 100644 --- a/src/app/cases/creator/filters/create-case-filters.component.ts +++ b/src/app/cases/creator/filters/create-case-filters.component.ts @@ -8,7 +8,7 @@ import { Router } from '@angular/router'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsContext } from '../../../shared/error/error-context'; import { CallbackErrorsComponent } from '../../../shared/error/callback-errors.component'; -import { HttpError } from '../../../core/http/http-error.model'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { AlertService } from '../../../core/alert/alert.service'; @Component({ diff --git a/src/app/cases/event-trigger/case-event-trigger.component.ts b/src/app/cases/event-trigger/case-event-trigger.component.ts index aed0912ac..20b875b50 100644 --- a/src/app/cases/event-trigger/case-event-trigger.component.ts +++ b/src/app/cases/event-trigger/case-event-trigger.component.ts @@ -1,14 +1,12 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { CaseView } from '../../core/cases/case-view.model'; -import { CaseReferencePipe } from '../../shared/utils/case-reference.pipe'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, CaseEventData, CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; import { Observable } from 'rxjs/Observable'; import { Activity, DisplayMode } from '../../core/activity/activity.model'; import { Subscription } from 'rxjs/Subscription'; -import { CaseEventData } from '../../shared/domain/case-event-data'; import { EventStatusService } from '../../core/cases/event-status.service'; import { ActivityPollingService } from '../../core/activity/activity.polling.service'; diff --git a/src/app/cases/event-trigger/event-trigger.resolver.ts b/src/app/cases/event-trigger/event-trigger.resolver.ts index 5321c96a3..cd1cb3475 100644 --- a/src/app/cases/event-trigger/event-trigger.resolver.ts +++ b/src/app/cases/event-trigger/event-trigger.resolver.ts @@ -1,10 +1,9 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { Observable } from 'rxjs/Observable'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; -import { HttpError } from '../../core/http/http-error.model'; import { CaseView } from '../../core/cases/case-view.model'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/catch'; diff --git a/src/app/cases/printer/case-print-documents.resolver.ts b/src/app/cases/printer/case-print-documents.resolver.ts index ccbc5cca8..641b6851e 100644 --- a/src/app/cases/printer/case-print-documents.resolver.ts +++ b/src/app/cases/printer/case-print-documents.resolver.ts @@ -5,7 +5,7 @@ import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/map'; -import { HttpError } from '../../core/http/http-error.model'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { Injectable } from '@angular/core'; import { CaseView } from '../../core/cases/case-view.model'; diff --git a/src/app/cases/viewer/case-viewer.component.ts b/src/app/cases/viewer/case-viewer.component.ts index a3b78d41f..ec8b3be3e 100644 --- a/src/app/cases/viewer/case-viewer.component.ts +++ b/src/app/cases/viewer/case-viewer.component.ts @@ -11,10 +11,7 @@ import { Activity, DisplayMode } from '../../core/activity/activity.model'; import { ActivityPollingService } from '../../core/activity/activity.polling.service'; import { Observable } from 'rxjs/Observable'; import { Subscription } from 'rxjs/Subscription'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; -import { ShowCondition } from '../../shared/conditional-show/conditional-show.model'; -import { HttpError } from '../../core/http/http-error.model'; -import { Draft } from '../../shared/domain/draft'; +import { CaseField, ShowCondition, Draft, DRAFT, HttpError } from '@hmcts/ccd-case-ui-toolkit'; @Component({ templateUrl: './case-viewer.component.html', @@ -86,7 +83,7 @@ export class CaseViewerComponent implements OnInit, OnDestroy { // we may need to take care of different triggers in the future if (this.isDraft() && trigger.id !== CaseViewTrigger.DELETE) { - theQueryParams[Draft.DRAFT] = this.caseDetails.case_id; + theQueryParams[DRAFT] = this.caseDetails.case_id; return this.router.navigate( ['create/case', this.caseDetails.case_type.jurisdiction.id, diff --git a/src/app/core/activity/activity.service.ts b/src/app/core/activity/activity.service.ts index 8a16b3cf9..700613cc3 100644 --- a/src/app/core/activity/activity.service.ts +++ b/src/app/core/activity/activity.service.ts @@ -1,10 +1,8 @@ import { Injectable } from '@angular/core'; import { Activity } from './activity.model'; import { Observable } from 'rxjs'; -import { catchError, retry } from 'rxjs/operators'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; -import { HttpErrorResponse } from '@angular/common/http'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; const DUMMY_CASE_REFERENCE = '0'; diff --git a/src/app/core/addresses/address.model.ts b/src/app/core/addresses/address.model.ts deleted file mode 100644 index 0e85deae3..000000000 --- a/src/app/core/addresses/address.model.ts +++ /dev/null @@ -1,9 +0,0 @@ -export class AddressModel { - AddressLine1 = ''; - AddressLine2 = ''; - AddressLine3 = ''; - PostTown = ''; - County = ''; - PostCode = ''; - Country = ''; -} diff --git a/src/app/core/addresses/addresses.service.ts b/src/app/core/addresses/addresses.service.ts deleted file mode 100644 index a9b56c3c0..000000000 --- a/src/app/core/addresses/addresses.service.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { HttpService } from '../http/http.service'; -import { AddressModel } from './address.model'; -import { AppConfig } from '../../app.config'; - -@Injectable() -export class AddressesService { - - constructor( - private http: HttpService, - private appConfig: AppConfig - ) {} - - getAddressesForPostcode(postcode: string): Observable> { - return this.http - .get(this.appConfig.getPostcodeLookupUrl().replace('${postcode}', postcode)) - .map(response => response.json()); - } -} diff --git a/src/app/core/auth/auth.service.spec.ts b/src/app/core/auth/auth.service.spec.ts deleted file mode 100644 index d60d2dd15..000000000 --- a/src/app/core/auth/auth.service.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { AuthService } from './auth.service'; -import { HttpService } from '../http/http.service'; -import { AppConfig } from '../../app.config'; -import { Observable } from 'rxjs/Observable'; -import { Response, ResponseOptions } from '@angular/http'; -import createSpyObj = jasmine.createSpyObj; - -describe('AuthService', () => { - - const TOKEN_ENDPOINT = 'http://localhost:1234/oauth2/token'; - const RESPONSE = Observable.of(new Response(new ResponseOptions())); - const LOGIN_URL = 'http://idam/login'; - const LOGOUT_URL = 'http://gateway.ccd/logout'; - const OAUTH2_CLIENT_ID = 'some_client_id'; - const REDIRECT_URI = 'http://localhost/oauth2redirect'; - const REDIRECT_URI_ENCODED = encodeURIComponent(REDIRECT_URI); - - let authService: AuthService; - let httpService: any; - let appConfig: any; - let document: any; - - beforeEach(() => { - httpService = createSpyObj('httpService', ['get']); - httpService.get.and.returnValue(RESPONSE); - - appConfig = createSpyObj('appConfig', [ - 'getOAuth2TokenEndpointUrl', - 'getOAuth2ClientId', - 'getLoginUrl', - 'getLogoutUrl', - ]); - appConfig.getOAuth2TokenEndpointUrl.and.returnValue(TOKEN_ENDPOINT); - appConfig.getLoginUrl.and.returnValue(LOGIN_URL); - appConfig.getLogoutUrl.and.returnValue(LOGOUT_URL); - appConfig.getOAuth2ClientId.and.returnValue(OAUTH2_CLIENT_ID); - document = { - location: { - origin: 'http://localhost' - } - }; - - authService = new AuthService(appConfig, document); - }); - - describe('signIn', () => { - - it('should redirect IDAM login page', () => { - authService.signIn(); - - let expectedParams = [ - `response_type=code`, - `client_id=${OAUTH2_CLIENT_ID}`, - `redirect_uri=${REDIRECT_URI_ENCODED}`, - ]; - - expect(document.location.href) - .toEqual(`${LOGIN_URL}?${expectedParams.join('&')}`); - }); - - }); -}); diff --git a/src/app/core/auth/auth.service.ts b/src/app/core/auth/auth.service.ts deleted file mode 100644 index a73fc07a4..000000000 --- a/src/app/core/auth/auth.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Inject, Injectable } from '@angular/core'; -import { AppConfig } from '../../app.config'; -import { DOCUMENT } from '@angular/common'; - -/** - * `Oauth2Service` and `AuthService` cannot be merged as it creates a cyclic dependency on `AuthService` through `HttpErrorService`. - */ -@Injectable() -export class AuthService { - - private static readonly PATH_OAUTH2_REDIRECT = '/oauth2redirect'; - - constructor(private appConfig: AppConfig, - @Inject(DOCUMENT) private document: any) {} - - public signIn(): void { - let loginUrl = this.appConfig.getLoginUrl(); - let clientId = this.appConfig.getOAuth2ClientId(); - let redirectUri = encodeURIComponent(this.redirectUri()); - - this.document.location.href = `${loginUrl}?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}`; - } - - public redirectUri(): string { - return this.document.location.origin + AuthService.PATH_OAUTH2_REDIRECT; - } -} diff --git a/src/app/core/auth/oauth2.service.ts b/src/app/core/auth/oauth2.service.ts index bbe4a67a5..b3095faac 100644 --- a/src/app/core/auth/oauth2.service.ts +++ b/src/app/core/auth/oauth2.service.ts @@ -1,9 +1,8 @@ import { Injectable } from '@angular/core'; -import { HttpService } from '../http/http.service'; import { AppConfig } from '../../app.config'; import { Response, URLSearchParams } from '@angular/http'; import { Observable } from 'rxjs/Observable'; -import { AuthService } from './auth.service'; +import { HttpService, AuthService } from '@hmcts/ccd-case-ui-toolkit'; /** * `Oauth2Service` and `AuthService` cannot be merged as it creates a cyclic dependency on `AuthService` through `HttpErrorService`. diff --git a/src/app/core/case-editor/case-edit-wizard.guard.ts b/src/app/core/case-editor/case-edit-wizard.guard.ts index ed82c092f..66734cb2e 100644 --- a/src/app/core/case-editor/case-edit-wizard.guard.ts +++ b/src/app/core/case-editor/case-edit-wizard.guard.ts @@ -1,11 +1,8 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, WizardPage, ShowCondition, CaseField } from '@hmcts/ccd-case-ui-toolkit'; import { WizardFactoryService } from './wizard-factory.service'; import { Predicate } from '../../shared/predicate'; -import { WizardPage } from '../../shared/domain/wizard-page.model'; -import { ShowCondition } from '../../shared/conditional-show/conditional-show.model'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; import { AlertService } from '../alert/alert.service'; import { Wizard } from '../../shared/case-editor/wizard.model'; import { RouterHelperService } from '../utils/router-helper.service'; diff --git a/src/app/core/case-editor/wizard-factory.service.ts b/src/app/core/case-editor/wizard-factory.service.ts index 8e9361cc3..874b80552 100644 --- a/src/app/core/case-editor/wizard-factory.service.ts +++ b/src/app/core/case-editor/wizard-factory.service.ts @@ -1,5 +1,5 @@ import { Wizard } from '../../shared/case-editor/wizard.model'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; export class WizardFactoryService { create(eventTrigger: CaseEventTrigger): Wizard { diff --git a/src/app/core/cases/case-history.service.ts b/src/app/core/cases/case-history.service.ts index 52361796e..25a5c0dc0 100644 --- a/src/app/core/cases/case-history.service.ts +++ b/src/app/core/cases/case-history.service.ts @@ -1,10 +1,9 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; import { CaseHistory } from './case-history.model'; import { plainToClass } from 'class-transformer'; -import { HttpErrorService } from '../http/http-error.service'; +import { HttpService, HttpErrorService } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class CaseHistoryService { diff --git a/src/app/core/cases/case-tab.model.ts b/src/app/core/cases/case-tab.model.ts index f804ac71d..cf5002992 100644 --- a/src/app/core/cases/case-tab.model.ts +++ b/src/app/core/cases/case-tab.model.ts @@ -1,5 +1,4 @@ -import { CaseField } from '../../shared/domain/definition/case-field.model'; -import { Orderable } from '../order/orderable.model'; +import { CaseField, Orderable } from '@hmcts/ccd-case-ui-toolkit'; export class CaseTab implements Orderable { id: string; diff --git a/src/app/core/cases/case-view.model.ts b/src/app/core/cases/case-view.model.ts index 1eeb098ae..d7fc8e21e 100644 --- a/src/app/core/cases/case-view.model.ts +++ b/src/app/core/cases/case-view.model.ts @@ -1,7 +1,7 @@ import { CaseTab } from './case-tab.model'; import { CaseViewEvent } from './case-view-event.model'; import { CaseViewTrigger } from '../../shared/domain/case-view/case-view-trigger.model'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; +import { CaseField } from '@hmcts/ccd-case-ui-toolkit'; export class CaseView { case_id?: string; diff --git a/src/app/core/cases/cases.service.ts b/src/app/core/cases/cases.service.ts index 4c604bbe2..04ff38db3 100644 --- a/src/app/core/cases/cases.service.ts +++ b/src/app/core/cases/cases.service.ts @@ -2,17 +2,11 @@ import { Injectable } from '@angular/core'; import { CaseView } from './case-view.model'; import { Observable } from 'rxjs'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; -import { CaseEventData } from '../../shared/domain/case-event-data'; +import { CaseEventTrigger, CaseEventData, WizardPage, WizardPageField, ShowCondition, Draft, HttpService, + HttpErrorService } from '@hmcts/ccd-case-ui-toolkit'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import { OrderService } from '../order/order.service'; -import { WizardPageField } from '../../shared/domain/wizard-page-field.model'; -import { ShowCondition } from '../../shared/conditional-show/conditional-show.model'; -import { WizardPage } from '../../shared/domain/wizard-page.model'; -import { HttpErrorService } from '../http/http-error.service'; import { plainToClass } from 'class-transformer'; -import { Draft } from '../../shared/domain/draft'; @Injectable() export class CasesService { diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index e1235d5b5..14840c3fc 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -1,5 +1,5 @@ import { NgModule } from '@angular/core'; -import { CaseUIToolkitModule } from '@hmcts/ccd-case-ui-toolkit'; +import { CaseUIToolkitModule, FormValueService, FormErrorService, AddressesService, HttpErrorService, HttpService, AuthService } from '@hmcts/ccd-case-ui-toolkit'; import { CasesService } from './cases/cases.service'; import { DefinitionsService } from './definitions/definitions.service'; import { WindowService } from './utils/window.service'; @@ -11,22 +11,15 @@ import { ProfileResolver } from './profile/profile.resolver'; import { ProfileService } from './profile/profile.service'; import { SearchService } from './search/search.service'; import { PaginationService } from './pagination/pagination.service'; -import { HttpService } from './http/http.service'; import { OrderService } from './order/order.service'; -import { HttpErrorService } from './http/http-error.service'; import { AlertModule } from './alert/alert.module'; -import { FormValueService } from './form/form-value.service'; -import { FormErrorService } from './form/form-error.service'; import { JurisdictionService } from '../shared/jurisdiction.service'; import { ActivityService } from './activity/activity.service'; import { ActivityPollingService } from './activity/activity.polling.service'; -import { DocumentManagementService } from './documentManagement/documentManagement.service'; import { CaseEditWizardGuard } from './case-editor/case-edit-wizard.guard'; import { WizardFactoryService } from './case-editor/wizard-factory.service'; import { RouterHelperService } from './utils/router-helper.service'; import { RequestOptionsBuilder } from './request.options.builder'; -import { AddressesService } from './addresses/addresses.service'; -import { AuthService } from './auth/auth.service'; import { WorkbasketInputFilterService } from '../workbasket/workbasket-input-filter.service'; import { OAuth2Service } from './auth/oauth2.service'; import { ActivityResolver } from './activity/activity.resolver'; @@ -38,6 +31,7 @@ import { AccordionComponent } from '../shared/accordion/accordion.component'; import { DraftService } from './draft/draft.service'; import { CcdBrowserSupportComponent } from './ccd-browser-support/ccd-browser-support.component'; import { DeviceDetectorModule } from 'ngx-device-detector'; +import { DocumentManagementService } from '../shared/documentManagement/documentManagement.service'; @NgModule({ imports: [ diff --git a/src/app/core/definitions/definitions.service.spec.ts b/src/app/core/definitions/definitions.service.spec.ts index 73bc4e59b..b446a0eb7 100644 --- a/src/app/core/definitions/definitions.service.spec.ts +++ b/src/app/core/definitions/definitions.service.spec.ts @@ -1,6 +1,6 @@ import { Response, ResponseOptions } from '@angular/http'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; import { Observable } from 'rxjs/Observable'; import { DefinitionsService } from './definitions.service'; import { CaseType } from '../../shared/domain/definition/case-type.model'; diff --git a/src/app/core/definitions/definitions.service.ts b/src/app/core/definitions/definitions.service.ts index 77f4648f8..1acfe74a9 100644 --- a/src/app/core/definitions/definitions.service.ts +++ b/src/app/core/definitions/definitions.service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; import { CaseType } from '../../shared/domain/definition/case-type.model'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class DefinitionsService { diff --git a/src/app/core/draft/draft.service.ts b/src/app/core/draft/draft.service.ts index 8945b0e56..464dec112 100644 --- a/src/app/core/draft/draft.service.ts +++ b/src/app/core/draft/draft.service.ts @@ -1,10 +1,7 @@ import { Injectable } from '@angular/core'; -import { HttpService } from '../http/http.service'; import { AppConfig } from '../../app.config'; -import { HttpErrorService } from '../http/http-error.service'; -import { CaseEventData } from '../../shared/domain/case-event-data'; +import { CaseEventData, Draft, HttpService, HttpErrorService } from '@hmcts/ccd-case-ui-toolkit'; import { Observable } from 'rxjs'; -import { Draft } from '../../shared/domain/draft'; import { CaseView } from '../cases/case-view.model'; @Injectable() diff --git a/src/app/core/form/form-error.service.spec.ts b/src/app/core/form/form-error.service.spec.ts deleted file mode 100644 index 4fc3a6e7e..000000000 --- a/src/app/core/form/form-error.service.spec.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { FormErrorService } from './form-error.service'; -import { FormControl, FormGroup } from '@angular/forms'; - -describe('FormErrorService', () => { - - const FIELD_1 = 'Field1'; - const FIELD_2 = 'Field2'; - const FIELD_3 = 'Field3'; - const NESTED_FIELD = 'Field1.Field2.Field3'; - - const MESSAGE_1 = 'Some first message'; - const MESSAGE_2 = 'Some second message'; - - const ERROR_KEY = 'validation'; - - let formErrorService: FormErrorService; - - beforeEach(() => { - formErrorService = new FormErrorService(); - }); - - describe('mapFieldErrors', () => { - it('should map simple error to associated form control', () => { - let errors = [ - { - id: FIELD_1, - message: MESSAGE_1 - } - ]; - - let form = new FormGroup({ - [FIELD_1]: new FormControl() - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(form.controls[FIELD_1].errors[ERROR_KEY]).toBe(MESSAGE_1); - }); - - it('should map multiple simple errors', () => { - let errors = [ - { - id: FIELD_1, - message: MESSAGE_1 - }, - { - id: FIELD_2, - message: MESSAGE_2 - } - ]; - - let form = new FormGroup({ - [FIELD_1]: new FormControl(), - [FIELD_2]: new FormControl() - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(form.controls[FIELD_1].errors[ERROR_KEY]).toBe(MESSAGE_1); - expect(form.controls[FIELD_2].errors[ERROR_KEY]).toBe(MESSAGE_2); - }); - - it('should map nested errors', () => { - let errors = [ - { - id: NESTED_FIELD, - message: MESSAGE_1 - } - ]; - - let form = new FormGroup({ - [FIELD_1]: new FormGroup({ - [FIELD_2]: new FormGroup({ - [FIELD_3]: new FormControl() - }) - }) - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(((form - .controls[FIELD_1] as FormGroup) - .controls[FIELD_2] as FormGroup) - .controls[FIELD_3].errors[ERROR_KEY]).toBe(MESSAGE_1); - }); - - it('should ignore simple errors for unknown fields', () => { - let errors = [ - { - id: FIELD_2, - message: MESSAGE_1 - } - ]; - - let form = new FormGroup({ - [FIELD_1]: new FormControl() - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(form.controls[FIELD_1].errors).toBeNull(); - }); - - it('should ignore empty errors', () => { - let errors = []; - - let form = new FormGroup({ - [FIELD_1]: new FormControl() - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(form.controls[FIELD_1].errors).toBeNull(); - }); - - it('should ignore nested errors for unknown fields', () => { - let errors = [ - { - id: FIELD_1 + '.' + FIELD_3, - message: MESSAGE_1 - } - ]; - - let form = new FormGroup({ - [FIELD_1]: new FormGroup({ - [FIELD_2]: new FormControl() - }) - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(form.controls[FIELD_1].errors).toBeNull(); - expect((form - .controls[FIELD_1] as FormGroup) - .controls[FIELD_2].errors).toBeNull(); - }); - - it('should ignore nested errors for unknown group', () => { - let errors = [ - { - id: FIELD_3 + '.' + FIELD_3 + '.' + FIELD_3, - message: MESSAGE_1 - } - ]; - - let form = new FormGroup({ - [FIELD_1]: new FormGroup({ - [FIELD_2]: new FormGroup({ - [FIELD_3]: new FormControl() - }) - }) - }); - - formErrorService.mapFieldErrors(errors, form, ERROR_KEY); - - expect(form.controls[FIELD_1].errors).toBeNull(); - expect((form - .controls[FIELD_1] as FormGroup) - .controls[FIELD_2].errors).toBeNull(); - expect(((form - .controls[FIELD_1] as FormGroup) - .controls[FIELD_2] as FormGroup) - .controls[FIELD_3].errors).toBeNull(); - }); - - it('should reset all errors', () => { - let field3 = new FormControl(); - - let form = new FormGroup({ - [FIELD_1]: new FormGroup({ - [FIELD_2]: new FormGroup({ - [FIELD_3]: field3 - }) - }) - }); - - form.controls[FIELD_1].setErrors({ x: 'y' }); - - field3.setErrors({ q: 'z' }); - - form.reset(); - - expect(form.controls[FIELD_1].errors).toBeNull(); - expect(field3.errors).toBeNull(); - - }); - }); -}); diff --git a/src/app/core/form/form-error.service.ts b/src/app/core/form/form-error.service.ts deleted file mode 100644 index 0e41cc1af..000000000 --- a/src/app/core/form/form-error.service.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Injectable } from '@angular/core'; -import { FormArray, FormControl, FormGroup } from '@angular/forms'; - -@Injectable() -export class FormErrorService { - - public mapFieldErrors(errors: { id: string; message: string }[], form: FormGroup, errorKey: string): void { - - errors.forEach(error => { - let formControl = this.getFormControl(form, error.id); - - if (formControl) { - formControl.setErrors({ - [errorKey]: error.message - }); - } - }); - } - - private getFormControl(form: FormGroup, fieldId: string): FormControl { - let fields = fieldId.split('.'); - - let group: FormGroup = form; - let inArray = false; - let control: FormControl; - fields.every((field, index) => { - if (index === fields.length - 1) { - control = group.controls[field] as FormControl; - } else { - group = group.controls[field] as FormGroup; - - if (inArray && group.controls['value']) { - group = group.controls['value'] as FormGroup; - } - - if (group && group.constructor && FormArray.name === group.constructor.name) { - inArray = true; - } else { - inArray = false; - } - } - return !!group; - }); - - return control; - } -} diff --git a/src/app/core/form/form-validators.service.spec.ts b/src/app/core/form/form-validators.service.spec.ts deleted file mode 100644 index 292d425ff..000000000 --- a/src/app/core/form/form-validators.service.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { FormValidatorsService } from './form-validators.service'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; -import { aCaseField } from '../../shared/case-editor/case-edit.spec'; -import { FormControl } from '@angular/forms'; - -describe('FormValidatorsService', () => { - - let formValidatorsService: FormValidatorsService = new FormValidatorsService(); - - it('should not add REQUIRED validator for OPTIONAL fields', () => { - let formControl: FormControl = new FormControl(); - let caseField: CaseField = aCaseField('id', 'label', 'Text', 'OPTIONAL', null); - let result: FormControl = formValidatorsService.addValidators(caseField, formControl); - result.markAsTouched(); - result.updateValueAndValidity(); - expect(result.invalid).toBeFalsy(); - }); - - it('should return add REQUIRED validator for MANDATORY fields', () => { - let formControl: FormControl = new FormControl(); - let caseField: CaseField = aCaseField('id', 'label', 'Text', 'MANDATORY', null); - let result: FormControl = formValidatorsService.addValidators(caseField, formControl); - result.markAsTouched(); - result.updateValueAndValidity(); - expect(result.invalid).toBeTruthy(); - }); -}); diff --git a/src/app/core/form/form-validators.service.ts b/src/app/core/form/form-validators.service.ts deleted file mode 100644 index ebf9d384a..000000000 --- a/src/app/core/form/form-validators.service.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; -import { FormControl, Validators } from '@angular/forms'; -import { FieldTypeEnum } from '../../shared/domain/definition/field-type-enum.model'; - -@Injectable() -export class FormValidatorsService { - static readonly MANDATORY: string = 'MANDATORY'; - private readonly CUSTOM_VALIDATED_TYPES: FieldTypeEnum[] = [ - 'Date', 'MoneyGBP' - ]; - - addValidators(caseField: CaseField, control: FormControl): FormControl { - if (caseField.display_context === FormValidatorsService.MANDATORY - && this.CUSTOM_VALIDATED_TYPES.indexOf(caseField.field_type.type) === -1) { - let validators = [Validators.required]; - if (control.validator) { - validators.push(control.validator); - } - control.setValidators(validators); - } - return control; - } -} diff --git a/src/app/core/form/form-value.service.spec.ts b/src/app/core/form/form-value.service.spec.ts deleted file mode 100644 index 3b207c7f6..000000000 --- a/src/app/core/form/form-value.service.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { FormValueService } from './form-value.service'; - -describe('FormValueService', () => { - - let formValueService: FormValueService; - - beforeEach(() => { - formValueService = new FormValueService(); - }); - - it('should return null when given null', () => { - let value = formValueService.sanitise(null); - - expect(value).toEqual(null); - }); - - it('should trim spaces from strings', () => { - let value = formValueService.sanitise({ - 'string1': ' x ', - 'string2': ' y ' - }); - - expect(value).toEqual({ - 'string1': 'x', - 'string2': 'y' - } as object); - }); - - it('should trim spaces from strings recursively', () => { - let value = formValueService.sanitise({ - 'object': { - 'string1': ' x ' - }, - 'string2': ' y ' - }); - - expect(value).toEqual({ - 'object': { - 'string1': 'x' - }, - 'string2': 'y' - } as object); - }); - - it('should trim spaces from strings in collection', () => { - let value = formValueService.sanitise({ - 'collection': [ - { - 'value': ' x ' - } - ] - }); - - expect(value).toEqual({ - 'collection': [ - { - 'value': 'x' - } - ] - } as object); - }); - - it('should convert numbers to strings', () => { - let value = formValueService.sanitise({ - 'number': 42 - }); - - expect(value).toEqual({ - 'number': '42' - } as object); - }); -}); diff --git a/src/app/core/form/form-value.service.ts b/src/app/core/form/form-value.service.ts deleted file mode 100644 index 3d92843bd..000000000 --- a/src/app/core/form/form-value.service.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; - -@Injectable() -export class FormValueService { - - public sanitise(rawValue: object): object { - return this.sanitiseObject(rawValue); - } - - private sanitiseObject(rawObject: object): object { - if (!rawObject) { - return rawObject; - } - - let sanitisedObject = {}; - Object.keys(rawObject).forEach(key => { - sanitisedObject[key] = this.sanitiseValue(rawObject[key]); - }); - return sanitisedObject; - } - - private sanitiseArray(rawArray: any[]): any[] { - if (!rawArray) { - return rawArray; - } - - rawArray.forEach(item => { - if (item.hasOwnProperty('value')) { - item.value = this.sanitiseValue(item.value); - } - }); - - return rawArray; - } - - private sanitiseValue(rawValue: any): any { - if (Array.isArray(rawValue)) { - return this.sanitiseArray(rawValue); - } - - switch (typeof rawValue) { - case 'object': - return this.sanitiseObject(rawValue); - case 'string': - return rawValue.trim(); - case 'number': - return String(rawValue); - default: - return rawValue; - } - } - - filterCurrentPageFields(caseFields: CaseField[], editFrom: any): any { - let cloneForm = JSON.parse(JSON.stringify(editFrom)); - Object.keys(cloneForm['data']).forEach((key) => { - if (caseFields.findIndex((element) => element.id === key) < 0) { - delete cloneForm['data'][key]; - } - }); - return cloneForm; - } - -} diff --git a/src/app/core/http/http-error.model.spec.ts b/src/app/core/http/http-error.model.spec.ts deleted file mode 100644 index 22b444b39..000000000 --- a/src/app/core/http/http-error.model.spec.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { HttpError } from './http-error.model'; - -describe('HttpError', () => { - - beforeEach(() => { - jasmine.clock().uninstall(); - jasmine.clock().install(); - jasmine.clock().mockDate(new Date()); - }); - - afterEach(() => { - jasmine.clock().uninstall(); - }); - - describe('from()', () => { - - const ERROR_FULL = { - 'timestamp': '2017-05-24T15:24:17.857+0000', - 'status': 422, - 'error': 'Unprocessable Entity', - 'exception': 'uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException', - 'message': 'string is not a known event ID for the specified case type TestAddressBookCase', - 'path': '/caseworkers/0/jurisdictions/TEST/case-types/TestAddressBookCase/cases' - }; - - const ERROR_PARTIAL = { - 'status': 422, - 'error': 'Unprocessable Entity', - 'exception': 'uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException', - 'path': '/caseworkers/0/jurisdictions/TEST/case-types/TestAddressBookCase/cases' - }; - - it('should return default error when given empty object', () => { - let error = HttpError.from({}); - - expect(error).toEqual(new HttpError()); - }); - - it('should copy all known properties from object to error', () => { - let error = HttpError.from(ERROR_FULL); - - let expectedError = new HttpError(); - expectedError.timestamp = ERROR_FULL.timestamp; - expectedError.status = ERROR_FULL.status; - expectedError.error = ERROR_FULL.error; - expectedError.exception = ERROR_FULL.exception; - expectedError.message = ERROR_FULL.message; - expectedError.path = ERROR_FULL.path; - - expect(error).toEqual(expectedError); - }); - - it('should ignore unknown properties from object to error', () => { - let error = HttpError.from(ERROR_PARTIAL); - - let expectedError = new HttpError(); - expectedError.status = ERROR_PARTIAL.status; - expectedError.error = ERROR_PARTIAL.error; - expectedError.exception = ERROR_PARTIAL.exception; - expectedError.path = ERROR_PARTIAL.path; - - expect(error).toEqual(expectedError); - }); - - it('should ignore additional properties of object', () => { - let error = HttpError.from({ unknown: 'xxx'}); - - expect(error).toEqual(new HttpError()); - }); - - }); - -}); diff --git a/src/app/core/http/http-error.model.ts b/src/app/core/http/http-error.model.ts deleted file mode 100644 index f98af5b23..000000000 --- a/src/app/core/http/http-error.model.ts +++ /dev/null @@ -1,36 +0,0 @@ -export class HttpError { - private static readonly DEFAULT_ERROR = 'Unknown error'; - private static readonly DEFAULT_MESSAGE = 'Something unexpected happened, our technical staff have been automatically notified'; - - timestamp: string; - status: number; - error: string; - exception: string; - message: string; - path: string; - details?: any; - callbackErrors?: any; - callbackWarnings?: any; - - static from(data: object): HttpError { - let error = new HttpError(); - - Object - .keys(error) - .forEach(key => error[key] = data.hasOwnProperty(key) && data[key] ? data[key] : error[key]); - - return error; - } - - constructor() { - this.timestamp = new Date().toISOString(); - this.error = HttpError.DEFAULT_ERROR; - this.message = HttpError.DEFAULT_MESSAGE; - this.status = null; - this.exception = null; - this.path = null; - this.details = null; - this.callbackErrors = null; - this.callbackWarnings = null; - } -} diff --git a/src/app/core/http/http-error.service.spec.ts b/src/app/core/http/http-error.service.spec.ts deleted file mode 100644 index 88ede52ac..000000000 --- a/src/app/core/http/http-error.service.spec.ts +++ /dev/null @@ -1,173 +0,0 @@ -import { HttpErrorService } from './http-error.service'; -import { HttpError } from './http-error.model'; -import { Headers, Response, ResponseOptions } from '@angular/http'; -import { AuthService } from '../auth/auth.service'; - -describe('HttpErrorService', () => { - const CURRENT_URL = 'http://core-case-data.common-components.reform'; - const ERROR_MESSAGE = 'Nein! Nein! Nein!'; - const VALID_ERROR_BODY = { - 'timestamp': '2017-05-24T15:24:17.857+0000', - 'status': 422, - 'error': 'Unprocessable Entity', - 'exception': 'uk.gov.hmcts.ccd.endpoint.exceptions.ValidationException', - 'message': 'string is not a known event ID for the specified case type TestAddressBookCase', - 'path': '/caseworkers/0/jurisdictions/TEST/case-types/TestAddressBookCase/cases' - }; - - const HTTP_401_ERROR_BODY = { - 'timestamp': '2017-05-24T15:24:17.857+0000', - 'status': 401, - 'error': 'Unauthorized', - 'message': 'Unauthorized user...', - 'path': CURRENT_URL - }; - const HTTP_403_ERROR_BODY = { - 'timestamp': '2017-05-24T15:24:17.857+0000', - 'status': 403, - 'error': 'Forbidden', - 'message': 'The server understood the request but refuses to authorize it....', - 'path': CURRENT_URL - }; - const VALID_ERROR_RESPONSE = new Response(new ResponseOptions({ - headers: new Headers({ - 'Content-Type': 'application/json', - }), - body: JSON.stringify(VALID_ERROR_BODY), - status: 422 - })); - const VALID_ERROR_RESPONSE_WITH_CHARSET = new Response(new ResponseOptions({ - headers: new Headers({ - 'Content-Type': 'application/json;charset=UTF-8', - }), - body: JSON.stringify(VALID_ERROR_BODY), - status: 422 - })); - - const NOT_VALID_ERROR_RESPONSE = new Response(new ResponseOptions({ - headers: new Headers({ - 'Content-Type': 'application/json', - }), - body: '{notvalidjson}' - })); - - const HTTP_401_RESPONSE = new Response(new ResponseOptions({ - headers: new Headers({ - 'Content-Type': 'application/json', - }), - body: JSON.stringify(HTTP_401_ERROR_BODY), - status: 401 - })); - - const HTTP_403_RESPONSE = new Response(new ResponseOptions({ - headers: new Headers({ - 'Content-Type': 'application/json', - }), - body: JSON.stringify(HTTP_403_ERROR_BODY), - status: 403 - })); - - let authService: any; - let errorService: HttpErrorService; - - beforeEach(() => { - authService = jasmine.createSpyObj('authService', ['signIn']); - - errorService = new HttpErrorService(authService); - - jasmine.clock().uninstall(); - jasmine.clock().install(); - jasmine.clock().mockDate(new Date()); - }); - - afterEach(() => { - jasmine.clock().uninstall(); - }); - - describe('handle()', () => { - - it('should return default error when no error given', (done) => { - errorService.handle(null) - .subscribe( - () => fail('no error'), - error => { - expect(error).not.toBeNull(); - expect(error.error).toEqual('Unknown error'); - expect(error.message).toEqual('Something unexpected happened, our technical staff have been automatically notified'); - done(); - } - ); - }); - - it('should convert a valid Response error into an HttpError', (done) => { - errorService.handle(VALID_ERROR_RESPONSE) - .subscribe( - () => fail('no error'), - error => { - expect(error).toEqual(HttpError.from(VALID_ERROR_BODY)); - done(); - } - ); - }); - - it('should handle a valid Response with charsetInfo', (done) => { - errorService.handle(VALID_ERROR_RESPONSE_WITH_CHARSET) - .subscribe( - () => fail('no error'), - error => { - expect(error).toEqual(HttpError.from(VALID_ERROR_BODY)); - done(); - } - ); - }); - - it('should convert a non-valid Response error into an HttpError', (done) => { - errorService.handle(NOT_VALID_ERROR_RESPONSE) - .subscribe( - () => fail('no error'), - error => { - expect(error).toEqual(new HttpError()); - done(); - } - ); - }); - - it('should use message when error is an unknown object with a message property', (done) => { - let expectedError = new HttpError(); - expectedError.message = ERROR_MESSAGE; - - errorService.handle({ - message: ERROR_MESSAGE - }) - .subscribe( - () => fail('no error'), - error => { - expect(error).toEqual(expectedError); - done(); - } - ); - }); - - it('should trigger sign-in when IDAM returns HTTP-401 as response', () => { - errorService.handle(HTTP_401_RESPONSE); - expect(authService.signIn).toHaveBeenCalled(); - }); - - it('should trigger sign-in when IDAM returns HTTP-403 as response', () => { - errorService.handle(HTTP_403_RESPONSE); - expect(authService.signIn).toHaveBeenCalled(); - }); - - it('should empty error when removed', () => { - errorService.setError(VALID_ERROR_BODY); - - let error = errorService.removeError(); - - expect(error).toEqual(VALID_ERROR_BODY); - - error = errorService.removeError(); - - expect(error).toEqual(null); - }); - }); -}); diff --git a/src/app/core/http/http-error.service.ts b/src/app/core/http/http-error.service.ts deleted file mode 100644 index d858bd3da..000000000 --- a/src/app/core/http/http-error.service.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpError } from './http-error.model'; -import { Observable, throwError } from 'rxjs'; -import { Response } from '@angular/http'; -import { AuthService } from '../auth/auth.service'; - -@Injectable() -export class HttpErrorService { - - private static readonly CONTENT_TYPE = 'Content-Type'; - private static readonly APPLICATION_JSON = 'application/json'; - - private error: HttpError; - - constructor(private authService: AuthService) { - } - - setError(error: HttpError) { - this.error = error; - } - - removeError(): HttpError { - let error = this.error; - this.error = null; - return error; - } - - handle(error: Response | any, redirectIfNotAuthorised = true): Observable { - let httpError = new HttpError(); - if (error instanceof Response) { - if (error.headers - && error.headers.get(HttpErrorService.CONTENT_TYPE) - && error.headers.get(HttpErrorService.CONTENT_TYPE).startsWith(HttpErrorService.APPLICATION_JSON)) { - try { - httpError = HttpError.from(error.json() || {}); - } catch (e) { - console.error(e, e.message); - } - } - if (!httpError.status) { - httpError.status = error.status; - } - } else if (error) { - if (error.message) { - httpError.message = error.message; - } - if (error.status) { - httpError.status = error.status; - } - } - if (redirectIfNotAuthorised && (httpError.status === 401 || httpError.status === 403)) { - this.authService.signIn(); - } - - return throwError(httpError); - } -} diff --git a/src/app/core/http/http.service.spec.ts b/src/app/core/http/http.service.spec.ts deleted file mode 100644 index 3422d3fa6..000000000 --- a/src/app/core/http/http.service.spec.ts +++ /dev/null @@ -1,289 +0,0 @@ -import { HttpService } from './http.service'; -import { Headers, Http, RequestOptionsArgs, Response, ResponseOptions } from '@angular/http'; -import createSpyObj = jasmine.createSpyObj; -import any = jasmine.any; -import { HttpErrorService } from './http-error.service'; -import { Observable, of, throwError } from 'rxjs'; - -describe('HttpService', () => { - - const URL = 'http://ccd.reform/'; - const HEADER_1 = 'x-header1'; - const HEADER_1_VALUE = 'x-header1-value'; - const HEADERS = new Headers({}); - const CONTENT_TYPE_HEADER = 'Content-Type'; - const CONTENT_TYPE_HEADER_VALUE = 'X-rated'; - const ACCEPT_HEADER = 'Accept'; - const ACCEPT_HEADER_VALUE = 'text/ccd'; - const HEADERS_WITH_CONTENT_TYPE_DEFINED = new Headers({}); - const HEADERS_WITH_CONTENT_TYPE_NULL = new Headers({}); - const BODY = JSON.stringify({}); - const error = { - message: '' - }; - HEADERS.append(HEADER_1, HEADER_1_VALUE); - HEADERS_WITH_CONTENT_TYPE_DEFINED.append(CONTENT_TYPE_HEADER, CONTENT_TYPE_HEADER_VALUE); - HEADERS_WITH_CONTENT_TYPE_DEFINED.append(ACCEPT_HEADER, ACCEPT_HEADER_VALUE); - HEADERS_WITH_CONTENT_TYPE_NULL.append(CONTENT_TYPE_HEADER, null); - HEADERS_WITH_CONTENT_TYPE_NULL.append(ACCEPT_HEADER, null); - const EXPECTED_RESPONSE = of(new Response(new ResponseOptions())); - - let httpService: HttpService; - - let httpMock: any; - let httpErrorService: any; - let catchObservable: any; - - beforeEach(() => { - catchObservable = createSpyObj>('observable', ['pipe']); - catchObservable.pipe.and.returnValue(EXPECTED_RESPONSE); - - httpMock = createSpyObj('http', ['get', 'post', 'put', 'delete']); - httpMock.get.and.returnValue(catchObservable); - httpMock.post.and.returnValue(catchObservable); - httpMock.put.and.returnValue(catchObservable); - httpMock.delete.and.returnValue(catchObservable); - - httpErrorService = createSpyObj('httpErrorService', ['handle']); - httpErrorService.handle.and.returnValue(throwError(error)); - - httpService = new HttpService(httpMock, httpErrorService); - }); - - describe('get', () => { - - it('should forward simple call to Angular Http service', () => { - let response = httpService.get(URL); - - expect(httpMock.get).toHaveBeenCalledWith(URL, any(Object)); - expect(response).toBe(EXPECTED_RESPONSE); - }); - - it('should forward headers to Angular Http service', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.get(URL, options); - - expect(httpMock.get).toHaveBeenCalledWith(URL, options); - }); - - it('should sanitise headers when provided', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.get(URL, options); - - expectHeadersToBeSanitized(httpMock.get.calls.mostRecent().args[1]); - }); - - it('should not add `content-type` and `accept` headers when defined', () => { - let options: RequestOptionsArgs = { - headers: HEADERS_WITH_CONTENT_TYPE_DEFINED, - withCredentials: true, - }; - - httpService.get(URL, options); - - let headers = httpMock.get.calls.mostRecent().args[1].headers; - expect(headers.get('Content-Type')).toEqual(CONTENT_TYPE_HEADER_VALUE); - expect(headers.get('Accept')).toEqual(ACCEPT_HEADER_VALUE); - }); - - it('should not add `content-type` and `accept` headers when defined with null values', () => { - let options: RequestOptionsArgs = { - headers: HEADERS_WITH_CONTENT_TYPE_NULL, - withCredentials: true, - }; - - httpService.get(URL, options); - - let headers = httpMock.get.calls.mostRecent().args[1].headers; - expect(headers.get('Content-Type')).toBe(null); - expect(headers.get('Accept')).toBe(null); - }); - - it('should add `content-type` and `accept` headers when not defined', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.get(URL, options); - - let headers = httpMock.get.calls.mostRecent().args[1].headers; - expect(headers.get('Content-Type')).toEqual('application/json'); - expect(headers.get('Accept')).toEqual('application/json'); - }); - - it('should catch with http-error service', () => { - httpMock.get.and.returnValue(throwError(error)); - httpService.get(URL).subscribe(() => {}, () => {}); - expect(httpErrorService.handle).toHaveBeenCalledWith(error, true); - }); - }); - - describe('post', () => { - - it('should forward simple call to Angular Http service', () => { - let response = httpService.post(URL, BODY); - - expect(httpMock.post).toHaveBeenCalledWith(URL, BODY, any(Object)); - expect(response).toBe(EXPECTED_RESPONSE); - }); - - it('should forward headers to Angular Http service', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.post(URL, BODY, options); - - expect(httpMock.post).toHaveBeenCalledWith(URL, BODY, options); - }); - - it('should sanitise headers when provided', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.post(URL, BODY, options); - - expectHeadersToBeSanitized(httpMock.post.calls.mostRecent().args[2]); - }); - - it('should catch with http-error service', () => { - httpMock.post.and.returnValue(Observable.throw(error)); - httpService.post(URL, BODY).subscribe(() => {}, () => {}); - expect(httpErrorService.handle).toHaveBeenCalledWith(error, true); - }); - - it('should add a `content-type` and `accept` headers', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.post(URL, BODY, options); - - let headers = httpMock.post.calls.mostRecent().args[2].headers; - expect(headers.get('Content-Type')).toEqual('application/json'); - expect(headers.get('Accept')).toEqual('application/json'); - }); - }); - - describe('put', () => { - - it('should forward simple call to Angular Http service', () => { - let response = httpService.put(URL, BODY); - - expect(httpMock.put).toHaveBeenCalledWith(URL, BODY, any(Object)); - expect(response).toBe(EXPECTED_RESPONSE); - }); - - it('should forward headers to Angular Http service', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.put(URL, BODY, options); - - expect(httpMock.put).toHaveBeenCalledWith(URL, BODY, options); - }); - - it('should sanitise headers when provided', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.put(URL, BODY, options); - - expectHeadersToBeSanitized(httpMock.put.calls.mostRecent().args[2]); - }); - - it('should catch with http-error service', () => { - httpMock.put.and.returnValue(Observable.throw(error)); - httpService.put(URL, BODY).subscribe(() => {}, () => {}); - expect(httpErrorService.handle).toHaveBeenCalledWith(error); - }); - - it('should add a `content-type` and `accept` headers', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.put(URL, BODY, options); - - let headers = httpMock.put.calls.mostRecent().args[2].headers; - expect(headers.get('Content-Type')).toEqual('application/json'); - expect(headers.get('Accept')).toEqual('application/json'); - }); - }); - - describe('delete', () => { - - it('should forward simple call to Angular Http service', () => { - let response = httpService.delete(URL); - - expect(httpMock.delete).toHaveBeenCalledWith(URL, any(Object)); - expect(response).toBe(EXPECTED_RESPONSE); - }); - - it('should forward headers to Angular Http service', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.delete(URL, options); - - expect(httpMock.delete).toHaveBeenCalledWith(URL, options); - }); - - it('should sanitise headers when provided', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.delete(URL, options); - - expectHeadersToBeSanitized(httpMock.delete.calls.mostRecent().args[1]); - }); - - it('should catch with http-error service', () => { - httpMock.delete.and.returnValue(Observable.throw(error)); - httpService.delete(URL).subscribe(() => {}, () => {}); - expect(httpErrorService.handle).toHaveBeenCalledWith(error); - }); - - it('should add a `content-type` and `accept` headers', () => { - let options: RequestOptionsArgs = { - headers: HEADERS, - withCredentials: true, - }; - - httpService.delete(URL, options); - - let headers = httpMock.delete.calls.mostRecent().args[1].headers; - expect(headers.get('Content-Type')).toEqual('application/json'); - expect(headers.get('Accept')).toEqual('application/json'); - }); - }); - - function expectHeadersToBeSanitized(options) { - let headers = options.headers; - - expect(headers).toBeDefined(); - expect(headers.get(HEADER_1)).toEqual(HEADER_1_VALUE); - } -}); diff --git a/src/app/core/http/http.service.ts b/src/app/core/http/http.service.ts deleted file mode 100644 index a73684bd7..000000000 --- a/src/app/core/http/http.service.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable, throwError } from 'rxjs'; -import { Headers, Http, RequestOptionsArgs, Response } from '@angular/http'; -import { HttpErrorService } from './http-error.service'; -import 'rxjs/add/operator/catch'; -import { catchError } from 'rxjs/operators'; - -@Injectable() -export class HttpService { - - private static readonly HEADER_ACCEPT = 'Accept'; - private static readonly HEADER_CONTENT_TYPE = 'Content-Type'; - - constructor( - private http: Http, - private httpErrorService: HttpErrorService - ) {} - - /** - * - * @param url Url resolved using UrlResolverService - * @param options - * @returns {Observable} - * @see UrlResolverService - */ - public get(url: string, options?: RequestOptionsArgs, redirectIfNotAuthorised = true): Observable { - return this.http - .get(url, this.sanitiseOptions(options)) - .pipe( - catchError(res => { - return this.httpErrorService.handle(res, redirectIfNotAuthorised); - }) - ); - } - - /** - * - * @param url Url resolved using UrlResolverService - * @param body - * @param options - * @returns {Observable} - * @see UrlResolverService - */ - public post(url: string, body: any, options?: RequestOptionsArgs, redirectIfNotAuthorised = true): Observable { - return this.http - .post(url, body, this.sanitiseOptions(options)) - .pipe( - catchError(res => { - return this.httpErrorService.handle(res, redirectIfNotAuthorised); - }) - ); - } - - /** - * - * @param url Url resolved using UrlResolverService - * @param body - * @param options - * @returns {Observable} - * @see UrlResolverService - */ - public put(url: string, body: any, options?: RequestOptionsArgs): Observable { - return this.http - .put(url, body, this.sanitiseOptions(options)) - .pipe( - catchError(res => { - return this.httpErrorService.handle(res); - }) - ); - } - - /** - * - * @param url Url resolved using UrlResolverService - * @param options - * @returns {Observable} - * @see UrlResolverService - */ - public delete(url: string, options?: RequestOptionsArgs): Observable { - return this.http - .delete(url, this.sanitiseOptions(options)) - .pipe( - catchError(res => { - return this.httpErrorService.handle(res); - }) - ); - } - - private sanitiseOptions(options?: RequestOptionsArgs): RequestOptionsArgs { - options = options || {}; - options.withCredentials = true; - - this.sanitiseHeaders(options); - - return options; - } - - private sanitiseHeaders(options?: RequestOptionsArgs) { - if (!options.headers) { - options.headers = new Headers(); - } - - if (!options.headers.has(HttpService.HEADER_ACCEPT)) { - options.headers.set(HttpService.HEADER_ACCEPT, 'application/json'); - } - if (!options.headers.has(HttpService.HEADER_CONTENT_TYPE)) { - options.headers.set(HttpService.HEADER_CONTENT_TYPE, 'application/json'); - } - - if (null === options.headers.get(HttpService.HEADER_CONTENT_TYPE)) { - options.headers.delete(HttpService.HEADER_CONTENT_TYPE); - } - } -} diff --git a/src/app/core/order/order.service.ts b/src/app/core/order/order.service.ts index 6a476c28d..bd94f581e 100644 --- a/src/app/core/order/order.service.ts +++ b/src/app/core/order/order.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { Orderable } from './orderable.model'; +import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class OrderService { diff --git a/src/app/core/order/orderable.model.ts b/src/app/core/order/orderable.model.ts deleted file mode 100644 index 827c60f98..000000000 --- a/src/app/core/order/orderable.model.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface Orderable { - order?: number; -} diff --git a/src/app/core/pagination/pagination.service.ts b/src/app/core/pagination/pagination.service.ts index 510856bfe..f1868c90a 100644 --- a/src/app/core/pagination/pagination.service.ts +++ b/src/app/core/pagination/pagination.service.ts @@ -4,8 +4,8 @@ import { RequestOptionsArgs } from '@angular/http'; import 'rxjs/add/operator/map'; import { Observable } from 'rxjs'; import { PaginationMetadata } from '../../shared/search/pagination-metadata.model'; -import { HttpService } from '../http/http.service'; import { RequestOptionsBuilder } from '../request.options.builder'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class PaginationService { diff --git a/src/app/core/profile/profile.service.ts b/src/app/core/profile/profile.service.ts index 865a7d5f2..592074ba2 100644 --- a/src/app/core/profile/profile.service.ts +++ b/src/app/core/profile/profile.service.ts @@ -4,8 +4,8 @@ import { Observable } from 'rxjs'; import { Response } from '@angular/http'; import 'rxjs/add/operator/map'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; import { plainToClass } from 'class-transformer'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class ProfileService { diff --git a/src/app/core/search/field.model.ts b/src/app/core/search/field.model.ts index b201cef5d..6bab934ea 100644 --- a/src/app/core/search/field.model.ts +++ b/src/app/core/search/field.model.ts @@ -1,4 +1,4 @@ -import { FieldType } from '../../shared/domain/definition/field-type.model'; +import { FieldType } from '@hmcts/ccd-case-ui-toolkit'; export class Field { constructor( diff --git a/src/app/core/search/search-input.model.ts b/src/app/core/search/search-input.model.ts index 3a224f563..6954d153e 100644 --- a/src/app/core/search/search-input.model.ts +++ b/src/app/core/search/search-input.model.ts @@ -1,5 +1,5 @@ import { Field } from './field.model'; -import { Orderable } from '../order/orderable.model'; +import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; export class SearchInput implements Orderable { constructor( diff --git a/src/app/core/search/search-input.test.fixture.ts b/src/app/core/search/search-input.test.fixture.ts index 5bed40ec9..9c0475dcc 100644 --- a/src/app/core/search/search-input.test.fixture.ts +++ b/src/app/core/search/search-input.test.fixture.ts @@ -1,6 +1,6 @@ import { SearchInput } from './search-input.model'; import { Field } from './field.model'; -import { FieldType } from '../../shared/domain/definition/field-type.model'; +import { FieldType } from '@hmcts/ccd-case-ui-toolkit'; export let createSearchInputs = () => { const fieldType = new FieldType(); diff --git a/src/app/core/search/search.service.ts b/src/app/core/search/search.service.ts index 3b2e6a450..abaef00bb 100644 --- a/src/app/core/search/search.service.ts +++ b/src/app/core/search/search.service.ts @@ -5,8 +5,8 @@ import 'rxjs/add/operator/map'; import { Observable } from 'rxjs'; import { SearchResultView } from '../../shared/search/search-result-view.model'; import { SearchInput } from './search-input.model'; -import { HttpService } from '../http/http.service'; import { RequestOptionsBuilder, SearchView } from '../request.options.builder'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class SearchService { diff --git a/src/app/error/error.component.ts b/src/app/error/error.component.ts index fbc012bb2..83079b77a 100644 --- a/src/app/error/error.component.ts +++ b/src/app/error/error.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { HttpErrorService } from '../core/http/http-error.service'; +import { HttpErrorService } from '@hmcts/ccd-case-ui-toolkit'; @Component({ templateUrl: './error.html' diff --git a/src/app/fixture/shared.fixture.ts b/src/app/fixture/shared.fixture.ts deleted file mode 100644 index 89fb8bdb5..000000000 --- a/src/app/fixture/shared.fixture.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { CaseField } from '../shared/domain/definition/case-field.model'; -import { CaseEventTrigger } from '../shared/domain/case-view/case-event-trigger.model'; - -export let createCaseEventTrigger = (id: string, - name: string, - case_id: string, - show_summary: boolean, - case_fields: CaseField[], - wizard_pages = [], - can_save_draft = false) => { - const eventTrigger = new CaseEventTrigger(); - - eventTrigger.id = id; - eventTrigger.name = name; - eventTrigger.case_id = case_id; - eventTrigger.show_summary = show_summary; - eventTrigger.wizard_pages = wizard_pages; - eventTrigger.event_token = 'test-token'; - eventTrigger.case_fields = case_fields; - eventTrigger.can_save_draft = can_save_draft; - return eventTrigger; -}; diff --git a/src/app/oauth2/oauth2-redirect.component.ts b/src/app/oauth2/oauth2-redirect.component.ts index 2cdfe3b9c..a7286f469 100644 --- a/src/app/oauth2/oauth2-redirect.component.ts +++ b/src/app/oauth2/oauth2-redirect.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { OAuth2Service } from '../core/auth/oauth2.service'; -import { AuthService } from '../core/auth/auth.service'; +import { AuthService } from '@hmcts/ccd-case-ui-toolkit'; @Component({ templateUrl: './oauth2-redirect.html', diff --git a/src/app/shared/case-editor/case-edit-confirm.component.ts b/src/app/shared/case-editor/case-edit-confirm.component.ts index 00eea040e..d275ecd9b 100644 --- a/src/app/shared/case-editor/case-edit-confirm.component.ts +++ b/src/app/shared/case-editor/case-edit-confirm.component.ts @@ -3,7 +3,7 @@ import { FormControl } from '@angular/forms'; import { CaseEditComponent } from './case-edit.component'; import { Router } from '@angular/router'; import { Confirmation } from './confirmation.model'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; @Component({ templateUrl: './case-edit-confirm.html', diff --git a/src/app/shared/case-editor/case-edit-form.component.ts b/src/app/shared/case-editor/case-edit-form.component.ts index 64cf199e9..f1bd474e0 100644 --- a/src/app/shared/case-editor/case-edit-form.component.ts +++ b/src/app/shared/case-editor/case-edit-form.component.ts @@ -1,5 +1,5 @@ import { Component, Input } from '@angular/core'; -import { CaseField } from '../domain/definition/case-field.model'; +import { CaseField } from '@hmcts/ccd-case-ui-toolkit'; import { FormGroup } from '@angular/forms'; @Component({ diff --git a/src/app/shared/case-editor/case-edit-page.component.ts b/src/app/shared/case-editor/case-edit-page.component.ts index 852242751..13f74702f 100644 --- a/src/app/shared/case-editor/case-edit-page.component.ts +++ b/src/app/shared/case-editor/case-edit-page.component.ts @@ -1,18 +1,13 @@ import { AfterViewChecked, ChangeDetectorRef, Component, OnInit } from '@angular/core'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, WizardPage, CaseEventData, FormValueService, FormErrorService, DRAFT, + HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { FormGroup } from '@angular/forms'; import { CaseEditComponent } from './case-edit.component'; import { ActivatedRoute } from '@angular/router'; -import { WizardPage } from '../domain/wizard-page.model'; -import { CaseEventData } from '../domain/case-event-data'; -import { FormValueService } from '../../core/form/form-value.service'; import { CallbackErrorsComponent } from '../error/callback-errors.component'; import { Subject } from 'rxjs/Subject'; -import { HttpError } from '../../core/http/http-error.model'; -import { FormErrorService } from '../../core/form/form-error.service'; import { CallbackErrorsContext } from '../error/error-context'; import { PageValidationService } from './page-validation.service'; -import { Draft } from '../domain/draft'; @Component({ selector: 'ccd-case-edit-page', @@ -140,7 +135,7 @@ export class CaseEditPageComponent implements OnInit, AfterViewChecked { draftCaseEventData.event_token = this.eventTrigger.event_token; draftCaseEventData.ignore_warning = this.ignoreWarning; this.caseEdit.saveDraft(draftCaseEventData).subscribe( - (draft) => this.eventTrigger.case_id = Draft.DRAFT + draft.id, error => this.handleError(error) + (draft) => this.eventTrigger.case_id = DRAFT + draft.id, error => this.handleError(error) ); } } diff --git a/src/app/shared/case-editor/case-edit-submit.component.ts b/src/app/shared/case-editor/case-edit-submit.component.ts index 97dfeb486..2350a6322 100644 --- a/src/app/shared/case-editor/case-edit-submit.component.ts +++ b/src/app/shared/case-editor/case-edit-submit.component.ts @@ -1,24 +1,16 @@ import { Component, OnInit } from '@angular/core'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, CaseEventData, FormValueService, CaseField, WizardPage, CaseFieldService, + PaletteContext, FormErrorService, FieldsUtils, HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { FormGroup } from '@angular/forms'; -import { CaseEventData } from '../domain/case-event-data'; -import { FormValueService } from '../../core/form/form-value.service'; import { CaseEditComponent } from './case-edit.component'; -import { HttpError } from '../../core/http/http-error.model'; -import { FormErrorService } from '../../core/form/form-error.service'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsComponent } from '../error/callback-errors.component'; import { CallbackErrorsContext } from '../error/error-context'; -import { CaseField } from '../domain/definition/case-field.model'; -import { WizardPage } from '../domain/wizard-page.model'; -import { FieldsUtils } from '../utils/fields.utils'; import { ActivatedRoute } from '@angular/router'; import { Profile } from '../../core/profile/profile.model'; import { Confirmation } from './confirmation.model'; -import { CaseFieldService } from '../domain/case-field.service'; import { Wizard } from './wizard.model'; import { OrderService } from '../../core/order/order.service'; -import { PaletteContext } from '../palette/base-field/palette-context.enum'; @Component({ selector: 'ccd-case-edit-submit', diff --git a/src/app/shared/case-editor/case-edit.component.ts b/src/app/shared/case-editor/case-edit.component.ts index 468067272..24db0d517 100644 --- a/src/app/shared/case-editor/case-edit.component.ts +++ b/src/app/shared/case-editor/case-edit.component.ts @@ -1,16 +1,12 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger, WizardPage, ConditionalShowRegistrarService, Draft, FieldsUtils, + FieldsPurger } from '@hmcts/ccd-case-ui-toolkit'; import { Observable } from 'rxjs/Observable'; import { Wizard } from './wizard.model'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Confirmation } from './confirmation.model'; -import { WizardPage } from '../domain/wizard-page.model'; -import { FieldsUtils } from '../utils/fields.utils'; import { ActivatedRoute, Router } from '@angular/router'; -import { FieldsPurger } from '../utils/fields.purger'; -import { ConditionalShowRegistrarService } from '../conditional-show/conditional-show-registrar.service'; import { CaseView } from '../../core/cases/case-view.model'; -import { Draft } from '../domain/draft'; import { WizardFactoryService } from '../../core/case-editor/wizard-factory.service'; @Component({ diff --git a/src/app/shared/case-editor/case-edit.spec.ts b/src/app/shared/case-editor/case-edit.spec.ts deleted file mode 100644 index bbdc5b379..000000000 --- a/src/app/shared/case-editor/case-edit.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { CaseField } from '../domain/definition/case-field.model'; -import { ShowCondition } from '../conditional-show/conditional-show.model'; -import { WizardPage } from '../domain/wizard-page.model'; -import createSpyObj = jasmine.createSpyObj; -import { FieldTypeEnum } from '../domain/definition/field-type-enum.model'; - -export let aCaseField = (id: string, label: string, type: FieldTypeEnum, display_context: string, - show_summary_content_option: number): CaseField => { - return { - id: id || 'personFirstName', - field_type: { - id: type.toString() || 'Text', - type: type || 'Text' - }, - display_context: display_context || 'OPTIONAL', - label: label || 'First name', - show_summary_content_option: show_summary_content_option - }; -}; - -export let aWizardPage = (pageId: string, label: string, order: number): WizardPage => { - let wp = new WizardPage(); - wp.id = pageId; - wp.label = label; - wp.order = order; - let parsedShowCondition = createSpyObj('parsedShowCondition', ['match']); - parsedShowCondition.match.and.returnValue(true); - wp.parsedShowCondition = parsedShowCondition; - return wp; -}; diff --git a/src/app/shared/case-editor/label-substitution.service.spec.ts b/src/app/shared/case-editor/label-substitution.service.spec.ts deleted file mode 100644 index 0dcf2b4f9..000000000 --- a/src/app/shared/case-editor/label-substitution.service.spec.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { LabelSubstitutionService } from './label-substitution.service'; - -describe('LabelSubstitutionService', () => { - - let labelSubstitutionService: LabelSubstitutionService; - - beforeEach(() => { - labelSubstitutionService = new LabelSubstitutionService(); - }); - - describe('simple types', () => { - - it('should not substitute if no page form fields', () => { - let pageFormFields = [{}]; - let label = 'Email for ${PersonFirstName} is'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe(label); - }); - - it('should not substitute if no label', () => { - let pageFormFields = [{'PersonFirstName': 'John'}]; - let label = null; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBeNull(); - }); - - it('should substitute with empty value if page form field is matched and has null value', () => { - let pageFormFields = {'PersonFirstName' : null}; - let label = 'Email for ${PersonFirstName} is'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('Email for is'); - }); - - it('should substitute with empty value if page form field is matched and has empty value', () => { - let pageFormFields = {'PersonFirstName' : ''}; - let label = 'Email for ${PersonFirstName} is'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('Email for is'); - }); - - it('should substitute with value if page form field is matched and has value', () => { - let pageFormFields = {'Age': 34, 'PersonFirstName' : 'John'}; - let label = 'Email for ${PersonFirstName} of ${Age} is'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('Email for John of 34 is'); - }); - - it('should substitute with multiple values multiple times if page form field is matched and has value', () => { - let pageFormFields = {'PersonFirstName' : 'John', 'PersonLastName': 'Smith'}; - let label = 'Email for ${PersonFirstName} ${PersonLastName} is ${PersonFirstName}.${PersonLastName}@gmail.com'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('Email for John Smith is John.Smith@gmail.com'); - }); - - it('should only substitute with the values that are matched from page form fields', () => { - let pageFormFields = {'Age' : null, 'Markdownlabel': null, 'PersonAddress': {}, 'D8Document': 'photo.jpg'}; - let label = `First Name is \${Age} years old \${Age} \ -and markdown is \${Markdownlabel} and address is \${Address} and document \${D8Document}`; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('First Name is years old and markdown is and address is ${Address} and document photo.jpg'); - }); - - it('should not substitute fields ids with special characters but _', () => { - let pageFormFields = {'_1' : 'one', '%2': 'two', '?3': {'field': 'value'}, '$4': 'four', '_5': 'five'}; - let label = '${_1} ${%2} ${?3} ${$4} {_5}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('one ${%2} ${?3} ${$4} {_5}'); - }); - - it('should not substitute nested fields', () => { - let pageFormFields = {'_1' : 'one'}; - let label = 'This ${_1} but not this ${${_1}} and not this ${field${_1}field} but this ${_1} too'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('This one but not this ${${_1}} and not this ${field${_1}field} but this one too'); - }); - - it('should not substitute if value of a field to substitute refers itself', () => { - let pageFormFields = {'_1_one': '${_1_one}'}; - let label = '${_1_one}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('${_1_one}'); - }); - - it('should substitute fields with multi select values', () => { - let pageFormFields = {'_1_one': ['code1', 'code2'], '_1_one-LABEL': ['label1', 'label2'], '_3_three': 'simpleValue'}; - let label = '${_1_one} ${_3_three}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('label1, label2 simpleValue'); - }); - }); - - describe('complex types', () => { - - it('should substitute complex nested field with simple type leaf value', () => { - let pageFormFields = {'complex': {'nested': 'nested value', 'nested2': 'nested value2' - , 'nested3': {'doubleNested': 'double nested'}}}; - let label = '${complex.nested} and ${complex.nested2} and ${complex.nested3} and ${complex.nested3.doubleNested}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('nested value and nested value2 and ${complex.nested3} and double nested'); - }); - - it('should substitute if complex nested field refers existent field', () => { - let pageFormFields = {'complex': {'nested': {'doubleNested': 'double nested'}}}; - let label = '${complex} and ${complex.nested} and ${complex.nested.} and ${complex.nested.double} and ${complex.nested.doubleNested}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('${complex} and ${complex.nested} and ${complex.nested.} and ${complex.nested.double} and double nested'); - }); - }); - - describe('collection types', () => { - - it('should substitute fields with text collection values', () => { - let pageFormFields = {'_1_one': [{'value': 'value1'}, {'value': 'value2'}], '_3_three': 'simpleValue'}; - let label = '${_1_one} ${_3_three}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('value1, value2 simpleValue'); - }); - - it('should substitute fields with number collection values', () => { - let pageFormFields = {'_1_one': [{'value': 35}, {'value': 45}], '_3_three': 'simpleValue'}; - let label = '${_1_one} ${_3_three}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('35, 45 simpleValue'); - }); - - it('should not substitute fields with complex collection values', () => { - let pageFormFields = {'_1_one': [{'value': {'id': 'complex1'}}, {'value': {'id': 'complex2'}}], '_3_three': 'simpleValue'}; - let label = '${_1_one} ${_3_three}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('${_1_one} simpleValue'); - }); - - it('should not substitute fields with collection of collection values', () => { - let pageFormFields = {'_1_one': [{'value': [{'value': {'id': 'complex1'}}]}, {'value': [{'value': {'id': 'complex2'}}]}], - '_3_three': 'simpleValue'}; - let label = '${_1_one} ${_3_three}'; - - let actual = labelSubstitutionService.substituteLabel(pageFormFields, label); - - expect(actual).toBe('${_1_one} simpleValue'); - }); - }); -}); diff --git a/src/app/shared/case-editor/label-substitution.service.ts b/src/app/shared/case-editor/label-substitution.service.ts deleted file mode 100644 index 5c5e19f07..000000000 --- a/src/app/shared/case-editor/label-substitution.service.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Injectable } from '@angular/core'; -import { FieldsUtils } from '../utils/fields.utils'; - -@Injectable() -export class LabelSubstitutionService { - - private static readonly LABEL_ID_PATTERN = /^[a-zA-Z0-9_.\]\[]+$/; - private static readonly STARTING_PLACEHOLDER = '$'; - private static readonly OPENING_PLACEHOLDER = '{'; - private static readonly CLOSING_PLACEHOLDER = '}'; - - substituteLabel(pageFormFields, label): string { - let startSubstitutionIndex = -1; - let fieldIdToSubstitute = ''; - let isCollecting = false; - if (label) { - for (let scanIndex = 0; scanIndex < label.length; scanIndex++) { - if (this.isStartPlaceholderAndNotCollecting(label, scanIndex, isCollecting)) { - startSubstitutionIndex = scanIndex; - isCollecting = true; - } else if (isCollecting) { - if (this.isClosingPlaceholder(label, scanIndex)) { - if (this.isMatchingLabelIdPattern(fieldIdToSubstitute) - && this.isFieldIdInFormFields(fieldIdToSubstitute, pageFormFields)) { - label = this.substitute(pageFormFields, label, startSubstitutionIndex, fieldIdToSubstitute); - scanIndex = this.resetScanIndexAfterSubstitution(startSubstitutionIndex, pageFormFields, fieldIdToSubstitute); - } - isCollecting = false; - fieldIdToSubstitute = ''; - } else if (!this.isOpeningPlaceholder(label, scanIndex)) { - fieldIdToSubstitute += label.charAt(scanIndex); - } - } - } - } - return label; - } - - private isMatchingLabelIdPattern(fieldIdToSubstitute) { - return fieldIdToSubstitute.match(LabelSubstitutionService.LABEL_ID_PATTERN); - } - - private isFieldIdInFormFields(fieldIdToSubstitute, pageFormFields) { - let fieldValue = this.getFieldValue(pageFormFields, fieldIdToSubstitute); - return fieldValue ? this.isSimpleTypeOrCollectionOfSimpleTypes(fieldValue) : fieldValue !== undefined; - } - - private isSimpleTypeOrCollectionOfSimpleTypes(fieldValue) { - return !this.isObject(fieldValue) && (this.isArray(fieldValue) ? this.isSimpleArray(fieldValue) : true); - } - - private isSimpleArray(fieldValue) { - return !this.isObject(fieldValue[0]) && !Array.isArray(fieldValue[0]) && fieldValue[0] !== undefined; - } - - private isStartingPlaceholder(label, scanIndex): boolean { - return label.charAt(scanIndex) === LabelSubstitutionService.STARTING_PLACEHOLDER; - } - - private isStartPlaceholderAndNotCollecting(label, scanIndex, isCollectingPlaceholder): boolean { - return this.isStartingPlaceholder(label, scanIndex) && !isCollectingPlaceholder; - } - - private isClosingPlaceholder(label, scanIndex): boolean { - return label.charAt(scanIndex) === LabelSubstitutionService.CLOSING_PLACEHOLDER; - } - - private isOpeningPlaceholder(label, scanIndex): boolean { - return label.charAt(scanIndex) === LabelSubstitutionService.OPENING_PLACEHOLDER; - } - - private substitute(pageFormFields, label, startSubstitutionIndex, fieldIdToSubstitute): string { - let replacedString = label.substring(startSubstitutionIndex) - .replace('${'.concat(fieldIdToSubstitute).concat('}'), - this.getSubstitutionValueOrEmpty(pageFormFields, fieldIdToSubstitute)); - return label.substring(0, startSubstitutionIndex).concat(replacedString); - } - - private resetScanIndexAfterSubstitution(startSubstitutionIndex, pageFormFields, fieldIdToSubstitute): number { - return startSubstitutionIndex + this.getSubstitutionValueLengthOrZero(pageFormFields, fieldIdToSubstitute); - } - - private getSubstitutionValueOrEmpty(pageFormFields, fieldIdToSubstitute) { - let fieldValue = this.getFieldValue(pageFormFields, fieldIdToSubstitute); - if (fieldValue instanceof Array) { - fieldValue = fieldValue.join(', '); - } - return fieldValue ? fieldValue : ''; - } - - private getFieldValue(pageFormFields, fieldIdToSubstitute) { - let fieldIds = fieldIdToSubstitute.split('.'); - for (let index = 0; index < fieldIds.length; index++) { - if (pageFormFields[fieldIds[index]] === undefined) { - return undefined; - } else { - if (this.isNonEmptyArray(pageFormFields[fieldIds[index]]) && !this.isCollection(pageFormFields[fieldIds[index]])) { - pageFormFields = pageFormFields[fieldIds[index] + FieldsUtils.LABEL_SUFFIX]; - } else { - pageFormFields = pageFormFields[fieldIds[index]]; - } - } - } - if (this.isNonEmptyArray(pageFormFields) && this.isCollection(pageFormFields)) { - pageFormFields = pageFormFields.map(fieldValue => fieldValue['value']); - } - return pageFormFields; - } - - private isNonEmptyArray(pageFormFields) { - return Array.isArray(pageFormFields) && pageFormFields[0]; - } - - private isCollection(pageFormFields) { - return pageFormFields[0]['value']; - } - - private getSubstitutionValueLengthOrZero(pageFormFields, fieldIdToSubstitute) { - return pageFormFields[fieldIdToSubstitute] ? this.getSubstitutionValueOrEmpty(pageFormFields, fieldIdToSubstitute) - .toString().length : 0; - } - - private getType(elem): string { - return Object.prototype.toString.call(elem).slice(8, -1); - } - - private isObject(elem) { - return this.getType(elem) === 'Object'; - }; - - private isArray(elem) { - return this.getType(elem) === 'Array'; - }; -} diff --git a/src/app/shared/case-editor/page-validation.service.ts b/src/app/shared/case-editor/page-validation.service.ts index c8e1e7eeb..3f48edc71 100644 --- a/src/app/shared/case-editor/page-validation.service.ts +++ b/src/app/shared/case-editor/page-validation.service.ts @@ -1,9 +1,6 @@ import { Injectable } from '@angular/core'; -import { CaseField } from '../domain/definition/case-field.model'; +import { CaseField, ShowCondition, CaseFieldService, WizardPage } from '@hmcts/ccd-case-ui-toolkit'; import { AbstractControl, FormGroup } from '@angular/forms'; -import { ShowCondition } from '../conditional-show/conditional-show.model'; -import { CaseFieldService } from '../domain/case-field.service'; -import { WizardPage } from '../domain/wizard-page.model'; @Injectable() export class PageValidationService { diff --git a/src/app/shared/case-editor/wizard.model.ts b/src/app/shared/case-editor/wizard.model.ts index 40d6b4605..3d09efb91 100644 --- a/src/app/shared/case-editor/wizard.model.ts +++ b/src/app/shared/case-editor/wizard.model.ts @@ -1,4 +1,4 @@ -import { WizardPage } from '../domain/wizard-page.model'; +import { WizardPage } from '@hmcts/ccd-case-ui-toolkit'; import { Predicate } from '../predicate'; import { OrderService } from '../../core/order/order.service'; diff --git a/src/app/shared/case-history/case-history.component.ts b/src/app/shared/case-history/case-history.component.ts index 8cd0ad52d..a95ba71d2 100644 --- a/src/app/shared/case-history/case-history.component.ts +++ b/src/app/shared/case-history/case-history.component.ts @@ -3,7 +3,7 @@ import { ActivatedRoute } from '@angular/router'; import { CaseHistory } from '../../core/cases/case-history.model'; import { OrderService } from '../../core/order/order.service'; import { CaseTab } from '../../core/cases/case-tab.model'; -import { ShowCondition } from '../conditional-show/conditional-show.model'; +import { ShowCondition } from '@hmcts/ccd-case-ui-toolkit'; @Component({ templateUrl: './case-history.component.html', diff --git a/src/app/shared/conditional-show/conditional-show-registrar.service.spec.ts b/src/app/shared/conditional-show/conditional-show-registrar.service.spec.ts deleted file mode 100644 index b360be63d..000000000 --- a/src/app/shared/conditional-show/conditional-show-registrar.service.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { ConditionalShowDirective } from './conditional-show.directive'; -import { ConditionalShowRegistrarService } from './conditional-show-registrar.service'; -import { async } from '@angular/core/testing'; -import createSpyObj = jasmine.createSpyObj; -import { CaseField } from '../domain/definition/case-field.model'; -import { aCaseField } from '../case-editor/case-edit.spec'; - -let registrarService: ConditionalShowRegistrarService; -let conditionalShowDirective1: any; -let conditionalShowDirective2: any; - -describe('ConditionalShowRegistrarService', () => { - - beforeEach( async(() => { - registrarService = new ConditionalShowRegistrarService(); - conditionalShowDirective1 = createSpyObj('conditionalShowDirective1', ['refreshVisibility']); - conditionalShowDirective2 = createSpyObj('conditionalShowDirective2', ['refreshVisibility']); - let caseField1: CaseField = aCaseField('id1', 'label', 'Text', 'OPTIONAL', null); - let caseField2: CaseField = aCaseField('id2', 'label', 'Text', 'OPTIONAL', null); - conditionalShowDirective1.caseField = caseField1; - conditionalShowDirective2.caseField = caseField2; - })); - - it('should register', () => { - registrarService.register(conditionalShowDirective1); - registrarService.register(conditionalShowDirective2); - expect(registrarService.registeredDirectives.length).toEqual(2); - }); - - it('should reset', () => { - registrarService.register(conditionalShowDirective1); - registrarService.register(conditionalShowDirective2); - registrarService.reset(); - expect(registrarService.registeredDirectives.length).toEqual(0); - }); - - it('should refresh visibility of registered directives', () => { - registrarService.register(conditionalShowDirective1); - registrarService.register(conditionalShowDirective2); - registrarService.refresh(); - expect(conditionalShowDirective1.refreshVisibility).toHaveBeenCalled(); - expect(conditionalShowDirective2.refreshVisibility).toHaveBeenCalled(); - }); - -}); diff --git a/src/app/shared/conditional-show/conditional-show-registrar.service.ts b/src/app/shared/conditional-show/conditional-show-registrar.service.ts deleted file mode 100644 index ca2ec7a6d..000000000 --- a/src/app/shared/conditional-show/conditional-show-registrar.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Injectable } from '@angular/core'; -import { ConditionalShowDirective } from './conditional-show.directive'; - -@Injectable() -export class ConditionalShowRegistrarService { - registeredDirectives = []; - - register(newDirective: ConditionalShowDirective) { - // console.log('[', this.registeredDirectives.length, ']adding new directive', newDirective.caseField.id); - this.registeredDirectives.push(newDirective); - } - - refresh() { - this.registeredDirectives.forEach(dir => { - // console.log('refreshing ', dir.caseField.id); - dir.refreshVisibility() - }); - } - - reset() { - this.registeredDirectives = []; - } -} diff --git a/src/app/shared/conditional-show/conditional-show.directive.spec.ts b/src/app/shared/conditional-show/conditional-show.directive.spec.ts deleted file mode 100644 index 0dfa021a0..000000000 --- a/src/app/shared/conditional-show/conditional-show.directive.spec.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; -import { DebugElement, Component, Input } from '@angular/core'; -import { ConditionalShowDirective } from './conditional-show.directive'; -import { CaseField } from '../domain/definition/case-field.model'; -import { async } from '@angular/core/testing'; -import { FormGroup, FormControl } from '@angular/forms'; -import { FieldsUtils } from '../utils/fields.utils'; -import { ConditionalShowRegistrarService } from './conditional-show-registrar.service'; -import createSpyObj = jasmine.createSpyObj; - -@Component({ - template: ` - ` -}) -class TestHostComponent { - - @Input() caseField: CaseField; - @Input() eventFields: CaseField[]; - @Input() formGroup: FormGroup; -} - -let field = (id, value, showCondition?) => { - let caseField = new CaseField(); - caseField.id = id; - caseField.value = value; - caseField.show_condition = showCondition; - return caseField; -}; - -describe('ConditionalShowDirective', () => { - - let comp: TestHostComponent; - let fixture: ComponentFixture; - let de: DebugElement; - let el: HTMLElement; - let conditionalShow: ConditionalShowDirective; - let mockRegistrar: ConditionalShowRegistrarService = createSpyObj( - 'conditionalShowRegistrarService', - ['register', 'refresh'] - ); - - beforeEach( async(() => { - TestBed.configureTestingModule({ - declarations: [ ConditionalShowDirective, TestHostComponent ], - providers: [ - FieldsUtils, - { provide: ConditionalShowRegistrarService, useValue: mockRegistrar } - ] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(TestHostComponent); - comp = fixture.componentInstance; - de = fixture.debugElement.query(By.directive(ConditionalShowDirective)); - el = de.nativeElement; - conditionalShow = de.injector.get(ConditionalShowDirective) as ConditionalShowDirective; - }); - - it('should not trigger when hide condition is empty', () => { - comp.caseField = field('PersonSecondAddress', '', ''); - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - expect(conditionalShow.condition).toBeUndefined(); - }); - - it('should display when condition matches a read only field. No form fields', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonLastName="Doe"'); - comp.eventFields = [comp.caseField, field('PersonLastName', 'Doe', '')]; - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - expect(conditionalShow.condition.condition).toBe('PersonLastName="Doe"'); - }); - - it('should not display when condition does not match any read only field', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonLastName="Doe"'); - comp.eventFields = [comp.caseField, field('PersonLastName', 'Mundy', '')]; - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - }); - - it('should not display when condition does not match an undefined readonly field', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonLastName="Doe"'); - comp.eventFields = [comp.caseField, field('PersonLastName', '', '')]; - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - }); - - it('should display when condition matches a form field. No read only fields', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonHasSecondAddress', 'Yes', '')]; - comp.formGroup = new FormGroup({ - PersonHasSecondAddress: new FormControl('Yes'), - PersonSecondAddress: new FormControl(''), - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - }); - - it('should display when condition matches a form field', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonLastName', 'Doe', ''), field('PersonHasSecondAddress', 'Yes', '')]; - comp.formGroup = new FormGroup({ - PersonHasSecondAddress: new FormControl('Yes'), - PersonSecondAddress: new FormControl(''), - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - expect(conditionalShow.formField.disabled).toBe(false); - }); - - it('should not display when condition does not match any form field', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonLastName', 'Doe', ''), - field('PersonHasSecondAddress', 'Yes', '')]; - comp.formGroup = new FormGroup({ - PersonSecondAddress: new FormControl(''), - PersonHasSecondAddress: new FormControl('No'), - PersonFirstAddress: new FormControl({}), - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - expect(conditionalShow.formField.disabled).toBe(true); - }); - - it('should not display when condition does not match because form field is undefined', () => { - comp.caseField = field('PersonSecondAddress', '', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonLastName', 'Doe', ''), - field('PersonHasSecondAddress', 'Yes', '')]; - comp.formGroup = new FormGroup({ - PersonSecondAddress: new FormControl(''), - PersonHasSecondAddress: new FormControl('') - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - }); - - it('should display when condition matches after field change', () => { - comp.caseField = field('PersonLastName', 'Paniccia', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonHasSecondAddress', 'Yes', ''), - field('PersonFirstName', 'Mario', '')]; - comp.formGroup = new FormGroup({ - PersonLastName: new FormControl('Paniccia'), - PersonHasSecondAddress: new FormControl('No') - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - - comp.formGroup.patchValue({PersonHasSecondAddress: 'Yes'}); - fixture.detectChanges(); - - expect(conditionalShow.formField.status).toBe('VALID'); - expect(el.hidden).toBe(false); - }); - - it('should disable a form field when hiding and keep its value', () => { - comp.caseField = field('PersonLastName', 'Paniccia', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonFirstName', 'Mario', ''), - field('PersonHasSecondAddress', 'Yes', '')]; - comp.formGroup = new FormGroup({ - PersonLastName: new FormControl('Paniccia'), - PersonHasSecondAddress: new FormControl('Yes') - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - expect(conditionalShow.formField.value).toBe('Paniccia'); - - conditionalShow.formGroup.patchValue({PersonLastName: 'Doe'}); - conditionalShow.formField.markAsDirty(); - fixture.detectChanges(); - expect(conditionalShow.formField.value).toBe('Doe'); - expect(conditionalShow.formField.dirty).toBe(true); - - conditionalShow.formGroup.patchValue({PersonHasSecondAddress: 'No'}); - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - expect(conditionalShow.formField.status).toBe('DISABLED'); - - conditionalShow.formGroup.patchValue({PersonHasSecondAddress: 'Yes'}); - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - expect(conditionalShow.formField.status).toBe('VALID'); - expect(conditionalShow.formField.value).toBe('Doe'); - }); - - it('should not clear a form field on hide if not dirty', () => { - comp.caseField = field('PersonLastName', 'Paniccia', 'PersonHasSecondAddress="Yes"'); - comp.eventFields = [comp.caseField, field('PersonFirstName', 'Mario', ''), - field('PersonHasSecondAddress', 'Yes', '')]; - comp.formGroup = new FormGroup({ - PersonLastName: new FormControl('Paniccia'), - PersonHasSecondAddress: new FormControl('Yes') - }); - fixture.detectChanges(); - - expect(el.hidden).toBe(false); - expect(conditionalShow.formField.value).toBe('Paniccia'); - - conditionalShow.formGroup.patchValue({PersonHasSecondAddress: 'No'}); - fixture.detectChanges(); - - expect(el.hidden).toBe(true); - expect(conditionalShow.formField.status).toBe('DISABLED'); - expect(conditionalShow.formField.value).toBe('Paniccia'); - }); -}); diff --git a/src/app/shared/conditional-show/conditional-show.directive.ts b/src/app/shared/conditional-show/conditional-show.directive.ts deleted file mode 100644 index 70d93bae8..000000000 --- a/src/app/shared/conditional-show/conditional-show.directive.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { AfterViewInit, Directive, ElementRef, Input, OnDestroy } from '@angular/core'; -import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { CaseField } from '../domain/definition/case-field.model'; -import { Subscription } from 'rxjs'; -import { ShowCondition } from './conditional-show.model'; -import { FieldsUtils } from '../utils/fields.utils'; -import { ConditionalShowRegistrarService } from './conditional-show-registrar.service'; - -@Directive({ selector: '[ccdConditionalShow]' }) -/** Hides and shows the host element based on the show condition if the condition is not empty. Works on read only fields and form fields. - * The show condition is evaluated on all the fields of the page. i.e. read only and form fields. When a form field is hidden, if its - * initial value was changed then the field is cleared. Otherwise the original value is kept and will display next time the field is - * shown. Evaluation of the show condition includes disabled fields, which can be on their initial value or empty. And executes on the - * host field initialization and when any field of the form changes. - */ -// export class ConditionalShowDirective implements OnInit, OnDestroy { -export class ConditionalShowDirective implements AfterViewInit, OnDestroy { - - @Input() caseField: CaseField; - @Input() eventFields: CaseField[] = []; - @Input() formGroup: FormGroup; - - condition: ShowCondition; - private formChangesSubscription: Subscription; - formField: any; - - constructor(private el: ElementRef, - private fieldsUtils: FieldsUtils, - private registry: ConditionalShowRegistrarService) {} - - ngAfterViewInit() { - if (this.caseField.show_condition) { - this.condition = new ShowCondition(this.caseField.show_condition); - // console.log('FIELD: ' + this.caseField.id + ' init. Show condition: ' + this.caseField.show_condition); - this.formGroup = this.formGroup || new FormGroup({}); - this.formField = this.formGroup.get(this.caseField.id); - // console.log('FIELD: ' + this.caseField.id + '. Is form field:' + this.formField + '. Event fields:', this.eventFields); - this.updateVisibility(this.getReadOnlyAndFormFields()); - this.subscribeToFormChanges(); - this.registry.register(this); - } - } - - refreshVisibility() { - // console.log('Refresh FIELD: ', this.caseField.id, '. field:', this.formField, '. eventFields:', this.eventFields); - this.updateVisibility(this.getReadOnlyAndFormFields(), true); - this.subscribeToFormChanges(); - } - - ngOnDestroy() { - this.unsubscribeFromFormChanges(); - } - - private subscribeToFormChanges() { - this.unsubscribeFromFormChanges(); - // console.log('FIELD ' + this.caseField.id + ' subscribing to form changes'); - this.formChangesSubscription = this.formGroup.valueChanges.subscribe(_ => { - // console.log('FIELD ' + this.caseField.id + ' reacting to form change'); - this.updateVisibility(this.getReadOnlyAndFormFields()); - }); - } - - private updateVisibility(fields, forced = false) { - // console.log('FIELD ' + this.caseField.id + ' updatingVisibility based on fields: ', fields, ' forced:', forced); - if (this.shouldToggleToHide(fields, forced)) { - this.onHide(); - } else if (this.shouldToggleToShow(fields)) { - this.onShow(); - } - } - - private onHide() { - // console.log('on hide is form field', this.formField); - - if (this.formField) { - this.unsubscribeFromFormChanges(); - // console.log('FIELD ' + this.caseField.id + ' disabling form field'); - this.formField.disable(); - this.subscribeToFormChanges(); - } - this.hide(); - } - - private onShow() { - if (this.formField) { - this.unsubscribeFromFormChanges(); - // console.log('FIELD ' + this.caseField.id + ' enabling form field', this.formField); - this.formField.enable(); - this.subscribeToFormChanges(); - } - this.show(); - if (this.formField) { - this.checkHideShowCondition(this.caseField.id, this.formField); - } - } - - private hide() { - this.el.nativeElement.hidden = true; - } - - private show() { - this.el.nativeElement.hidden = false; - } - - private shouldToggleToHide(fields, forced) { - return (!this.isHidden() || forced) && !this.condition.match(fields); - } - - private shouldToggleToShow(fields) { - return this.isHidden() && this.condition.match(fields); - } - - private getReadOnlyAndFormFields() { - let formFields = this.getFormFieldsValuesIncludingDisabled(); - // console.log('FIELD ' + this.caseField.id + ' current form values including disabled: ', formFields); - return this.fieldsUtils.mergeCaseFieldsAndFormFields(this.eventFields, formFields); - } - - private getFormFieldsValuesIncludingDisabled() { - return this.formGroup.getRawValue(); - } - - private isHidden() { - return this.el.nativeElement.hidden; - } - - private unsubscribeFromFormChanges() { - if (this.formChangesSubscription) { - this.formChangesSubscription.unsubscribe(); - } - } - - // TODO This must be extracted to a generic service for traversing see RDM-2233 - private checkHideShowCondition(key: string, aControl: AbstractControl) { - if (aControl instanceof FormArray) { // We're in a collection - // console.log('traversing array', aControl); - aControl.controls.forEach((formControl, i) => { - // console.log('in array', formControl); - this.checkHideShowCondition('' + i, formControl) - }); - } else if (aControl instanceof FormGroup) { - // console.log('met a FormGroup ', aControl, ' fromGroup.controls', aControl.controls); - if (aControl.get('value')) { // Complex Field - let complexControl = aControl.get('value') as FormGroup; - Object.keys(complexControl.controls).forEach(controlKey => { - // console.log('traversing formGroup item', key, complexControl.get(key)); - this.checkHideShowCondition(controlKey, complexControl.get(controlKey)); - }); - } else if (aControl.controls) { // Special Field like AddressUK, AddressGlobal - Object.keys(aControl.controls).forEach(controlKey => { - // console.log('traversing formGroup item', key, aControl.get(key)); - this.checkHideShowCondition(controlKey, aControl.get(controlKey)); - }) - } - } else if (aControl instanceof FormControl) { // FormControl - if (aControl.invalid) { - // console.log('met an invalid FormControl ', key, ' control:', aControl, ' is valid:', aControl.valid); - this.registry.refresh(); - } - } - } -} diff --git a/src/app/shared/conditional-show/conditional-show.model.spec.ts b/src/app/shared/conditional-show/conditional-show.model.spec.ts deleted file mode 100644 index 1c30ab4cb..000000000 --- a/src/app/shared/conditional-show/conditional-show.model.spec.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { ShowCondition } from './conditional-show.model'; -import { aCaseField } from '../case-editor/case-edit.spec'; -import { CaseField } from '../domain/definition/case-field.model'; - -describe('conditional-show', () => { - let caseField1: CaseField = aCaseField('field1', 'field1', 'Text', 'OPTIONAL', null); - let caseField2: CaseField = aCaseField('field2', 'field2', 'Text', 'OPTIONAL', null); - let caseField3: CaseField = aCaseField('field3', 'field3', 'Text', 'OPTIONAL', null); - let caseField4: CaseField = aCaseField('field4', 'field4', 'Text', 'OPTIONAL', null); - - caseField1.value = 's1'; - caseField2.value = 3; - caseField3.value = 'temmy'; - caseField4.value = 's1 AND s2'; - - let caseFields = [caseField1, caseField2, caseField3, caseField4]; - - describe('matches when', () => { - it('empty condition', () => { - let sc = new ShowCondition(''); - let fields = { - field : 's1' - }; - let matched = sc.match(fields); - - expect(matched).toBe(true); - }); - - it('field has expected value', () => { - let sc = new ShowCondition('field="s1"'); - let fields = { - field : 's1' - }; - let matched = sc.match(fields); - - expect(matched).toBe(true); - }); - - it('field has expected value and is a number', () => { - let sc = new ShowCondition('field="3"'); - let fields = { - field : 3 - }; - let matched = sc.match(fields); - - expect(matched).toBe(true); - }); - - it('field starts with a string', () => { - let sc = new ShowCondition('field="te*"'); - let fields = { - field : 'test' - }; - let matched = sc.match(fields); - - expect(matched).toBe(true); - }); - }); - - describe('matchByCaseFields when', () => { - it('empty condition', () => { - let sc = new ShowCondition(''); - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(true); - }); - - it('field has expected value', () => { - let sc = new ShowCondition('field1="s1"'); - - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(true); - }); - - it('field has expected value and is a number', () => { - let sc = new ShowCondition('field2="3"'); - let matched = sc.matchByCaseFields(caseFields); - expect(matched).toBe(true); - }); - - it('field starts with a string', () => { - let sc = new ShowCondition('field3="te*"'); - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(true); - }); - }); - - describe('not matches when', () => { - it('field value is not equal to condition', () => { - let sc = new ShowCondition('field="test"'); - let fields = { - field : 'test1' - }; - let matched = sc.match(fields); - - expect(matched).toBe(false); - }); - - it('field value does not start with the condition string', () => { - let sc = new ShowCondition('field="te*"'); - let fields = { - field : 'yest' - }; - let matched = sc.match(fields); - - expect(matched).toBe(false); - }); - - it('field starts with a string and does not exist', () => { - let sc = new ShowCondition('field="te*"'); - let fields = { - }; - let matched = sc.match(fields); - - expect(matched).toBe(false); - }); - }); - - describe('not matches ByCaseFields when', () => { - it('field value is not equal to condition', () => { - let sc = new ShowCondition('field1="test"'); - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(false); - }); - - it('field value does not start with ' + - 'the condition string', () => { - let sc = new ShowCondition('field1="te*"'); - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(false); - }); - }); - - describe('multiple AND conditions', () => { - it('should return true when all conditions are true', () => { - let sc = new ShowCondition('field1="s1" AND field2=3 AND field3="te*"'); - - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(true); - }); - - it('should return false when any condition is false', () => { - let sc = new ShowCondition('field1="s1" AND field2=3 AND field3="no-match"'); - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(false); - }); - - it('should evaluate AND conditions correctly when AND keyword is present in the value being matched', () => { - let sc = new ShowCondition('field4="s1 AND s2" AND field2=3'); - - let matched = sc.matchByCaseFields(caseFields); - - expect(matched).toBe(true); - }); - }); -}); diff --git a/src/app/shared/conditional-show/conditional-show.model.ts b/src/app/shared/conditional-show/conditional-show.model.ts deleted file mode 100644 index a9184793e..000000000 --- a/src/app/shared/conditional-show/conditional-show.model.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { CaseField } from '../domain/definition/case-field.model'; -import { FieldsUtils } from '../utils/fields.utils'; - -export class ShowCondition { - - private static readonly AND_CONDITION_REGEX = /\sAND\s(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/g; - - // Expects a show condition of the form: ="string" - constructor(public condition: string) { - } - - match(fields): boolean { - if (!this.condition) { - return true; - } - return this.matchAndConditions(fields, this.condition); - } - - private matchAndConditions(fields: any, condition: string): boolean { - let andConditions = condition.split(ShowCondition.AND_CONDITION_REGEX); - return andConditions.every(andCondition => this.matchEqualityCondition(fields, andCondition)); - } - - private matchEqualityCondition(fields: any, condition: string): boolean { - let field = condition.split('=')[0]; - let right = this.unquoted(condition.split('=')[1]); - let value = fields[field]; - - if (right.endsWith('*') && value) { - return value.startsWith(this.removeStarChar(right)); - } else { - // changed from '===' to '==' to cover number field conditions - return value == right; // tslint:disable-line - } - } - - private unquoted(str) { - return str.replace(/^"|"$/g, ''); - } - - private removeStarChar(s: string) { - return s.substring(0, s.length - 1); - } - - matchByCaseFields(caseFields: CaseField[]): boolean { - return this.match(FieldsUtils.toValuesMap(caseFields)); - } -} diff --git a/src/app/shared/conditional-show/conditional-show.module.ts b/src/app/shared/conditional-show/conditional-show.module.ts deleted file mode 100644 index 725508681..000000000 --- a/src/app/shared/conditional-show/conditional-show.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ConditionalShowDirective } from './conditional-show.directive'; -import { FieldsUtils } from '../utils/fields.utils'; -import { ConditionalShowRegistrarService } from './conditional-show-registrar.service'; - -@NgModule({ - declarations: [ - ConditionalShowDirective - ], - exports: [ - ConditionalShowDirective - ], - providers: [ - FieldsUtils, - ConditionalShowRegistrarService - ] -}) -export class ConditionalShowModule {} diff --git a/src/app/shared/document-dialog/document-dialog.component.html b/src/app/shared/document-dialog/document-dialog.component.html deleted file mode 100644 index 8c180408e..000000000 --- a/src/app/shared/document-dialog/document-dialog.component.html +++ /dev/null @@ -1,16 +0,0 @@ - -
-
-

X

-
-
-

Are you sure you want to replace the existing file?

-
-
- You are about to delete the original file uploaded. Are you sure you want to proceed? -
-
- - -
-
diff --git a/src/app/shared/document-dialog/document-dialog.component.scss b/src/app/shared/document-dialog/document-dialog.component.scss deleted file mode 100644 index 0989c59df..000000000 --- a/src/app/shared/document-dialog/document-dialog.component.scss +++ /dev/null @@ -1,22 +0,0 @@ -.x { - margin: 0; - padding: 9px 9px 0px 0px; - font-size: 24px; - font-weight: bold; - font-style: normal; - font-stretch: normal; - cursor: pointer; - color: #6e7071; -} -.dialog-header { - text-align: right; -} -.dialog-title { - margin: 0px 9px 21px 25px; -} -.dialog-info { - margin: 0px 21px 21px 25px; -} -.replace-button { - margin: 0px 15px 0px 25px; -} diff --git a/src/app/shared/document-dialog/document-dialog.component.spec.ts b/src/app/shared/document-dialog/document-dialog.component.spec.ts deleted file mode 100644 index e69dec230..000000000 --- a/src/app/shared/document-dialog/document-dialog.component.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { DocumentDialogComponent } from './document-dialog.component'; -import { MatDialogRef } from '@angular/material'; - -describe('DocumentDialogComponent', () => { - let component: DocumentDialogComponent; - let fixture: ComponentFixture; - let matDialogRef: MatDialogRef; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ DocumentDialogComponent ], - providers: [ - { provide: MatDialogRef, useValue: matDialogRef }, - DocumentDialogComponent - ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(DocumentDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/src/app/shared/document-dialog/document-dialog.component.ts b/src/app/shared/document-dialog/document-dialog.component.ts deleted file mode 100644 index 10156ee4c..000000000 --- a/src/app/shared/document-dialog/document-dialog.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef } from '@angular/material'; - -@Component({ - selector: 'ccd-document-dialog', - templateUrl: './document-dialog.component.html', - styleUrls: ['./document-dialog.component.scss'] -}) -export class DocumentDialogComponent implements OnInit { - - result: string; - - constructor(private matDialogRef: MatDialogRef) {} - - ngOnInit() { - } - - replace() { - this.result = 'Replace'; - this.matDialogRef.close(this.result); - } - cancel() { - this.result = 'Cancel'; - this.matDialogRef.close(this.result); - } -} diff --git a/src/app/core/documentManagement/documentManagement.service.spec.ts b/src/app/shared/documentManagement/documentManagement.service.spec.ts similarity index 88% rename from src/app/core/documentManagement/documentManagement.service.spec.ts rename to src/app/shared/documentManagement/documentManagement.service.spec.ts index 1e33f85aa..9e0a8c26c 100644 --- a/src/app/core/documentManagement/documentManagement.service.spec.ts +++ b/src/app/shared/documentManagement/documentManagement.service.spec.ts @@ -1,10 +1,10 @@ import { DocumentManagementService } from './documentManagement.service'; import createSpyObj = jasmine.createSpyObj; -import { AppConfig } from '../../app.config'; import { HttpService } from '../http/http.service'; import { DocumentData } from '../../shared/domain/document/document-data.model'; -import { Observable } from 'rxjs/Observable'; +import { of } from 'rxjs'; import { Response, ResponseOptions } from '@angular/http'; +import { AbstractAppConfig } from '../../app.config'; describe('DocumentManagementService', () => { const DOCUMENT_MANAGEMENT_URL = 'http://docmanagement.ccd.reform/documents'; @@ -15,7 +15,7 @@ describe('DocumentManagementService', () => { let documentManagementService: DocumentManagementService; beforeEach(() => { - appConfig = createSpyObj('appConfig', ['getDocumentManagementUrl']); + appConfig = createSpyObj('appConfig', ['getDocumentManagementUrl']); appConfig.getDocumentManagementUrl.and.returnValue(DOCUMENT_MANAGEMENT_URL); httpService = createSpyObj('httpService', ['post']); @@ -40,7 +40,7 @@ describe('DocumentManagementService', () => { }; beforeEach(() => { - httpService.post.and.returnValue(Observable.of(new Response(new ResponseOptions({ + httpService.post.and.returnValue(of(new Response(new ResponseOptions({ body: JSON.stringify(RESPONSE) })))); }); diff --git a/src/app/core/documentManagement/documentManagement.service.ts b/src/app/shared/documentManagement/documentManagement.service.ts similarity index 80% rename from src/app/core/documentManagement/documentManagement.service.ts rename to src/app/shared/documentManagement/documentManagement.service.ts index ca2efb98d..5b9b705d6 100644 --- a/src/app/core/documentManagement/documentManagement.service.ts +++ b/src/app/shared/documentManagement/documentManagement.service.ts @@ -1,12 +1,12 @@ import { Injectable } from '@angular/core'; import { Headers } from '@angular/http'; import { Observable } from 'rxjs/Observable'; +import 'rxjs/add/operator/map'; +import { DocumentData, AbstractDocumentManagementService, HttpService } from '@hmcts/ccd-case-ui-toolkit'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; -import { DocumentData } from '../../shared/domain/document/document-data.model'; @Injectable() -export class DocumentManagementService { +export class DocumentManagementService implements AbstractDocumentManagementService { private static readonly HEADER_ACCEPT = 'Accept'; private static readonly HEADER_CONTENT_TYPE = 'Content-Type'; diff --git a/src/app/shared/domain/case-details.ts b/src/app/shared/domain/case-details.ts deleted file mode 100644 index db5e60286..000000000 --- a/src/app/shared/domain/case-details.ts +++ /dev/null @@ -1,11 +0,0 @@ -export class CaseDetails { - id: string; - jurisdiction: string; - case_type_id: string; - state: string; - created_date?: string; - last_modified?: string; - locked_by_user_id?: string; - security_level?: string; - case_data?: object; -} diff --git a/src/app/shared/domain/case-event-data.ts b/src/app/shared/domain/case-event-data.ts deleted file mode 100644 index 725fbb001..000000000 --- a/src/app/shared/domain/case-event-data.ts +++ /dev/null @@ -1,11 +0,0 @@ -export class CaseEventData { - event: { - id: string; - summary: string; - description: string; - }; - data?: object; - event_token: string; - ignore_warning: boolean; - draft_id?: string; -} diff --git a/src/app/shared/domain/case-field.service.spec.ts b/src/app/shared/domain/case-field.service.spec.ts deleted file mode 100644 index 245bc3e53..000000000 --- a/src/app/shared/domain/case-field.service.spec.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { CaseFieldService } from './case-field.service'; -import { CaseField } from './definition/case-field.model'; - -describe('CaseFieldService', () => { - - let caseFieldService: CaseFieldService = new CaseFieldService(); - describe('isOptional', () => { - - it('should identify null field as NOT optional', () => { - expect(caseFieldService.isOptional(null)) - .toBeFalsy(); - }); - - it('should identify undefined display_context as NOT optional', () => { - expect(caseFieldService.isOptional({} as CaseField)) - .toBeFalsy(); - }); - - it('should identify unknown display_context value as NOT optional', () => { - expect(caseFieldService.isOptional({ display_context: '' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify OPTIONAL display_context field as optional', () => { - expect(caseFieldService.isOptional({ display_context: 'OPTIONAL' } as CaseField)) - .toBeTruthy(); - }); - - it('should identify MANDATORY display_context field as NOT optional', () => { - expect(caseFieldService.isOptional({ display_context: 'MANDATORY' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify READONLY display_context field as NOT optional', () => { - expect(caseFieldService.isOptional({ display_context: 'READONLY' } as CaseField)) - .toBeFalsy(); - }); - }); - - describe('isReadOnly', () => { - - it('should identify null field as NOT readOnly', () => { - expect(caseFieldService.isReadOnly(null)) - .toBeFalsy(); - }); - - it('should identify undefined display_context as NOT readOnly', () => { - expect(caseFieldService.isReadOnly({} as CaseField)) - .toBeFalsy(); - }); - - it('should identify unknown display_context value as NOT readOnly', () => { - expect(caseFieldService.isReadOnly({ display_context: '' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify OPTIONAL display_context field as NOT readOnly', () => { - expect(caseFieldService.isReadOnly({ display_context: 'OPTIONAL' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify MANDATORY display_context field as NOT readOnly', () => { - expect(caseFieldService.isReadOnly({ display_context: 'MANDATORY' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify READONLY display_context field as NOT readOnly', () => { - expect(caseFieldService.isReadOnly({ display_context: 'READONLY' } as CaseField)) - .toBeTruthy(); - }); - }); - - describe('isMandatory', () => { - - it('should identify null field as NOT mandatory', () => { - expect(caseFieldService.isMandatory(null)) - .toBeFalsy(); - }); - - it('should identify undefined display_context as NOT mandatory', () => { - expect(caseFieldService.isMandatory({} as CaseField)) - .toBeFalsy(); - }); - - it('should identify unknown display_context value as NOT mandatory', () => { - expect(caseFieldService.isMandatory({ display_context: '' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify OPTIONAL display_context field as NOT mandatory', () => { - expect(caseFieldService.isMandatory({ display_context: 'OPTIONAL' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify MANDATORY display_context field as NOT mandatory', () => { - expect(caseFieldService.isMandatory({ display_context: 'MANDATORY' } as CaseField)) - .toBeTruthy(); - }); - - it('should identify READONLY display_context field as NOT mandatory', () => { - expect(caseFieldService.isMandatory({ display_context: 'READONLY' } as CaseField)) - .toBeFalsy(); - }); - }); -}); diff --git a/src/app/shared/domain/case-field.service.ts b/src/app/shared/domain/case-field.service.ts deleted file mode 100644 index 92bd6c5ed..000000000 --- a/src/app/shared/domain/case-field.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CaseField } from './definition/case-field.model'; - -@Injectable() -export class CaseFieldService { - - public isOptional (field: CaseField) { - if (!field || !field.display_context) { - return false; - } - return field.display_context.toUpperCase() === 'OPTIONAL'; - } - - public isReadOnly (field: CaseField) { - if (!field || !field.display_context) { - return false; - } - return field.display_context.toUpperCase() === 'READONLY'; - } - - public isMandatory (field: CaseField) { - if (!field || !field.display_context) { - return false; - } - return field.display_context.toUpperCase() === 'MANDATORY'; - } -} diff --git a/src/app/shared/domain/case-view/case-event-trigger.model.ts b/src/app/shared/domain/case-view/case-event-trigger.model.ts deleted file mode 100644 index f0c016f07..000000000 --- a/src/app/shared/domain/case-view/case-event-trigger.model.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { CaseField } from '../definition/case-field.model'; -import { WizardPage } from '../wizard-page.model'; -import { Type } from 'class-transformer'; - -export class CaseEventTrigger { - - id: string; - name: string; - description?: string; - case_id?: string; - - @Type(() => CaseField) - case_fields: CaseField[]; - - event_token: string; - - @Type(() => WizardPage) - wizard_pages: WizardPage[]; - - show_summary?: boolean; - show_event_notes?: boolean; - end_button_label?: string; - can_save_draft?: boolean; - - hasFields(): boolean { - return this.case_fields && this.case_fields.length !== 0; - } - - hasPages(): boolean { - return this.wizard_pages && this.wizard_pages.length !== 0; - } -} diff --git a/src/app/shared/domain/case-view/case-view-trigger.model.ts b/src/app/shared/domain/case-view/case-view-trigger.model.ts index 3e8edcb86..848f97106 100644 --- a/src/app/shared/domain/case-view/case-view-trigger.model.ts +++ b/src/app/shared/domain/case-view/case-view-trigger.model.ts @@ -1,4 +1,4 @@ -import { Orderable } from '../../../core/order/orderable.model'; +import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; export class CaseViewTrigger implements Orderable { public static readonly DELETE = 'DELETE'; diff --git a/src/app/shared/domain/definition/case-event.model.ts b/src/app/shared/domain/definition/case-event.model.ts index a4ee1bb3c..1203cf80e 100644 --- a/src/app/shared/domain/definition/case-event.model.ts +++ b/src/app/shared/domain/definition/case-event.model.ts @@ -1,5 +1,5 @@ import { EventCaseField } from './event-case-field.model'; -import { Orderable } from '../../../core/order/orderable.model'; +import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; export class CaseEvent implements Orderable { id: string; diff --git a/src/app/shared/domain/definition/case-field.model.ts b/src/app/shared/domain/definition/case-field.model.ts deleted file mode 100644 index 860814ad4..000000000 --- a/src/app/shared/domain/definition/case-field.model.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Orderable } from '../../../core/order/orderable.model'; -import { FieldType } from './field-type.model'; -import { WizardPageField } from '../wizard-page-field.model'; -import { Type } from 'class-transformer'; - -export class CaseField implements Orderable { - id: string; - label: string; - order?: number; - - @Type(() => FieldType) - field_type: FieldType; - value?: any; - - hint_text?: string; - security_label?: string; - display_context: string; - show_condition?: string; - show_summary_change_option?: boolean; - show_summary_content_option?: number; - - @Type(() => WizardPageField) - wizardProps?: WizardPageField; -} diff --git a/src/app/shared/domain/definition/case-state.model.ts b/src/app/shared/domain/definition/case-state.model.ts index fda85351f..35936dc35 100644 --- a/src/app/shared/domain/definition/case-state.model.ts +++ b/src/app/shared/domain/definition/case-state.model.ts @@ -1,4 +1,4 @@ -import { Orderable } from '../../../core/order/orderable.model'; +import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; export class CaseState implements Orderable { id: string; diff --git a/src/app/shared/domain/definition/case-type.model.ts b/src/app/shared/domain/definition/case-type.model.ts index f710fec8d..49b0dfb50 100644 --- a/src/app/shared/domain/definition/case-type.model.ts +++ b/src/app/shared/domain/definition/case-type.model.ts @@ -1,6 +1,6 @@ import { CaseEvent } from './case-event.model'; import { CaseState } from './case-state.model'; -import { CaseField } from './case-field.model'; +import { CaseField } from '@hmcts/ccd-case-ui-toolkit'; import { Jurisdiction } from './jurisdiction.model'; export class CaseType { diff --git a/src/app/shared/domain/definition/field-type-enum.model.ts b/src/app/shared/domain/definition/field-type-enum.model.ts deleted file mode 100644 index ba444f0a0..000000000 --- a/src/app/shared/domain/definition/field-type-enum.model.ts +++ /dev/null @@ -1,21 +0,0 @@ -export type FieldTypeEnum = - 'Text' - | 'TextArea' - | 'Postcode' - | 'Number' - | 'YesOrNo' - | 'Date' - | 'DateTime' - | 'Email' - | 'PhoneUK' - | 'MoneyGBP' - | 'FixedList' - | 'Complex' - | 'Collection' - | 'MultiSelectList' - | 'Document' - | 'Label' - | 'AddressGlobal' - | 'AddressGlobalUK' - | 'AddressUK' - | 'CasePaymentHistoryViewer'; diff --git a/src/app/shared/domain/definition/field-type.model.ts b/src/app/shared/domain/definition/field-type.model.ts deleted file mode 100644 index ab2906b96..000000000 --- a/src/app/shared/domain/definition/field-type.model.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { FixedListItem } from './fixed-list-item.model'; -import { FieldTypeEnum } from './field-type-enum.model'; -import { CaseField } from './case-field.model'; -import { Type } from 'class-transformer'; - -export class FieldType { - id: string; - type: FieldTypeEnum; - min?: number; - max?: number; - regular_expression?: string; - - @Type(() => FixedListItem) - fixed_list_items?: FixedListItem[]; - - @Type(() => CaseField) - complex_fields?: CaseField[]; - - @Type(() => FieldType) - collection_field_type?: FieldType; -} diff --git a/src/app/shared/domain/definition/fixed-list-item.model.ts b/src/app/shared/domain/definition/fixed-list-item.model.ts deleted file mode 100644 index 6db2f79fb..000000000 --- a/src/app/shared/domain/definition/fixed-list-item.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class FixedListItem { - code: string; - label: string; -} diff --git a/src/app/shared/domain/document/document-data.model.ts b/src/app/shared/domain/document/document-data.model.ts deleted file mode 100644 index fad61aecf..000000000 --- a/src/app/shared/domain/document/document-data.model.ts +++ /dev/null @@ -1,21 +0,0 @@ -export class HRef { - href: string; -} - -export class DocumentLinks { - self: HRef; - binary: HRef; -} - -export class Document { - _links: DocumentLinks; - originalDocumentName: string; -} - -export class Embedded { - documents: Document[]; -} - -export class DocumentData { - _embedded: Embedded; -} diff --git a/src/app/shared/domain/draft.ts b/src/app/shared/domain/draft.ts deleted file mode 100644 index 33e8d1f92..000000000 --- a/src/app/shared/domain/draft.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CaseDetails } from './case-details'; - -export class Draft { - public static readonly DRAFT = 'DRAFT'; - - id: string; - document?: CaseDetails; - type?: string; - created?: string; - updated?: string; - - public static stripDraftId (draftId: string): string { - return draftId.slice(5); - } - - public static isDraft (id: string): boolean { - return String(id).startsWith(this.DRAFT); - } -} diff --git a/src/app/shared/domain/wizard-page-field.model.ts b/src/app/shared/domain/wizard-page-field.model.ts deleted file mode 100644 index c8ec6c75d..000000000 --- a/src/app/shared/domain/wizard-page-field.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Orderable } from '../../core/order/orderable.model'; - -export class WizardPageField implements Orderable { - case_field_id: string; - order?: number; - page_column_no?: number; -} diff --git a/src/app/shared/domain/wizard-page.model.spec.ts b/src/app/shared/domain/wizard-page.model.spec.ts deleted file mode 100644 index b9707514d..000000000 --- a/src/app/shared/domain/wizard-page.model.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { WizardPage } from './wizard-page.model'; -import { CaseField } from './definition/case-field.model'; -import { WizardFactoryService } from '../../core/case-editor/wizard-factory.service'; -import { WizardPageField } from './wizard-page-field.model'; - -let createField = (colNumber: number): CaseField => { - let field = new CaseField(); - let wizardProps = new WizardPageField(); - wizardProps.page_column_no = colNumber; - field.wizardProps = wizardProps; - return field; -} - -describe('WizardPage', () => { - - it('isMultiColumn is false when only col1 fields', () => { - let page = new WizardPage(); - let colNumber = 1 - page.case_fields = [createField(colNumber)]; - - expect(page.isMultiColumn()).toBeFalsy(); - }); - - it('isMultiColumn is true when col1 and col2 fields', () => { - let page = new WizardPage(); - let colNumber = 2 - page.case_fields = [createField(colNumber)]; - - expect(page.isMultiColumn()).toBeTruthy(); - }); - - it('should return col1Fields', () => { - let page = new WizardPage(); - let field = createField(1); - let field2 = createField(undefined); - let field3 = createField(2); - page.case_fields = [field, field2, field3]; - - expect(page.getCol1Fields()).toEqual([field, field2]); - expect(page.getCol2Fields()).toEqual([field3]); - - }); -}); diff --git a/src/app/shared/domain/wizard-page.model.ts b/src/app/shared/domain/wizard-page.model.ts deleted file mode 100644 index 67e5ed172..000000000 --- a/src/app/shared/domain/wizard-page.model.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Orderable } from '../../core/order/orderable.model'; -import { WizardPageField } from './wizard-page-field.model'; -import { CaseField } from './definition/case-field.model'; -import { ShowCondition } from '../conditional-show/conditional-show.model'; -import { Type } from 'class-transformer'; - -export class WizardPage implements Orderable { - - id: string; - label: string; - order?: number; - - @Type(() => WizardPageField) - wizard_page_fields: WizardPageField[]; - - @Type(() => CaseField) - case_fields: CaseField[]; - - show_condition?: string; - - parsedShowCondition: ShowCondition; - - getCol1Fields(): CaseField[] { - return this.case_fields.filter(f => - !f.wizardProps.page_column_no || f.wizardProps.page_column_no === 1); - } - getCol2Fields(): CaseField[] { - return this.case_fields.filter(f => f.wizardProps.page_column_no === 2); - } - - isMultiColumn(): Boolean { - return this.getCol2Fields().length > 0; - } -} diff --git a/src/app/shared/error/callback-errors.component.ts b/src/app/shared/error/callback-errors.component.ts index 0a79768df..7eb6703b7 100644 --- a/src/app/shared/error/callback-errors.component.ts +++ b/src/app/shared/error/callback-errors.component.ts @@ -1,5 +1,5 @@ import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; -import { HttpError } from '../../core/http/http-error.model'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsContext } from './error-context'; diff --git a/src/app/shared/event-log/event-log.module.ts b/src/app/shared/event-log/event-log.module.ts index bc3b22879..9173d6e2e 100644 --- a/src/app/shared/event-log/event-log.module.ts +++ b/src/app/shared/event-log/event-log.module.ts @@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common'; import { EventLogComponent } from './event-log.component'; import { EventLogTableComponent } from './event-log-table.component'; import { EventLogDetailsComponent } from './event-log-details.component'; -import { PaletteUtilsModule } from '../palette/utils/utils.module'; +import { PaletteUtilsModule } from '@hmcts/ccd-case-ui-toolkit'; import { RouterModule } from '@angular/router'; @NgModule({ diff --git a/src/app/shared/event-trigger/event-trigger.component.ts b/src/app/shared/event-trigger/event-trigger.component.ts index 55d2c6d86..eca27ea70 100644 --- a/src/app/shared/event-trigger/event-trigger.component.ts +++ b/src/app/shared/event-trigger/event-trigger.component.ts @@ -5,7 +5,7 @@ import { OrderService } from '../../core/order/order.service'; import { AlertService } from '../../core/alert/alert.service'; import { Subscription } from 'rxjs/Subscription'; import { Subject } from 'rxjs/Subject'; -import { HttpError } from '../../core/http/http-error.model'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-event-trigger', diff --git a/src/app/shared/header/case-header.component.ts b/src/app/shared/header/case-header.component.ts index 73168c5da..4a24b8847 100644 --- a/src/app/shared/header/case-header.component.ts +++ b/src/app/shared/header/case-header.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit } from '@angular/core'; import { CaseView } from '../../core/cases/case-view.model'; -import { CaseField } from '../domain/definition/case-field.model'; +import { CaseField } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-case-header', diff --git a/src/app/shared/header/event-trigger-header.component.ts b/src/app/shared/header/event-trigger-header.component.ts index 68c93a8ab..d4e24d5de 100644 --- a/src/app/shared/header/event-trigger-header.component.ts +++ b/src/app/shared/header/event-trigger-header.component.ts @@ -1,5 +1,5 @@ import { Component, Input } from '@angular/core'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; +import { CaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-event-trigger-header', diff --git a/src/app/shared/markdown/markdown.component.spec.ts b/src/app/shared/markdown/markdown.component.spec.ts deleted file mode 100644 index 6a40de384..000000000 --- a/src/app/shared/markdown/markdown.component.spec.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DebugElement } from '@angular/core'; -import { MarkdownComponent as CCDMarkDownComponent } from './markdown.component'; -import { NgxMdModule, NgxMdComponent } from 'ngx-md'; -import { By } from '@angular/platform-browser'; - -describe('MarkdownComponent', () => { - - const $MARKDOWN = By.css('markdown'); - - const CONTENT = `| Tables | Are | Cool | - |----------|:-------------:|------:| - | col 1 is | left-aligned | $1600 | - | col 2 is | centered | $12 | - | col 3 is | right-aligned | $1 |`; - const EXPECTED_CONTENT = ` - - - - - - - - - - - - - - - - - - - - - - - - -
TablesAreCool
col 1 isleft-aligned$1600
col 2 iscentered$12
col 3 isright-aligned$1
-`; - - let fixture: ComponentFixture; - let component: CCDMarkDownComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - NgxMdModule.forRoot() - ], - declarations: [ - CCDMarkDownComponent, - ], - providers: [ - NgxMdComponent - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(CCDMarkDownComponent); - component = fixture.componentInstance; - component.content = CONTENT; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('Should render an html table', () => { - expect(de.query($MARKDOWN).nativeElement.innerHTML).toBe(EXPECTED_CONTENT); - }); - -}); diff --git a/src/app/shared/markdown/markdown.component.ts b/src/app/shared/markdown/markdown.component.ts deleted file mode 100644 index 72cb36932..000000000 --- a/src/app/shared/markdown/markdown.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'ccd-markdown', - templateUrl: './markdown.html' -}) -export class MarkdownComponent { - - @Input() - content: string; -} diff --git a/src/app/shared/markdown/markdown.html b/src/app/shared/markdown/markdown.html deleted file mode 100644 index 622499784..000000000 --- a/src/app/shared/markdown/markdown.html +++ /dev/null @@ -1 +0,0 @@ -
{{content}}
\ No newline at end of file diff --git a/src/app/shared/markdown/markdown.module.ts b/src/app/shared/markdown/markdown.module.ts deleted file mode 100644 index cba8fb511..000000000 --- a/src/app/shared/markdown/markdown.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { MarkdownComponent } from './markdown.component'; -import { NgxMdModule } from 'ngx-md'; - -@NgModule({ - imports: [ - NgxMdModule.forRoot() - ], - declarations: [ - MarkdownComponent - ], - exports: [ - MarkdownComponent - ] -}) -export class MarkdownModule {} diff --git a/src/app/shared/palette/address/address-option.model.ts b/src/app/shared/palette/address/address-option.model.ts deleted file mode 100644 index 9ff7d8091..000000000 --- a/src/app/shared/palette/address/address-option.model.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AddressModel } from '../../../core/addresses/address.model'; -export class AddressOption { - - value: AddressModel; - description: string; - - constructor (addressModel: AddressModel, description: string) { - this.value = addressModel; - this.description = (description == null) - ? this.value.AddressLine1 - + this.prefixWithCommaIfPresent(this.value.AddressLine2) - + this.prefixWithCommaIfPresent(this.value.AddressLine3) - + ', ' + this.value.PostTown - : description; - } - - private prefixWithCommaIfPresent(value: string) { - return value ? ', ' + value : value; - } - -} diff --git a/src/app/shared/palette/address/address.module.ts b/src/app/shared/palette/address/address.module.ts deleted file mode 100644 index daa4def2f..000000000 --- a/src/app/shared/palette/address/address.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { NgModule } from '@angular/core'; -import { WriteAddressFieldComponent } from './write-address-field.component'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { ComplexModule } from '../complex/complex.module'; -import { CommonModule } from '@angular/common'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MarkdownModule } from '../../markdown/markdown.module'; -import { PaletteUtilsModule } from '../utils/utils.module'; - -@NgModule({ - imports: [ - ConditionalShowModule, - CommonModule, - ComplexModule, - ReactiveFormsModule, - MarkdownModule, - PaletteUtilsModule - ], - declarations: [ - WriteAddressFieldComponent - ], - entryComponents: [ - WriteAddressFieldComponent, - ] -}) -export class AddressModule {} diff --git a/src/app/shared/palette/address/write-address-field.component.spec.ts b/src/app/shared/palette/address/write-address-field.component.spec.ts deleted file mode 100644 index f62a15618..000000000 --- a/src/app/shared/palette/address/write-address-field.component.spec.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { Component, DebugElement, Input, ViewChild } from '@angular/core'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { WriteAddressFieldComponent } from './write-address-field.component'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { By } from '@angular/platform-browser'; -import { AbstractControl, FormControl, ReactiveFormsModule } from '@angular/forms'; -import { AddressesService } from '../../../core/addresses/addresses.service'; -import { AddressModel } from '../../../core/addresses/address.model'; -import { Observable } from 'rxjs'; -import { FieldLabelPipe } from '../utils/field-label.pipe'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('WriteAddressFieldComponent', () => { - - const CASE_FIELD_LABEL = 'Case Field Label'; - const $TITLE = By.css('h3'); - - const $POSTCODE_LOOKUP = By.css('#postcodeLookup'); - const $POSTCODE_LOOKUP_INPUT = By.css('#postcodeInput'); - const $POSTCODE_LOOKUP_FIND = By.css('#postcodeLookup > button'); - const $POSTCODE_LOOKUP_ERROR_MESSAGE = By.css('.error-message'); - - const $SELECT_ADDRESS = By.css('#selectAddress'); - const $ADDRESS_LIST = By.css('#selectAddress > #addressList'); - - const $MANUAL_LINK = By.css('.manual-link'); - const $ADDRESS_COMPLEX_FIELD = By.css('ccd-write-complex-type-field'); - - @Component({ - selector: `ccd-host-component`, - template: `` - }) - class TestHostComponent { - @ViewChild(WriteAddressFieldComponent) - public componentUnderTest: WriteAddressFieldComponent; - - caseField = caseField(null); - - registerControl = () => {}; - } - - @Component({ - selector: `ccd-write-complex-type-field`, - template: `` - }) - class MockWriteComplexFieldComponent { - - @Input() - caseField: CaseField; - - @Input() - registerControl: (control: FormControl) => AbstractControl; - - @Input() - idPrefix = ''; - - @Input() - ignoreMandatory = false; - - @Input() - renderLabel: boolean; - - complexGroup = { - value : {}, - setValue: (value) => { this.complexGroup.value = value; } - }; - - } - - let addressesService: AddressesService; - let testHostComponent: TestHostComponent; - let debugElement: DebugElement; - let fixture: ComponentFixture; - - function caseField(address: AddressModel) { - return { - id: 'caseFieldId', - label: CASE_FIELD_LABEL, - field_type: { id: 'FieldTypeId', type: 'Complex' }, - value: address - }; - } - - function buildAddress(entryNo: number): AddressModel { - const address = new AddressModel(); - address.AddressLine1 = 'AddressLine1-' + entryNo; - address.AddressLine2 = 'AddressLine2-' + entryNo; - address.AddressLine3 = 'AddressLine3-' + entryNo; - address.PostTown = 'PostTown-' + entryNo; - address.County = 'County-' + entryNo; - address.PostCode = 'PostCode-' + entryNo; - address.Country = 'Country-' + entryNo; - return address; - } - - function queryPostcode() { - let postcodeField = fixture.debugElement.query($POSTCODE_LOOKUP_INPUT).nativeElement; - postcodeField.value = 'P05T CDE'; - postcodeField.dispatchEvent(new Event('input')); - fixture.detectChanges(); - debugElement.query($POSTCODE_LOOKUP_FIND).triggerEventHandler('click', null); - fixture.detectChanges(); - } - - beforeEach(async(() => { - - addressesService = new AddressesService(null, null); - - TestBed - .configureTestingModule({ - imports: [ - ConditionalShowModule, - ReactiveFormsModule, - ], - declarations: [ - WriteAddressFieldComponent, - TestHostComponent, - FieldLabelPipe, - // Mocks - MockWriteComplexFieldComponent, - ], - providers: [ - { provide: AddressesService, useValue: addressesService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(TestHostComponent); - testHostComponent = fixture.componentInstance; - testHostComponent.caseField.value = null; - - debugElement = fixture.debugElement; - fixture.detectChanges(); - - })); - - it('should render only title, lookup component and manual link when address not set', () => { - - expect(debugElement.query($TITLE).nativeElement.innerHTML).toEqual(CASE_FIELD_LABEL); - expect(debugElement.query($POSTCODE_LOOKUP)).toBeTruthy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeFalsy(); - expect(debugElement.query($MANUAL_LINK)).toBeTruthy(); - - expect(debugElement.query($ADDRESS_COMPLEX_FIELD)).toBeTruthy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD).nativeElement['hidden']).toBeTruthy(); - - }); - - it('should render only address lines if field is search ', () => { - testHostComponent.componentUnderTest.isExpanded = true; // false by default - fixture.detectChanges(); - - expect(debugElement.query($TITLE).nativeElement.innerHTML).toEqual(CASE_FIELD_LABEL); - expect(debugElement.query($POSTCODE_LOOKUP)).toBeFalsy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeFalsy(); - expect(debugElement.query($MANUAL_LINK)).toBeFalsy(); - - expect(debugElement.query($ADDRESS_COMPLEX_FIELD)).toBeTruthy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD).nativeElement['hidden']).toBeFalsy(); - - }); - - it('should render only title, lookup component and manual link when writeComplexFieldComponent is null', () => { - testHostComponent.componentUnderTest.writeComplexFieldComponent = null; - fixture.detectChanges(); - expect(debugElement.query($TITLE).nativeElement.innerHTML).toEqual(CASE_FIELD_LABEL); - expect(debugElement.query($POSTCODE_LOOKUP)).toBeTruthy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeFalsy(); - expect(debugElement.query($MANUAL_LINK)).toBeTruthy(); - - expect(debugElement.query($ADDRESS_COMPLEX_FIELD)).toBeTruthy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD).nativeElement['hidden']).toBeTruthy(); - - }); - - it('should render only title, lookup component and address when address set', () => { - - const address = new AddressModel(); - address.AddressLine1 = 'Address Line 1'; - address.AddressLine2 = 'Address Line 2'; - address.AddressLine3 = 'Address Line 3'; - address.PostTown = 'PostTown'; - address.County = 'County'; - address.PostCode = 'PostCode'; - address.Country = 'Country'; - - testHostComponent.caseField = caseField(address); - fixture.detectChanges(); - - expect(debugElement.query($TITLE).nativeElement.innerHTML).toEqual(CASE_FIELD_LABEL); - expect(debugElement.query($POSTCODE_LOOKUP)).toBeTruthy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeFalsy(); - expect(debugElement.query($MANUAL_LINK)).toBeFalsy(); - - expect(debugElement.query($ADDRESS_COMPLEX_FIELD)).toBeTruthy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD).nativeElement['hidden']).toBeFalsy(); - - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value).toEqual(address); - - }); - - it('should render a single option of \'No address found\' when no addresses are returned from AddressesService', () => { - - spyOn(addressesService, 'getAddressesForPostcode').and.returnValue(Observable.of([])); - - queryPostcode(); - - expect(debugElement.query($MANUAL_LINK)).toBeTruthy(); - expect(addressesService.getAddressesForPostcode).toHaveBeenCalledWith('P05TCDE'); - expect(debugElement.query($SELECT_ADDRESS)).toBeTruthy(); - expect(debugElement.query($ADDRESS_LIST).children.length).toEqual(1); - expect(debugElement.query($ADDRESS_LIST).children[0].nativeElement.innerHTML.trim()).toEqual('No address found'); - - }); - - it('should render a default \'summary item\' and 3 address options when 3 addresses are returned from AddressesService', () => { - - const address2 = buildAddress(2); - address2.AddressLine2 = ''; - const address3 = buildAddress(3); - address3.AddressLine3 = ''; - - spyOn(addressesService, 'getAddressesForPostcode').and.returnValue( - Observable.of([buildAddress(1), address2, address3]) - ); - - queryPostcode(); - - expect(addressesService.getAddressesForPostcode).toHaveBeenCalledWith('P05TCDE'); - expect(debugElement.query($MANUAL_LINK)).toBeTruthy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeTruthy(); - expect(debugElement.query($ADDRESS_LIST).children.length).toEqual(4); - expect(debugElement.query($ADDRESS_LIST).children[0].nativeElement.innerHTML.trim()).toEqual('3 addresses found'); - - expect(debugElement.query($ADDRESS_LIST).children[1].nativeElement.innerHTML.trim()).toEqual( - 'AddressLine1-1, AddressLine2-1, AddressLine3-1, PostTown-1' - ); - expect(debugElement.query($ADDRESS_LIST).children[2].nativeElement.innerHTML.trim()).toEqual( - 'AddressLine1-2, AddressLine3-2, PostTown-2' - ); - expect(debugElement.query($ADDRESS_LIST).children[3].nativeElement.innerHTML.trim()).toEqual( - 'AddressLine1-3, AddressLine2-3, PostTown-3' - ); - - }); - - it('should populate the address with the option selected, removing the \'manual link\'', () => { - - const selectedAddress = buildAddress(1); - testHostComponent.componentUnderTest.addressList.setValue(selectedAddress); - testHostComponent.componentUnderTest.addressSelected(); - - fixture.detectChanges(); - - expect(debugElement.query($TITLE).nativeElement.innerHTML).toEqual(CASE_FIELD_LABEL); - expect(debugElement.query($POSTCODE_LOOKUP)).toBeTruthy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeFalsy(); - expect(debugElement.query($MANUAL_LINK)).toBeFalsy(); - - expect(debugElement.query($ADDRESS_COMPLEX_FIELD)).toBeTruthy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD).nativeElement['hidden']).toBeFalsy(); - - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value).toEqual(selectedAddress); - - }); - - it('should populate a blank address when the \'manual link\' is clicked', () => { - - fixture.debugElement.query($MANUAL_LINK).nativeElement.dispatchEvent(new Event('click', null)); - fixture.detectChanges(); - - expect(debugElement.query($TITLE).nativeElement.innerHTML).toEqual(CASE_FIELD_LABEL); - expect(debugElement.query($POSTCODE_LOOKUP)).toBeTruthy(); - expect(debugElement.query($SELECT_ADDRESS)).toBeFalsy(); - expect(debugElement.query($MANUAL_LINK)).toBeFalsy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD)).toBeTruthy(); - expect(debugElement.query($ADDRESS_COMPLEX_FIELD).nativeElement['hidden']).toBeFalsy(); - - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.AddressLine1).toEqual(''); - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.AddressLine2).toEqual(''); - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.AddressLine3).toEqual(''); - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.PostTown).toEqual(''); - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.County).toEqual(''); - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.PostCode).toEqual(''); - expect(testHostComponent.componentUnderTest.writeComplexFieldComponent.complexGroup.value.Country).toEqual(''); - - }); - - it('should render an error when postcode is blank', () => { - - debugElement.query($POSTCODE_LOOKUP_FIND).triggerEventHandler('click', null); - fixture.detectChanges(); - - expect(debugElement.query($POSTCODE_LOOKUP_ERROR_MESSAGE)).toBeTruthy(); - - }); - - it('should clear the error when postcode is not blank', () => { - - testHostComponent.componentUnderTest.missingPostcode = true; - fixture.detectChanges(); - - queryPostcode(); - - expect(debugElement.query($POSTCODE_LOOKUP_ERROR_MESSAGE)).toBeFalsy(); - - }); - -}); diff --git a/src/app/shared/palette/address/write-address-field.component.ts b/src/app/shared/palette/address/write-address-field.component.ts deleted file mode 100644 index 552bd61f8..000000000 --- a/src/app/shared/palette/address/write-address-field.component.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; -import { WriteComplexFieldComponent } from '../complex/write-complex-field.component'; -import { AddressModel } from '../../../core/addresses/address.model'; -import { AddressOption } from './address-option.model'; -import { AddressesService } from '../../../core/addresses/addresses.service'; -import { FormControl, FormGroup } from '@angular/forms'; - -@Component({ - selector: 'ccd-write-address-field', - templateUrl: 'write-address-field.html', - styleUrls: ['write-address-field.scss'] -}) -export class WriteAddressFieldComponent extends AbstractFieldWriteComponent implements OnInit, OnChanges { - - @ViewChild('writeComplexFieldComponent') - writeComplexFieldComponent: WriteComplexFieldComponent; - - addressesService: AddressesService; - - formGroup = new FormGroup({}); - - postcode: FormControl; - addressList: FormControl; - - addressOptions: AddressOption[]; - - missingPostcode = false; - - constructor (addressesService: AddressesService) { - super(); - this.addressesService = addressesService; - } - - ngOnInit(): void { - this.postcode = new FormControl(''); - this.formGroup.addControl('postcode', this.postcode); - this.addressList = new FormControl(''); - this.formGroup.addControl('address', this.addressList); - } - - findAddress() { - - if (!this.postcode.value) { - this.missingPostcode = true; - } else { - this.missingPostcode = false; - const postcode = this.postcode.value; - - this.caseField.value = null; - this.addressOptions = new Array(); - this.addressesService.getAddressesForPostcode(postcode.replace(' ', '').toUpperCase()).subscribe( - result => { - result.forEach( - address => { - this.addressOptions.push(new AddressOption(address, null)); - } - ); - this.addressOptions.unshift( - new AddressOption(undefined, this.defaultLabel(this.addressOptions.length)) - ); - }, () => { - console.log(`An error occurred retrieving addresses for postcode ${postcode}.`); - }); - this.addressList.setValue(undefined); - } - } - - blankAddress() { - this.caseField.value = new AddressModel(); - this.setFormValue(); - } - - shouldShowDetailFields() { - if (this.isExpanded) { - return true; - } - if (!this.writeComplexFieldComponent || !this.writeComplexFieldComponent.complexGroup) { - return false; - } - const address = this.writeComplexFieldComponent.complexGroup.value; - let hasAddress = false; - if (address) { - Object.keys(address).forEach(function (key) { - if (address[key] != null) { - hasAddress = true; - } - }); - } - return hasAddress; - } - - addressSelected() { - this.caseField.value = this.addressList.value; - this.setFormValue(); - } - - ngOnChanges(changes: SimpleChanges) { - if (changes['caseField']) { - this.setFormValue(); - } - } - - private defaultLabel(numberOfAddresses) { - return numberOfAddresses === 0 ? 'No address found' - : numberOfAddresses + (numberOfAddresses === 1 ? ' address ' : ' addresses ') + 'found'; - } - - private setFormValue() { - if (this.writeComplexFieldComponent.complexGroup) { - this.writeComplexFieldComponent.complexGroup.setValue( - this.caseField.value - ); - } - } - -} diff --git a/src/app/shared/palette/address/write-address-field.html b/src/app/shared/palette/address/write-address-field.html deleted file mode 100644 index 3de1d8db1..000000000 --- a/src/app/shared/palette/address/write-address-field.html +++ /dev/null @@ -1,37 +0,0 @@ -
- -

{{caseField | ccdFieldLabel }}

- -
- - Enter the Postcode - - -
- -
- - - -
- - I can't enter a UK postcode - - - - -
diff --git a/src/app/shared/palette/address/write-address-field.scss b/src/app/shared/palette/address/write-address-field.scss deleted file mode 100644 index dd4ca359f..000000000 --- a/src/app/shared/palette/address/write-address-field.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import "~govuk_frontend_toolkit/stylesheets/_colours.scss"; - -.manual-link { - cursor: pointer; - display: block; - text-decoration: underline; - color: #4a90e2; -} diff --git a/src/app/shared/palette/base-field/abstract-field-read.component.ts b/src/app/shared/palette/base-field/abstract-field-read.component.ts deleted file mode 100644 index 8f69479a4..000000000 --- a/src/app/shared/palette/base-field/abstract-field-read.component.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Input } from '@angular/core'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteContext } from './palette-context.enum'; - -export class AbstractFieldReadComponent { - - @Input() - caseField: CaseField; - - @Input() - caseReference: string; - - /** - * Optional. Enable context-aware rendering of fields. - */ - @Input() - context: PaletteContext = PaletteContext.DEFAULT; -} diff --git a/src/app/shared/palette/base-field/abstract-field-write.component.ts b/src/app/shared/palette/base-field/abstract-field-write.component.ts deleted file mode 100644 index 0250d0e21..000000000 --- a/src/app/shared/palette/base-field/abstract-field-write.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Input } from '@angular/core'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { AbstractControl } from '@angular/forms'; - -export class AbstractFieldWriteComponent { - @Input() - caseField: CaseField; - - @Input() - isExpanded = false; - - @Input() - registerControl: (control: T) => T; - - @Input() - idPrefix = ''; - - public id() { - return this.idPrefix + this.caseField.id; - } -} diff --git a/src/app/shared/palette/base-field/base-field.module.ts b/src/app/shared/palette/base-field/base-field.module.ts deleted file mode 100644 index 54825a140..000000000 --- a/src/app/shared/palette/base-field/base-field.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FieldReadComponent } from './field-read.component'; -import { ReactiveFormsModule } from '@angular/forms'; -import { FieldWriteComponent } from './field-write.component'; -import { FieldReadLabelComponent } from './field-read-label.component'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - ], - declarations: [ - FieldReadComponent, - FieldWriteComponent, - FieldReadLabelComponent, - ], - exports: [ - FieldReadComponent, - FieldWriteComponent, - ] -}) -export class BaseFieldModule {} diff --git a/src/app/shared/palette/base-field/field-read-label.component.spec.ts b/src/app/shared/palette/base-field/field-read-label.component.spec.ts deleted file mode 100644 index 62a9d3713..000000000 --- a/src/app/shared/palette/base-field/field-read-label.component.spec.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DebugElement } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; -import { text } from '../../../test/helpers'; -import { FieldReadLabelComponent } from './field-read-label.component'; - -const CASE_FIELD: CaseField = { - id: 'PersonFirstName', - label: 'First name', - field_type: { - id: 'Text', - type: 'Text' - }, - display_context: 'OPTIONAL', - value: 'Johnny' -}; - -const CASE_FIELD_OF_LABEL_TYPE: CaseField = { - id: 'PersonFirstName', - label: 'First name', - field_type: { - id: 'Text', - type: 'Label' - }, - display_context: 'OPTIONAL', - value: 'Johnny' -}; -const BY_FIELD_LABEL = By.css('.case-field__label'); - -describe('FieldReadLabelComponent', () => { - - let fixture: ComponentFixture; - let component: FieldReadLabelComponent; - let de: DebugElement; - - beforeEach(async(() => { - - TestBed - .configureTestingModule({ - imports: [ - FormsModule - ], - declarations: [ - FieldReadLabelComponent, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(FieldReadLabelComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.withLabel = true; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should display label when `withLabel` is true', () => { - component.withLabel = true; - fixture.detectChanges(); - - let label = de.query(BY_FIELD_LABEL); - expect(label).toBeTruthy(); - expect(text(label)).toEqual(CASE_FIELD.label); - }); - - it('should NOT display label when `withLabel` is true but case field is of Label type', () => { - component.caseField = CASE_FIELD_OF_LABEL_TYPE; - component.withLabel = true; - fixture.detectChanges(); - - let label = de.query(BY_FIELD_LABEL); - expect(label).toBeFalsy(); - }); - - it('should NOT display label when `withLabel` is false', () => { - component.withLabel = false; - fixture.detectChanges(); - - let label = de.query(BY_FIELD_LABEL); - expect(label).toBeFalsy(); - }); -}); diff --git a/src/app/shared/palette/base-field/field-read-label.component.ts b/src/app/shared/palette/base-field/field-read-label.component.ts deleted file mode 100644 index 411349aff..000000000 --- a/src/app/shared/palette/base-field/field-read-label.component.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { CaseField } from '../../domain/definition/case-field.model'; - -@Component({ - selector: 'ccd-field-read-label', - templateUrl: './field-read-label.html', - styleUrls: [ - './field-read-label.scss' - ] -}) -export class FieldReadLabelComponent { - - @Input() - caseField: CaseField; - - @Input() - withLabel: boolean; - - public isLabel(): boolean { - return this.caseField.field_type.type === 'Label'; - } - - public isComplex(): boolean { - return this.caseField.field_type.type === 'Complex'; - } - -} diff --git a/src/app/shared/palette/base-field/field-read-label.html b/src/app/shared/palette/base-field/field-read-label.html deleted file mode 100644 index c40fa7f67..000000000 --- a/src/app/shared/palette/base-field/field-read-label.html +++ /dev/null @@ -1,7 +0,0 @@ -
-
{{caseField.label}}
-
- -
-
- diff --git a/src/app/shared/palette/base-field/field-read-label.scss b/src/app/shared/palette/base-field/field-read-label.scss deleted file mode 100644 index a2529303c..000000000 --- a/src/app/shared/palette/base-field/field-read-label.scss +++ /dev/null @@ -1,30 +0,0 @@ -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_typography'; -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_colours'; -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_measurements'; -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_shims'; -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_css3'; -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_conditionals'; - -.case-field { - - @extend %contain-floats; - @include box-sizing(border-box); - - margin-bottom: $gutter-half; - - @include media(tablet) { - margin-bottom: $gutter; - } - - .case-field__label { - display: block; - color: $text-colour; - padding-bottom: 2px; - - @include bold-19; - } - - .case-field__value { - @include core-19; - } -} diff --git a/src/app/shared/palette/base-field/field-read.component.spec.ts b/src/app/shared/palette/base-field/field-read.component.spec.ts deleted file mode 100644 index 2f798304b..000000000 --- a/src/app/shared/palette/base-field/field-read.component.spec.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { Component, DebugElement, Input } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { FieldReadComponent } from './field-read.component'; -import { PaletteService } from '../palette.service'; -import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; -import createSpyObj = jasmine.createSpyObj; -import { PaletteContext } from './palette-context.enum'; - -const $FIELD_READ_LABEL = By.css('ccd-field-read-label'); -const $FIELD_TEST = By.css('ccd-field-read-label span.text-cls'); - -const CASE_FIELD: CaseField = { - id: 'PersonFirstName', - label: 'First name', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Johnny', - display_context: 'READONLY' -}; -const CLASS = 'text-cls'; - -@Component({ - template: ` - - ` -}) -class FieldTestComponent {} - -@Component({ - selector: 'ccd-field-read-label', - template: ` - - ` -}) -class FieldReadLabelComponent { - @Input() - caseField: CaseField; - - @Input() - withLabel: boolean; -} - -describe('FieldReadComponent', () => { - - let fixture: ComponentFixture; - let component: FieldReadComponent; - let de: DebugElement; - - let paletteService: any; - - beforeEach(async(() => { - paletteService = createSpyObj('paletteService', [ - 'getFieldComponentClass' - ]); - paletteService.getFieldComponentClass.and.returnValue(FieldTestComponent); - - TestBed - .configureTestingModule({ - imports: [ - FormsModule - ], - declarations: [ - FieldReadComponent, - - // Mock - FieldTestComponent, - FieldReadLabelComponent, - ], - providers: [ - { provide: PaletteService, useValue: paletteService } - ] - }) - .compileComponents(); - - TestBed.overrideModule(BrowserDynamicTestingModule, { - set: { - entryComponents: [FieldTestComponent] - } - }); - - fixture = TestBed.createComponent(FieldReadComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.context = PaletteContext.CHECK_YOUR_ANSWER; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should get field read class from PaletteService', () => { - expect(paletteService.getFieldComponentClass).toHaveBeenCalledWith(CASE_FIELD, false); - }); - - it('should inject component instance as child', () => { - fixture.detectChanges(); - - let fieldReadLabelComponent = de.query($FIELD_READ_LABEL); - expect(fieldReadLabelComponent.children.length).toBe(1); - - let fieldReadLabel = fieldReadLabelComponent.componentInstance; - expect(fieldReadLabel.caseField).toBe(CASE_FIELD); - - let fieldTestComponent = de.query($FIELD_TEST); - expect(fieldTestComponent).toBeTruthy(); - - let fieldTest = fieldTestComponent.componentInstance; - expect(fieldTest.caseField).toBe(CASE_FIELD); - }); - - it('should pass context to field instance', () => { - fixture.detectChanges(); - - let fieldTest = de.query($FIELD_TEST).componentInstance; - expect(fieldTest.context).toBe(PaletteContext.CHECK_YOUR_ANSWER); - }); - - it('should NOT display label by default', () => { - fixture.detectChanges(); - - let fieldReadLabelComponent = de.query(By.css('ccd-field-read-label')); - let fieldReadLabel = fieldReadLabelComponent.componentInstance; - expect(fieldReadLabel.withLabel).toBe(false); - }); - - it('should display label if required', () => { - component.withLabel = true; - fixture.detectChanges(); - - let fieldReadLabelComponent = de.query(By.css('ccd-field-read-label')); - let fieldReadLabel = fieldReadLabelComponent.componentInstance; - expect(fieldReadLabel.withLabel).toBe(true); - }); -}); diff --git a/src/app/shared/palette/base-field/field-read.component.ts b/src/app/shared/palette/base-field/field-read.component.ts deleted file mode 100644 index f22631678..000000000 --- a/src/app/shared/palette/base-field/field-read.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - Component, - ComponentFactoryResolver, - Injector, - Input, - OnInit, - ViewChild, - ViewContainerRef -} from '@angular/core'; -import { PaletteService } from '../palette.service'; -import { AbstractFieldReadComponent } from './abstract-field-read.component'; - -@Component({ - selector: 'ccd-field-read', - templateUrl: './field-read.html' -}) -export class FieldReadComponent extends AbstractFieldReadComponent implements OnInit { - - @Input() - withLabel = false; - - @ViewChild('fieldContainer', {read: ViewContainerRef}) - fieldContainer: ViewContainerRef; - - constructor(private resolver: ComponentFactoryResolver, private paletteService: PaletteService) { - super(); - } - - ngOnInit(): void { - let componentClass = this.paletteService.getFieldComponentClass(this.caseField, false); - let injector = Injector.create([], this.fieldContainer.parentInjector); - let component = this.resolver.resolveComponentFactory(componentClass).create(injector); - - // Provide component @Inputs - component.instance['caseField'] = this.caseField; - component.instance['caseReference'] = this.caseReference; - component.instance['context'] = this.context; - - this.fieldContainer.insert(component.hostView); - } - -} diff --git a/src/app/shared/palette/base-field/field-read.html b/src/app/shared/palette/base-field/field-read.html deleted file mode 100644 index dc6ef459d..000000000 --- a/src/app/shared/palette/base-field/field-read.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/app/shared/palette/base-field/field-write.component.spec.ts b/src/app/shared/palette/base-field/field-write.component.spec.ts deleted file mode 100644 index efeee23cf..000000000 --- a/src/app/shared/palette/base-field/field-write.component.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { Component, DebugElement } from '@angular/core'; -import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { PaletteService } from '../palette.service'; -import { BrowserDynamicTestingModule } from '@angular/platform-browser-dynamic/testing'; -import { FieldWriteComponent } from './field-write.component'; -import { CaseField } from '../../domain/definition/case-field.model'; -import createSpyObj = jasmine.createSpyObj; -import { FormValidatorsService } from '../../../core/form/form-validators.service'; - -const CLASS = 'person-first-name-cls'; - -@Component({ - template: ` -
- ` -}) -class FieldTestComponent {} - -describe('FieldWriteComponent', () => { - - const CASE_FIELD: CaseField = { - id: 'PersonFirstName', - field_type: { - id: 'Text', - type: 'Text' - }, - display_context: 'OPTIONAL', - label: 'First name' - }; - - let fixture: ComponentFixture; - let component: FieldWriteComponent; - let de: DebugElement; - - let paletteService: any; - let formValidatorService: any; - - let formGroup: FormGroup; - - beforeEach(async(() => { - formValidatorService = createSpyObj('formValidatorService', ['addValidators']); - paletteService = createSpyObj('paletteService', [ - 'getFieldComponentClass' - ]); - paletteService.getFieldComponentClass.and.returnValue(FieldTestComponent); - - formGroup = new FormGroup({}); - - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule - ], - declarations: [ - FieldWriteComponent, - FieldTestComponent - ], - providers: [ - { provide: PaletteService, useValue: paletteService }, - { provide: FormValidatorsService, useValue: formValidatorService } - ] - }) - .compileComponents(); - - TestBed.overrideModule(BrowserDynamicTestingModule, { - set: { - entryComponents: [FieldTestComponent] - } - }); - - fixture = TestBed.createComponent(FieldWriteComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.formGroup = formGroup; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should get field write class from PaletteService', () => { - expect(paletteService.getFieldComponentClass).toHaveBeenCalledWith(CASE_FIELD, true); - }); - - it('should inject component instance as child', () => { - let ngContent = de.children[0]; - expect(ngContent.children.length).toBe(1); - - let fieldTestComponent = ngContent.children[0]; - expect(fieldTestComponent.attributes['class']).toEqual(CLASS); - - let fieldTest = fieldTestComponent.componentInstance; - expect(fieldTest.caseField).toBe(CASE_FIELD); - expect(fieldTest.registerControl).not.toBeNull(); - }); - - it('should inject component instance with valid default `registerControl` function', () => { - let ngContent = de.children[0]; - let fieldTestComponent = ngContent.children[0]; - let fieldTest = fieldTestComponent.componentInstance; - - expect(Object.keys(formGroup.controls).length).toEqual(0); - - let control = new FormControl(); - fieldTest.registerControl(control); - - expect(formGroup.controls[CASE_FIELD.id]).toBe(control); - }); -}); diff --git a/src/app/shared/palette/base-field/field-write.component.ts b/src/app/shared/palette/base-field/field-write.component.ts deleted file mode 100644 index b1b407950..000000000 --- a/src/app/shared/palette/base-field/field-write.component.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { - Component, - ComponentFactoryResolver, - Injector, - Input, - OnInit, - ViewChild, - ViewContainerRef -} from '@angular/core'; -import { PaletteService } from '../palette.service'; -import { AbstractFieldWriteComponent } from './abstract-field-write.component'; -import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { FormValidatorsService } from '../../../core/form/form-validators.service'; - -@Component({ - selector: 'ccd-field-write', - template: ` - - ` -}) -export class FieldWriteComponent extends AbstractFieldWriteComponent implements OnInit { - - @Input() - formGroup: FormGroup; - - @ViewChild('fieldContainer', {read: ViewContainerRef}) - fieldContainer: ViewContainerRef; - - private defaultControlRegistrer(formGroup: FormGroup, - caseField: CaseField): (control: FormControl) => AbstractControl { - return control => { - if (formGroup.controls[caseField.id]) { - return formGroup.get(caseField.id); - } - this.formValidatorsService.addValidators(caseField, control); - formGroup.addControl(caseField.id, control); - return control; - }; - } - - constructor(private resolver: ComponentFactoryResolver, - private paletteService: PaletteService, - private formValidatorsService: FormValidatorsService) { - super(); - } - - ngOnInit(): void { - let componentClass = this.paletteService.getFieldComponentClass(this.caseField, true); - - let injector = Injector.create([], this.fieldContainer.parentInjector); - let component = this.resolver.resolveComponentFactory(componentClass).create(injector); - - // Provide component @Inputs - component.instance['caseField'] = this.caseField; - component.instance['registerControl'] = this.registerControl - || this.defaultControlRegistrer(this.formGroup, this.caseField); - component.instance['idPrefix'] = this.idPrefix; - if (this.caseField.field_type.id === 'AddressGlobal') { - component.instance['ignoreMandatory'] = true; - } - component.instance['isExpanded'] = this.isExpanded; - this.fieldContainer.insert(component.hostView); - } -} diff --git a/src/app/shared/palette/base-field/palette-context.enum.ts b/src/app/shared/palette/base-field/palette-context.enum.ts deleted file mode 100644 index f8b02dc16..000000000 --- a/src/app/shared/palette/base-field/palette-context.enum.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum PaletteContext { - DEFAULT = 'DEFAULT', - CHECK_YOUR_ANSWER = 'CHECK_YOUR_ANSWER', -} diff --git a/src/app/shared/palette/collection/collection-field.scss b/src/app/shared/palette/collection/collection-field.scss deleted file mode 100644 index 80b86d91e..000000000 --- a/src/app/shared/palette/collection/collection-field.scss +++ /dev/null @@ -1,25 +0,0 @@ -.collection-field-table { - tr:first-child>td { - padding-top: 0; - } - tr:last-child>td { - border-bottom: none; - } - td.collection-actions { - width: 1px; - white-space: nowrap; - } -} -.error-spacing { - margin-top: 10px; -} -.collection-title{ - height: 51px; -} -.float-left { - float: left; - padding-top: 8px; -} -.float-right { - float: right; -} diff --git a/src/app/shared/palette/collection/read-collection-field.component.spec.ts b/src/app/shared/palette/collection/read-collection-field.component.spec.ts deleted file mode 100644 index f6068679d..000000000 --- a/src/app/shared/palette/collection/read-collection-field.component.spec.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { ReadCollectionFieldComponent } from './read-collection-field.component'; -import { By } from '@angular/platform-browser'; -import { MockComponent } from 'ng2-mock-component'; -import { PaletteContext } from '../base-field/palette-context.enum'; - -describe('ReadCollectionFieldComponent', () => { - - const $CHILD_FIELDS = By.css('table>tbody>tr>td>ccd-field-read'); - - const NESTED_FIELD_TYPE: FieldType = { - id: 'Text', - type: 'Text' - }; - const FIELD_TYPE: FieldType = { - id: 'Collection', - type: 'Collection', - collection_field_type: NESTED_FIELD_TYPE - }; - const VALUES = [ - { - value: 'Pierre', - }, - { - value: 'Paul', - }, - { - value: 'Jacques', - } - ]; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - field_type: FIELD_TYPE, - display_context: 'OPTIONAL', - value: VALUES - }; - - let FieldReadComponent = MockComponent({ - selector: 'ccd-field-read', - inputs: ['caseField', 'context'] - }); - - let fixture: ComponentFixture; - let component: ReadCollectionFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadCollectionFieldComponent, - - // Mock - FieldReadComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadCollectionFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.context = PaletteContext.CHECK_YOUR_ANSWER; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render values as a table with one row and one cell per value', () => { - component.caseField.value = VALUES; - fixture.detectChanges(); - - let cells = de.queryAll($CHILD_FIELDS); - - for (let i = 0; i < VALUES.length; i++) { - - let field = cells[i].componentInstance; - - expect(field.caseField).toEqual({ - id: i, - label: 'X ' + (i + 1), - field_type: { - id: 'Text', - type: 'Text' - }, - value: VALUES[i].value - }); - } - }); - - it('should NOT render anything when value is undefined', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.children.length).toBe(0); - }); - - it('should NOT render anything when value is null', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.children.length).toBe(0); - }); - - it('should NOT render anything when value is empty array', () => { - component.caseField.value = []; - fixture.detectChanges(); - - expect(de.children.length).toBe(0); - }); - - it('render values as a table with one row and one cell per value', () => { - component.caseField.value = VALUES; - fixture.detectChanges(); - - let cells = de.queryAll($CHILD_FIELDS); - - for (let i = 0; i < VALUES.length; i++) { - - let field = cells[i].componentInstance; - - expect(field.context).toEqual(PaletteContext.CHECK_YOUR_ANSWER); - } - }); -}); diff --git a/src/app/shared/palette/collection/read-collection-field.component.ts b/src/app/shared/palette/collection/read-collection-field.component.ts deleted file mode 100644 index f5b57a636..000000000 --- a/src/app/shared/palette/collection/read-collection-field.component.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { Component } from '@angular/core'; - -@Component({ - selector: 'ccd-read-collection-field', - templateUrl: './read-collection-field.html', - styleUrls: ['./collection-field.scss'] -}) -export class ReadCollectionFieldComponent extends AbstractFieldReadComponent { - -} diff --git a/src/app/shared/palette/collection/read-collection-field.html b/src/app/shared/palette/collection/read-collection-field.html deleted file mode 100644 index d9daa15fc..000000000 --- a/src/app/shared/palette/collection/read-collection-field.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -
- -
diff --git a/src/app/shared/palette/collection/write-collection-field.component.spec.ts b/src/app/shared/palette/collection/write-collection-field.component.spec.ts deleted file mode 100644 index 598607931..000000000 --- a/src/app/shared/palette/collection/write-collection-field.component.spec.ts +++ /dev/null @@ -1,308 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteCollectionFieldComponent } from './write-collection-field.component'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import { FormValidatorsService } from '../../../core/form/form-validators.service'; -import { MatDialog, MatDialogRef } from '@angular/material'; -import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to'; -import { of } from 'rxjs'; -import { RemoveDialogComponent } from '../../remove-dialog/remove-dialog.component'; -import createSpyObj = jasmine.createSpyObj; -import any = jasmine.any; - -const FIELD_ID = 'Values'; -const SIMPLE_FIELD_TYPE: FieldType = { - id: 'Text', - type: 'Collection', - collection_field_type: { - id: 'Text', - type: 'Text' - } -}; - -const COMPLEX_FIELD_TYPE: FieldType = { - id: 'Address', - type: 'Collection', - collection_field_type: { - id: 'Address', - type: 'Complex' - } -}; -const VALUES = [ - { - id: '123', - value: 'v1' - }, - { - id: '456', - value: 'v2' - } -]; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteCollectionFieldComponent', () => { - - const $WRITE_FIELDS = By.css('ccd-field-write'); - const $ADD_BUTTON_TOP = By.css('.form-group>.panel>.button:nth-of-type(1)'); - const $ADD_BUTTON_BOTTOM = By.css('.form-group>.panel>.button:nth-of-type(2)'); - const $REMOVE_BUTTONS = By.css('.collection-title .button.button-secondary'); - - let FieldWriteComponent = MockComponent({ - selector: 'ccd-field-write', - inputs: ['caseField', 'registerControl', 'idPrefix', 'isExpanded'], - template: '', - }); - - let fixture: ComponentFixture; - let component: WriteCollectionFieldComponent; - - let de: DebugElement; - let formValidatorService: any; - let dialog: any; - let dialogRef: any; - let scrollToService: any; - - let caseField: CaseField; - - beforeEach(async(() => { - formValidatorService = createSpyObj('formValidatorService', ['addValidators']); - dialogRef = createSpyObj>('MatDialogRef', ['afterClosed']); - dialogRef.afterClosed.and.returnValue(of()); - dialog = createSpyObj('MatDialog', ['open']); - dialog.open.and.returnValue(dialogRef); - scrollToService = createSpyObj('scrollToService', ['scrollTo']); - scrollToService.scrollTo.and.returnValue(of()); - - caseField = { - id: FIELD_ID, - label: 'X', - field_type: SIMPLE_FIELD_TYPE, - display_context: 'OPTIONAL', - value: VALUES.slice(0) - }; - - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteCollectionFieldComponent, - // Mock - FieldWriteComponent, - ], - providers: [ - { provide: FormValidatorsService, useValue: formValidatorService }, - { provide: MatDialog, useValue: dialog }, - { provide: ScrollToService, useValue: scrollToService }, - RemoveDialogComponent - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteCollectionFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = caseField; - - component.ngOnInit(); - - de = fixture.debugElement; - fixture.detectChanges(); - - // Manually populate the form array as item field are mocked and can't register themselves - VALUES.forEach((collectionItem, index) => { - component.buildControlRegistrer(collectionItem.id, index)(new FormControl(collectionItem.value)); - }); - - fixture.detectChanges(); - })); - - it('should render a row with a write field for each items', () => { - let writeFields = de.queryAll($WRITE_FIELDS); - - expect(writeFields.length).toEqual(2); - }); - - it('should pass ID, type and value to child field', () => { - let field1 = de.queryAll($WRITE_FIELDS)[0].componentInstance; - - expect(field1.caseField.id).toEqual('0'); - expect(field1.caseField.value).toEqual(VALUES[0].value); - expect(field1.caseField.field_type).toEqual(SIMPLE_FIELD_TYPE.collection_field_type); - }); - - it('should pass ID prefix without index when simple type', () => { - let field1 = de.queryAll($WRITE_FIELDS)[0].componentInstance; - let field2 = de.queryAll($WRITE_FIELDS)[1].componentInstance; - - expect(field1.idPrefix).toEqual(caseField.id + '_'); - expect(field2.idPrefix).toEqual(caseField.id + '_'); - }); - - it('should pass ID prefix with index when Complex type', () => { - caseField.field_type = COMPLEX_FIELD_TYPE; - component.ngOnInit(); - fixture.detectChanges(); - - let field1 = de.queryAll($WRITE_FIELDS)[0].componentInstance; - let field2 = de.queryAll($WRITE_FIELDS)[1].componentInstance; - - expect(field1.idPrefix).toEqual(caseField.id + '_' + 0 + '_'); - expect(field2.idPrefix).toEqual(caseField.id + '_' + 1 + '_'); - }); - - it('should pass valid `registerControl` function registering control as value of item', () => { - // Reset form array - component.ngOnInit(); - fixture.detectChanges(); - - let field1 = de.queryAll($WRITE_FIELDS)[0].componentInstance; - - expect(component.formArray.controls.length).toBe(0); - - const control = new FormControl('x'); - field1.registerControl(control); - - expect(component.formArray.controls.length).toBe(1); - expect(component.formArray.get('0.value')).toBe(control); - }); - - it('should add empty item to collection when add button is clicked', () => { - let addButton = de.query($ADD_BUTTON_TOP); - - addButton.nativeElement.click(); - fixture.detectChanges(); - - let writeFields = de.queryAll($WRITE_FIELDS); - - expect(writeFields.length).toEqual(3); - - let addedField = writeFields[2].componentInstance; - - // Show empty case field - expect(addedField.caseField.id).toEqual('2'); - expect(addedField.caseField.value).toBeNull(); - expect(addedField.caseField.field_type).toEqual(SIMPLE_FIELD_TYPE.collection_field_type); - }); - - it('should focus 1st input of newly added item', done => { - let addButton = de.query($ADD_BUTTON_TOP); - - addButton.nativeElement.click(); - fixture.detectChanges(); - - let writeFields = de.queryAll($WRITE_FIELDS); - let lastWriteField = writeFields[writeFields.length - 1]; - - let lastFieldInput = lastWriteField.query(By.css('input')); - - setTimeout(() => { - // Timeout required for focus to be effective - expect(lastFieldInput.nativeElement).toBe(document.activeElement); - done(); - }); - }); - - it('should scroll when item added with top button', done => { - let addButton = de.query($ADD_BUTTON_TOP); - - addButton.nativeElement.click(); - fixture.detectChanges(); - - let writeFields = de.queryAll($WRITE_FIELDS); - let lastIndex = writeFields.length - 1; - - setTimeout(() => { - expect(scrollToService.scrollTo).toHaveBeenCalledWith({ - target: `${FIELD_ID}_${lastIndex}`, - duration: 1000, - offset: -150, - }); - done(); - }); - }); - - it('should NOT scroll when item added with bottom button', done => { - let addButton = de.query($ADD_BUTTON_BOTTOM); - - addButton.nativeElement.click(); - fixture.detectChanges(); - - setTimeout(() => { - expect(scrollToService.scrollTo).not.toHaveBeenCalled(); - done(); - }); - }); - - it('should have 1 Remove button per item', () => { - let removeButtons = de.queryAll($REMOVE_BUTTONS); - - expect(removeButtons.length).toBe(VALUES.length); - }); - - it('should display removal confirmation dialog when remove button is clicked', () => { - let removeButtons = de.queryAll($REMOVE_BUTTONS); - - let removeFirstButton = removeButtons[0]; - removeFirstButton.nativeElement.click(); - fixture.detectChanges(); - - expect(dialog.open).toHaveBeenCalledWith(RemoveDialogComponent, any(Object)); - }); - - it('should remove item from collection when remove button is clicked and confirmed', () => { - // Confirm removal through mock dialog - dialogRef.afterClosed.and.returnValue(of('Remove')); - - let removeButtons = de.queryAll($REMOVE_BUTTONS); - - let removeFirstButton = removeButtons[0]; - removeFirstButton.nativeElement.click(); - fixture.detectChanges(); - - let writeFields = de.queryAll($WRITE_FIELDS); - expect(writeFields.length).toBe(VALUES.length - 1); - - let field2 = writeFields[0].componentInstance; - expect(field2.caseField.id).toEqual('0'); - expect(field2.caseField.value).toEqual(VALUES[1].value); - expect(component.formArray.controls.length).toBe(1); - expect(component.formArray.controls[0].value).toEqual(VALUES[1]); - }); - - it('should NOT remove item from collection when remove button is clicked and declined', () => { - // Declined removal through mock dialog - dialogRef.afterClosed.and.returnValue(of('Cancel')); - - let removeButtons = de.queryAll($REMOVE_BUTTONS); - - let removeFirstButton = removeButtons[0]; - removeFirstButton.nativeElement.click(); - fixture.detectChanges(); - - let writeFields = de.queryAll($WRITE_FIELDS); - expect(writeFields.length).toBe(VALUES.length); - }); - - it('should handle null or undefined values as empty array', () => { - caseField.value = null; - component.ngOnInit(); - fixture.detectChanges(); - - let fields = de.queryAll($WRITE_FIELDS); - expect(fields.length).toBe(0); - }); -}); diff --git a/src/app/shared/palette/collection/write-collection-field.component.ts b/src/app/shared/palette/collection/write-collection-field.component.ts deleted file mode 100644 index dcbfa39e5..000000000 --- a/src/app/shared/palette/collection/write-collection-field.component.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { Component, ElementRef, OnInit, QueryList, ViewChildren } from '@angular/core'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { FormValidatorsService } from '../../../core/form/form-validators.service'; -import { MatDialog, MatDialogConfig } from '@angular/material'; -import { RemoveDialogComponent } from '../../remove-dialog/remove-dialog.component'; -import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to'; -import { finalize } from 'rxjs/operators'; - -@Component({ - selector: 'ccd-write-collection-field', - templateUrl: './write-collection-field.html', - styleUrls: ['./collection-field.scss'] -}) -export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent implements OnInit { - formArray: FormArray; - - @ViewChildren('collectionItem') - private items: QueryList; - - constructor(private formValidatorsService: FormValidatorsService, - private dialog: MatDialog, - private scrollToService: ScrollToService, - ) { - super(); - } - - ngOnInit(): void { - this.caseField.value = this.caseField.value || []; - - this.formArray = this.registerControl(new FormArray([])); - } - - buildCaseField(item, index: number): CaseField { - return { - id: index.toString(), - field_type: this.caseField.field_type.collection_field_type, - display_context: this.caseField.display_context, - value: item.value, - label: null - }; - } - - buildControlRegistrer(id: string, index: number): (control: FormControl) => AbstractControl { - return control => { - if (this.formArray.at(index)) { - return this.formArray.at(index).get('value'); - } - this.formValidatorsService.addValidators(this.caseField, control); - this.formArray.push( - new FormGroup({ - id: new FormControl(id), - value: control - }) - ); - return control; - }; - } - - buildIdPrefix(index: number): string { - if ('Complex' === this.caseField.field_type.collection_field_type.type) { - return this.idPrefix + this.caseField.id + '_' + index + '_'; - } else { - return this.idPrefix + this.caseField.id + '_'; - } - } - - addItem(doScroll: boolean): void { - // Manually resetting errors is required to prevent `ExpressionChangedAfterItHasBeenCheckedError` - this.formArray.setErrors(null); - this.caseField.value.push({value: null}); - - let lastIndex = this.caseField.value.length - 1; - - // Timeout is required for the collection item to be rendered before it can be scrolled to or focused. - if (doScroll) { - setTimeout(() => { - this.scrollToService.scrollTo({ - target: this.buildIdPrefix(lastIndex) + lastIndex, - duration: 1000, - offset: -150, - }) - .pipe(finalize(() => this.focusLastItem())) - .subscribe(null, console.error); - }); - } else { - setTimeout(() => this.focusLastItem()); - } - } - - private focusLastItem() { - this.items.last.nativeElement.querySelector('input').focus(); - } - - removeItem(index: number): void { - this.caseField.value.splice(index, 1); - this.formArray.removeAt(index); - } - - itemLabel(index: number) { - let displayIndex = index + 1; - return index ? `${this.caseField.label} ${displayIndex}` : this.caseField.label; - } - - openModal(i: number) { - const dialogConfig = new MatDialogConfig(); - dialogConfig.disableClose = true; - dialogConfig.autoFocus = true; - dialogConfig.ariaLabel = 'Label'; - dialogConfig.height = '220px'; - dialogConfig.width = '550px'; - dialogConfig.panelClass = 'dialog'; - - dialogConfig.closeOnNavigation = false; - dialogConfig.position = { - top: window.innerHeight / 2 - 110 + 'px', left: window.innerWidth / 2 - 275 + 'px' - }; - - const dialogRef = this.dialog.open(RemoveDialogComponent, dialogConfig); - - dialogRef.afterClosed().subscribe(result => { - if (result === 'Remove') { - this.removeItem(i); - } - }); - } - -} diff --git a/src/app/shared/palette/collection/write-collection-field.html b/src/app/shared/palette/collection/write-collection-field.html deleted file mode 100644 index 9d2042511..000000000 --- a/src/app/shared/palette/collection/write-collection-field.html +++ /dev/null @@ -1,34 +0,0 @@ -
- -
- -

- {{caseField | ccdFieldLabel}} -

- -

- {{caseField.hint_text}} - {{formArray.errors | ccdFirstError}} -

- -
- -
-
-
- -
-
- -
-
- -
- -
- - - -
- -
diff --git a/src/app/shared/palette/complex/complex.module.ts b/src/app/shared/palette/complex/complex.module.ts deleted file mode 100644 index 2307746da..000000000 --- a/src/app/shared/palette/complex/complex.module.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ReadComplexFieldTableComponent } from './read-complex-field-table.component'; -import { FieldsFilterPipe } from './fields-filter.pipe'; -import { BaseFieldModule } from '../base-field/base-field.module'; -import { WriteComplexFieldComponent } from './write-complex-field.component'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { IsCompoundPipe } from '../utils/is-compound.pipe'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { MarkdownModule } from '../../markdown/markdown.module'; -import { ReadComplexFieldRawComponent } from './read-complex-field-raw.component'; -import { ReadComplexFieldComponent } from './read-complex-field.component'; - -@NgModule({ - imports: [ - CommonModule, - BaseFieldModule, - PaletteUtilsModule, - ConditionalShowModule, - MarkdownModule - ], - providers: [ - IsCompoundPipe, - ], - declarations: [ - ReadComplexFieldComponent, - ReadComplexFieldTableComponent, - ReadComplexFieldRawComponent, - WriteComplexFieldComponent, - FieldsFilterPipe, - ], - entryComponents: [ - ReadComplexFieldComponent, - WriteComplexFieldComponent, - ], - exports: [ - WriteComplexFieldComponent - ] -}) -export class ComplexModule {} diff --git a/src/app/shared/palette/complex/fields-filter.pipe.spec.ts b/src/app/shared/palette/complex/fields-filter.pipe.spec.ts deleted file mode 100644 index fbe82206c..000000000 --- a/src/app/shared/palette/complex/fields-filter.pipe.spec.ts +++ /dev/null @@ -1,442 +0,0 @@ -import { FieldsFilterPipe } from './fields-filter.pipe'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('FieldsFilterPipe', () => { - - const caseBuilder = (fields: CaseField[], value?: any): CaseField => { - return { - id: 'Applicant', - label: 'Applicant', - display_context: 'OPTIONAL', - field_type: { - id: 'ApplicantType', - type: 'Complex', - complex_fields: fields - }, - value: value - }; - }; - - let fieldsFilter: FieldsFilterPipe; - - beforeEach(() => { - fieldsFilter = new FieldsFilterPipe(); - }); - - it('should handle null or undefined fields', () => { - expect(fieldsFilter.transform(undefined)).toEqual([]); - expect(fieldsFilter.transform(null)).toEqual([]); - }); - - describe('with value embedded in fields', () => { - const FIELDS_WITH_VALUES: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - value: 'John', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ]; - - const FIELDS_WITH_VALUES_AND_MISSING: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - value: 'John', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PersonLastName', - label: 'Last name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ]; - - const FIELDS_WITH_VALUES_AND_FALSE: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - value: 'John', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PersonGender', - label: 'Gender', - display_context: 'OPTIONAL', - field_type: { - id: 'YesOrNo', - type: 'YesOrNo' - }, - value: false - } - ]; - - const FIELDS_WITH_VALUES_AND_ZERO: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - value: 'John', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PersonChildren', - label: 'Children', - display_context: 'OPTIONAL', - field_type: { - id: 'Number', - type: 'Number' - }, - value: 0 - } - ]; - - it('should return fields with embedded value as is', () => { - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - - it('should filter out fields with embedded value empty', () => { - FIELDS_WITH_VALUES_AND_MISSING[1].value = ''; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - - it('should filter out fields with embedded value `undefined`', () => { - FIELDS_WITH_VALUES_AND_MISSING[1].value = undefined; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - - it('should filter out fields with embedded value `null`', () => { - FIELDS_WITH_VALUES_AND_MISSING[1].value = null; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - - it('should NOT filter out fields with embedded value `false`', () => { - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES_AND_FALSE)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES_AND_FALSE); - }); - - it('should NOT filter out fields with embedded value `0`', () => { - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES_AND_ZERO)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES_AND_ZERO); - }); - }); - - describe('with value outside of fields', () => { - const EXPECTED_FILTERED_FIELDS: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'John' - } - ]; - - const FIELDS_WITHOUT_VALUES: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PersonLastName', - label: 'Last name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ]; - - const FIELDS_WITH_VALUES: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'John' - }, - { - id: 'PersonLastName', - label: 'Last name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Doe' - } - ]; - - const VALUES_ALL = { - 'PersonFirstName': 'John', - 'PersonLastName': 'Doe' - }; - - const VALUES_AND_MISSING = { - 'PersonFirstName': 'John' - }; - - it('should return fields with external value as fields with embedded value', () => { - FIELDS_WITH_VALUES[1].value = 'Doe'; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITHOUT_VALUES, VALUES_ALL)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - - it('should filter out fields with external value empty', () => { - VALUES_AND_MISSING['PersonLastName'] = ''; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITHOUT_VALUES, VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(EXPECTED_FILTERED_FIELDS); - }); - - it('should filter out fields with external value `undefined`', () => { - VALUES_AND_MISSING['PersonLastName'] = undefined; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITHOUT_VALUES, VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(EXPECTED_FILTERED_FIELDS); - }); - - it('should filter out fields with external value `null`', () => { - VALUES_AND_MISSING['PersonLastName'] = null; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITHOUT_VALUES, VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(EXPECTED_FILTERED_FIELDS); - }); - - it('should NOT filter out fields with external value `0`', () => { - VALUES_AND_MISSING['PersonLastName'] = 0; - FIELDS_WITH_VALUES[1].value = 0; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITHOUT_VALUES, VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - - it('should NOT filter out fields with external value `false`', () => { - VALUES_AND_MISSING['PersonLastName'] = false; - FIELDS_WITH_VALUES[1].value = false; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITHOUT_VALUES, VALUES_AND_MISSING)); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES); - }); - }); - - describe('with complex type in fields', () => { - const COMPLEX_WITH_CHILDREN: CaseField[] = [ - { - id: 'Person', - label: 'Person', - display_context: 'OPTIONAL', - field_type: { - id: 'Person', - type: 'Complex', - complex_fields: [ - { - id: 'PersonFirstName', - label: 'First name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'John' - } - ] - } - } - ]; - - const COMPLEX_WITHOUT_CHILDREN: CaseField[] = [ - { - id: 'Person', - label: 'Person', - display_context: 'OPTIONAL', - field_type: { - id: 'Person', - type: 'Complex', - complex_fields: [] - } - } - ]; - - const COMPLEX_WITH_EMPTY_CHILDREN: CaseField[] = [ - { - id: 'Person', - label: 'Person', - display_context: 'OPTIONAL', - field_type: { - id: 'Person', - type: 'Complex', - complex_fields: [ - { - id: 'FirstName', - label: 'First name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '' - } - ] - } - } - ]; - - const COMPLEX_WITH_EXTERNAL_VALUES: CaseField = { - id: 'Person', - label: 'Person', - display_context: 'OPTIONAL', - field_type: { - id: 'Person', - type: 'Complex', - complex_fields: [ - { - id: 'FirstNameContainerContainer', - label: 'First name container container', - display_context: 'OPTIONAL', - field_type: { - id: 'Complex', - type: 'Complex', - complex_fields: [ - { - id: 'FirstNameContainer', - label: 'First name container', - display_context: 'OPTIONAL', - field_type: { - id: 'Complex', - type: 'Complex', - complex_fields: [ - { - id: 'FirstName', - label: 'First name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ] - } - } - ] - } - } - ] - }, - value: { - 'FirstNameContainerContainer': { - 'FirstNameContainer': { - 'FirstName': 'Doe' - } - } - } - }; - - it('should NOT filter out Complex, even though Complex value itself is undefined but children have values', () => { - let filteredFields = fieldsFilter.transform(caseBuilder(COMPLEX_WITH_CHILDREN)); - - expect(filteredFields).toEqual(COMPLEX_WITH_CHILDREN); - }); - - it('should filter out Complex without fields', () => { - let filteredFields = fieldsFilter.transform(caseBuilder(COMPLEX_WITHOUT_CHILDREN)); - - expect(filteredFields).toEqual([]); - }); - - it('should filter out Complex when ALL children have empty values', () => { - let filteredFields = fieldsFilter.transform(caseBuilder(COMPLEX_WITH_EMPTY_CHILDREN)); - - expect(filteredFields).toEqual([]); - }); - - it('should NOT filter out Complex which has a great-grand-child with value', () => { - let filteredFields = fieldsFilter.transform(COMPLEX_WITH_EXTERNAL_VALUES); - - expect(filteredFields.length).toEqual(1); - }); - }); - - describe('option to keep empty fields', () => { - const FIELDS_WITH_VALUES_AND_MISSING: CaseField[] = [ - { - id: 'PersonFirstName', - label: 'First name', - value: 'John', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PersonLastName', - label: 'Last name', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ]; - - it('should not filter out fields with embedded value empty', () => { - FIELDS_WITH_VALUES_AND_MISSING[1].value = ''; - - let filteredFields = fieldsFilter.transform(caseBuilder(FIELDS_WITH_VALUES_AND_MISSING), true); - - expect(filteredFields).toEqual(FIELDS_WITH_VALUES_AND_MISSING); - }); - }); -}); diff --git a/src/app/shared/palette/complex/fields-filter.pipe.ts b/src/app/shared/palette/complex/fields-filter.pipe.ts deleted file mode 100644 index 1b171a7d8..000000000 --- a/src/app/shared/palette/complex/fields-filter.pipe.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { CaseField } from '../../domain/definition/case-field.model'; - -@Pipe({ - name: 'ccdFieldsFilter' -}) -export class FieldsFilterPipe implements PipeTransform { - - private static readonly EMPTY_VALUES = [ - undefined, - null, - '', - {} - ]; - - private static readonly NESTED_TYPES = { - 'Complex': FieldsFilterPipe.isValidComplex - }; - - /** - * Complex type should have at least on simple field descendant with a value. - * - * @param field - * @param values - * @returns {boolean} - */ - private static isValidComplex(field: CaseField, values?: object): boolean { - values = values || {}; - let type = field.field_type; - let value = FieldsFilterPipe.getValue(field, values); - - let hasChildrenWithValue = type.complex_fields.find(f => { - return FieldsFilterPipe.keepField(f, value); - }); - - return !!hasChildrenWithValue; - } - - private static isEmpty(value: any): boolean { - return FieldsFilterPipe.EMPTY_VALUES.indexOf(value) !== -1 - || value.length === 0; - } - - private static isCompound(field: CaseField): boolean { - return FieldsFilterPipe.NESTED_TYPES[field.field_type.type]; - } - - private static isValidCompound(field: CaseField, value?: object): boolean { - return FieldsFilterPipe.isCompound(field) - && FieldsFilterPipe.NESTED_TYPES[field.field_type.type](field, value); - } - - private static keepField(field: CaseField, value?: object): boolean { - value = value || {}; - - if (FieldsFilterPipe.isCompound(field)) { - return FieldsFilterPipe.isValidCompound(field, value); - } - - return !FieldsFilterPipe.isEmpty(field.value) - || !FieldsFilterPipe.isEmpty(value[field.id]); - } - - private static getValue(field: CaseField, values: any): any { - return FieldsFilterPipe.isEmpty(field.value) ? values[field.id] : field.value; - } - - /** - * Filter out fields having no data to display and harmonise field values coming parent's value. - * - * @param complexField - * @param keepEmpty - * @returns {any} - */ - transform(complexField: CaseField, keepEmpty?: boolean): CaseField[] { - if (!complexField || !complexField.field_type) { - return []; - } - - let fields = complexField.field_type.complex_fields || []; - let values = complexField.value || {}; - - return fields - .map(f => { - let clone = { ...f }; - - let value = FieldsFilterPipe.getValue(f, values); - - if (!FieldsFilterPipe.isEmpty(value)) { - clone.value = value; - } - - return clone; - }) - .filter(f => keepEmpty || FieldsFilterPipe.keepField(f)) - .map(f => { - f.display_context = complexField.display_context; - return f; - }); - } -} diff --git a/src/app/shared/palette/complex/read-complex-field-raw.component.spec.ts b/src/app/shared/palette/complex/read-complex-field-raw.component.spec.ts deleted file mode 100644 index f73ff1f63..000000000 --- a/src/app/shared/palette/complex/read-complex-field-raw.component.spec.ts +++ /dev/null @@ -1,411 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { ReadComplexFieldRawComponent } from './read-complex-field-raw.component'; -import { FieldsFilterPipe } from './fields-filter.pipe'; -import { DebugElement } from '@angular/core'; -import { By } from '@angular/platform-browser'; -import { MockComponent } from 'ng2-mock-component'; -import { PaletteContext } from '../base-field/palette-context.enum'; -import { text } from '../../../test/helpers'; - -const initTests = (caseField, mocks) => { - let fixture: ComponentFixture; - let component: ReadComplexFieldRawComponent; - let de: DebugElement; - - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - ReadComplexFieldRawComponent, - FieldsFilterPipe, - - ...mocks - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadComplexFieldRawComponent); - component = fixture.componentInstance; - - component.caseField = caseField; - component.context = PaletteContext.CHECK_YOUR_ANSWER; - - de = fixture.debugElement; - fixture.detectChanges(); - - return { - de, - component, - fixture, - }; -}; - -const expectCaseField = (de, caseField) => { - expect(de.componentInstance.caseField).toEqual(caseField) -}; - -const expectLabel = (de: DebugElement, label) => { - expect(text(de)).toEqual(label) -}; - -const expectContext = (de, expectedContext) => { - expect(de.componentInstance.context).toEqual(expectedContext) -}; - -describe('ReadComplexFieldRawComponent', () => { - - const $COMPLEX_LIST = By.css('dl.complex-raw'); - const $COMPLEX_LIST_ITEMS = By.css('dl.complex-raw>dd'); - const $COMPLEX_LIST_LABELS = By.css('dl.complex-raw>dt'); - const $COMPLEX_LIST_VALUES = By.css('dl.complex-raw>dd>ccd-field-read'); - - let FieldReadComponent; - - let fixture: ComponentFixture; - let component: ReadComplexFieldRawComponent; - let de: DebugElement; - - beforeEach(() => { - FieldReadComponent = MockComponent({ - selector: 'ccd-field-read', - inputs: ['caseField', 'context'] - }); - }); - - describe('when simple values split across children fields', () => { - const FIELD_TYPE_WITH_VALUES: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Flat 9' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '111 East India road' - }, - { - id: 'AddressLine3', - label: 'Line 3', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Poplar' - }, - ] - }; - - let caseField: CaseField; - - beforeEach(async(() => { - caseField = { - id: '', - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_VALUES - }; - - let test = initTests(caseField, [ - FieldReadComponent - ]); - de = test.de; - fixture = test.fixture; - component = test.component; - })); - - it('should render a list', () => { - let complexList = de.query($COMPLEX_LIST); - - expect(complexList).toBeTruthy(); - }); - - it('should render one list item per child field', () => { - let complexListItems = de.queryAll($COMPLEX_LIST_ITEMS); - - expect(complexListItems.length).toEqual(FIELD_TYPE_WITH_VALUES.complex_fields.length); - }); - - it('should render one field read component per child field', () => { - let complexListValues = de.queryAll($COMPLEX_LIST_VALUES); - - expect(complexListValues.length).toEqual(FIELD_TYPE_WITH_VALUES.complex_fields.length); - expectCaseField(complexListValues[0], FIELD_TYPE_WITH_VALUES.complex_fields[0]); - expectCaseField(complexListValues[1], FIELD_TYPE_WITH_VALUES.complex_fields[1]); - expectCaseField(complexListValues[2], FIELD_TYPE_WITH_VALUES.complex_fields[2]); - }); - - it('should render one field read component per child field', () => { - let complexListLabels = de.queryAll($COMPLEX_LIST_LABELS); - - expect(complexListLabels.length).toEqual(FIELD_TYPE_WITH_VALUES.complex_fields.length); - expectLabel(complexListLabels[0], FIELD_TYPE_WITH_VALUES.complex_fields[0].label); - expectLabel(complexListLabels[1], FIELD_TYPE_WITH_VALUES.complex_fields[1].label); - expectLabel(complexListLabels[2], FIELD_TYPE_WITH_VALUES.complex_fields[2].label); - }); - - it('should render one field read component per child field', () => { - let complexListValues = de.queryAll($COMPLEX_LIST_VALUES); - - expectContext(complexListValues[0], PaletteContext.CHECK_YOUR_ANSWER); - expectContext(complexListValues[1], PaletteContext.CHECK_YOUR_ANSWER); - expectContext(complexListValues[2], PaletteContext.CHECK_YOUR_ANSWER); - }); - - }); - - describe('when empty values split across children fields', () => { - const FIELD_TYPE_WITH_MISSING_VALUE: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Flat 9' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '' - }, - { - id: 'AddressLine3', - label: 'Line 3', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Poplar' - }, - ] - }; - - let caseField: CaseField; - - beforeEach(async(() => { - caseField = { - id: '', - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_MISSING_VALUE - }; - - let test = initTests(caseField, [ - FieldReadComponent - ]); - de = test.de; - fixture = test.fixture; - component = test.component; - })); - - it('should omit child fields with empty values', () => { - let complexListValues = de.queryAll($COMPLEX_LIST_VALUES); - - expect(complexListValues.length).toEqual(FIELD_TYPE_WITH_MISSING_VALUE.complex_fields.length - 1); - expectCaseField(complexListValues[0], FIELD_TYPE_WITH_MISSING_VALUE.complex_fields[0]); - expectCaseField(complexListValues[1], FIELD_TYPE_WITH_MISSING_VALUE.complex_fields[2]); - }); - - }); - - describe('when simple values as object on root field', () => { - const FIELD_TYPE_WITHOUT_VALUES: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - }, - { - id: 'AddressLine3', - label: 'Line 3', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - }, - ] - }; - - let caseField: CaseField; - - beforeEach(async(() => { - caseField = { - id: '', - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITHOUT_VALUES, - value: { - 'AddressLine1': 'Flat 9', - 'AddressLine2': '111 East India road', - 'AddressLine3': 'Poplar', - } - }; - - let test = initTests(caseField, [ - FieldReadComponent - ]); - de = test.de; - fixture = test.fixture; - component = test.component; - })); - - it('should render one field read component per child field', () => { - let complexListValues = de.queryAll($COMPLEX_LIST_VALUES); - - expect(complexListValues.length).toEqual(FIELD_TYPE_WITHOUT_VALUES.complex_fields.length); - expectCaseField(complexListValues[0], Object.assign( - {}, - FIELD_TYPE_WITHOUT_VALUES.complex_fields[0], - { - value: caseField.value['AddressLine1'] - } - )); - expectCaseField(complexListValues[1], Object.assign( - {}, - FIELD_TYPE_WITHOUT_VALUES.complex_fields[1], - { - value: caseField.value['AddressLine2'] - } - )); - expectCaseField(complexListValues[2], Object.assign( - {}, - FIELD_TYPE_WITHOUT_VALUES.complex_fields[2], - { - value: caseField.value['AddressLine3'] - } - )); - }); - - }); - - describe('when empty values as object on root field', () => { - const FIELD_TYPE_WITHOUT_VALUES: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - }, - { - id: 'AddressLine3', - label: 'Line 3', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - }, - ] - }; - - let caseField: CaseField; - - beforeEach(async(() => { - caseField = { - id: '', - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITHOUT_VALUES, - value: { - 'AddressLine1': 'Flat 9', - 'AddressLine3': 'Poplar', - } - }; - - let test = initTests(caseField, [ - FieldReadComponent - ]); - de = test.de; - fixture = test.fixture; - component = test.component; - })); - - it('should omit child fields with empty values', () => { - let complexListValues = de.queryAll($COMPLEX_LIST_VALUES); - - expect(complexListValues.length).toEqual(FIELD_TYPE_WITHOUT_VALUES.complex_fields.length - 1); - expectCaseField(complexListValues[0], Object.assign( - {}, - FIELD_TYPE_WITHOUT_VALUES.complex_fields[0], - { - value: caseField.value['AddressLine1'] - } - )); - expectCaseField(complexListValues[1], Object.assign( - {}, - FIELD_TYPE_WITHOUT_VALUES.complex_fields[2], - { - value: caseField.value['AddressLine3'] - } - )); - }); - - }); - -}); diff --git a/src/app/shared/palette/complex/read-complex-field-raw.component.ts b/src/app/shared/palette/complex/read-complex-field-raw.component.ts deleted file mode 100644 index b158a505c..000000000 --- a/src/app/shared/palette/complex/read-complex-field-raw.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -/** - * Display a complex type fields as a list of values without labels. - * This is intended for rendering of Check Your Answer page. - */ -@Component({ - selector: 'ccd-read-complex-field-raw', - templateUrl: './read-complex-field-raw.html', - styleUrls: [ - './read-complex-field-raw.scss' - ], -}) -export class ReadComplexFieldRawComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/complex/read-complex-field-raw.html b/src/app/shared/palette/complex/read-complex-field-raw.html deleted file mode 100644 index 96450f343..000000000 --- a/src/app/shared/palette/complex/read-complex-field-raw.html +++ /dev/null @@ -1,8 +0,0 @@ -
- -
{{field.label}}
-
- -
-
-
diff --git a/src/app/shared/palette/complex/read-complex-field-raw.scss b/src/app/shared/palette/complex/read-complex-field-raw.scss deleted file mode 100644 index b46c89816..000000000 --- a/src/app/shared/palette/complex/read-complex-field-raw.scss +++ /dev/null @@ -1,12 +0,0 @@ -dl.complex-raw { - list-style-type: none; - - dl.complex-raw { - // Only apply indent to nested complex types - padding-left: 2ch; - } - - dt { - font-weight: bold; - } -} diff --git a/src/app/shared/palette/complex/read-complex-field-table.component.spec.ts b/src/app/shared/palette/complex/read-complex-field-table.component.spec.ts deleted file mode 100644 index 91964a90d..000000000 --- a/src/app/shared/palette/complex/read-complex-field-table.component.spec.ts +++ /dev/null @@ -1,403 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadComplexFieldTableComponent } from './read-complex-field-table.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { By } from '@angular/platform-browser'; -import { FieldsFilterPipe } from './fields-filter.pipe'; -import { MockComponent } from 'ng2-mock-component'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { PaletteContext } from '../base-field/palette-context.enum'; - -describe('ReadComplexFieldTableComponent', () => { - - const $COMPLEX_PANEL = By.css('div.complex-panel'); - const $COMPLEX_PANEL_TITLE = By.css('dl.complex-panel-title'); - const $COMPLEX_PANEL_SIMPLE_ROWS_HEADERS = By.css('table>tbody>tr.complex-panel-simple-field>th>span'); - const $COMPLEX_PANEL_SIMPLE_ROWS_VALUES = By.css('table>tbody>tr.complex-panel-simple-field>td>span>ccd-field-read'); - const $COMPLEX_PANEL_COMPOUND_ROWS_VALUES = By.css('table>tbody>tr.complex-panel-compound-field>td>span>ccd-field-read'); - const $COMPLEX_PANEL_ALL_VALUES = By.css('table>tbody>tr>td>span>ccd-field-read'); - - let FieldReadComponent = MockComponent({ - selector: 'ccd-field-read', - inputs: ['caseField', 'context'] - }); - - let fixture: ComponentFixture; - let component: ReadComplexFieldTableComponent; - let de: DebugElement; - - describe('when values split accross children fields', () => { - const FIELD_TYPE_WITHOUT_FIELDS: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [] - }; - - const FIELD_TYPE_WITH_MISSING_VALUE: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '111 East India road' - } - ] - }; - - const FIELD_TYPE_WITH_VALUES: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Flat 9' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '111 East India road' - }, - { - id: 'AddressPostcode', - label: 'Post code', - display_context: 'OPTIONAL', - field_type: { - id: 'Postcode', - type: 'Complex', - complex_fields: [ - { - id: 'PostcodeCity', - label: 'City', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'London' - }, - { - id: 'PostcodeCountry', - label: 'Country', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'UK' - } - ] - } - } - ] - }; - - const CASE_FIELD: CaseField = { - id: '', - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_VALUES - }; - - const LINE_1 = 0; - const LINE_2 = 1; - const POSTCODE = 2; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - ReadComplexFieldTableComponent, - FieldsFilterPipe, - - // Mock - FieldReadComponent, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadComplexFieldTableComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.context = PaletteContext.CHECK_YOUR_ANSWER; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render a panel with a header for the complex type', () => { - let panelTitle = de - .query($COMPLEX_PANEL) - .query($COMPLEX_PANEL_TITLE); - - expect(panelTitle).toBeTruthy(); - expect(panelTitle.nativeElement.textContent).toBe(CASE_FIELD.label); - }); - - it('should render a table with a row containing 2 columns for each simple type', () => { - let simpleRowsHeaders = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_SIMPLE_ROWS_HEADERS); - - expect(simpleRowsHeaders.length).toBe(2); - expect(simpleRowsHeaders[LINE_1].nativeElement.textContent).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_1].label); - expect(simpleRowsHeaders[LINE_2].nativeElement.textContent).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_2].label); - - let simpleRowsValues = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_SIMPLE_ROWS_VALUES); - - expect(simpleRowsValues.length).toBe(2); - expect(simpleRowsValues[LINE_1].componentInstance.caseField).toEqual(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_1]); - expect(simpleRowsValues[LINE_2].componentInstance.caseField).toEqual(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_2]); - }); - - it('should render a table with a row containing 1 column for each compound type', () => { - let compoundRowsHeaders = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_COMPOUND_ROWS_VALUES); - - expect(compoundRowsHeaders.length).toBe(1); - expect(compoundRowsHeaders[0].componentInstance.caseField).toEqual(FIELD_TYPE_WITH_VALUES.complex_fields[POSTCODE]); - }); - - it('should NOT render fields with empty value', () => { - component.caseField = { - id: 'x', - label: 'x', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_MISSING_VALUE - }; - fixture.detectChanges(); - - let labels = de.queryAll($COMPLEX_PANEL_SIMPLE_ROWS_HEADERS); - - expect(labels.length).toEqual(1); - - expect(labels[0].nativeElement.textContent).toBe(FIELD_TYPE_WITH_MISSING_VALUE.complex_fields[LINE_2].label); - }); - - it('should only render title when no fields', () => { - component.caseField = { - id: 'x', - label: 'x', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITHOUT_FIELDS - }; - fixture.detectChanges(); - - let title = de.query($COMPLEX_PANEL_TITLE); - expect(title).toBeTruthy(); - - let labels = de.queryAll($COMPLEX_PANEL_SIMPLE_ROWS_HEADERS); - - expect(labels.length).toEqual(0); - }); - - it('should pass context down to child fields', () => { - let simpleRowsValues = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_SIMPLE_ROWS_VALUES); - - expect(simpleRowsValues[LINE_1].componentInstance.context).toEqual(PaletteContext.CHECK_YOUR_ANSWER); - expect(simpleRowsValues[LINE_2].componentInstance.context).toEqual(PaletteContext.CHECK_YOUR_ANSWER); - - let compoundRowsValues = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_COMPOUND_ROWS_VALUES); - - expect(compoundRowsValues[0].componentInstance.context).toEqual(PaletteContext.CHECK_YOUR_ANSWER); - }); - }); - - describe('when values as object in root field', () => { - const FIELD_TYPE: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'AddressPostcode', - label: 'Post code', - display_context: 'OPTIONAL', - field_type: { - id: 'Postcode', - type: 'Complex', - complex_fields: [ - { - id: 'PostcodeCity', - label: 'City', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PostcodeCountry', - label: 'Country', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ] - } - } - ] - }; - - const CASE_FIELD: CaseField = { - id: '', - label: 'Complex Field', - field_type: FIELD_TYPE, - display_context: 'OPTIONAL', - value: { - 'AddressLine1': 'Flat 9', - 'AddressLine2': '111 East India road', - 'AddressPostcode': { - 'PostcodeCity': 'London', - 'PostcodeCountry': 'UK' - } - } - }; - - const LINE_1 = 0; - const LINE_2 = 1; - const POSTCODE = 2; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - ReadComplexFieldTableComponent, - FieldsFilterPipe, - - // Mock - FieldReadComponent, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadComplexFieldTableComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render a table with a row containing 2 columns for each simple type', () => { - let values = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_ALL_VALUES); - - expect(values.length).toBe(3); - - let line1 = FIELD_TYPE.complex_fields[LINE_1]; - expect(values[LINE_1].componentInstance.caseField).toEqual({ - id: line1.id, - label: line1.label, - display_context: 'OPTIONAL', - field_type: line1.field_type, - value: CASE_FIELD.value['AddressLine1'] - }); - - let line2 = FIELD_TYPE.complex_fields[LINE_2]; - expect(values[LINE_2].componentInstance.caseField).toEqual({ - id: line2.id, - label: line2.label, - display_context: 'OPTIONAL', - field_type: line2.field_type, - value: CASE_FIELD.value['AddressLine2'] - }); - - let postcode = FIELD_TYPE.complex_fields[POSTCODE]; - expect(values[POSTCODE].componentInstance.caseField).toEqual({ - id: postcode.id, - label: postcode.label, - display_context: 'OPTIONAL', - field_type: postcode.field_type, - value: CASE_FIELD.value['AddressPostcode'] - }); - }); - - it('should NOT render fields with empty value', () => { - component.caseField = { - id: 'x', - label: 'x', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: { - 'AddressLine1': 'Flat 9' - } - }; - fixture.detectChanges(); - - let labels = de.queryAll($COMPLEX_PANEL_SIMPLE_ROWS_HEADERS); - - expect(labels.length).toEqual(1); - - expect(labels[0].nativeElement.textContent).toBe(FIELD_TYPE.complex_fields[LINE_1].label); - }); - }); - -}); diff --git a/src/app/shared/palette/complex/read-complex-field-table.component.ts b/src/app/shared/palette/complex/read-complex-field-table.component.ts deleted file mode 100644 index 8c7a6e24e..000000000 --- a/src/app/shared/palette/complex/read-complex-field-table.component.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - selector: 'ccd-read-complex-field-table', - templateUrl: './read-complex-field-table.html', - styleUrls: ['./read-complex-field-table.scss'] -}) -export class ReadComplexFieldTableComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/complex/read-complex-field-table.html b/src/app/shared/palette/complex/read-complex-field-table.html deleted file mode 100644 index 6ad60a9eb..000000000 --- a/src/app/shared/palette/complex/read-complex-field-table.html +++ /dev/null @@ -1,24 +0,0 @@ -
-
{{caseField.label}}
- - - - - - - - - - - - - - - - -
- -
{{field.label}} - -
-
diff --git a/src/app/shared/palette/complex/read-complex-field-table.scss b/src/app/shared/palette/complex/read-complex-field-table.scss deleted file mode 100644 index c696198ee..000000000 --- a/src/app/shared/palette/complex/read-complex-field-table.scss +++ /dev/null @@ -1,45 +0,0 @@ -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_typography'; -@import "~govuk_frontend_toolkit/stylesheets/_colours.scss"; - -.complex-panel { - $padding: 5px; - - border: 1px solid $border-colour; - - .complex-panel-title { - background-color: $panel-colour; - padding: $padding; - border-bottom: 1px solid $border-colour; - font-weight: bold; - display: block; - color: $text-colour; - padding-bottom: 2px; - - @include bold-19; - } - - .complex-panel-table { - &>tbody>tr>th { - vertical-align: top; - } - - &>tbody>tr:last-child { - &>th, &>td { - border-bottom: none; - } - } - } - - .complex-panel-simple-field { - th { - padding-left: $padding; - width: 25%; - } - } - - .complex-panel-compound-field { - td { - padding: $padding; - } - } -} diff --git a/src/app/shared/palette/complex/read-complex-field.component.spec.ts b/src/app/shared/palette/complex/read-complex-field.component.spec.ts deleted file mode 100644 index 3ababad5d..000000000 --- a/src/app/shared/palette/complex/read-complex-field.component.spec.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { MockComponent } from 'ng2-mock-component'; -import { DebugElement } from '@angular/core'; -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { PaletteContext } from '../base-field/palette-context.enum'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { FieldsFilterPipe } from './fields-filter.pipe'; -import { ReadComplexFieldComponent } from './read-complex-field.component'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; - -describe('ReadComplexFieldComponent', () => { - - const $COMPLEX_AS_TABLE = By.css('ccd-read-complex-field-table'); - const $COMPLEX_AS_RAW = By.css('ccd-read-complex-field-raw'); - - const caseField: CaseField = new CaseField(); - - let ReadComplexFieldRawComponent; - let ReadComplexFieldTableComponent; - - let fixture: ComponentFixture; - let component: ReadComplexFieldComponent; - let de: DebugElement; - - const expectTable = () => { - expect(de.queryAll($COMPLEX_AS_RAW).length).toEqual(0); - expect(de.query($COMPLEX_AS_TABLE)).toBeTruthy(); - }; - - const expectRaw = () => { - expect(de.queryAll($COMPLEX_AS_TABLE).length).toEqual(0); - expect(de.query($COMPLEX_AS_RAW)).toBeTruthy(); - }; - - const expectInputs = (componentInstance, expectedContext) => { - expect(componentInstance.caseField).toBe(caseField); - expect(componentInstance.context).toBe(expectedContext); - }; - - beforeEach(async(() => { - - ReadComplexFieldRawComponent = MockComponent({ - selector: 'ccd-read-complex-field-raw', - inputs: ['caseField', 'context'] - }); - - ReadComplexFieldTableComponent = MockComponent({ - selector: 'ccd-read-complex-field-table', - inputs: ['caseField', 'context'] - }); - - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - ReadComplexFieldComponent, - FieldsFilterPipe, - - // Mock - ReadComplexFieldRawComponent, - ReadComplexFieldTableComponent, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadComplexFieldComponent); - component = fixture.componentInstance; - - component.caseField = caseField; - component.context = null; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render complex field as table by default', () => { - expectTable(); - expectInputs(de.query($COMPLEX_AS_TABLE).componentInstance, null); - }); - - describe('when context is DEFAULT', () => { - beforeEach(() => { - component.context = PaletteContext.DEFAULT; - fixture.detectChanges(); - }); - - it('should render complex field as table by default', () => { - expectTable(); - expectInputs(de.query($COMPLEX_AS_TABLE).componentInstance, PaletteContext.DEFAULT); - }); - }); - - describe('when context is CHECK_YOUR_ANSWER', () => { - beforeEach(() => { - component.context = PaletteContext.CHECK_YOUR_ANSWER; - fixture.detectChanges(); - }); - - it('should render complex field as table by default', () => { - expectRaw(); - expectInputs(de.query($COMPLEX_AS_RAW).componentInstance, PaletteContext.CHECK_YOUR_ANSWER); - }); - }); -}); diff --git a/src/app/shared/palette/complex/read-complex-field.component.ts b/src/app/shared/palette/complex/read-complex-field.component.ts deleted file mode 100644 index 51543e3d5..000000000 --- a/src/app/shared/palette/complex/read-complex-field.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { PaletteContext } from '../base-field/palette-context.enum'; - -@Component({ - selector: 'ccd-read-complex-field', - templateUrl: './read-complex-field.html', -}) -export class ReadComplexFieldComponent extends AbstractFieldReadComponent { - - public paletteContext = PaletteContext; -} diff --git a/src/app/shared/palette/complex/read-complex-field.html b/src/app/shared/palette/complex/read-complex-field.html deleted file mode 100644 index 835893059..000000000 --- a/src/app/shared/palette/complex/read-complex-field.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/src/app/shared/palette/complex/write-complex-field.component.spec.ts b/src/app/shared/palette/complex/write-complex-field.component.spec.ts deleted file mode 100644 index 9ab484ad0..000000000 --- a/src/app/shared/palette/complex/write-complex-field.component.spec.ts +++ /dev/null @@ -1,587 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { WriteComplexFieldComponent } from './write-complex-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { By } from '@angular/platform-browser'; -import { FieldsFilterPipe } from './fields-filter.pipe'; -import { MockComponent } from 'ng2-mock-component'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; -import { ConditionalShowModule } from '../../conditional-show/conditional-show.module'; -import { IsCompoundPipe } from '../utils/is-compound.pipe'; -import { FormValidatorsService } from '../../../core/form/form-validators.service'; -import createSpyObj = jasmine.createSpyObj; - -describe('WriteComplexFieldComponent', () => { - - const $COMPLEX_PANEL = By.css('.form-group'); - const $COMPLEX_PANEL_TITLE = By.css('h3'); - const $COMPLEX_PANEL_VALUES = By.css('ccd-field-write'); - - let FieldWriteComponent = MockComponent({ - selector: 'ccd-field-write', - inputs: ['caseField', 'registerControl', 'idPrefix', 'isExpanded'] - }); - - let fixture: ComponentFixture; - let component: WriteComplexFieldComponent; - let de: DebugElement; - let formValidatorService: any; - - describe('when values split across children fields', () => { - const FIELD_TYPE_WITH_MISSING_VALUE: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '111 East India road' - } - ] - }; - - const FIELD_TYPE_WITH_VALUES: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'Flat 9' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '111 East India road' - }, - { - id: 'AddressPostcode', - label: 'Post code', - display_context: 'OPTIONAL', - field_type: { - id: 'Postcode', - type: 'Complex', - complex_fields: [ - { - id: 'PostcodeCity', - label: 'City', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'London' - }, - { - id: 'PostcodeCountry', - label: 'Country', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: 'UK' - } - ] - } - } - ] - }; - - const FIELD_ID = 'AComplexField'; - const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_VALUES - }; - - const LINE_1 = 0; - const LINE_2 = 1; - const POSTCODE = 2; - - const FORM_GROUP: FormGroup = new FormGroup({}); - const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; - }; - - beforeEach(async(() => { - formValidatorService = createSpyObj('formValidatorService', ['addValidators']); - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - WriteComplexFieldComponent, - FieldsFilterPipe, - - // Mock - FieldWriteComponent, - ], - providers: [ - IsCompoundPipe, - { provide: FormValidatorsService, useValue: formValidatorService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteComplexFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.registerControl = REGISTER_CONTROL; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should not render a form group with a header for the complex type', () => { - let panelTitle = de - .query($COMPLEX_PANEL) - .query($COMPLEX_PANEL_TITLE); - - expect(panelTitle).toBeNull(); - }); - - it('should render a field write component for each field in the complex type', () => { - let simpleRowsHeaders = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_VALUES); - - expect(simpleRowsHeaders.length).toBe(3); - expect(simpleRowsHeaders[LINE_1].componentInstance.caseField.label).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_1].label); - expect(simpleRowsHeaders[LINE_2].componentInstance.caseField.label).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_2].label); - expect(simpleRowsHeaders[POSTCODE].componentInstance.caseField.label).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[POSTCODE].label); - }); - - it('should render fields with empty value', () => { - component.caseField = { - id: 'x', - label: 'x', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_MISSING_VALUE - }; - fixture.detectChanges(); - - let labels = de.queryAll($COMPLEX_PANEL_VALUES); - - expect(labels.length).toEqual(2); - - expect(labels[LINE_1].componentInstance.caseField.label).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_1].label); - expect(labels[LINE_2].componentInstance.caseField.label).toBe(FIELD_TYPE_WITH_VALUES.complex_fields[LINE_2].label); - }); - - it('should return control if exists in formGroup', () => { - const CASE_FIELD_1: CaseField = { - id: FIELD_ID, - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_MISSING_VALUE - }; - let firstControl = new FormControl(); - let formGroup = new FormGroup({}); - formGroup.addControl(FIELD_ID, firstControl); - component.complexGroup = formGroup; - fixture.detectChanges(); - let returned = component.buildControlRegistrer(CASE_FIELD_1).apply(firstControl); - expect(returned).toBe(firstControl); - expect(component.complexGroup.get(CASE_FIELD_1.id)).toBeTruthy(); - }); - - it('should add control if it does not exist in formGroup', () => { - const CASE_FIELD_1: CaseField = { - id: 'anotherComplexField', - label: 'Complex Field', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE_WITH_MISSING_VALUE - }; - let firstControl = new FormControl(); - let formGroup = new FormGroup({}); - formGroup.addControl('first', firstControl); - component.complexGroup = formGroup; - fixture.detectChanges(); - let returned = component.buildControlRegistrer(CASE_FIELD_1) (firstControl); - expect(returned).toBe(firstControl); - expect(component.complexGroup.get(CASE_FIELD_1.id)).toBeTruthy(); - expect(component.complexGroup.get('first')).toBeTruthy(); - }); - }); - - describe('when values as object in root field', () => { - const FIELD_TYPE: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'AddressPostcode', - label: 'Post code', - display_context: 'OPTIONAL', - field_type: { - id: 'Postcode', - type: 'Complex', - complex_fields: [ - { - id: 'PostcodeCity', - label: 'City', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - }, - { - id: 'PostcodeCountry', - label: 'Country', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - } - } - ] - } - } - ] - }; - - const FIELD_ID = 'SomeFieldId'; - const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'Complex Field', - field_type: FIELD_TYPE, - display_context: 'OPTIONAL', - value: { - 'AddressLine1': 'Flat 9', - 'AddressLine2': '111 East India road', - 'AddressPostcode': { - 'PostcodeCity': 'London', - 'PostcodeCountry': 'UK' - } - } - }; - - const LINE_1 = 0; - const LINE_2 = 1; - const POSTCODE = 2; - - let formGroup: FormGroup; - const REGISTER_CONTROL = (control: T) => { - formGroup.addControl(FIELD_ID, control); - return control; - }; - - beforeEach(async(() => { - formValidatorService = createSpyObj('formValidatorService', ['addValidators']); - formGroup = new FormGroup({}); - - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - WriteComplexFieldComponent, - FieldsFilterPipe, - - // Mock - FieldWriteComponent, - ], - providers: [ - IsCompoundPipe, - { provide: FormValidatorsService, useValue: formValidatorService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteComplexFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.registerControl = REGISTER_CONTROL; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render a table with a row containing 2 columns for each simple type', () => { - let values = de - .query($COMPLEX_PANEL) - .queryAll($COMPLEX_PANEL_VALUES); - - expect(values.length).toBe(3); - - let line1 = FIELD_TYPE.complex_fields[LINE_1]; - expect(values[LINE_1].componentInstance.caseField).toEqual({ - id: line1.id, - label: line1.label, - display_context: 'OPTIONAL', - field_type: line1.field_type, - value: CASE_FIELD.value['AddressLine1'] - }); - expect(values[LINE_1].componentInstance.registerControl).not.toBeNull(); - - let line2 = FIELD_TYPE.complex_fields[LINE_2]; - expect(values[LINE_2].componentInstance.caseField).toEqual({ - id: line2.id, - label: line2.label, - display_context: 'OPTIONAL', - field_type: line2.field_type, - value: CASE_FIELD.value['AddressLine2'] - }); - expect(values[LINE_2].componentInstance.registerControl).not.toBeNull(); - - let postcode = FIELD_TYPE.complex_fields[POSTCODE]; - expect(values[POSTCODE].componentInstance.caseField).toEqual({ - id: postcode.id, - label: postcode.label, - display_context: 'OPTIONAL', - field_type: postcode.field_type, - value: CASE_FIELD.value['AddressPostcode'] - }); - expect(values[POSTCODE].componentInstance.registerControl).not.toBeNull(); - }); - - it('should render fields with empty value', () => { - component.caseField = { - id: 'x', - label: 'x', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: { - 'AddressLine1': 'Flat 9' - } - }; - fixture.detectChanges(); - - let labels = de.queryAll($COMPLEX_PANEL_VALUES); - - expect(labels.length).toEqual(3); - - expect(labels[LINE_1].componentInstance.caseField.label).toBe(FIELD_TYPE.complex_fields[LINE_1].label); - expect(labels[LINE_2].componentInstance.caseField.label).toBe(FIELD_TYPE.complex_fields[LINE_2].label); - }); - }); - - describe('when display_context of AddressLine1 is MANDATORY', () => { - const FIELD_TYPE_WITH_MISSING_VALUE: FieldType = { - id: 'IAmVeryComplex', - type: 'Complex', - complex_fields: [ - { - id: 'AddressLine1', - label: 'Line 1', - display_context: 'MANDATORY', - field_type: { - id: '"TextMax150"', - type: 'Text' - }, - value: '' - }, - { - id: 'AddressLine2', - label: 'Line 2', - display_context: 'OPTIONAL', - field_type: { - id: 'Text', - type: 'Text' - }, - value: '111 East India road' - } - ] - }; - - const FIELD_TYPE_WITH_VALUES: FieldType = { - id: 'TextMax150', - type: 'Text' - }; - - const FIELD_ID = 'AComplexField'; - const CASE_FIELD_M: CaseField = { - id: FIELD_ID, - label: 'Complex Field', - display_context: 'MANDATORY', - field_type: FIELD_TYPE_WITH_VALUES - }; - - const FORM_GROUP: FormGroup = new FormGroup({}); - const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; - }; - - beforeEach(async(() => { - formValidatorService = createSpyObj('formValidatorService', ['addValidators']); - - TestBed - .configureTestingModule({ - imports: [ - PaletteUtilsModule, - ConditionalShowModule - ], - declarations: [ - WriteComplexFieldComponent, - FieldsFilterPipe, - - // Mock - FieldWriteComponent, - ], - providers: [ - IsCompoundPipe, - { provide: FormValidatorsService, useValue: formValidatorService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteComplexFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD_M; - component.registerControl = REGISTER_CONTROL; - component.ignoreMandatory = true; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should not add control when case field is not AddressLine1 and TextMax150', () => { - const CASE_FIELD_1: CaseField = { - id: 'anotherComplexField', - label: 'Complex Field', - display_context: 'MANDATORY', - field_type: FIELD_TYPE_WITH_MISSING_VALUE - }; - const firstControl = new FormControl(); - const formGroup = new FormGroup({}); - formGroup.addControl('first', firstControl); - component.complexGroup = formGroup; - - const returned = component.buildControlRegistrer(CASE_FIELD_1) (firstControl); - expect(returned).toBe(firstControl); - expect(component.complexGroup.get(CASE_FIELD_1.id)).toBeTruthy(); - expect(component.complexGroup.get('first')).toBeTruthy(); - expect(formValidatorService.addValidators).toHaveBeenCalledTimes(0); - }); - - it('should add control when case field is AddressLine1 and TextMax150', () => { - component.caseField = { - id: 'AddressLine1', - label: 'x', - display_context: 'MANDATORY', - field_type: FIELD_TYPE_WITH_VALUES, - value: { - 'AddressLine1': 'Flat 9' - } - }; - const firstControl = new FormControl(); - const formGroup = new FormGroup({}); - formGroup.addControl('first', firstControl); - component.complexGroup = formGroup; - - const returned = component.buildControlRegistrer(component.caseField) (firstControl); - expect(returned).toBe(firstControl); - expect(component.complexGroup.get(component.caseField.id)).toBeTruthy(); - expect(component.complexGroup.get('first')).toBeTruthy(); - expect(formValidatorService.addValidators).toHaveBeenCalledWith(component.caseField, firstControl); - }); - - it('should not add control when case field is AddressLine1 but NOT TextMax150', () => { - component.caseField = { - id: 'AddressLine1', - label: 'x', - display_context: 'MANDATORY', - field_type: { - id: 'TextMax151', - type: 'Text' - }, - value: { - 'AddressLine1': 'Flat 9' - } - }; - const firstControl = new FormControl(); - const formGroup = new FormGroup({}); - formGroup.addControl('first', firstControl); - component.complexGroup = formGroup; - - const returned = component.buildControlRegistrer(component.caseField) (firstControl); - expect(returned).toBe(firstControl); - expect(component.complexGroup.get(component.caseField.id)).toBeTruthy(); - expect(component.complexGroup.get('first')).toBeTruthy(); - expect(formValidatorService.addValidators).toHaveBeenCalledTimes(0); - }); - - it('should not add control when case field is NOT AddressLine1', () => { - component.caseField = { - id: 'AddressLine2', - label: 'x', - display_context: 'MANDATORY', - field_type: { - id: 'TextMax150', - type: 'Text' - }, - value: { - 'AddressLine1': 'Flat 9' - } - }; - const firstControl = new FormControl(); - const formGroup = new FormGroup({}); - formGroup.addControl('first', firstControl); - component.complexGroup = formGroup; - - const returned = component.buildControlRegistrer(component.caseField) (firstControl); - expect(returned).toBe(firstControl); - expect(component.complexGroup.get(component.caseField.id)).toBeTruthy(); - expect(component.complexGroup.get('first')).toBeTruthy(); - expect(formValidatorService.addValidators).toHaveBeenCalledTimes(0); - }); - }); - -}); diff --git a/src/app/shared/palette/complex/write-complex-field.component.ts b/src/app/shared/palette/complex/write-complex-field.component.ts deleted file mode 100644 index c8f58a89d..000000000 --- a/src/app/shared/palette/complex/write-complex-field.component.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { Component, OnInit, Input } from '@angular/core'; -import { AbstractControl, FormControl, FormGroup } from '@angular/forms'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { IsCompoundPipe } from '../utils/is-compound.pipe'; -import { FormValidatorsService } from '../../../core/form/form-validators.service'; - -@Component({ - selector: 'ccd-write-complex-type-field', - templateUrl: './write-complex-field.html', - styleUrls: ['./read-complex-field-table.scss'] -}) -export class WriteComplexFieldComponent extends AbstractFieldWriteComponent implements OnInit { - complexGroup: FormGroup; - - @Input() - renderLabel = false; - - @Input() - ignoreMandatory = false; - - constructor (private isCompoundPipe: IsCompoundPipe, private formValidatorsService: FormValidatorsService) { - super(); - } - - ngOnInit(): void { - this.complexGroup = this.registerControl(new FormGroup({})); - } - - buildControlRegistrer(caseField: CaseField): (control: FormControl) => AbstractControl { - return control => { - if (this.complexGroup.get(caseField.id)) { - return this.complexGroup.get(caseField.id); - } - // checks validators are required before calling formValidatorsService - const validatorsRequired = function () { - return ['AddressLine1'].some(x => x === caseField.id) - && 'TextMax150' === caseField.field_type.id - && FormValidatorsService.MANDATORY === caseField.display_context - || !this.ignoreMandatory; - } - if (validatorsRequired.call(this)) { - // console.log('WriteComplexFieldComponent add validators for caseField', caseField); - this.formValidatorsService.addValidators(caseField, control); - } - this.complexGroup.addControl(caseField.id, control); - return control; - }; - } - - buildIdPrefix(field: CaseField): string { - return this.isCompoundPipe.transform(field) ? `${this.idPrefix}${field.id}_` : `${this.idPrefix}`; - } -} diff --git a/src/app/shared/palette/complex/write-complex-field.html b/src/app/shared/palette/complex/write-complex-field.html deleted file mode 100644 index b9acc60b6..000000000 --- a/src/app/shared/palette/complex/write-complex-field.html +++ /dev/null @@ -1,15 +0,0 @@ -
- -

{{caseField | ccdFieldLabel}}

- - - - -
diff --git a/src/app/shared/palette/date/read-date-field.component.spec.ts b/src/app/shared/palette/date/read-date-field.component.spec.ts deleted file mode 100644 index c5b68c0eb..000000000 --- a/src/app/shared/palette/date/read-date-field.component.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadDateFieldComponent } from './read-date-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { DatePipe } from '../utils/date.pipe'; - -describe('ReadDateFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'Date', - type: 'Date' - }; - const VALUE = '1800-07-15'; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - const FORMATTED_VALUE = '15 Jul 1800'; - const EMPTY = ''; - - let fixture: ComponentFixture; - let component: ReadDateFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - - TestBed - .configureTestingModule({ - declarations: [ - ReadDateFieldComponent, - DatePipe - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadDateFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render output with date pipe formatting', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(FORMATTED_VALUE); - }); - - it('should render empty string value as empty string', () => { - component.caseField.value = ''; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); - - it('should render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); - - it('should render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); - -}); diff --git a/src/app/shared/palette/date/read-date-field.component.ts b/src/app/shared/palette/date/read-date-field.component.ts deleted file mode 100644 index 9223bc7a8..000000000 --- a/src/app/shared/palette/date/read-date-field.component.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - selector: 'ccd-read-date-field', - template: `{{caseField.value | ccdDate}}` -}) -export class ReadDateFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/date/write-date-field.component.spec.ts b/src/app/shared/palette/date/write-date-field.component.spec.ts deleted file mode 100644 index 4bfe29b2e..000000000 --- a/src/app/shared/palette/date/write-date-field.component.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { WriteDateFieldComponent } from './write-date-field.component'; -import { CaseUIToolkitModule } from '@hmcts/ccd-case-ui-toolkit'; -import { CaseFieldService } from '../../domain/case-field.service'; - -const FIELD_ID = 'CreatedAt'; -const FIELD_TYPE: FieldType = { - id: 'Date', - type: 'Date' -}; -const VALUE = '2017-07-26'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteDateFieldComponent', () => { - - let fixture: ComponentFixture; - let component: WriteDateFieldComponent; - let de: DebugElement; - let caseFieldService = new CaseFieldService(); - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule, - CaseUIToolkitModule, - ], - declarations: [ - WriteDateFieldComponent, - ], - providers: [ - {provide: CaseFieldService, useValue: caseFieldService}, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteDateFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); -}); diff --git a/src/app/shared/palette/date/write-date-field.component.ts b/src/app/shared/palette/date/write-date-field.component.ts deleted file mode 100644 index a7ed0f838..000000000 --- a/src/app/shared/palette/date/write-date-field.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; - -@Component({ - selector: 'ccd-write-date-field', - templateUrl: './write-date-field.html' -}) -export class WriteDateFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - dateControl: FormControl; - - ngOnInit(): void { - this.dateControl = this.registerControl(new FormControl(this.caseField.value)); - } - - isDateTime(): boolean { - return this.caseField.field_type.id === 'DateTime'; - } - -} diff --git a/src/app/shared/palette/date/write-date-field.html b/src/app/shared/palette/date/write-date-field.html deleted file mode 100644 index f7d74a367..000000000 --- a/src/app/shared/palette/date/write-date-field.html +++ /dev/null @@ -1,16 +0,0 @@ -
- -
- - {{caseField | ccdFieldLabel }} - {{caseField.hint_text}} - {{dateControl.errors | ccdFirstError}} - - - - -
-
diff --git a/src/app/shared/palette/document/document-url.pipe.spec.ts b/src/app/shared/palette/document/document-url.pipe.spec.ts deleted file mode 100644 index 2cc5a58b4..000000000 --- a/src/app/shared/palette/document/document-url.pipe.spec.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { DocumentUrlPipe } from './document-url.pipe'; -import createSpyObj = jasmine.createSpyObj; -import { AppConfig } from '../../../app.config'; - -describe('DocumentUrlPipe', () => { - const DOCUMENT_MANAGEMENT_URL = 'http://localhost:1234/documents'; - const REMOTE_DOCUMENT_MANAGEMENT_PATTERN = '^https://external\\.dm\\.reform/documents'; - const MATCHING_REMOTE_DOCUMENT_MANAGEMENT_URL = 'https://external.dm.reform/documents'; - const NON_MATCHING_REMOTE_DOCUMENT_MANAGEMENT_URL = 'https://external.evidence.reform/documents'; - let documentUrlPipe: DocumentUrlPipe; - let appConfig: any; - - beforeEach(() => { - appConfig = createSpyObj('appConfig', ['getDocumentManagementUrl', 'getRemoteDocumentManagementUrl']); - appConfig.getDocumentManagementUrl.and.returnValue(DOCUMENT_MANAGEMENT_URL); - appConfig.getRemoteDocumentManagementUrl.and.returnValue(REMOTE_DOCUMENT_MANAGEMENT_PATTERN); - documentUrlPipe = new DocumentUrlPipe(appConfig); - }); - - describe('given the Document Management URL is the one in the app config', () => { - it('should be replaced with the Document Management endpoint URL of the API Gateway', () => { - let url = documentUrlPipe.transform(MATCHING_REMOTE_DOCUMENT_MANAGEMENT_URL); - expect(url).toEqual(DOCUMENT_MANAGEMENT_URL); - }); - }); - - describe('given the Document Management URL is NOT the one in the app config', () => { - it('should be left unchanged', () => { - let url = documentUrlPipe.transform(NON_MATCHING_REMOTE_DOCUMENT_MANAGEMENT_URL); - expect(url).toEqual(NON_MATCHING_REMOTE_DOCUMENT_MANAGEMENT_URL); - }); - }); -}); diff --git a/src/app/shared/palette/document/document-url.pipe.ts b/src/app/shared/palette/document/document-url.pipe.ts deleted file mode 100644 index de2880610..000000000 --- a/src/app/shared/palette/document/document-url.pipe.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { AppConfig } from '../../../app.config'; - -@Pipe({ - name: 'ccdDocumentUrl' -}) -export class DocumentUrlPipe implements PipeTransform { - - constructor(private appConfig: AppConfig) {} - - transform(value: string): string { - let remoteDocumentManagementPattern = new RegExp(this.appConfig.getRemoteDocumentManagementUrl()); - return value.replace(remoteDocumentManagementPattern, this.appConfig.getDocumentManagementUrl()); - } -} diff --git a/src/app/shared/palette/document/document.module.ts b/src/app/shared/palette/document/document.module.ts deleted file mode 100644 index abde48c5f..000000000 --- a/src/app/shared/palette/document/document.module.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { DocumentUrlPipe } from './document-url.pipe'; -import { ReadDocumentFieldComponent } from './read-document-field.component'; -import { WriteDocumentFieldComponent } from './write-document-field.component'; -import { MarkdownModule } from '../../markdown/markdown.module'; -import { PaletteUtilsModule } from '../utils/utils.module'; - -@NgModule({ - imports: [ - CommonModule, - MarkdownModule, - PaletteUtilsModule, - ], - declarations: [ - DocumentUrlPipe, - ReadDocumentFieldComponent, - WriteDocumentFieldComponent - ], - entryComponents: [ - ReadDocumentFieldComponent, - WriteDocumentFieldComponent - ], - exports: [ - DocumentUrlPipe - ] -}) -export class DocumentModule {} diff --git a/src/app/shared/palette/document/read-document-field.component.spec.ts b/src/app/shared/palette/document/read-document-field.component.spec.ts deleted file mode 100644 index 75a4f457d..000000000 --- a/src/app/shared/palette/document/read-document-field.component.spec.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadDocumentFieldComponent } from './read-document-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { attr, text } from '../../../test/helpers'; -import createSpyObj = jasmine.createSpyObj; -import { By } from '@angular/platform-browser'; -import { AppConfig } from '../../../app.config'; -import { DocumentUrlPipe } from './document-url.pipe'; - -describe('ReadDocumentFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'Document', - type: 'Document' - }; - const VALUE = { - 'document_url': 'https://www.example.com', - 'document_binary_url': 'https://www.example.com/binary', - 'document_filename': 'evidence_document.evd' - }; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - const GATEWAY_DOCUMENT_URL = 'http://localhost:1234/documents'; - - let fixture: ComponentFixture; - let component: ReadDocumentFieldComponent; - let de: DebugElement; - let mockAppConfig: any; - - beforeEach(() => { - mockAppConfig = createSpyObj('appConfig', ['getDocumentManagementUrl', 'getRemoteDocumentManagementUrl']); - mockAppConfig.getDocumentManagementUrl.and.returnValue(GATEWAY_DOCUMENT_URL); - mockAppConfig.getRemoteDocumentManagementUrl.and.returnValue(VALUE.document_binary_url); - - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadDocumentFieldComponent, - DocumentUrlPipe - ], - providers: [ - { provide: AppConfig, useValue: mockAppConfig } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadDocumentFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - }); - - it('should render provided value as a clickable URL', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - expect(text(de)).toEqual(VALUE.document_filename.toString()); - let linkElement = de.query(By.css('a')); - expect(linkElement).toBeTruthy(); - expect(attr(linkElement, 'href')).toEqual(GATEWAY_DOCUMENT_URL); - }); - - it('should render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('should render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); -}); diff --git a/src/app/shared/palette/document/read-document-field.component.ts b/src/app/shared/palette/document/read-document-field.component.ts deleted file mode 100644 index d276cce53..000000000 --- a/src/app/shared/palette/document/read-document-field.component.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - selector: 'ccd-read-document-field', - templateUrl: './read-document-field.html' -}) -export class ReadDocumentFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/document/read-document-field.html b/src/app/shared/palette/document/read-document-field.html deleted file mode 100644 index 7c424be35..000000000 --- a/src/app/shared/palette/document/read-document-field.html +++ /dev/null @@ -1 +0,0 @@ -{{ caseField.value.document_filename }} diff --git a/src/app/shared/palette/document/write-document-field.component.spec.ts b/src/app/shared/palette/document/write-document-field.component.spec.ts deleted file mode 100644 index 44dfb0580..000000000 --- a/src/app/shared/palette/document/write-document-field.component.spec.ts +++ /dev/null @@ -1,231 +0,0 @@ -import { CaseField } from '../../domain/definition/case-field.model'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { WriteDocumentFieldComponent } from './write-document-field.component'; -import { DebugElement } from '@angular/core'; -import { DocumentManagementService } from '../../../core/documentManagement/documentManagement.service'; -import { DocumentData } from '../../domain/document/document-data.model'; -import { Observable } from 'rxjs/Observable'; -import { By } from '@angular/platform-browser'; -import { MockComponent } from 'ng2-mock-component'; -import { FormGroup } from '@angular/forms'; -import { FieldLabelPipe } from '../utils/field-label.pipe'; -import createSpyObj = jasmine.createSpyObj; -import any = jasmine.any; -import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material'; -import { DocumentDialogComponent } from '../../document-dialog/document-dialog.component'; - -describe('WriteDocumentFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'Document', - type: 'Document' - }; - const VALUE = { - 'document_url': 'https://www.example.com', - 'document_binary_url': 'https://www.example.com/binary', - 'document_filename': 'evidence_document.evd' - }; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - const DOCUMENT_MANAGEMENT_URL = 'http://docmanagement.ccd.reform/documents'; - const RESPONSE_FIRST_DOCUMENT: DocumentData = { - _embedded: { - documents: [{ - originalDocumentName: 'howto.pdf', - _links: { - self: { - href: DOCUMENT_MANAGEMENT_URL + '/abcd0123' - }, - binary: { - href: DOCUMENT_MANAGEMENT_URL + '/abcd0123/binary' - } - } - }] - } - }; - const RESPONSE_SECOND_DOCUMENT: DocumentData = { - _embedded: { - documents: [{ - originalDocumentName: 'plop.pdf', - _links: { - self: { - href: DOCUMENT_MANAGEMENT_URL + '/cdef4567' - }, - binary: { - href: DOCUMENT_MANAGEMENT_URL + '/cdef4567/binary' - } - } - }] - } - }; - const FORM_GROUP_ID = 'document_url'; - const FORM_GROUP = new FormGroup({}); - const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FORM_GROUP_ID, control); - return control; - }; - const DIALOG_CONFIG = new MatDialogConfig(); - const $DIALOG_REPLACE_BUTTON = By.css('.button[title=Replace]'); - const $DIALOG_CANCEL_BUTTON = By.css('.button[title=Cancel]'); - - let ReadDocumentComponent = MockComponent({ - selector: 'ccd-read-document-field', - inputs: ['caseField'] - }); - - let fixture: ComponentFixture; - let component: WriteDocumentFieldComponent; - let de: DebugElement; - let mockDocumentManagementService: any; - - let fixtureDialog: ComponentFixture; - let componentDialog: DocumentDialogComponent; - let deDialog: DebugElement; - let dialog: any; - let matDialogRef: MatDialogRef; - - beforeEach(() => { - mockDocumentManagementService = createSpyObj('documentManagementService', ['uploadFile']); - mockDocumentManagementService.uploadFile.and.returnValues( - Observable.of(RESPONSE_FIRST_DOCUMENT), - Observable.of(RESPONSE_SECOND_DOCUMENT) - ); - dialog = createSpyObj('dialog', ['open']); - matDialogRef = createSpyObj>('matDialogRef', ['close']); - - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - WriteDocumentFieldComponent, - FieldLabelPipe, - DocumentDialogComponent, - // Mock - ReadDocumentComponent, - ], - providers: [ - { provide: DocumentManagementService, useValue: mockDocumentManagementService }, - { provide: MatDialog, useValue: dialog }, - { provide: MatDialogRef, useValue: matDialogRef }, - { provide: MatDialogConfig, useValue: DIALOG_CONFIG }, - DocumentDialogComponent - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteDocumentFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - }); - - it('should render an element for file selection', () => { - let uploadElement = de.query(By.css('input[type=file]')); - - expect(uploadElement).toBeTruthy(); - }); - - it('should render a ccd-read-document-field tag for an existing document', () => { - let ccdReadDocumentElement = de.query(By.css('ccd-read-document-field')); - - expect(ccdReadDocumentElement).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FORM_GROUP_ID].value.document_url).toBe(VALUE.document_url); - expect(FORM_GROUP.controls[FORM_GROUP_ID].value.document_binary_url).toBe(VALUE.document_binary_url); - expect(FORM_GROUP.controls[FORM_GROUP_ID].value.document_filename).toBe(VALUE.document_filename); - }); - - it('should open file dialog if document does not exist', () => { - component.caseField.value = null; - expect(component.caseField.value).toBeFalsy(); - component.fileSelectEvent(); - component.confirmReplaceResult = 'Replace'; - expect(component.triggerReplace()).toBeFalsy(); - }); - - it('should upload given document', () => { - let file = { - name: 'test.pdf' - }; - component.fileChangeEvent({ - target: { - files: [ - file - ] - } - }); - - expect(mockDocumentManagementService.uploadFile).toHaveBeenCalledWith(any(FormData)); - }); - - it('should be invalid if document management throws error', () => { - mockDocumentManagementService.uploadFile.and.returnValue(Observable.throw('{"error": "A terrible thing happened", ' + - '"message": "But really really terrible thing!", "status": 502}')); - let file = { - name: 'test.pdf' - }; - component.fileChangeEvent({ - target: { - files: [ - file - ] - } - }); - expect(component.valid).toBeFalsy(); - }); - - it('should be invalid if no document specified for upload', () => { - component.fileChangeEvent({ - target: { - files: [] - } - }); - expect(component.valid).toBeTruthy(); - }); - - it('should display dialog only if document exist', () => { - component.caseField.value = VALUE; - expect(component.caseField.value).toBeTruthy(); - fixtureDialog = TestBed.createComponent(DocumentDialogComponent); - componentDialog = fixtureDialog.componentInstance; - deDialog = fixtureDialog.debugElement; - fixtureDialog.detectChanges(); - let replaceElement = deDialog.query(By.css('.button[title=Replace]')); - expect(replaceElement).toBeTruthy(); - }); - - it('should trigger the document replace event when replace button is clicked', () => { - fixtureDialog = TestBed.createComponent(DocumentDialogComponent); - componentDialog = fixtureDialog.componentInstance; - deDialog = fixtureDialog.debugElement; - fixtureDialog.detectChanges(); - - let dialogReplacelButton = deDialog.query($DIALOG_REPLACE_BUTTON); - dialogReplacelButton.nativeElement.click(); - expect(componentDialog.result).toEqual('Replace'); - fixture.detectChanges(); - }); - - it('should not trigger the document replace event when cancel button is clicked', () => { - fixtureDialog = TestBed.createComponent(DocumentDialogComponent); - componentDialog = fixtureDialog.componentInstance; - deDialog = fixtureDialog.debugElement; - fixtureDialog.detectChanges(); - let dialogCancelButton = deDialog.query($DIALOG_CANCEL_BUTTON); - dialogCancelButton.nativeElement.click(); - expect(componentDialog.result).toEqual('Cancel'); - fixture.detectChanges(); - }); -}); diff --git a/src/app/shared/palette/document/write-document-field.component.ts b/src/app/shared/palette/document/write-document-field.component.ts deleted file mode 100644 index 2e7b491f0..000000000 --- a/src/app/shared/palette/document/write-document-field.component.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Component, OnInit, ViewChild, ElementRef } from '@angular/core'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { FormControl, FormGroup } from '@angular/forms'; -import { DocumentManagementService } from '../../../core/documentManagement/documentManagement.service'; -import { HttpError } from '../../../core/http/http-error.model'; -import { MatDialog, MatDialogConfig } from '@angular/material'; -import { DocumentDialogComponent } from '../../document-dialog/document-dialog.component'; - -@Component({ - selector: 'ccd-write-document-field', - templateUrl: './write-document-field.html' -}) -export class WriteDocumentFieldComponent extends AbstractFieldWriteComponent implements OnInit { - private uploadedDocument: FormGroup; - private selectedFile: File; - private dialogConfig: MatDialogConfig; - - @ViewChild('fileInput') fileInput: ElementRef; - - valid = true; - uploadError: string; - confirmReplaceResult: string; - - constructor(private documentManagement: DocumentManagementService, private dialog: MatDialog) { - super(); - } - - private initDialog() { - this.dialogConfig = new MatDialogConfig(); - this.dialogConfig.disableClose = true; - this.dialogConfig.autoFocus = true; - this.dialogConfig.ariaLabel = 'Label'; - this.dialogConfig.height = '245px'; - this.dialogConfig.width = '550px'; - this.dialogConfig.panelClass = 'dialog'; - - this.dialogConfig.closeOnNavigation = false; - this.dialogConfig.position = { - top: window.innerHeight / 2 - 120 + 'px', left: window.innerWidth / 2 - 275 + 'px' - } - } - - ngOnInit() { - this.initDialog(); - let document = this.caseField.value; - if (document) { - this.createDocumentGroup( - document.document_url, - document.document_binary_url, - document.document_filename, - ); - } - } - - fileChangeEvent(fileInput: any) { - if (fileInput.target.files[0]) { - this.selectedFile = fileInput.target.files[0]; - - // Perform the file upload immediately on file selection - let documentUpload: FormData = new FormData(); - documentUpload.append('files', this.selectedFile, this.selectedFile.name); - documentUpload.append('classification', 'PUBLIC'); - this.documentManagement.uploadFile(documentUpload).subscribe(result => { - if (!this.uploadedDocument) { - this.createDocumentGroup(); - } - - let document = result._embedded.documents[0]; - this.setDocumentGroupValues( - document._links.self.href, - document._links.binary.href, - document.originalDocumentName, - ); - - this.valid = true; - }, (error: HttpError) => { - this.uploadError = this.getErrorMessage(error); - this.valid = false; - }); - } else { - this.selectedFile = null; - this.valid = true; - } - } - - private createDocumentGroup(url?: string, binaryUrl?: string, filename?: string): void { - this.uploadedDocument = this.registerControl(new FormGroup({ - document_url: new FormControl(url), - document_binary_url: new FormControl(binaryUrl), - document_filename: new FormControl(filename) - })); - } - - private setDocumentGroupValues(url: string, binaryUrl: string, filename: string): void { - this.uploadedDocument.get('document_url').setValue(url); - this.uploadedDocument.get('document_binary_url').setValue(binaryUrl); - this.uploadedDocument.get('document_filename').setValue(filename); - } - - private getErrorMessage(error: HttpError): string { - // Document Management unavailable - if (0 === error.status || 502 === error.status) { - return 'Document upload facility is not available at the moment'; - } - - return error.error; - } - - openFileDialog(): void { - this.fileInput.nativeElement.click(); - } - - fileSelectEvent() { - if (this.caseField.value) { - this.openDialog(this.dialogConfig); - } else { - this.openFileDialog(); - } - } - - openDialog(dialogConfig) { - const dialogRef = this.dialog.open(DocumentDialogComponent, dialogConfig); - dialogRef.beforeClose().subscribe(result => { - this.confirmReplaceResult = result; - this.triggerReplace(); - }); - } - - triggerReplace() { - if (this.confirmReplaceResult === 'Replace') { - this.openFileDialog(); - } - } -} diff --git a/src/app/shared/palette/document/write-document-field.html b/src/app/shared/palette/document/write-document-field.html deleted file mode 100644 index 498a1bbf8..000000000 --- a/src/app/shared/palette/document/write-document-field.html +++ /dev/null @@ -1,16 +0,0 @@ -
- - -
- -
- -
-
- -
-
diff --git a/src/app/shared/palette/email/read-email-field.component.spec.ts b/src/app/shared/palette/email/read-email-field.component.spec.ts deleted file mode 100644 index e5a526c56..000000000 --- a/src/app/shared/palette/email/read-email-field.component.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadEmailFieldComponent } from './read-email-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { text } from '../../../test/helpers'; - -describe('ReadEmailFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'Email', - type: 'Email' - }; - const VALUE = 'ccd@hmcts.net'; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - const EMPTY = ''; - - let fixture: ComponentFixture; - let component: ReadEmailFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadEmailFieldComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadEmailFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided email as string', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - expect(text(de)).toEqual(VALUE); - }); - - it('render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); - - it('render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); -}); diff --git a/src/app/shared/palette/email/read-email-field.component.ts b/src/app/shared/palette/email/read-email-field.component.ts deleted file mode 100644 index baeeb8bd7..000000000 --- a/src/app/shared/palette/email/read-email-field.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - selector: 'ccd-read-email-field', - template: ` - {{caseField.value}} - ` -}) -export class ReadEmailFieldComponent extends AbstractFieldReadComponent { - - isFieldValueEmpty(): boolean { - return (!this.caseField.value); - } - -} diff --git a/src/app/shared/palette/email/write-email-field.component.spec.ts b/src/app/shared/palette/email/write-email-field.component.spec.ts deleted file mode 100644 index 28cb9299a..000000000 --- a/src/app/shared/palette/email/write-email-field.component.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteEmailFieldComponent } from './write-email-field.component'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; - -const FIELD_ID = 'PersonEmail'; -const FIELD_TYPE: FieldType = { - id: 'Email', - type: 'Email' -}; -const VALUE = 'ccd@hmcts.net'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteEmailFieldComponent', () => { - - const $INPUT = By.css('.form-group input'); - - // Input is mocked so that one-way bound inputs can be tested - let Input: any = MockComponent({ selector: 'input', inputs: [ - 'type', - 'formControl' - ]}); - - let fixture: ComponentFixture; - let component: WriteEmailFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteEmailFieldComponent, - - // Mock - Input, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteEmailFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render text input element linked to formControl', () => { - let input = de.query($INPUT); - - expect(input.nativeElement.getAttribute('type')).toBe('email'); - expect(input.componentInstance.formControl).toEqual(component.emailControl); - }); -}); diff --git a/src/app/shared/palette/email/write-email-field.component.ts b/src/app/shared/palette/email/write-email-field.component.ts deleted file mode 100644 index 5df546f64..000000000 --- a/src/app/shared/palette/email/write-email-field.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; - -@Component({ - selector: 'ccd-write-email-field', - templateUrl: 'write-email-field.html' -}) -export class WriteEmailFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - emailControl: FormControl; - - ngOnInit() { - this.emailControl = this.registerControl(new FormControl(this.caseField.value)); - } -} diff --git a/src/app/shared/palette/email/write-email-field.html b/src/app/shared/palette/email/write-email-field.html deleted file mode 100644 index a63f2f61b..000000000 --- a/src/app/shared/palette/email/write-email-field.html +++ /dev/null @@ -1,11 +0,0 @@ -
- - - - - -
diff --git a/src/app/shared/palette/fixed-list/fixed-list.module.ts b/src/app/shared/palette/fixed-list/fixed-list.module.ts deleted file mode 100644 index 185a1f86a..000000000 --- a/src/app/shared/palette/fixed-list/fixed-list.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FixedListPipe } from './fixed-list.pipe'; -import { ReadFixedListFieldComponent } from './read-fixed-list-field.component'; -import { WriteFixedListFieldComponent } from './write-fixed-list-field.component'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MarkdownModule } from '../../markdown/markdown.module'; - -@NgModule({ - imports: [ - CommonModule, - PaletteUtilsModule, - ReactiveFormsModule, - MarkdownModule - ], - declarations: [ - FixedListPipe, - ReadFixedListFieldComponent, - WriteFixedListFieldComponent - ], - entryComponents: [ - ReadFixedListFieldComponent, - WriteFixedListFieldComponent - ], - exports: [ - FixedListPipe - ] -}) -export class FixedListModule {} diff --git a/src/app/shared/palette/fixed-list/fixed-list.pipe.spec.ts b/src/app/shared/palette/fixed-list/fixed-list.pipe.spec.ts deleted file mode 100644 index 66a4ac32b..000000000 --- a/src/app/shared/palette/fixed-list/fixed-list.pipe.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { FixedListPipe } from './fixed-list.pipe'; -import { FixedListItem } from '../../domain/definition/fixed-list-item.model'; - -describe('FixedListPipe', () => { - - const FIXED_LIST: FixedListItem[] = [ - { - code: 'M', - label: 'Male' - }, - { - code: 'F', - label: 'Female' - }, - { - code: 'O', - label: 'Other' - } - ]; - const EMPTY = ''; - - let fixedListPipe: FixedListPipe; - - beforeEach(() => { - fixedListPipe = new FixedListPipe(); - }); - - describe('given a value matching the code of a list item', () => { - it('should return the associated label', () => { - let label = fixedListPipe.transform('F', FIXED_LIST); - expect(label).toBe('Female'); - - let label2 = fixedListPipe.transform('M', FIXED_LIST); - expect(label2).toBe('Male'); - - let label3 = fixedListPipe.transform('O', FIXED_LIST); - expect(label3).toBe('Other'); - }); - }); - - describe('given a value NOT matching the code of ANY list item', () => { - it('should return an empty string for unknown value', () => { - let label = fixedListPipe.transform('X', FIXED_LIST); - expect(label).toBe(EMPTY); - }); - - it('should return an empty string for undefined value', () => { - let label = fixedListPipe.transform(undefined, FIXED_LIST); - expect(label).toBe(EMPTY); - }); - - it('should return an empty string for null value', () => { - let label = fixedListPipe.transform(null, FIXED_LIST); - expect(label).toBe(EMPTY); - }); - }); -}); diff --git a/src/app/shared/palette/fixed-list/fixed-list.pipe.ts b/src/app/shared/palette/fixed-list/fixed-list.pipe.ts deleted file mode 100644 index 7bb09a158..000000000 --- a/src/app/shared/palette/fixed-list/fixed-list.pipe.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { FixedListItem } from '../../domain/definition/fixed-list-item.model'; - -@Pipe({ - name: 'ccdFixedList' -}) -export class FixedListPipe implements PipeTransform { - - private static readonly EMPTY = ''; - - transform(value: string, items: FixedListItem[]): any { - let item = items.find(i => i.code === value); - return item ? item.label : FixedListPipe.EMPTY; - } - -} diff --git a/src/app/shared/palette/fixed-list/read-fixed-list-field.component.spec.ts b/src/app/shared/palette/fixed-list/read-fixed-list-field.component.spec.ts deleted file mode 100644 index 4bbd070cb..000000000 --- a/src/app/shared/palette/fixed-list/read-fixed-list-field.component.spec.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadFixedListFieldComponent } from './read-fixed-list-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { FixedListPipe } from './fixed-list.pipe'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('ReadFixedListFieldComponent', () => { - - const VALUE = 'F'; - const EXPECTED_LABEL = 'Female'; - const FIELD_TYPE: FieldType = { - id: 'Gender', - type: 'FixedList', - fixed_list_items: [ - { - code: 'M', - label: 'Male' - }, - { - code: VALUE, - label: EXPECTED_LABEL - }, - { - code: 'O', - label: 'Other' - } - ] - }; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - const EMPTY = ''; - - let fixture: ComponentFixture; - let component: ReadFixedListFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadFixedListFieldComponent, - FixedListPipe - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadFixedListFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render label associated to the value provided', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EXPECTED_LABEL); - }); - - it('render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); - - it('render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); -}); diff --git a/src/app/shared/palette/fixed-list/read-fixed-list-field.component.ts b/src/app/shared/palette/fixed-list/read-fixed-list-field.component.ts deleted file mode 100644 index 81ed71c8a..000000000 --- a/src/app/shared/palette/fixed-list/read-fixed-list-field.component.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { Component } from '@angular/core'; - -@Component({ - selector: 'ccd-read-fixed-list-field', - template: '{{caseField.value | ccdFixedList:caseField.field_type.fixed_list_items}}', -}) -export class ReadFixedListFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/fixed-list/write-fixed-list-field.component.spec.ts b/src/app/shared/palette/fixed-list/write-fixed-list-field.component.spec.ts deleted file mode 100644 index b38c59f54..000000000 --- a/src/app/shared/palette/fixed-list/write-fixed-list-field.component.spec.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import { WriteFixedListFieldComponent } from './write-fixed-list-field.component'; -import { attr, text } from '../../../test/helpers'; - -const VALUE = 'F'; -const EXPECTED_LABEL = 'Female'; -const FIELD_ID = 'MarritalStatus'; -const FIELD_TYPE: FieldType = { - id: 'Gender', - type: 'FixedList', - fixed_list_items: [ - { - code: 'M', - label: 'Male' - }, - { - code: VALUE, - label: EXPECTED_LABEL - }, - { - code: 'O', - label: 'Other' - } - ] -}; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteFixedListFieldComponent', () => { - - const $SELECT = By.css('.form-group select'); - const $OPTION = By.css('.form-group option'); - - let fixture: ComponentFixture; - let component: WriteFixedListFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteFixedListFieldComponent, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteFixedListFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render all options', () => { - let options = de.queryAll($OPTION); - - expect(options.length).toEqual(4); - expect(attr(options[0], 'value')).toEqual(''); - expect(text(options[0])).toEqual('--Select a value--'); - expect(attr(options[1], 'value')).toEqual('M'); - expect(text(options[1])).toEqual('Male'); - expect(attr(options[2], 'value')).toEqual('F'); - expect(text(options[2])).toEqual('Female'); - expect(attr(options[3], 'value')).toEqual('O'); - expect(text(options[3])).toEqual('Other'); - - }); - - it('should link select element to formControl', () => { - - component.fixedListControl.setValue('M'); - - let select = de.query($SELECT); - fixture.detectChanges(); - - expect(select.nativeElement.value).toEqual('M'); - }); -}); diff --git a/src/app/shared/palette/fixed-list/write-fixed-list-field.component.ts b/src/app/shared/palette/fixed-list/write-fixed-list-field.component.ts deleted file mode 100644 index babd1b289..000000000 --- a/src/app/shared/palette/fixed-list/write-fixed-list-field.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; - -@Component({ - selector: 'ccd-write-fixed-list-field', - templateUrl: './write-fixed-list-field.html' -}) -export class WriteFixedListFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - fixedListControl: FormControl; - - ngOnInit() { - let notEmpty = this.caseField.value !== null && this.caseField.value !== undefined; - this.fixedListControl = this.registerControl(new FormControl(notEmpty ? this.caseField.value : '')); - } -} diff --git a/src/app/shared/palette/fixed-list/write-fixed-list-field.html b/src/app/shared/palette/fixed-list/write-fixed-list-field.html deleted file mode 100644 index 8cb5f10a5..000000000 --- a/src/app/shared/palette/fixed-list/write-fixed-list-field.html +++ /dev/null @@ -1,16 +0,0 @@ -
- - - - - -
diff --git a/src/app/shared/palette/label/label-field.component.spec.ts b/src/app/shared/palette/label/label-field.component.spec.ts deleted file mode 100644 index 6952da832..000000000 --- a/src/app/shared/palette/label/label-field.component.spec.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { LabelFieldComponent } from './label-field.component'; -import { DebugElement } from '@angular/core'; -import { By } from '@angular/platform-browser'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { MockComponent } from 'ng2-mock-component'; -import { LabelSubstitutorDirective } from '../../substitutor/label-substitutor.directive'; -import { LabelSubstitutionService } from '../../case-editor/label-substitution.service'; -import { FieldsUtils } from '../../utils/fields.utils'; - -describe('LabelFieldComponent', () => { - - const $CONTENT = By.css('dl>dt ccd-markdown'); - - const FIELD_TYPE: FieldType = { - id: 'Label', - type: 'Label' - }; - - const CASE_FIELD: CaseField = { - id: 'label', - label: 'Label Field Label', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: 'Label Field Value' - }; - - const LABEL_CASE_FIELD: CaseField = { - id: 'field', - label: '${label}', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: 'Label Field Value' - }; - - const EVENT_CASE_FIELDS: CaseField[] = [ - CASE_FIELD - ]; - - let MarkdownComponent: any = MockComponent({ selector: 'ccd-markdown', inputs: [ - 'content' - ]}); - let fixture: ComponentFixture; - let component: LabelFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - LabelFieldComponent, - LabelSubstitutorDirective, - MarkdownComponent - ], - providers: [ - FieldsUtils, - LabelSubstitutionService, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(LabelFieldComponent); - })); - - describe('LabelFieldComponent without label substitution', () => { - beforeEach(() => { - component = fixture.componentInstance; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - }); - - it('Should render a table with the field label in the markdown tag in the header', () => { - expect(de.query($CONTENT).nativeElement.getAttribute('ng-reflect-content')).toBe(CASE_FIELD.label); - }); - }); - - describe('LabelFieldComponent with label substitution', () => { - beforeEach(() => { - component = fixture.componentInstance; - - component.caseField = LABEL_CASE_FIELD; - component.eventFields = EVENT_CASE_FIELDS; - - de = fixture.debugElement; - fixture.detectChanges(); - }); - - it('Should render label after substitution of fields in label', () => { - expect(de.query($CONTENT).nativeElement.getAttribute('ng-reflect-content')).toBe(CASE_FIELD.value); - }); - }); -}); diff --git a/src/app/shared/palette/label/label-field.component.ts b/src/app/shared/palette/label/label-field.component.ts deleted file mode 100644 index 303c57cb5..000000000 --- a/src/app/shared/palette/label/label-field.component.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { CaseField } from '../../domain/definition/case-field.model'; - -@Component({ - selector: 'ccd-label-field', - templateUrl: './label-field.html' -}) -export class LabelFieldComponent extends AbstractFieldReadComponent { - @Input() - eventFields: CaseField[] = []; -} diff --git a/src/app/shared/palette/label/label-field.html b/src/app/shared/palette/label/label-field.html deleted file mode 100644 index f8deea608..000000000 --- a/src/app/shared/palette/label/label-field.html +++ /dev/null @@ -1,6 +0,0 @@ -
-
- -
-
-
diff --git a/src/app/shared/palette/money-gbp/money-gbp-input.component.spec.ts b/src/app/shared/palette/money-gbp/money-gbp-input.component.spec.ts deleted file mode 100644 index bc326f8f7..000000000 --- a/src/app/shared/palette/money-gbp/money-gbp-input.component.spec.ts +++ /dev/null @@ -1,183 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormControl, ReactiveFormsModule } from '@angular/forms'; -import { DebugElement } from '@angular/core'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import { MoneyGbpInputComponent } from './money-gbp-input.component'; -import { MockComponent } from 'ng2-mock-component'; -import createSpy = jasmine.createSpy; - -describe('MoneyGbpInputComponent', () => { - - const $INPUT = By.css('input'); - - let fixture: ComponentFixture; - let component: MoneyGbpInputComponent; - let de: DebugElement; - - let Input: any; - let onChange; - - beforeEach(async(() => { - - // Input is mocked so that one-way bound inputs can be tested - Input = MockComponent({ selector: 'input', inputs: [ - 'type', - 'value', - 'change', - 'keyup', - 'disabled' - ]}); - - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - MoneyGbpInputComponent, - - // Mock - Input - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(MoneyGbpInputComponent); - component = fixture.componentInstance; - - onChange = createSpy('onChange'); - - component.registerOnChange(onChange); - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should convert pences to pounds for display', () => { - component.writeValue('12345'); - fixture.detectChanges(); - - let input = de.query($INPUT).componentInstance; - - expect(input.value).toEqual('123.45'); - }); - - it('should handle pences only', () => { - component.writeValue('45'); - fixture.detectChanges(); - - let input = de.query($INPUT).componentInstance; - - expect(input.value).toEqual('0.45'); - }); - - it('should handle 0', () => { - component.writeValue('0'); - fixture.detectChanges(); - - let input = de.query($INPUT).componentInstance; - - expect(input.value).toEqual('0.00'); - }); - - it('should handle null', () => { - component.writeValue(null); - fixture.detectChanges(); - - let input = de.query($INPUT).componentInstance; - - expect(input.value).toBeNull(); - }); - - it('should handle undefined', () => { - component.writeValue(undefined); - fixture.detectChanges(); - - let input = de.query($INPUT).componentInstance; - - expect(input.value).toBeNull(); - }); - - it('should convert pounds to pences', () => { - component.onChange({ target: { value: '123'}}); - - expect(onChange).toHaveBeenCalledWith('12300'); - }); - - it('should convert pounds and pences to pences', () => { - component.onChange({ target: { value: '123.45'}}); - - expect(onChange).toHaveBeenCalledWith('12345'); - }); - - it('should convert partial pences to pences', () => { - component.onChange({ target: { value: '123.1'}}); - - expect(onChange).toHaveBeenCalledWith('12310'); - }); - - it('should convert pences only to pences', () => { - component.onChange({ target: { value: '.1'}}); - - expect(onChange).toHaveBeenCalledWith('10'); - }); - - it('should keep empty ', () => { - component.onChange({ target: { value: ''}}); - - expect(onChange).toHaveBeenCalledWith(''); - }); - - it('should keep null', () => { - component.onChange({ target: { value: null}}); - - expect(onChange).toHaveBeenCalledWith(null); - }); - - it('should be invalid when contains letters', () => { - let results = component.validate({ value: 'x'} as FormControl); - - expect(results['pattern']).toBeTruthy(); - }); - - it('should be valid when digits', () => { - let results = component.validate({ value: '12.34'} as FormControl); - - expect(results).toBeUndefined(); - }); - - it('should be invalid when too many decimal places', () => { - let results = component.validate({ value: '12.345'} as FormControl); - - expect(results['pattern']).toBeTruthy(); - }); - - it('should be valid when empty string', () => { - let results = component.validate({ value: ''} as FormControl); - - expect(results).toBeUndefined(); - }); - - it('should not be valid when empty string and mandatory', () => { - component.mandatory = true; - let results = component.validate({ value: ''} as FormControl); - - expect(results).toEqual({pattern: 'This field is required'}); - }); - - it('should be valid when null', () => { - let results = component.validate({ value: null} as FormControl); - - expect(results).toBeUndefined(); - }); - - it('should not be valid when null and mandatory', () => { - component.mandatory = true; - let results = component.validate({ value: null} as FormControl); - - expect(results).toEqual({pattern: 'This field is required'}); - }); -}); diff --git a/src/app/shared/palette/money-gbp/money-gbp-input.component.ts b/src/app/shared/palette/money-gbp/money-gbp-input.component.ts deleted file mode 100644 index 75a83428d..000000000 --- a/src/app/shared/palette/money-gbp/money-gbp-input.component.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { Component, forwardRef, Input } from '@angular/core'; -import { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms'; - -@Component({ - selector: 'ccd-money-gbp-input', - template: ``, - providers: [ - { - provide: NG_VALUE_ACCESSOR, - useExisting: forwardRef(() => MoneyGbpInputComponent), - multi: true, - }, - { - provide: NG_VALIDATORS, - useExisting: forwardRef(() => MoneyGbpInputComponent), - multi: true, - } - ] -}) -export class MoneyGbpInputComponent implements ControlValueAccessor, Validator { - - private static readonly PATTERN = /^\d*(\.\d{0,2})?$/; - - @Input() - id: string; - - @Input() - name: string; - - @Input() - mandatory: boolean; - - @Input() - formControl: FormControl; - - private rawValue: number; - public displayValue: string = null; - public disabled: boolean; - - // change events from the textarea - onChange(event) { - - // get value from input - let newValue = event.target.value; - - if (newValue && MoneyGbpInputComponent.PATTERN.test(newValue)) { - let parts = newValue.split('.'); - - if (!parts[1]) { - parts[1] = '00'; - } else { - while (2 > parts[1].length) { - parts[1] += '0'; - } - } - - this.rawValue = parts.join(''); - } else { - // When pattern not matched, value is passed as is so that it fails validation. - this.rawValue = newValue; - } - - // update the form - this.propagateChange(this.rawValue); - } - - writeValue(obj: any): void { - if (obj) { - this.rawValue = obj; - - let integerPart = obj.slice(0, -2) || '0'; - let decimalPart = obj.slice(-2); - - while (2 > decimalPart.length) { - decimalPart += '0'; - } - - this.displayValue = [integerPart, decimalPart].join('.'); - } - } - - registerOnChange(fn: any): void { - this.propagateChange = fn; - } - - registerOnTouched(_: any): void { - // Not used. - } - - setDisabledState(isDisabled: boolean): void { - this.disabled = isDisabled; - } - - private propagateChange = (_: any) => { }; - - onBlur() { - this.formControl.markAsTouched(); - this.propagateChange(this.rawValue); - } - - validate(control: FormControl): ValidationErrors { - if (this.mandatory && !control.value) { - return { - pattern: 'This field is required' - }; - } - if (control.value && !MoneyGbpInputComponent.PATTERN.test(control.value)) { - return { - pattern: 'Should only contain numbers with up to 2 decimal places' - }; - } - return undefined; - } - - registerOnValidatorChange(_: () => void): void { - // Not used. - } -} diff --git a/src/app/shared/palette/money-gbp/money-gbp.module.ts b/src/app/shared/palette/money-gbp/money-gbp.module.ts deleted file mode 100644 index 30d72e4f2..000000000 --- a/src/app/shared/palette/money-gbp/money-gbp.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ReactiveFormsModule } from '@angular/forms'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { ReadMoneyGbpFieldComponent } from './read-money-gbp-field.component'; -import { WriteMoneyGbpFieldComponent } from './write-money-gbp-field.component'; -import { MoneyGbpInputComponent } from './money-gbp-input.component'; -import { MarkdownModule } from '../../markdown/markdown.module'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - PaletteUtilsModule, - MarkdownModule - ], - declarations: [ - ReadMoneyGbpFieldComponent, - WriteMoneyGbpFieldComponent, - MoneyGbpInputComponent - ], - entryComponents: [ - ReadMoneyGbpFieldComponent, - WriteMoneyGbpFieldComponent - ], - exports: [ - ReadMoneyGbpFieldComponent - ] -}) -export class MoneyGbpModule {} diff --git a/src/app/shared/palette/money-gbp/read-money-gbp-field.component.spec.ts b/src/app/shared/palette/money-gbp/read-money-gbp-field.component.spec.ts deleted file mode 100644 index ec884a427..000000000 --- a/src/app/shared/palette/money-gbp/read-money-gbp-field.component.spec.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadMoneyGbpFieldComponent } from './read-money-gbp-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('ReadMoneyGBPFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'MoneyGBP', - type: 'MoneyGBP' - }; - const VALUE = 4220; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - - let fixture: ComponentFixture; - let component: ReadMoneyGbpFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadMoneyGbpFieldComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadMoneyGbpFieldComponent); - component = fixture.componentInstance; - - component.amount = undefined; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - describe('from caseField value', () => { - it('should render provided value as GBP currency', () => { - component.caseField.value = VALUE; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual('£42.20'); - }); - - it('should prefix pences with leading 0.', () => { - component.caseField.value = 20; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual('£0.20'); - }); - - it('should format large number with commas', () => { - component.caseField.value = 420000020; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual('£4,200,000.20'); - }); - - it('should render undefined value as empty string', () => { - component.caseField.value = undefined; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('should render null value as empty string', () => { - component.caseField.value = null; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('should render unsupported values as empty string', () => { - component.caseField.value = 'bugger off, you who is reading that'; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - }); - - describe('from template value', () => { - it('should render provided value as GBP currency', () => { - component.amount = VALUE; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual('£42.20'); - }); - - it('should prefix pences with leading 0.', () => { - component.amount = 20; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual('£0.20'); - }); - - it('should format large number with commas', () => { - component.amount = 420000020; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual('£4,200,000.20'); - }); - - it('should render undefined value as empty string', () => { - component.amount = undefined; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('should render null value as empty string', () => { - component.amount = null; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('should render unsupported values as empty string', () => { - component.amount = 'bugger off, you who is reading that'; - component.ngOnInit(); - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - }); - -}); diff --git a/src/app/shared/palette/money-gbp/read-money-gbp-field.component.ts b/src/app/shared/palette/money-gbp/read-money-gbp-field.component.ts deleted file mode 100644 index 4f9a2f710..000000000 --- a/src/app/shared/palette/money-gbp/read-money-gbp-field.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - selector: 'ccd-read-money-gbp-field', - template: `{{value / 100 | currency:'GBP':'symbol'}}` -}) -export class ReadMoneyGbpFieldComponent extends AbstractFieldReadComponent implements OnInit { - - @Input() - amount: any; - value: any; - - ngOnInit(): void { - if (this.amount) { - this.value = this.amount; - } else if (this.caseField) { - this.value = this.caseField.value; - } - } - - isNumber(): boolean { - return null !== this.value && !isNaN(this.value); - } - -} diff --git a/src/app/shared/palette/money-gbp/write-money-gbp-field.component.spec.ts b/src/app/shared/palette/money-gbp/write-money-gbp-field.component.spec.ts deleted file mode 100644 index c686293dd..000000000 --- a/src/app/shared/palette/money-gbp/write-money-gbp-field.component.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteMoneyGbpFieldComponent } from './write-money-gbp-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import { MoneyGbpInputComponent } from './money-gbp-input.component'; -import { CaseFieldService } from '../../domain/case-field.service'; - -const FIELD_ID = 'Wage'; -const FIELD_TYPE: FieldType = { - id: 'MoneyGBP', - type: 'MoneyGBP' -}; -const VALUE = '23'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteMoneyGbpFieldComponent', () => { - - let fixture: ComponentFixture; - let component: WriteMoneyGbpFieldComponent; - let de: DebugElement; - let caseFieldService = new CaseFieldService(); - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteMoneyGbpFieldComponent, - MoneyGbpInputComponent, - ], - providers: [ - {provide: CaseFieldService, useValue: caseFieldService}, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteMoneyGbpFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render `ccd-money-gbp-input`', () => { - let input = de.query(By.directive(MoneyGbpInputComponent)); - - expect(input).toBeTruthy(); - }); -}); diff --git a/src/app/shared/palette/money-gbp/write-money-gbp-field.component.ts b/src/app/shared/palette/money-gbp/write-money-gbp-field.component.ts deleted file mode 100644 index 614d75337..000000000 --- a/src/app/shared/palette/money-gbp/write-money-gbp-field.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; - -@Component({ - selector: 'ccd-write-money-gbp-field', - templateUrl: './write-money-gbp-field.html' -}) -export class WriteMoneyGbpFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - moneyGbpControl: FormControl; - - ngOnInit() { - this.moneyGbpControl = this.registerControl(new FormControl(this.caseField.value)); - } -} diff --git a/src/app/shared/palette/money-gbp/write-money-gbp-field.html b/src/app/shared/palette/money-gbp/write-money-gbp-field.html deleted file mode 100644 index 9cf140fde..000000000 --- a/src/app/shared/palette/money-gbp/write-money-gbp-field.html +++ /dev/null @@ -1,17 +0,0 @@ -
- - - -
- £ - -
- -
diff --git a/src/app/shared/palette/multi-select-list/multi-select-list.module.ts b/src/app/shared/palette/multi-select-list/multi-select-list.module.ts deleted file mode 100644 index 9e449c71d..000000000 --- a/src/app/shared/palette/multi-select-list/multi-select-list.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FixedListModule } from '../fixed-list/fixed-list.module'; -import { ReadMultiSelectListFieldComponent } from './read-multi-select-list-field.component'; -import { WriteMultiSelectListFieldComponent } from './write-multi-select-list-field.component'; -import { ReactiveFormsModule } from '@angular/forms'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { MarkdownModule } from '../../markdown/markdown.module'; - -@NgModule({ - imports: [ - CommonModule, - FixedListModule, - ReactiveFormsModule, - PaletteUtilsModule, - MarkdownModule - ], - declarations: [ - ReadMultiSelectListFieldComponent, - WriteMultiSelectListFieldComponent - ], - entryComponents: [ - ReadMultiSelectListFieldComponent, - WriteMultiSelectListFieldComponent - ] -}) -export class MultiSelectListModule {} diff --git a/src/app/shared/palette/multi-select-list/multi-select-list.scss b/src/app/shared/palette/multi-select-list/multi-select-list.scss deleted file mode 100644 index 212126bd9..000000000 --- a/src/app/shared/palette/multi-select-list/multi-select-list.scss +++ /dev/null @@ -1,15 +0,0 @@ -.multi-select-list-field-table { - - tr:first-child>td { - padding-top: 0; - } - - tr:last-child>td { - border-bottom: none; - } - - td.collection-actions { - width: 1px; - white-space: nowrap; - } -} diff --git a/src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.spec.ts b/src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.spec.ts deleted file mode 100644 index f3e0b4d7f..000000000 --- a/src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.spec.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; -import { MockComponent } from 'ng2-mock-component'; -import { ReadMultiSelectListFieldComponent } from './read-multi-select-list-field.component'; -import { text } from '../../../test/helpers'; -import { FixedListPipe } from '../fixed-list/fixed-list.pipe'; - -describe('ReadMultiSelectListFieldComponent', () => { - - const $VALUES = By.css('table>tbody>tr>td'); - - const FIELD_TYPE: FieldType = { - id: 'MultiSelectList', - type: 'MultiSelectList', - fixed_list_items: [ - { - label: 'Pierre', - code: 'P' - }, - { - label: 'Paul', - code: 'PA' - }, - { - label: 'Jacques', - code: 'J' - } - ] - }; - const VALUES = [ 'P', 'PA', 'J' ]; - const CASE_FIELD = new CaseField(); - CASE_FIELD.id = 'x'; - CASE_FIELD.label = 'X'; - CASE_FIELD.field_type = FIELD_TYPE; - CASE_FIELD.value = VALUES; - - let FieldReadComponent = MockComponent({ - selector: 'ccd-field-read', - inputs: ['caseField'] - }); - - let fixture: ComponentFixture; - let component: ReadMultiSelectListFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadMultiSelectListFieldComponent, - FixedListPipe, - - // Mock - FieldReadComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadMultiSelectListFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render values as a table with one row and one cell per value', () => { - component.caseField.value = VALUES; - fixture.detectChanges(); - - let cells = de.queryAll($VALUES); - - expect(cells.length).toEqual(VALUES.length); - - for (let i = 0; i < VALUES.length; i++) { - - expect(FIELD_TYPE.fixed_list_items[i].label).toEqual(text(cells[i])); - - } - }); - - it('should NOT render anything when value is undefined', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.children.length).toBe(0); - }); - - it('should NOT render anything when value is null', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.children.length).toBe(0); - }); - - it('should NOT render anything when value is empty array', () => { - component.caseField.value = []; - fixture.detectChanges(); - - expect(de.children.length).toBe(0); - }); -}); diff --git a/src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.ts b/src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.ts deleted file mode 100644 index a5dfe3f3d..000000000 --- a/src/app/shared/palette/multi-select-list/read-multi-select-list-field.component.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - selector: 'ccd-read-multi-select-list-field', - templateUrl: './read-multi-select-list-field.html', - styleUrls: ['./multi-select-list.scss'] -}) -export class ReadMultiSelectListFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/multi-select-list/read-multi-select-list-field.html b/src/app/shared/palette/multi-select-list/read-multi-select-list-field.html deleted file mode 100644 index adc67a56f..000000000 --- a/src/app/shared/palette/multi-select-list/read-multi-select-list-field.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - -
{{ value | ccdFixedList:caseField.field_type.fixed_list_items }}
diff --git a/src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.spec.ts b/src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.spec.ts deleted file mode 100644 index c4759fd0d..000000000 --- a/src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.spec.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormArray, ReactiveFormsModule } from '@angular/forms'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import { attr } from '../../../test/helpers'; -import { WriteMultiSelectListFieldComponent } from './write-multi-select-list-field.component'; - -const VALUES = [ 'Option1', 'Option3' ]; -const FIELD_ID = 'MultiSelectList1'; -const FIELD_TYPE: FieldType = { - id: 'MultiSelectList', - type: 'MultiSelectList', - fixed_list_items: [ - { - code: 'Option1', - label: 'Option 1' - }, - { - code: 'Option2', - label: 'Option 2' - }, - { - code: 'Option3', - label: 'Option 3' - } - ] -}; -const CASE_FIELD: CaseField = new CaseField(); -CASE_FIELD.id = FIELD_ID; -CASE_FIELD.label = 'X'; -CASE_FIELD.field_type = FIELD_TYPE; -CASE_FIELD.value = VALUES; - -const REGISTER_CONTROL = (control) => { - return control; -}; - -describe('WriteMultiSelectListFieldComponent', () => { - - const $CHECKBOXES = By.css('input[type="checkbox"]'); - const $SELECTED_CHECKBOXES = By.css('input[type="checkbox"]:checked'); - const $OPTION_1 = By.css('input[value="Option1"]'); - const $OPTION_2 = By.css('input[value="Option2"]'); - - let fixture: ComponentFixture; - let component: WriteMultiSelectListFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteMultiSelectListFieldComponent, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteMultiSelectListFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should register a FormArray', () => { - expect(component.checkboxes.constructor).toBe(FormArray); - }); - - it('should initialise FormArray with initial values', () => { - expect(component.checkboxes.controls.length).toEqual(2); - expect(component.checkboxes.controls[0].value).toEqual(VALUES[0]); - expect(component.checkboxes.controls[1].value).toEqual(VALUES[1]); - }); - - it('should render a checkbox for each available option', () => { - let checkboxes = de.queryAll($CHECKBOXES); - - expect(checkboxes.length).toEqual(FIELD_TYPE.fixed_list_items.length); - - FIELD_TYPE.fixed_list_items.forEach(item => { - expect(checkboxes.find(checkbox => attr(checkbox, 'value') === item.code)).toBeTruthy(); - }); - }); - - it('should mark as selected the initially selected checkboxes', () => { - let checkboxes = de.queryAll($SELECTED_CHECKBOXES); - - expect(checkboxes.length).toEqual(VALUES.length); - - VALUES.forEach(value => { - expect(checkboxes.find(checkbox => attr(checkbox, 'value') === value)).toBeTruthy(); - }); - }); - - it('should remove option from values when unselected', () => { - let option1 = de.query($OPTION_1).nativeElement; - option1.click(); - - fixture.detectChanges(); - - expect(option1.checked).toBeFalsy(); - expect(component.checkboxes.controls.length).toEqual(1); - expect(component.checkboxes.controls[0].value).not.toEqual(FIELD_TYPE.fixed_list_items[0].code); - }); - - it('should add option to values when selected', () => { - let option2 = de.query($OPTION_2).nativeElement; - option2.click(); - - fixture.detectChanges(); - - expect(option2.checked).toBeTruthy(); - expect(component.checkboxes.controls.length).toEqual(3); - expect(component.checkboxes.controls[2].value).toEqual(FIELD_TYPE.fixed_list_items[1].code); - }); -}); diff --git a/src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.ts b/src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.ts deleted file mode 100644 index cadbb6695..000000000 --- a/src/app/shared/palette/multi-select-list/write-multi-select-list-field.component.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { FormArray, FormControl } from '@angular/forms'; - -@Component({ - selector: 'ccd-write-multi-select-list-field', - templateUrl: './write-multi-select-list-field.html' -}) -export class WriteMultiSelectListFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - checkboxes: FormArray; - - ngOnInit(): void { - this.checkboxes = new FormArray([]); - - // Initialise array with existing values - if (this.caseField.value && Array.isArray(this.caseField.value)) { - const values: string[] = this.caseField.value; - values.forEach(value => { - this.checkboxes.push(new FormControl(value)); - }); - } - - this.checkboxes = this.registerControl(this.checkboxes); - } - - onCheckChange(event) { - - if (!this.isSelected(event.target.value)) { - // Add a new control in the FormArray - this.checkboxes.push(new FormControl(event.target.value)); - } else { - // Remove the control form the FormArray - this.checkboxes.controls.forEach((ctrl: FormControl, i) => { - if (ctrl.value === event.target.value) { - this.checkboxes.removeAt(i); - return; - } - }); - } - } - - isSelected(code) { - return this.checkboxes.controls.find(control => control.value === code); - } - -} diff --git a/src/app/shared/palette/multi-select-list/write-multi-select-list-field.html b/src/app/shared/palette/multi-select-list/write-multi-select-list-field.html deleted file mode 100644 index cd86376e1..000000000 --- a/src/app/shared/palette/multi-select-list/write-multi-select-list-field.html +++ /dev/null @@ -1,22 +0,0 @@ -
- -
- - - {{caseField | ccdFieldLabel}} - {{caseField.hint_text}} - {{checkboxes.errors | ccdFirstError}} - - - - -
- - -
- -
- -
- -
diff --git a/src/app/shared/palette/number/read-number-field.component.spec.ts b/src/app/shared/palette/number/read-number-field.component.spec.ts deleted file mode 100644 index 10b32ab89..000000000 --- a/src/app/shared/palette/number/read-number-field.component.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadNumberFieldComponent } from './read-number-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('ReadNumberFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'Number', - type: 'Number' - }; - const VALUE = 42; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - - let fixture: ComponentFixture; - let component: ReadNumberFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadNumberFieldComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadNumberFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided value as number', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(VALUE.toString()); - }); - - it('render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); -}); diff --git a/src/app/shared/palette/number/read-number-field.component.ts b/src/app/shared/palette/number/read-number-field.component.ts deleted file mode 100644 index 5be8c4bab..000000000 --- a/src/app/shared/palette/number/read-number-field.component.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { Component } from '@angular/core'; - -@Component({ - selector: 'ccd-read-number-field', - template: `{{caseField.value}}` -}) -export class ReadNumberFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/number/write-number-field.component.spec.ts b/src/app/shared/palette/number/write-number-field.component.spec.ts deleted file mode 100644 index f8ee6737c..000000000 --- a/src/app/shared/palette/number/write-number-field.component.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteNumberFieldComponent } from './write-number-field.component'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; - -const FIELD_ID = 'PersonAge'; -const FIELD_TYPE: FieldType = { - id: 'Number', - type: 'Number' -}; -const VALUE = '23'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteNumberFieldComponent', () => { - - const $INPUT = By.css('.form-group input'); - - // Input is mocked so that one-way bound inputs can be tested - let Input: any = MockComponent({ selector: 'input', inputs: [ - 'type', - 'formControl' - ]}); - - let fixture: ComponentFixture; - let component: WriteNumberFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteNumberFieldComponent, - - // Mock - Input, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteNumberFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render text input element linked to formControl', () => { - let input = de.query($INPUT); - - expect(input.nativeElement.getAttribute('type')).toBe('number'); - expect(input.componentInstance.formControl).toEqual(component.numberControl); - }); -}); diff --git a/src/app/shared/palette/number/write-number-field.component.ts b/src/app/shared/palette/number/write-number-field.component.ts deleted file mode 100644 index aa716fa04..000000000 --- a/src/app/shared/palette/number/write-number-field.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; - -@Component({ - selector: 'ccd-write-number-field', - templateUrl: './write-number-field.html' -}) -export class WriteNumberFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - numberControl: FormControl; - - ngOnInit() { - this.numberControl = this.registerControl(new FormControl(this.caseField.value)); - } -} diff --git a/src/app/shared/palette/number/write-number-field.html b/src/app/shared/palette/number/write-number-field.html deleted file mode 100644 index cc05b0a78..000000000 --- a/src/app/shared/palette/number/write-number-field.html +++ /dev/null @@ -1,11 +0,0 @@ -
- - - - - -
diff --git a/src/app/shared/palette/order-summary/fee-value.model.ts b/src/app/shared/palette/order-summary/fee-value.model.ts deleted file mode 100644 index 8187c46e7..000000000 --- a/src/app/shared/palette/order-summary/fee-value.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Fee } from './fee.model'; - -export class FeeValue { - value: Fee -} diff --git a/src/app/shared/palette/order-summary/fee.model.ts b/src/app/shared/palette/order-summary/fee.model.ts deleted file mode 100644 index 0ce5dd204..000000000 --- a/src/app/shared/palette/order-summary/fee.model.ts +++ /dev/null @@ -1,6 +0,0 @@ -export class Fee { - FeeCode: string; - FeeAmount: string; - FeeDescription?: string; - FeeVersion: string; -} diff --git a/src/app/shared/palette/order-summary/order-summary.model.ts b/src/app/shared/palette/order-summary/order-summary.model.ts deleted file mode 100644 index af6df1150..000000000 --- a/src/app/shared/palette/order-summary/order-summary.model.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { FeeValue } from './fee-value.model'; - -export class OrderSummary { - PaymentReference: string; - Fees: FeeValue[]; - PaymentTotal: string; -} diff --git a/src/app/shared/palette/order-summary/order-summary.module.ts b/src/app/shared/palette/order-summary/order-summary.module.ts deleted file mode 100644 index 677bef04f..000000000 --- a/src/app/shared/palette/order-summary/order-summary.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { NgModule } from '@angular/core'; -import { WriteOrderSummaryFieldComponent } from './write-order-summary-field.component'; -import { ComplexModule } from '../complex/complex.module'; -import { CommonModule } from '@angular/common'; -import { ReactiveFormsModule } from '@angular/forms'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { MoneyGbpModule } from '../money-gbp/money-gbp.module'; -import { ReadOrderSummaryFieldComponent } from './read-order-summary-field.component'; -import { ReadOrderSummaryRowComponent } from './read-order-summary-row.component'; - -@NgModule({ - imports: [ - CommonModule, - ComplexModule, - ReactiveFormsModule, - PaletteUtilsModule, - MoneyGbpModule - ], - declarations: [ - WriteOrderSummaryFieldComponent, - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ], - entryComponents: [ - WriteOrderSummaryFieldComponent, - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ], -}) -export class OrderSummaryModule {} diff --git a/src/app/shared/palette/order-summary/read-order-summary-field.component.spec.ts b/src/app/shared/palette/order-summary/read-order-summary-field.component.spec.ts deleted file mode 100644 index 811667c6d..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-field.component.spec.ts +++ /dev/null @@ -1,218 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadOrderSummaryFieldComponent } from './read-order-summary-field.component'; -import { OrderSummary } from './order-summary.model'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; -import { text } from '../../../test/helpers'; -import { ReadOrderSummaryRowComponent } from './read-order-summary-row.component'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MoneyGbpModule } from '../money-gbp/money-gbp.module'; - -describe('ReadOrderSummaryFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'PersonOrderSummary', - type: 'Complex' - }; - - const VALUE: OrderSummary = { - PaymentReference: 'RC-1521-1095-0964-3143', - Fees: [ - { - value: { - FeeCode: 'FEE0001', - FeeAmount: '4545', - FeeDescription: 'First fee description', - FeeVersion: '1' - } - }, - { - value: { - FeeCode: 'FEE0002', - FeeAmount: '0455', - FeeDescription: 'Second fee description', - FeeVersion: '2' - } - } - ], - PaymentTotal: '5000' - }; - - const EXPECTED_FEE_AMOUNTS = ['£45.45', '£4.55']; - const EXPECTED_PAYMENT_TOTAL = '£50.00'; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'READONLY', - field_type: FIELD_TYPE, - value: VALUE - }; - const UNDEFINED_CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'READONLY', - field_type: FIELD_TYPE, - value: undefined - }; - const NULL_CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'READONLY', - field_type: FIELD_TYPE, - value: null - }; - - const $HEAD_ROW = By.css('table>thead>tr'); - const $BODY = By.css('table>tbody'); - - describe('Value exists', () => { - let fixture: ComponentFixture; - let component: ReadOrderSummaryFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - MoneyGbpModule - ], - declarations: [ - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadOrderSummaryFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided order summary as a table', () => { - - let headRow = de.query($HEAD_ROW); - expect(headRow.children.length).toBe(3); - expect(text(headRow.children[0])).toBe('Code'); - expect(text(headRow.children[1])).toBe('Description'); - expect(text(headRow.children[2])).toBe('Amount'); - - let body = de.query($BODY); - expect(body.children.length).toEqual(VALUE.Fees.length + 1); - - for (let i = 1; i <= VALUE.Fees.length; i++) { - - let feeCode = text(de.query(By.css('table>tbody tr:nth-child(' + i + ') td:nth-child(1)'))); - let feeDescription = text(de.query(By.css('table>tbody tr:nth-child(' + i + ') td:nth-child(2)'))); - let feeAmount = text(de.query(By.css('table>tbody tr:nth-child(' + i + ') td:nth-child(3)'))); - - expect(feeCode).toBe(VALUE.Fees[i - 1].value.FeeCode); - expect(feeDescription).toBe(VALUE.Fees[i - 1].value.FeeDescription); - expect(feeAmount).toBe(EXPECTED_FEE_AMOUNTS[i - 1]); - } - - let paymentTotalLabel = text(de.query(By.css('table>tbody tr:last-child td:nth-child(2)'))) - expect(paymentTotalLabel).toBe('Total'); - - let paymentTotalValue = text(de.query(By.css('table>tbody tr:last-child td:nth-child(3)'))) - expect(paymentTotalValue).toBe(EXPECTED_PAYMENT_TOTAL); - - }); - }); - - describe('Undefined value', () => { - let fixture: ComponentFixture; - let component: ReadOrderSummaryFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - MoneyGbpModule - ], - declarations: [ - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadOrderSummaryFieldComponent); - component = fixture.componentInstance; - - component.caseField = UNDEFINED_CASE_FIELD; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render undefined case field value as empty table with column headers and Total rows only', () => { - let headRow = de.query($HEAD_ROW); - expect(headRow.children.length).toBe(3); - expect(text(headRow.children[0])).toBe('Code'); - expect(text(headRow.children[1])).toBe('Description'); - expect(text(headRow.children[2])).toBe('Amount'); - - let body = de.query($BODY); - expect(body.children.length).toBe(1); - - let paymentTotalLabel = text(de.query(By.css('table>tbody tr:last-child td:nth-child(2)'))) - expect(paymentTotalLabel).toBe('Total'); - - let paymentTotal = text(de.query(By.css('table>tbody tr:last-child td:nth-child(3)'))) - expect(paymentTotal).toBeNull(); - }); - }); - - describe('Null value', () => { - let fixture: ComponentFixture; - let component: ReadOrderSummaryFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - MoneyGbpModule - ], - declarations: [ - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadOrderSummaryFieldComponent); - component = fixture.componentInstance; - - component.caseField = NULL_CASE_FIELD; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render null case field value as empty table with column headers and Total rows only', () => { - let headRow = de.query($HEAD_ROW); - expect(headRow.children.length).toBe(3); - expect(text(headRow.children[0])).toBe('Code'); - expect(text(headRow.children[1])).toBe('Description'); - expect(text(headRow.children[2])).toBe('Amount'); - - let body = de.query($BODY); - - expect(body.children.length).toBe(1); - - let paymentTotalLabel = text(de.query(By.css('table>tbody tr:last-child td:nth-child(2)'))) - expect(paymentTotalLabel).toBe('Total'); - - let paymentTotal = text(de.query(By.css('table>tbody tr:last-child td:nth-child(3)'))) - expect(paymentTotal).toBeNull(); - }); - }); -}); diff --git a/src/app/shared/palette/order-summary/read-order-summary-field.component.ts b/src/app/shared/palette/order-summary/read-order-summary-field.component.ts deleted file mode 100644 index 181140a59..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-field.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { FeeValue } from './fee-value.model'; - -@Component({ - selector: 'ccd-read-order-summary-field', - templateUrl: './read-order-summary-field.html', - styleUrls: [ - './read-order-summary-field.scss' - ], -}) -export class ReadOrderSummaryFieldComponent extends AbstractFieldReadComponent { - - getFees(): FeeValue[] { - return this.caseField.value ? this.caseField.value.Fees : []; - } - - getPaymentTotal(): string { - return this.caseField.value ? this.caseField.value.PaymentTotal : ''; - } -} diff --git a/src/app/shared/palette/order-summary/read-order-summary-field.html b/src/app/shared/palette/order-summary/read-order-summary-field.html deleted file mode 100644 index fa6fddb26..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-field.html +++ /dev/null @@ -1,14 +0,0 @@ -
Order Summary
- - - - - - - - - - - - -
CodeDescriptionAmount
Total
diff --git a/src/app/shared/palette/order-summary/read-order-summary-field.scss b/src/app/shared/palette/order-summary/read-order-summary-field.scss deleted file mode 100644 index 00f776e19..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-field.scss +++ /dev/null @@ -1,58 +0,0 @@ -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_typography'; -@import "~govuk_frontend_toolkit/stylesheets/_colours.scss"; - -$padding: 12px; - -.order-summary-title { - border: 0; - @include bold-24; -} - -table { - margin-bottom: 23px; - thead { - tr{ - td { - margin: 0; - border-bottom: 1px solid $black; - padding-top: 41px; - padding-bottom: 36px; - @include bold-16; - } - td:nth-child(3) { - text-align: right; - } - } - } - tbody { - tr { - td { - padding-top: $padding; - padding-bottom: $padding; - margin: 0; - border-bottom: 1px solid $black; - @include core-16; - } - td:nth-child(1) { - width: 20px; - } - td:nth-child(2) { - width: 70%; - } - td:nth-child(3) { - text-align: right; - width: 10%; - } - } - tr:last-child { - td:nth-child(1) { - border-bottom: 0px; - } - td:nth-child(2) { - @include bold-16; - text-align: right; - border-bottom: 0px; - } - } - } -} diff --git a/src/app/shared/palette/order-summary/read-order-summary-row.component.ts b/src/app/shared/palette/order-summary/read-order-summary-row.component.ts deleted file mode 100644 index 276b72ede..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-row.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { FeeValue } from './fee-value.model'; - -@Component({ - // tslint:disable-next-line - selector: '[ccdReadOrderSummaryRow]', - templateUrl: './read-order-summary-row.html', - styleUrls: [ - './read-order-summary-row.scss' - ], -}) -export class ReadOrderSummaryRowComponent extends AbstractFieldReadComponent { - - @Input() - feeValue: FeeValue; - - getFeeAmount(): string { - return this.feeValue.value ? this.feeValue.value.FeeAmount : ''; - } -} diff --git a/src/app/shared/palette/order-summary/read-order-summary-row.html b/src/app/shared/palette/order-summary/read-order-summary-row.html deleted file mode 100644 index 57168d8a0..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-row.html +++ /dev/null @@ -1,3 +0,0 @@ -{{feeValue.value.FeeCode}} -{{feeValue.value.FeeDescription}} - \ No newline at end of file diff --git a/src/app/shared/palette/order-summary/read-order-summary-row.scss b/src/app/shared/palette/order-summary/read-order-summary-row.scss deleted file mode 100644 index 50f736804..000000000 --- a/src/app/shared/palette/order-summary/read-order-summary-row.scss +++ /dev/null @@ -1,22 +0,0 @@ -@import 'node_modules/govuk_frontend_toolkit/stylesheets/_typography'; -@import "~govuk_frontend_toolkit/stylesheets/_colours.scss"; - -$padding: 12px; - -td { - padding-top: $padding; - padding-bottom: $padding; - margin: 0; - border-bottom: 1px solid $black; - @include core-16; -} -td:nth-child(1) { - width: 20px; -} -td:nth-child(2) { - width: 70%; -} -td:nth-child(3) { - text-align: right; - width: 10%; -} diff --git a/src/app/shared/palette/order-summary/write-order-summary-field.component.spec.ts b/src/app/shared/palette/order-summary/write-order-summary-field.component.spec.ts deleted file mode 100644 index 44420adf3..000000000 --- a/src/app/shared/palette/order-summary/write-order-summary-field.component.spec.ts +++ /dev/null @@ -1,227 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadOrderSummaryFieldComponent } from './read-order-summary-field.component'; -import { OrderSummary } from './order-summary.model'; -import { DebugElement, Component, Input } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; -import { text } from '../../../test/helpers'; -import { ReadOrderSummaryRowComponent } from './read-order-summary-row.component'; -import { ReactiveFormsModule, FormControl, AbstractControl, FormGroup } from '@angular/forms'; -import { MoneyGbpModule } from '../money-gbp/money-gbp.module'; -import { WriteOrderSummaryFieldComponent } from './write-order-summary-field.component'; - -describe('WriteOrderSummaryFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'PersonOrderSummary', - type: 'Complex' - }; - - const VALUE: OrderSummary = { - PaymentReference: 'RC-1521-1095-0964-3143', - Fees: [ - { - value: { - FeeCode: 'FEE0001', - FeeAmount: '4545', - FeeDescription: 'First fee description', - FeeVersion: '1' - } - }, - { - value: { - FeeCode: 'FEE0002', - FeeAmount: '0455', - FeeDescription: 'Second fee description', - FeeVersion: '2' - } - } - ], - PaymentTotal: '5000' - }; - - const EXPECTED_FEE_AMOUNTS = ['£45.45', '£4.55']; - const EXPECTED_PAYMENT_TOTAL = '£50.00'; - const ID = 'PersonOrderSummary'; - const CASE_FIELD: CaseField = { - id: ID, - label: 'X', - display_context: 'MANDATORY', - field_type: FIELD_TYPE, - value: VALUE - }; - const UNDEFINED_CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'MANDATORY', - field_type: FIELD_TYPE, - value: undefined - }; - const NULL_CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'MANDATORY', - field_type: FIELD_TYPE, - value: null - }; - - const $HEAD_ROW = By.css('table>thead>tr'); - const $BODY = By.css('table>tbody'); - - describe('Value exists', () => { - let fixture: ComponentFixture; - let component: WriteOrderSummaryFieldComponent; - let de: DebugElement; - - const FORM_GROUP: FormGroup = new FormGroup({}); - const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(ID, control); - return control; - }; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - MoneyGbpModule - ], - declarations: [ - WriteOrderSummaryFieldComponent, - // Mocks - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteOrderSummaryFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.registerControl = REGISTER_CONTROL; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided order summary as a table', () => { - let headRow = de.query($HEAD_ROW); - expect(headRow.children.length).toBe(3); - expect(text(headRow.children[0])).toBe('Code'); - expect(text(headRow.children[1])).toBe('Description'); - expect(text(headRow.children[2])).toBe('Amount'); - - let body = de.query($BODY); - expect(body.children.length).toEqual(VALUE.Fees.length + 1); - - for (let i = 1; i <= VALUE.Fees.length; i++) { - - let feeCode = text(de.query(By.css('table>tbody tr:nth-child(' + i + ') td:nth-child(1)'))); - let feeDescription = text(de.query(By.css('table>tbody tr:nth-child(' + i + ') td:nth-child(2)'))); - let feeAmount = text(de.query(By.css('table>tbody tr:nth-child(' + i + ') td:nth-child(3)'))); - - expect(feeCode).toBe(VALUE.Fees[i - 1].value.FeeCode); - expect(feeDescription).toBe(VALUE.Fees[i - 1].value.FeeDescription); - expect(feeAmount).toBe(EXPECTED_FEE_AMOUNTS[i - 1]); - } - - let paymentTotalLabel = text(de.query(By.css('table>tbody tr:last-child td:nth-child(2)'))) - expect(paymentTotalLabel).toBe('Total'); - - let paymentTotalValue = text(de.query(By.css('table>tbody tr:last-child td:nth-child(3)'))) - expect(paymentTotalValue).toBe(EXPECTED_PAYMENT_TOTAL); - }); - }); - - describe('Undefined value', () => { - let fixture: ComponentFixture; - let component: ReadOrderSummaryFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - MoneyGbpModule - ], - declarations: [ - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadOrderSummaryFieldComponent); - component = fixture.componentInstance; - - component.caseField = UNDEFINED_CASE_FIELD; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render undefined case field value as empty table with column headers and Total rows only', () => { - let headRow = de.query($HEAD_ROW); - expect(headRow.children.length).toBe(3); - expect(text(headRow.children[0])).toBe('Code'); - expect(text(headRow.children[1])).toBe('Description'); - expect(text(headRow.children[2])).toBe('Amount'); - - let body = de.query($BODY); - expect(body.children.length).toBe(1); - - let paymentTotalLabel = text(de.query(By.css('table>tbody tr:last-child td:nth-child(2)'))) - expect(paymentTotalLabel).toBe('Total'); - - let paymentTotal = text(de.query(By.css('table>tbody tr:last-child td:nth-child(3)'))) - expect(paymentTotal).toBeNull(); - }); - }); - - describe('Null value', () => { - let fixture: ComponentFixture; - let component: ReadOrderSummaryFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - MoneyGbpModule - ], - declarations: [ - ReadOrderSummaryFieldComponent, - ReadOrderSummaryRowComponent, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadOrderSummaryFieldComponent); - component = fixture.componentInstance; - - component.caseField = NULL_CASE_FIELD; - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render null case field value as empty table with column headers and Total rows only', () => { - let headRow = de.query($HEAD_ROW); - expect(headRow.children.length).toBe(3); - expect(text(headRow.children[0])).toBe('Code'); - expect(text(headRow.children[1])).toBe('Description'); - expect(text(headRow.children[2])).toBe('Amount'); - - let body = de.query($BODY); - - expect(body.children.length).toBe(1); - - let paymentTotalLabel = text(de.query(By.css('table>tbody tr:last-child td:nth-child(2)'))) - expect(paymentTotalLabel).toBe('Total'); - - let paymentTotal = text(de.query(By.css('table>tbody tr:last-child td:nth-child(3)'))) - expect(paymentTotal).toBeNull(); - }); - }); -}); diff --git a/src/app/shared/palette/order-summary/write-order-summary-field.component.ts b/src/app/shared/palette/order-summary/write-order-summary-field.component.ts deleted file mode 100644 index 76c76b355..000000000 --- a/src/app/shared/palette/order-summary/write-order-summary-field.component.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { FormControl, FormGroup, FormArray } from '@angular/forms'; - -@Component({ - selector: 'ccd-write-order-summary-field', - templateUrl: './write-order-summary-field.html' -}) -export class WriteOrderSummaryFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - /* - These are implemented manually rather than using WriteComplexFieldComponent. The reason - is because the view is readonly the tree of form controls is not being built automatically - and has to be built manually. - */ - ngOnInit(): void { - let orderSummaryGroup: FormGroup = this.registerControl(new FormGroup({})); - let paymentReference: FormControl = new FormControl(this.caseField.value.PaymentReference); - orderSummaryGroup.addControl('PaymentReference', paymentReference); - let paymentTotal: FormControl = new FormControl(this.caseField.value.PaymentTotal); - orderSummaryGroup.addControl('PaymentTotal', paymentTotal); - let feesArray: FormArray = new FormArray([]); - this.caseField.value.Fees.forEach((fee) => { - feesArray.push(this.getFeeValue(fee.value)); - }); - orderSummaryGroup.addControl('Fees', feesArray); - } - - private getFeeValue(feeValue): FormGroup { - let feeGroup = new FormGroup({}); - feeGroup.addControl('FeeCode', new FormControl(feeValue.FeeCode)); - feeGroup.addControl('FeeAmount', new FormControl(feeValue.FeeAmount)); - feeGroup.addControl('FeeDescription', new FormControl(feeValue.FeeDescription)); - feeGroup.addControl('FeeVersion', new FormControl(feeValue.FeeVersion)); - let feeValueGroup = new FormGroup({}); - feeValueGroup.addControl('value', feeGroup); - return feeValueGroup; - } - -} diff --git a/src/app/shared/palette/order-summary/write-order-summary-field.html b/src/app/shared/palette/order-summary/write-order-summary-field.html deleted file mode 100644 index 915562a21..000000000 --- a/src/app/shared/palette/order-summary/write-order-summary-field.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/app/shared/palette/palette.module.ts b/src/app/shared/palette/palette.module.ts deleted file mode 100644 index 6a048aa09..000000000 --- a/src/app/shared/palette/palette.module.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CaseUIToolkitModule } from '@hmcts/ccd-case-ui-toolkit'; -import { ReadTextFieldComponent } from './text/read-text-field.component'; -import { PaletteService } from './palette.service'; -import { ReadNumberFieldComponent } from './number/read-number-field.component'; -import { ReadEmailFieldComponent } from './email/read-email-field.component'; -import { ReadPhoneUKFieldComponent } from './phone-uk/read-phone-uk-field.component'; -import { ReadDateFieldComponent } from './date/read-date-field.component'; -import { FixedListModule } from './fixed-list/fixed-list.module'; -import { YesNoModule } from './yes-no/yes-no.module'; -import { ComplexModule } from './complex/complex.module'; -import { AddressModule } from './address/address.module'; -import { BaseFieldModule } from './base-field/base-field.module'; -import { WriteTextFieldComponent } from './text/write-text-field.component'; -import { ReactiveFormsModule } from '@angular/forms'; -import { UnsupportedFieldComponent } from './unsupported-field.component'; -import { ReadCollectionFieldComponent } from './collection/read-collection-field.component'; -import { PaletteUtilsModule } from './utils/utils.module'; -import { WritePhoneUKFieldComponent } from './phone-uk/write-phone-uk-field.component'; -import { WriteEmailFieldComponent } from './email/write-email-field.component'; -import { WriteCollectionFieldComponent } from './collection/write-collection-field.component'; -import { WriteNumberFieldComponent } from './number/write-number-field.component'; -import { MoneyGbpModule } from './money-gbp/money-gbp.module'; -import { ReadTextAreaFieldComponent } from './text-area/read-text-area-field.component'; -import { WriteTextAreaFieldComponent } from './text-area/write-text-area-field.component'; -import { MultiSelectListModule } from './multi-select-list/multi-select-list.module'; -import { WriteDateFieldComponent } from './date/write-date-field.component'; -import { DocumentModule } from './document/document.module'; -import { MarkdownModule } from '../markdown/markdown.module'; -import { FormValidatorsService } from '../../core/form/form-validators.service'; -import { OrderSummaryModule } from './order-summary/order-summary.module'; -import { CasePaymentHistoryViewerModule } from './payment/case-payment-history-viewer.module'; -import { SharedUtilsModule } from '../utils/shared-utils.module'; - -@NgModule({ - imports: [ - CommonModule, - BaseFieldModule, - FixedListModule, - YesNoModule, - ComplexModule, - MultiSelectListModule, - MoneyGbpModule, - ReactiveFormsModule, - PaletteUtilsModule, - DocumentModule, - CaseUIToolkitModule, - AddressModule, - MarkdownModule, - OrderSummaryModule, - CasePaymentHistoryViewerModule, - SharedUtilsModule, - ], - declarations: [ - UnsupportedFieldComponent, - - // Read - ReadTextFieldComponent, - ReadTextAreaFieldComponent, - ReadNumberFieldComponent, - ReadEmailFieldComponent, - ReadPhoneUKFieldComponent, - ReadDateFieldComponent, - ReadCollectionFieldComponent, - - // Write - WriteCollectionFieldComponent, - WriteTextFieldComponent, - WriteTextAreaFieldComponent, - WritePhoneUKFieldComponent, - WriteNumberFieldComponent, - WriteEmailFieldComponent, - WriteDateFieldComponent, - ], - entryComponents: [ - UnsupportedFieldComponent, - - // Read - ReadTextFieldComponent, - ReadTextAreaFieldComponent, - ReadNumberFieldComponent, - ReadEmailFieldComponent, - ReadPhoneUKFieldComponent, - ReadDateFieldComponent, - ReadCollectionFieldComponent, - - // Write - WriteCollectionFieldComponent, - WriteTextFieldComponent, - WriteTextAreaFieldComponent, - WritePhoneUKFieldComponent, - WriteNumberFieldComponent, - WriteEmailFieldComponent, - WriteDateFieldComponent, - ], - exports: [ - BaseFieldModule, - PaletteUtilsModule, - ], - providers: [ - PaletteService, - FormValidatorsService, - ] -}) -export class PaletteModule {} diff --git a/src/app/shared/palette/palette.service.spec.ts b/src/app/shared/palette/palette.service.spec.ts deleted file mode 100644 index 2a23ce14e..000000000 --- a/src/app/shared/palette/palette.service.spec.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { PaletteService } from './palette.service'; -import { ReadTextFieldComponent } from './text/read-text-field.component'; -import { ReadComplexFieldComponent } from './complex/read-complex-field.component'; -import { ReadNumberFieldComponent } from './number/read-number-field.component'; -import { ReadYesNoFieldComponent } from './yes-no/read-yes-no-field.component'; -import { ReadEmailFieldComponent } from './email/read-email-field.component'; -import { ReadPhoneUKFieldComponent } from './phone-uk/read-phone-uk-field.component'; -import { ReadDateFieldComponent } from './date/read-date-field.component'; -import { ReadFixedListFieldComponent } from './fixed-list/read-fixed-list-field.component'; -import { ReadMoneyGbpFieldComponent } from './money-gbp/read-money-gbp-field.component'; -import { WriteTextFieldComponent } from './text/write-text-field.component'; -import { UnsupportedFieldComponent } from './unsupported-field.component'; -import { ReadCollectionFieldComponent } from './collection/read-collection-field.component'; -import { WriteComplexFieldComponent } from './complex/write-complex-field.component'; -import { WritePhoneUKFieldComponent } from './phone-uk/write-phone-uk-field.component'; -import { WriteYesNoFieldComponent } from './yes-no/write-yes-no-field.component'; -import { WriteEmailFieldComponent } from './email/write-email-field.component'; -import { WriteFixedListFieldComponent } from './fixed-list/write-fixed-list-field.component'; -import { WriteCollectionFieldComponent } from './collection/write-collection-field.component'; -import { WriteNumberFieldComponent } from './number/write-number-field.component'; -import { WriteMoneyGbpFieldComponent } from './money-gbp/write-money-gbp-field.component'; -import { ReadTextAreaFieldComponent } from './text-area/read-text-area-field.component'; -import { WriteTextAreaFieldComponent } from './text-area/write-text-area-field.component'; -import { ReadMultiSelectListFieldComponent } from './multi-select-list/read-multi-select-list-field.component'; -import { WriteMultiSelectListFieldComponent } from './multi-select-list/write-multi-select-list-field.component'; -import { WriteDateFieldComponent } from './date/write-date-field.component'; -import { ReadDocumentFieldComponent } from './document/read-document-field.component'; -import { WriteDocumentFieldComponent } from './document/write-document-field.component'; -import { CaseField } from '../domain/definition/case-field.model'; -import { WriteAddressFieldComponent } from './address/write-address-field.component'; -import { ReadOrderSummaryFieldComponent } from './order-summary/read-order-summary-field.component'; -import { WriteOrderSummaryFieldComponent } from './order-summary/write-order-summary-field.component'; -import { CasePaymentHistoryViewerFieldComponent } from './payment/case-payment-history-viewer-field.component'; - -describe('PaletteService', () => { - - let paletteService: PaletteService; - - let assertComponent = function (type, write, component, fieldTypeId) { - let caseField = new CaseField(); - caseField.field_type = { id: fieldTypeId, type: type }; - expect(paletteService.getFieldComponentClass(caseField, write)).toBe(component); - }; - - beforeEach(() => { - paletteService = new PaletteService(); - }); - - describe('getFieldComponentClass', () => { - - it('should get UnsupportedField component class for unknown input', () => { - assertComponent(null, false, UnsupportedFieldComponent, 'AnID'); - }); - - it('should get ReadTextField component class for Text input', () => { - assertComponent('Text', false, ReadTextFieldComponent, 'AnID'); - }); - - it('should get WriteTextField component class for Text input', () => { - assertComponent('Text', true, WriteTextFieldComponent, 'AnID'); - }); - - it('should get ReadTextField component class for Postcode input', () => { - assertComponent('Postcode', false, ReadTextFieldComponent, 'AnID'); - }); - - it('should get WriteTextField component class for Postcode input', () => { - assertComponent('Postcode', true, WriteTextFieldComponent, 'AnID'); - }); - - it('should get ReadComplexField component class for ComplexType input', () => { - assertComponent('Complex', false, ReadComplexFieldComponent, 'AnID'); - }); - - it('should get WriteComplexField component class for Complex input', () => { - assertComponent('Complex', true, WriteComplexFieldComponent, 'AnID'); - }); - - it('should get ReadNumberField component class for Number input', () => { - assertComponent('Number', false, ReadNumberFieldComponent, 'AnID'); - }); - - it('should get WriteNumberField component class for Number input', () => { - assertComponent('Number', true, WriteNumberFieldComponent, 'AnID'); - }); - - it('should get ReadYesNoField component class for YesOrNo input', () => { - assertComponent('YesOrNo', false, ReadYesNoFieldComponent, 'AnID'); - }); - - it('should get WriteYesNoField component class for Text input', () => { - assertComponent('YesOrNo', true, WriteYesNoFieldComponent, 'AnID'); - }); - - it('should get ReadEmailField component class for Email input', () => { - assertComponent('Email', false, ReadEmailFieldComponent, 'AnID'); - }); - - it('should get WriteEmailField component class for Email input', () => { - assertComponent('Email', true, WriteEmailFieldComponent, 'AnID'); - }); - - it('should get ReadPhoneUKField component class for Phone UK input', () => { - assertComponent('PhoneUK', false, ReadPhoneUKFieldComponent, 'AnID'); - }); - - it('should get WritePhoneUKField component class for Phone UK input', () => { - assertComponent('PhoneUK', true, WritePhoneUKFieldComponent, 'AnID'); - }); - - it('should get ReadDateField component class for Date input', () => { - assertComponent('Date', false, ReadDateFieldComponent, 'AnID'); - }); - - it('should get WriteDateField component class for Date input', () => { - assertComponent('Date', true, WriteDateFieldComponent, 'AnID'); - }); - - it('should get ReadDateTimeField component class for DateTime input', () => { - assertComponent('DateTime', false, ReadDateFieldComponent, 'AnID'); - }); - - it('should get WriteDateTimeField component class for DateTime input', () => { - assertComponent('DateTime', true, WriteDateFieldComponent, 'AnID'); - }); - - it('should get ReadFixedListField component class for FixedList input', () => { - assertComponent('FixedList', false, ReadFixedListFieldComponent, 'AnID'); - }); - - it('should get WriteFixedListField component class for FixedList input', () => { - assertComponent('FixedList', true, WriteFixedListFieldComponent, 'AnID'); - }); - - it('should get ReadMoneyGbpField component class for MoneyGBP input', () => { - assertComponent('MoneyGBP', false, ReadMoneyGbpFieldComponent, 'AnID'); - }); - - it('should get WriteMoneyGbpField component class for MoneyGBP input', () => { - assertComponent('MoneyGBP', true, WriteMoneyGbpFieldComponent, 'AnID'); - }); - - it('should get ReadCollectionField component class for Collection input', () => { - assertComponent('Collection', false, ReadCollectionFieldComponent, 'AnID'); - }); - - it('should get WriteCollectionField component class for Collection input', () => { - assertComponent('Collection', true, WriteCollectionFieldComponent, 'AnID'); - }); - - it('should get ReadTextAreaField component class for TextArea input', () => { - assertComponent('TextArea', false, ReadTextAreaFieldComponent, 'AnID'); - }); - - it('should get WriteTextAreaField component class for TextArea input', () => { - assertComponent('TextArea', true, WriteTextAreaFieldComponent, 'AnID'); - }); - - it('should get ReadMultiSelectListField component class for MultiSelectList input', () => { - assertComponent('MultiSelectList', false, ReadMultiSelectListFieldComponent, 'AnID'); - }); - - it('should get WriteMultiSelectListField component class for MultiSelectList input', () => { - assertComponent('MultiSelectList', true, WriteMultiSelectListFieldComponent, 'AnID'); - }); - - it('should get ReadDocumentField component class for Document input', () => { - assertComponent('Document', false, ReadDocumentFieldComponent, 'AnID'); - }); - - it('should get WriteDocumentField component class for Document input', () => { - assertComponent('Document', true, WriteDocumentFieldComponent, 'AnID'); - }); - - it('should get ReadComplexFieldComponent component class for Complex field with AddressUK complex type', () => { - assertComponent('Complex', false, ReadComplexFieldComponent, 'AddressUK'); - }); - - it('should get WriteAddressFieldComponent component class for Complex field with AddressUK complex type', () => { - assertComponent('Complex', true, WriteAddressFieldComponent, 'AddressUK'); - }); - - it('should get ReadComplexFieldComponent component class for Complex field with AddressGlobalUK complex type', () => { - assertComponent('Complex', false, ReadComplexFieldComponent, 'AddressGlobalUK'); - }); - - it('should get WriteAddressFieldComponent component class for Complex field with AddressGlobalUK complex type', () => { - assertComponent('Complex', true, WriteAddressFieldComponent, 'AddressGlobalUK'); - }); - - it('should get ReadOrderSummaryFieldComponent component class for Complex field with OrderSummary complex type', () => { - assertComponent('Complex', false, ReadOrderSummaryFieldComponent, 'OrderSummary'); - }); - - it('should get WriteOrderSummaryFieldComponent component class for Complex field with OrderSummary complex type', () => { - assertComponent('Complex', true, WriteOrderSummaryFieldComponent, 'OrderSummary'); - }); - - it('should get CasePaymentHistoryViewerFieldComponent component class for CasePaymentHistoryViewer regardless of read/write', () => { - assertComponent('CasePaymentHistoryViewer', true, CasePaymentHistoryViewerFieldComponent, 'AnID'); - assertComponent('CasePaymentHistoryViewer', false, CasePaymentHistoryViewerFieldComponent, 'AnID'); - }); - - }); -}); diff --git a/src/app/shared/palette/palette.service.ts b/src/app/shared/palette/palette.service.ts deleted file mode 100644 index 409ff5329..000000000 --- a/src/app/shared/palette/palette.service.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { Injectable, Type } from '@angular/core'; -import { ReadTextFieldComponent } from './text/read-text-field.component'; -import { ReadTextAreaFieldComponent } from './text-area/read-text-area-field.component'; -import { ReadComplexFieldComponent } from './complex/read-complex-field.component'; -import { ReadNumberFieldComponent } from './number/read-number-field.component'; -import { ReadYesNoFieldComponent } from './yes-no/read-yes-no-field.component'; -import { ReadEmailFieldComponent } from './email/read-email-field.component'; -import { ReadPhoneUKFieldComponent } from './phone-uk/read-phone-uk-field.component'; -import { ReadDateFieldComponent } from './date/read-date-field.component'; -import { ReadFixedListFieldComponent } from './fixed-list/read-fixed-list-field.component'; -import { ReadMoneyGbpFieldComponent } from './money-gbp/read-money-gbp-field.component'; -import { WriteTextFieldComponent } from './text/write-text-field.component'; -import { UnsupportedFieldComponent } from './unsupported-field.component'; -import { ReadCollectionFieldComponent } from './collection/read-collection-field.component'; -import { WriteComplexFieldComponent } from './complex/write-complex-field.component'; -import { WritePhoneUKFieldComponent } from './phone-uk/write-phone-uk-field.component'; -import { WriteNumberFieldComponent } from './number/write-number-field.component'; -import { WriteYesNoFieldComponent } from './yes-no/write-yes-no-field.component'; -import { WriteEmailFieldComponent } from './email/write-email-field.component'; -import { WriteCollectionFieldComponent } from './collection/write-collection-field.component'; -import { WriteFixedListFieldComponent } from './fixed-list/write-fixed-list-field.component'; -import { WriteMoneyGbpFieldComponent } from './money-gbp/write-money-gbp-field.component'; -import { WriteTextAreaFieldComponent } from './text-area/write-text-area-field.component'; -import { ReadMultiSelectListFieldComponent } from './multi-select-list/read-multi-select-list-field.component'; -import { WriteMultiSelectListFieldComponent } from './multi-select-list/write-multi-select-list-field.component'; -import { WriteDateFieldComponent } from './date/write-date-field.component'; -import { ReadDocumentFieldComponent } from './document/read-document-field.component'; -import { WriteDocumentFieldComponent } from './document/write-document-field.component'; -import { LabelFieldComponent } from './label/label-field.component'; -import { WriteAddressFieldComponent } from './address/write-address-field.component'; -import { CaseField } from '../domain/definition/case-field.model'; -import { WriteOrderSummaryFieldComponent } from './order-summary/write-order-summary-field.component'; -import { ReadOrderSummaryFieldComponent } from './order-summary/read-order-summary-field.component'; -import { CasePaymentHistoryViewerFieldComponent } from './payment/case-payment-history-viewer-field.component'; - -@Injectable() -export class PaletteService { - - getFieldComponentClass(caseField: CaseField, write: boolean): Type<{}> { - switch (caseField.field_type.type) { - case 'Text': - case 'Postcode': - return write ? WriteTextFieldComponent : ReadTextFieldComponent; - case 'TextArea': - return write ? WriteTextAreaFieldComponent : ReadTextAreaFieldComponent; - case 'Number': - return write ? WriteNumberFieldComponent : ReadNumberFieldComponent; - case 'YesOrNo': - return write ? WriteYesNoFieldComponent : ReadYesNoFieldComponent; - case 'Email': - return write ? WriteEmailFieldComponent : ReadEmailFieldComponent; - case 'PhoneUK': - return write ? WritePhoneUKFieldComponent : ReadPhoneUKFieldComponent; - case 'Date': - case 'DateTime': - return write ? WriteDateFieldComponent : ReadDateFieldComponent; - case 'MoneyGBP': - return write ? WriteMoneyGbpFieldComponent : ReadMoneyGbpFieldComponent; - case 'FixedList': - return write ? WriteFixedListFieldComponent : ReadFixedListFieldComponent; - case 'Complex': - switch (caseField.field_type.id) { - case 'AddressGlobalUK': - case 'AddressUK': - return write ? WriteAddressFieldComponent : ReadComplexFieldComponent; - case 'OrderSummary': - return write ? WriteOrderSummaryFieldComponent : ReadOrderSummaryFieldComponent; - default: - return write ? WriteComplexFieldComponent : ReadComplexFieldComponent; - } - case 'Collection': - return write ? WriteCollectionFieldComponent : ReadCollectionFieldComponent; - case 'MultiSelectList': - return write ? WriteMultiSelectListFieldComponent : ReadMultiSelectListFieldComponent; - case 'Document': - return write ? WriteDocumentFieldComponent : ReadDocumentFieldComponent; - case 'Label': - return LabelFieldComponent; - case 'CasePaymentHistoryViewer': - return CasePaymentHistoryViewerFieldComponent; - default: - return UnsupportedFieldComponent; - } - } -} diff --git a/src/app/shared/palette/payment/case-payment-history-viewer-field.component.spec.ts b/src/app/shared/palette/payment/case-payment-history-viewer-field.component.spec.ts deleted file mode 100644 index e314f16ed..000000000 --- a/src/app/shared/palette/payment/case-payment-history-viewer-field.component.spec.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { CasePaymentHistoryViewerFieldComponent } from './case-payment-history-viewer-field.component'; -import { AppConfig } from '../../../app.config'; -import { MockComponent } from 'ng2-mock-component'; -import { By } from '@angular/platform-browser'; -import createSpyObj = jasmine.createSpyObj; - -describe('CasePaymentHistoryViewerFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'CasePaymentHistoryViewer', - type: 'CasePaymentHistoryViewer' - }; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - }; - const CASE_REFERENCE = '1234123412341234'; - const PAYMENTS_URL = 'http://payment-api:123'; - - let appConfig; - let PaymentWebComponent; - - let fixture: ComponentFixture; - let component: CasePaymentHistoryViewerFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - appConfig = createSpyObj('AppConfig', ['getPaymentsUrl']); - appConfig.getPaymentsUrl.and.returnValue(PAYMENTS_URL); - - PaymentWebComponent = MockComponent({ selector: 'ccpay-payment-lib', inputs: [ - 'API_ROOT', - 'CCD_CASE_NUMBER' - ]}); - - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - CasePaymentHistoryViewerFieldComponent, - - // Mocks - PaymentWebComponent - ], - providers: [ - { provide: AppConfig, useValue: appConfig }, - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(CasePaymentHistoryViewerFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - component.caseReference = CASE_REFERENCE; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render Payments web component', () => { - let paymentDe = de.query(By.directive(PaymentWebComponent)); - - expect(paymentDe).toBeDefined(); - - let paymentComponent = paymentDe.componentInstance; - expect(paymentComponent.API_ROOT).toEqual(PAYMENTS_URL); - expect(paymentComponent.CCD_CASE_NUMBER).toEqual(CASE_REFERENCE); - }); -}); diff --git a/src/app/shared/palette/payment/case-payment-history-viewer-field.component.ts b/src/app/shared/palette/payment/case-payment-history-viewer-field.component.ts deleted file mode 100644 index 4bd78cffb..000000000 --- a/src/app/shared/palette/payment/case-payment-history-viewer-field.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { Component } from '@angular/core'; -import { AppConfig } from '../../../app.config'; - -@Component({ - selector: 'ccd-case-payment-history-viewer-field', - templateUrl: 'case-payment-history-viewer-field.html', -}) -export class CasePaymentHistoryViewerFieldComponent extends AbstractFieldReadComponent { - - constructor( - private appConfig: AppConfig - ) { - super(); - } - - getBaseURL() { - return this.appConfig.getPaymentsUrl(); - } - -} diff --git a/src/app/shared/palette/payment/case-payment-history-viewer-field.html b/src/app/shared/palette/payment/case-payment-history-viewer-field.html deleted file mode 100644 index 96af80f85..000000000 --- a/src/app/shared/palette/payment/case-payment-history-viewer-field.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/app/shared/palette/payment/case-payment-history-viewer.module.ts b/src/app/shared/palette/payment/case-payment-history-viewer.module.ts deleted file mode 100644 index 0aad31b2f..000000000 --- a/src/app/shared/palette/payment/case-payment-history-viewer.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CasePaymentHistoryViewerFieldComponent } from './case-payment-history-viewer-field.component'; -import { CommonModule } from '@angular/common'; -import { ReactiveFormsModule } from '@angular/forms'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { CaseUIToolkitModule } from '@hmcts/ccd-case-ui-toolkit'; -import { PaymentLibModule } from '@hmcts/ccpay-web-component'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - PaletteUtilsModule, - CaseUIToolkitModule, - PaymentLibModule, - ], - declarations: [ - CasePaymentHistoryViewerFieldComponent - ], - entryComponents: [ - CasePaymentHistoryViewerFieldComponent, - ] -}) -export class CasePaymentHistoryViewerModule {} diff --git a/src/app/shared/palette/phone-uk/read-phone-uk-field.component.spec.ts b/src/app/shared/palette/phone-uk/read-phone-uk-field.component.spec.ts deleted file mode 100644 index a25b1d491..000000000 --- a/src/app/shared/palette/phone-uk/read-phone-uk-field.component.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadPhoneUKFieldComponent } from './read-phone-uk-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('ReadPhoneUKFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'PhoneUK', - type: 'PhoneUK' - }; - const VALUE = '07123456789'; - const EMPTY = ''; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - - let fixture: ComponentFixture; - let component: ReadPhoneUKFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadPhoneUKFieldComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadPhoneUKFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided phone number as string', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(VALUE); - }); - - it('render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); - - it('render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(EMPTY); - }); -}); diff --git a/src/app/shared/palette/phone-uk/read-phone-uk-field.component.ts b/src/app/shared/palette/phone-uk/read-phone-uk-field.component.ts deleted file mode 100644 index 162e59151..000000000 --- a/src/app/shared/palette/phone-uk/read-phone-uk-field.component.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { Component } from '@angular/core'; - -@Component({ - selector: 'ccd-read-phone-uk-field', - template: `{{caseField.value}}` -}) -export class ReadPhoneUKFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/phone-uk/write-phone-uk-field.component.spec.ts b/src/app/shared/palette/phone-uk/write-phone-uk-field.component.spec.ts deleted file mode 100644 index 57b13b0c0..000000000 --- a/src/app/shared/palette/phone-uk/write-phone-uk-field.component.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import { WritePhoneUKFieldComponent } from './write-phone-uk-field.component'; - -const FIELD_ID = 'PersonPhoneNumber'; -const FIELD_TYPE: FieldType = { - id: 'PhoneUK', - type: 'PhoneUK' -}; -const VALUE = '07123456789'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WritePhoneUKFieldComponent', () => { - - const $INPUT = By.css('.form-group input'); - - // Input is mocked so that one-way bound inputs can be tested - let Input: any = MockComponent({ selector: 'input', inputs: [ - 'type', - 'formControl' - ]}); - - let fixture: ComponentFixture; - let component: WritePhoneUKFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WritePhoneUKFieldComponent, - - // Mock - Input, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WritePhoneUKFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render text input element linked to formControl', () => { - let input = de.query($INPUT); - - expect(input.nativeElement.getAttribute('type')).toBe('tel'); - expect(input.componentInstance.formControl).toEqual(component.phoneUkControl); - }); -}); diff --git a/src/app/shared/palette/phone-uk/write-phone-uk-field.component.ts b/src/app/shared/palette/phone-uk/write-phone-uk-field.component.ts deleted file mode 100644 index 8e47195f5..000000000 --- a/src/app/shared/palette/phone-uk/write-phone-uk-field.component.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { FormControl } from '@angular/forms'; - -@Component({ - selector: 'ccd-write-phone-uk-field', - templateUrl: './write-phone-uk-field.html' -}) -export class WritePhoneUKFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - phoneUkControl: FormControl; - - ngOnInit() { - this.phoneUkControl = this.registerControl(new FormControl(this.caseField.value)); - } - -} diff --git a/src/app/shared/palette/phone-uk/write-phone-uk-field.html b/src/app/shared/palette/phone-uk/write-phone-uk-field.html deleted file mode 100644 index 544fa471a..000000000 --- a/src/app/shared/palette/phone-uk/write-phone-uk-field.html +++ /dev/null @@ -1,10 +0,0 @@ -
- - - - -
diff --git a/src/app/shared/palette/text-area/read-text-area-field.component.spec.ts b/src/app/shared/palette/text-area/read-text-area-field.component.spec.ts deleted file mode 100644 index f1c8efcdd..000000000 --- a/src/app/shared/palette/text-area/read-text-area-field.component.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadTextAreaFieldComponent } from './read-text-area-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { By } from '@angular/platform-browser'; -import { text } from '../../../test/helpers'; - -describe('ReadTextAreaFieldComponent', () => { - - const $SPAN = By.css('span'); - - const FIELD_TYPE: FieldType = { - id: 'Text', - type: 'Text' - }; - const VALUE = 'Hello world'; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - - let fixture: ComponentFixture; - let component: ReadTextAreaFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadTextAreaFieldComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadTextAreaFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided value as text', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - let span = de.query($SPAN); - - expect(text(span)).toEqual(VALUE.toString()); - }); - - it('render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - let span = de.query($SPAN); - - expect(text(span)).toBeNull(); - }); - - it('render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - let span = de.query($SPAN); - - expect(text(span)).toBeNull(); - }); - - it('render text using `pre-wrap` styling to render line breaks', () => { - component.caseField.value = 'line1\nLine2'; - fixture.detectChanges(); - - let span = de.query($SPAN); - - let whiteSpace = window.getComputedStyle(span.nativeElement, null).getPropertyValue('white-space'); - expect(whiteSpace).toEqual('pre-wrap'); - }); -}); diff --git a/src/app/shared/palette/text-area/read-text-area-field.component.ts b/src/app/shared/palette/text-area/read-text-area-field.component.ts deleted file mode 100644 index 6aab72826..000000000 --- a/src/app/shared/palette/text-area/read-text-area-field.component.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - template: `{{caseField.value}}` -}) -export class ReadTextAreaFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/text-area/write-text-area-field.component.spec.ts b/src/app/shared/palette/text-area/write-text-area-field.component.spec.ts deleted file mode 100644 index f4f608de8..000000000 --- a/src/app/shared/palette/text-area/write-text-area-field.component.spec.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteTextAreaFieldComponent } from './write-text-area-field.component'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; - -const FIELD_ID = 'PersonFirstName'; -const FIELD_TYPE: FieldType = { - id: 'TextArea', - type: 'TextArea' -}; -const VALUE = 'Hello world'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteTextAreaFieldComponent', () => { - - const $INPUT = By.css('.form-group textarea'); - - // Textarea input is mocked so that one-way bound inputs can be tested - let Textarea: any = MockComponent({ selector: 'textarea', inputs: [ - 'formControl' - ]}); - - let fixture: ComponentFixture; - let component: WriteTextAreaFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteTextAreaFieldComponent, - - // Mock - Textarea, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteTextAreaFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render text input element linked to formControl', () => { - let input = de.query($INPUT); - - expect(input.componentInstance.formControl).toEqual(component.textareaControl); - }); -}); diff --git a/src/app/shared/palette/text-area/write-text-area-field.component.ts b/src/app/shared/palette/text-area/write-text-area-field.component.ts deleted file mode 100644 index 85f530725..000000000 --- a/src/app/shared/palette/text-area/write-text-area-field.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; - -@Component({ - selector: 'ccd-write-text-area-field', - templateUrl: './write-text-area-field.html' -}) -export class WriteTextAreaFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - textareaControl: FormControl; - - ngOnInit() { - this.textareaControl = this.registerControl(new FormControl(this.caseField.value)); - } -} diff --git a/src/app/shared/palette/text-area/write-text-area-field.html b/src/app/shared/palette/text-area/write-text-area-field.html deleted file mode 100644 index 023d761da..000000000 --- a/src/app/shared/palette/text-area/write-text-area-field.html +++ /dev/null @@ -1,11 +0,0 @@ -
- - - - - -
diff --git a/src/app/shared/palette/text/read-text-field.component.spec.ts b/src/app/shared/palette/text/read-text-field.component.spec.ts deleted file mode 100644 index 8758e9623..000000000 --- a/src/app/shared/palette/text/read-text-field.component.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadTextFieldComponent } from './read-text-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('ReadTextFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'Text', - type: 'Text' - }; - const VALUE = 'Hello world'; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - field_type: FIELD_TYPE, - value: VALUE, - display_context: 'READONLY' - }; - - let fixture: ComponentFixture; - let component: ReadTextFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadTextFieldComponent - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadTextFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('render provided value as text', () => { - component.caseField.value = VALUE; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(VALUE.toString()); - }); - - it('render undefined value as empty string', () => { - component.caseField.value = undefined; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); - - it('render null value as empty string', () => { - component.caseField.value = null; - fixture.detectChanges(); - - expect(de.nativeElement.textContent).toEqual(''); - }); -}); diff --git a/src/app/shared/palette/text/read-text-field.component.ts b/src/app/shared/palette/text/read-text-field.component.ts deleted file mode 100644 index d3f3e29e1..000000000 --- a/src/app/shared/palette/text/read-text-field.component.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Component } from '@angular/core'; -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; - -@Component({ - template: `{{caseField.value}}` -}) -export class ReadTextFieldComponent extends AbstractFieldReadComponent {} diff --git a/src/app/shared/palette/text/write-text-field.component.spec.ts b/src/app/shared/palette/text/write-text-field.component.spec.ts deleted file mode 100644 index 7e07aefb0..000000000 --- a/src/app/shared/palette/text/write-text-field.component.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteTextFieldComponent } from './write-text-field.component'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; - -const FIELD_ID = 'PersonFirstName'; -const FIELD_TYPE: FieldType = { - id: 'Text', - type: 'Text' -}; -const VALUE = 'Hello world'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - field_type: FIELD_TYPE, - value: VALUE, - display_context: 'OPTIONAL' -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteTextFieldComponent', () => { - - const $INPUT = By.css('.form-group input'); - - // Input is mocked so that one-way bound inputs can be tested - let Input: any = MockComponent({ selector: 'input', inputs: [ - 'type', - 'formControl' - ]}); - - let fixture: ComponentFixture; - let component: WriteTextFieldComponent; - let de: DebugElement; - - beforeEach(async(() => { - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteTextFieldComponent, - - // Mock - Input, - ], - providers: [] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteTextFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with provided value', () => { - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(VALUE); - }); - - it('should render text input element linked to formControl', () => { - let input = de.query($INPUT); - - expect(input.nativeElement.getAttribute('type')).toBe('text'); - expect(input.componentInstance.formControl).toEqual(component.textControl); - }); -}); diff --git a/src/app/shared/palette/text/write-text-field.component.ts b/src/app/shared/palette/text/write-text-field.component.ts deleted file mode 100644 index 4d8a810b2..000000000 --- a/src/app/shared/palette/text/write-text-field.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; - -@Component({ - selector: 'ccd-write-text-field', - templateUrl: './write-text-field.html' -}) -export class WriteTextFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - textControl: FormControl; - - ngOnInit() { - this.textControl = this.registerControl(new FormControl(this.caseField.value)); - } -} diff --git a/src/app/shared/palette/text/write-text-field.html b/src/app/shared/palette/text/write-text-field.html deleted file mode 100644 index c9115a668..000000000 --- a/src/app/shared/palette/text/write-text-field.html +++ /dev/null @@ -1,10 +0,0 @@ -
- - - - -
diff --git a/src/app/shared/palette/unsupported-field.component.ts b/src/app/shared/palette/unsupported-field.component.ts deleted file mode 100644 index f0f3de0ab..000000000 --- a/src/app/shared/palette/unsupported-field.component.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - template: `Field type not supported` -}) -export class UnsupportedFieldComponent {} diff --git a/src/app/shared/palette/utils/dash.pipe.spec.ts b/src/app/shared/palette/utils/dash.pipe.spec.ts deleted file mode 100644 index 4252a5ffe..000000000 --- a/src/app/shared/palette/utils/dash.pipe.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { DashPipe } from './dash.pipe'; - -describe('DashPipe', () => { - - let dashPipe: DashPipe; - - beforeEach(() => { - dashPipe = new DashPipe(); - }); - - it('should produce dash if empty field', () => { - expect(dashPipe.transform('')).toBe('-'); - }); - - it('should produce dash if null field', () => { - expect(dashPipe.transform(null)).toBe('-'); - }); - - it('should produce dash if undefined field', () => { - expect(dashPipe.transform(undefined)).toBe('-'); - }); - - it('should return original value if defined', () => { - expect(dashPipe.transform('value')).toBe('value'); - }); - -}); diff --git a/src/app/shared/palette/utils/dash.pipe.ts b/src/app/shared/palette/utils/dash.pipe.ts deleted file mode 100644 index d0e1306e8..000000000 --- a/src/app/shared/palette/utils/dash.pipe.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; - -@Pipe({ - name: 'ccdDash' -}) -export class DashPipe implements PipeTransform { - - transform(value: string): string { - return value ? value : '-'; - } -} diff --git a/src/app/shared/palette/utils/date.pipe.spec.ts b/src/app/shared/palette/utils/date.pipe.spec.ts deleted file mode 100644 index 2b6c54f4e..000000000 --- a/src/app/shared/palette/utils/date.pipe.spec.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { DatePipe } from './date.pipe'; - -describe('DatePipe', () => { - - let datePipe: DatePipe; - const EXPECTED_OFFSET = - new Date().getTimezoneOffset() / 60; - - beforeEach(() => { - datePipe = new DatePipe(); - }); - - it('should render correct date if UTC date in yyyy-mm-dd format', () => { - let message = datePipe.transform('2017-07-26', null, null); - - expect(message).toBe('26 Jul 2017'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddZ format', () => { - let message = datePipe.transform('2017-07-26Z', null, null); - - expect(message).toBe('26 Jul 2017'); - }); - - it('should render correct date if UTC date in yyyy-mm-dd format and format is short', () => { - let message = datePipe.transform('2017-07-26', null, 'short'); - - expect(message).toBe('26 Jul 2017'); - }); - - it('should render yyyy-mm-dd only if UTC date in incomplete yyyy-mm-ddThh:mm:ss format with hh only', () => { - let message = datePipe.transform('2017-07-26T12', null, null); - - expect(message).toBe('26 Jul 2017'); - }); - - it('should render yyyy-mm-dd only if UTC date in incomplete yyyy-mm-ddThh:mm:ss format with hh and mm only', () => { - let message = datePipe.transform('2017-07-26T12:23', null, null); - - expect(message).toBe('26 Jul 2017'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ss AM format', () => { - let message = datePipe.transform('2017-07-26T09:09:05', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(9) + ':09:05 AM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ss noon format', () => { - let message = datePipe.transform('2017-07-26T12:09:05', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(12) + ':09:05 PM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ss PM format', () => { - let message = datePipe.transform('2017-07-26T20:10:05', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(8) + ':10:05 PM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ss midnight format', () => { - let message = datePipe.transform('2017-07-26T00:10:05', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(12) + ':10:05 AM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ss+hh:mm AM format', () => { - let message = datePipe.transform('2017-07-26T09:09:05+00:00', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(9) + ':09:05 AM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ss+hh:mm PM format', () => { - let message = datePipe.transform('2017-07-26T20:10:05+00:00', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(8) + ':10:05 PM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ssZ AM format', () => { - let message = datePipe.transform('2017-07-26T09:09:05Z', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(9) + ':09:05 AM'); - }); - - it('should render correct date if UTC date in yyyy-mm-ddThh:mm:ssZ format', () => { - let message = datePipe.transform('2017-07-26T20:10:05Z', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(8) + ':10:05 PM'); - }); - - it('should render correct date if short format specified for UTC date with time', () => { - let message = datePipe.transform('2017-07-26T20:10:05Z', 'utc', 'short'); - - expect(message).toBe('26 Jul 2017'); - }); - - it('should render correct date for local zone with time', () => { - let message = datePipe.transform('2017-07-26T20:10:05Z', 'local', null); - - expect(message).toBe('26 Jul 2017, ' + getExpectedHour(8) + ':10:05 PM'); - }); - - it('should render correct date if short format specified for UTC date without time', () => { - let message = datePipe.transform('2017-07-26Z', null, 'short'); - - expect(message).toBe('26 Jul 2017'); - }); - - function getExpectedHour(hour): number { - let expectedHour = hour + EXPECTED_OFFSET; - if (expectedHour > 12) { - expectedHour = expectedHour - 12; - } else if (expectedHour === 0) { - expectedHour = 12; - } - return expectedHour; - } -}); diff --git a/src/app/shared/palette/utils/date.pipe.ts b/src/app/shared/palette/utils/date.pipe.ts deleted file mode 100644 index a70488ba6..000000000 --- a/src/app/shared/palette/utils/date.pipe.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; - -@Pipe({ - name: 'ccdDate' -}) -export class DatePipe implements PipeTransform { - - private static readonly DATE_FORMAT = - /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?|Z)?$/; -// 1 2 3 4 5 6 7 8 9 10 11 - private static readonly MONTHS = [ - ['Jan'], ['Feb'], ['Mar'], ['Apr'], ['May'], ['Jun'], ['Jul'], ['Aug'], ['Sep'], ['Oct'], ['Nov'], ['Dec'], - ]; - - transform(value: string, zone: string, format: string): string { - let resultDate = null; - let offsetDate = null; - - if (value) { - let match: RegExpMatchArray = value.match(DatePipe.DATE_FORMAT); - if (zone === 'local') { - let date = this.getDate(match); - offsetDate = this.getOffsetDate(date); - } else { - offsetDate = this.getDate(match); - } - // RDM-1149 changed the pipe logic so that it doesn't add an hour to 'Summer Time' dates on DateTime field type - - resultDate = `${offsetDate.getDate()} ${DatePipe.MONTHS[offsetDate.getMonth()]} ${offsetDate.getFullYear()}`; - if (match[4] && match[5] && match[6] && format !== 'short') { - resultDate += ', '; - resultDate += this.getHour(offsetDate.getHours().toString()) + ':'; - resultDate += this.pad(offsetDate.getMinutes()) + ':'; - resultDate += this.pad(offsetDate.getSeconds()) + ' '; - resultDate += (this.toInt(offsetDate.getHours().toString()) >= 12) ? 'PM' : 'AM' ; - } - } - return resultDate; - } - - private getOffsetDate(date: Date): Date { - let localOffset = - date.getTimezoneOffset() / 60; - return new Date(date.getTime() + localOffset * 3600 * 1000); - } - - private getDate(match: RegExpMatchArray): Date { - let year = this.toInt(match[1]); - let month = this.toInt(match[2]) - 1; - let day = this.toInt(match[3]); - let resultDate; - if (match[4] && match[5] && match[6]) { - let hour = this.toInt(match[4]); - let minutes = this.toInt(match[5]); - let seconds = this.toInt(match[6]); - resultDate = new Date(year, month, day, hour, minutes, seconds, 0); - } else { - resultDate = new Date(year, month, day); - } - return resultDate; - } - - private getHour(hourStr: string): number { - let hourNum = this.toInt(hourStr); - if (hourNum > 12) { - hourNum = hourNum - 12; - } else if (hourNum === 0) { - hourNum = 12; - } - return hourNum; - } - - private toInt(str: string): number { - return parseInt(str, 10); - } - - private pad(num: any, padNum = 2): string { - const val = num !== undefined ? num.toString() : ''; - return val.length >= padNum ? val : new Array(padNum - val.length + 1).join('0') + val; - } -} diff --git a/src/app/shared/palette/utils/field-label.pipe.spec.ts b/src/app/shared/palette/utils/field-label.pipe.spec.ts deleted file mode 100644 index 16b846a6b..000000000 --- a/src/app/shared/palette/utils/field-label.pipe.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { FieldLabelPipe } from './field-label.pipe'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('FieldLabelPipe', () => { - - let fieldLabelPipe: FieldLabelPipe = new FieldLabelPipe(); - - it('should return empty string for null values', () => { - expect(fieldLabelPipe.transform(null)) - .toBe(''); - }); - - it('should return empty string for undefined label', () => { - expect(fieldLabelPipe.transform({} as CaseField)) - .toBe(''); - }); - - it('should return label for undefined display_context', () => { - expect(fieldLabelPipe.transform({ label: 'label'} as CaseField)) - .toBe('label'); - }); - - it('should add OPTIONAL label if display_context field is OPTIONAL', () => { - expect(fieldLabelPipe.transform({ label: 'label', display_context: 'OPTIONAL' } as CaseField)) - .toBe('label (Optional)'); - }); - - it('should return label if display_context field is NOT OPTIONAL', () => { - expect(fieldLabelPipe.transform({ label: 'label', display_context: 'ANYTHING ELSE' } as CaseField)) - .toBe('label'); - }); -}); diff --git a/src/app/shared/palette/utils/field-label.pipe.ts b/src/app/shared/palette/utils/field-label.pipe.ts deleted file mode 100644 index 5b805763a..000000000 --- a/src/app/shared/palette/utils/field-label.pipe.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { CaseField } from '../../domain/definition/case-field.model'; - -@Pipe({ - name: 'ccdFieldLabel' -}) -export class FieldLabelPipe implements PipeTransform { - - transform (field: CaseField): string { - if (!field || !field.label) { - return ''; - } else if (!field.display_context) { - return field.label; - } - return field.label + (field.display_context.toUpperCase() === 'OPTIONAL' ? ' (Optional)' : ''); - } -} diff --git a/src/app/shared/palette/utils/first-error.pipe.spec.ts b/src/app/shared/palette/utils/first-error.pipe.spec.ts deleted file mode 100644 index a5c49c5be..000000000 --- a/src/app/shared/palette/utils/first-error.pipe.spec.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { FirstErrorPipe } from './first-error.pipe'; - -describe('FirstErrorPipe', () => { - - const ERROR_MESSAGE = 'This is wrong'; - - let firstError: FirstErrorPipe; - - beforeEach(() => { - firstError = new FirstErrorPipe(); - }); - - it('should return empty string when null errors', () => { - let message = firstError.transform(null); - - expect(message).toBe(''); - }); - - it('should return empty string when empty errors', () => { - let message = firstError.transform({}); - - expect(message).toBe(''); - }); - - it('should return only error when 1 error', () => { - let message = firstError.transform({ - 'errorkey': ERROR_MESSAGE - }); - - expect(message).toBe(ERROR_MESSAGE); - }); - - it('should return only first error when multiple errors', () => { - let message = firstError.transform({ - 'errorkey': ERROR_MESSAGE, - 'error2': 'some other error' - }); - - expect(message).toBe(ERROR_MESSAGE); - }); -}); diff --git a/src/app/shared/palette/utils/first-error.pipe.ts b/src/app/shared/palette/utils/first-error.pipe.ts deleted file mode 100644 index 0ad2fe27d..000000000 --- a/src/app/shared/palette/utils/first-error.pipe.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { ValidationErrors } from '@angular/forms'; - -@Pipe({ - name: 'ccdFirstError' -}) -export class FirstErrorPipe implements PipeTransform { - - transform(value: ValidationErrors): string { - if (!value) { - return ''; - } - - let keys = Object.keys(value); - - if (!keys.length) { - return ''; - } - if (keys[0] === 'required') { - return 'This field is required'; - } - return value[keys[0]]; - } - -} diff --git a/src/app/shared/palette/utils/is-compound.pipe.spec.ts b/src/app/shared/palette/utils/is-compound.pipe.spec.ts deleted file mode 100644 index 755febfc1..000000000 --- a/src/app/shared/palette/utils/is-compound.pipe.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { IsCompoundPipe } from './is-compound.pipe'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('IsCompoundPipe', () => { - - let isCompound: IsCompoundPipe = new IsCompoundPipe(); - - it('should identify null field as NOT compound', () => { - expect(isCompound.transform(null)) - .toBeFalsy(); - }); - - it('should identify undefined field_type as NOT compound', () => { - expect(isCompound.transform({} as CaseField)) - .toBeFalsy(); - }); - - it('should identify undefined field_type.type as NOT compound', () => { - expect(isCompound.transform({ field_type: { }} as CaseField)) - .toBeFalsy(); - }); - - it('should identify Text field as NOT compound', () => { - expect(isCompound.transform({ field_type: { type: 'Text' }} as CaseField)) - .toBeFalsy(); - }); - - it('should identify Complex field as compound', () => { - expect(isCompound.transform({ field_type: { type: 'Complex' }} as CaseField)) - .toBeTruthy(); - }); - - it('should identify Label fields as compound', () => { - expect(isCompound.transform({ field_type: { type: 'Label' }} as CaseField)) - .toBeTruthy(); - }); - - it('should identify AddressGlobal fields as compound', () => { - expect(isCompound.transform({ field_type: { type: 'AddressGlobal' }} as CaseField)) - .toBeTruthy(); - }); - -}); diff --git a/src/app/shared/palette/utils/is-compound.pipe.ts b/src/app/shared/palette/utils/is-compound.pipe.ts deleted file mode 100644 index 62e018c74..000000000 --- a/src/app/shared/palette/utils/is-compound.pipe.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { FieldTypeEnum } from '../../domain/definition/field-type-enum.model'; - -@Pipe({ - name: 'ccdIsCompound' -}) -export class IsCompoundPipe implements PipeTransform { - - private static readonly COMPOUND_TYPES: FieldTypeEnum[] = [ - 'Complex', 'Label', 'AddressGlobal', 'AddressUK', 'AddressGlobalUK' - ]; - - transform(field: CaseField): boolean { - if (!field || !field.field_type || !field.field_type.type) { - return false; - } - - return IsCompoundPipe.COMPOUND_TYPES.indexOf(field.field_type.type) !== -1; - } - -} diff --git a/src/app/shared/palette/utils/is-mandatory.pipe.spec.ts b/src/app/shared/palette/utils/is-mandatory.pipe.spec.ts deleted file mode 100644 index 4e6a2e4f1..000000000 --- a/src/app/shared/palette/utils/is-mandatory.pipe.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { CaseFieldService } from '../../domain/case-field.service'; -import { IsMandatoryPipe } from './is-mandatory.pipe'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('IsReadOnlyPipe', () => { - - let caseFieldService = new CaseFieldService(); - let isMandatoryPipe: IsMandatoryPipe = new IsMandatoryPipe(caseFieldService); - - it('should identify null field as NOT mandatory', () => { - expect(isMandatoryPipe.transform(null)) - .toBeFalsy(); - }); - - it('should identify undefined display_context as NOT mandatory', () => { - expect(isMandatoryPipe.transform({} as CaseField)) - .toBeFalsy(); - }); - - it('should identify unknown display_context value as NOT mandatory', () => { - expect(isMandatoryPipe.transform({ display_context: ''} as CaseField)) - .toBeFalsy(); - }); - - it('should identify OPTIONAL display_context field as NOT mandatory', () => { - expect(isMandatoryPipe.transform({ display_context: 'OPTIONAL' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify MANDATORY display_context field as NOT mandatory', () => { - expect(isMandatoryPipe.transform({ display_context: 'MANDATORY' } as CaseField)) - .toBeTruthy(); - }); - - it('should identify READONLY display_context field as NOT mandatory', () => { - expect(isMandatoryPipe.transform({ display_context: 'READONLY' } as CaseField)) - .toBeFalsy(); - }); -}); diff --git a/src/app/shared/palette/utils/is-mandatory.pipe.ts b/src/app/shared/palette/utils/is-mandatory.pipe.ts deleted file mode 100644 index 44dd23637..000000000 --- a/src/app/shared/palette/utils/is-mandatory.pipe.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { CaseFieldService } from '../../domain/case-field.service'; -import { CaseField } from '../../domain/definition/case-field.model'; - -@Pipe({ - name: 'ccdIsMandatory' -}) -export class IsMandatoryPipe implements PipeTransform { - - constructor(private caseFieldService: CaseFieldService) {}; - - transform(field: CaseField): boolean { - return this.caseFieldService.isMandatory(field); - } -} diff --git a/src/app/shared/palette/utils/is-read-only.pipe.spec.ts b/src/app/shared/palette/utils/is-read-only.pipe.spec.ts deleted file mode 100644 index c08d3569d..000000000 --- a/src/app/shared/palette/utils/is-read-only.pipe.spec.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { IsReadOnlyPipe } from './is-read-only.pipe'; -import { CaseFieldService } from '../../domain/case-field.service'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('IsReadOnlyPipe', () => { - - let caseFieldService = new CaseFieldService(); - let isReadOnly: IsReadOnlyPipe = new IsReadOnlyPipe(caseFieldService); - - it('should identify null field as NOT readOnly', () => { - expect(isReadOnly.transform(null)) - .toBeFalsy(); - }); - - it('should identify undefined display_context as NOT readOnly', () => { - expect(isReadOnly.transform({} as CaseField)) - .toBeFalsy(); - }); - - it('should identify unknown display_context value as NOT readOnly', () => { - expect(isReadOnly.transform({ display_context: ''} as CaseField)) - .toBeFalsy(); - }); - - it('should identify OPTIONAL display_context field as NOT readOnly', () => { - expect(isReadOnly.transform({ display_context: 'OPTIONAL' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify MANDATORY display_context field as NOT readOnly', () => { - expect(isReadOnly.transform({ display_context: 'MANDATORY' } as CaseField)) - .toBeFalsy(); - }); - - it('should identify READONLY display_context field as NOT readOnly', () => { - expect(isReadOnly.transform({ display_context: 'READONLY' } as CaseField)) - .toBeTruthy(); - }); -}); diff --git a/src/app/shared/palette/utils/is-read-only.pipe.ts b/src/app/shared/palette/utils/is-read-only.pipe.ts deleted file mode 100644 index e24040f9d..000000000 --- a/src/app/shared/palette/utils/is-read-only.pipe.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { CaseFieldService } from '../../domain/case-field.service'; -import { CaseField } from '../../domain/definition/case-field.model'; - -@Pipe({ - name: 'ccdIsReadOnly' -}) -export class IsReadOnlyPipe implements PipeTransform { - - constructor(private caseFieldService: CaseFieldService) {}; - - transform(field: CaseField): boolean { - return this.caseFieldService.isReadOnly(field); - } -} diff --git a/src/app/shared/palette/utils/utils.module.ts b/src/app/shared/palette/utils/utils.module.ts deleted file mode 100644 index 0cdc82a6b..000000000 --- a/src/app/shared/palette/utils/utils.module.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { DatePipe } from './date.pipe'; -import { FirstErrorPipe } from './first-error.pipe'; -import { FieldLabelPipe } from './field-label.pipe'; -import { IsCompoundPipe } from './is-compound.pipe'; -import { IsReadOnlyPipe } from './is-read-only.pipe'; -import { IsMandatoryPipe } from './is-mandatory.pipe'; -import { DashPipe } from './dash.pipe'; - -@NgModule({ - imports: [ - CommonModule - ], - declarations: [ - DatePipe, - FieldLabelPipe, - FirstErrorPipe, - IsCompoundPipe, - IsMandatoryPipe, - IsReadOnlyPipe, - DashPipe, - ], - exports: [ - DatePipe, - FieldLabelPipe, - FirstErrorPipe, - IsCompoundPipe, - IsMandatoryPipe, - IsReadOnlyPipe, - DashPipe, - ] -}) -export class PaletteUtilsModule {} diff --git a/src/app/shared/palette/yes-no/read-yes-no-field.component.spec.ts b/src/app/shared/palette/yes-no/read-yes-no-field.component.spec.ts deleted file mode 100644 index 9f7e32f0c..000000000 --- a/src/app/shared/palette/yes-no/read-yes-no-field.component.spec.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { ReadYesNoFieldComponent } from './read-yes-no-field.component'; -import { DebugElement } from '@angular/core'; -import { FieldType } from '../../domain/definition/field-type.model'; -import createSpyObj = jasmine.createSpyObj; -import { YesNoService } from './yes-no.service'; -import { CaseField } from '../../domain/definition/case-field.model'; - -describe('ReadYesNoFieldComponent', () => { - - const FIELD_TYPE: FieldType = { - id: 'YesOrNo', - type: 'YesOrNo' - }; - const VALUE = true; - const CASE_FIELD: CaseField = { - id: 'x', - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE - }; - const FORMATTED_VALUE = 'Yes'; - - let fixture: ComponentFixture; - let component: ReadYesNoFieldComponent; - let de: DebugElement; - - let yesNoService: any; - - beforeEach(async(() => { - yesNoService = createSpyObj('yesNoService', ['format']); - yesNoService.format.and.returnValue(FORMATTED_VALUE); - - TestBed - .configureTestingModule({ - imports: [], - declarations: [ - ReadYesNoFieldComponent - ], - providers: [ - { provide: YesNoService, useValue: yesNoService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(ReadYesNoFieldComponent); - component = fixture.componentInstance; - - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should render output of YesNoService::format method', () => { - expect(yesNoService.format).toHaveBeenCalledWith(VALUE); - expect(yesNoService.format).toHaveBeenCalledTimes(1); - expect(de.nativeElement.textContent).toEqual(FORMATTED_VALUE); - }); -}); diff --git a/src/app/shared/palette/yes-no/read-yes-no-field.component.ts b/src/app/shared/palette/yes-no/read-yes-no-field.component.ts deleted file mode 100644 index bee95daee..000000000 --- a/src/app/shared/palette/yes-no/read-yes-no-field.component.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AbstractFieldReadComponent } from '../base-field/abstract-field-read.component'; -import { Component, OnInit } from '@angular/core'; -import { YesNoService } from './yes-no.service'; - -@Component({ - selector: 'ccd-read-yes-no-field', - template: `{{formattedValue}}` -}) -export class ReadYesNoFieldComponent extends AbstractFieldReadComponent implements OnInit { - - formattedValue: string; - - constructor(private yesNoService: YesNoService) { - super(); - } - - ngOnInit() { - this.formattedValue = this.yesNoService.format(this.caseField.value); - } - -} diff --git a/src/app/shared/palette/yes-no/write-yes-no-field.component.spec.ts b/src/app/shared/palette/yes-no/write-yes-no-field.component.spec.ts deleted file mode 100644 index 104f1b964..000000000 --- a/src/app/shared/palette/yes-no/write-yes-no-field.component.spec.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import { WriteYesNoFieldComponent } from './write-yes-no-field.component'; -import { DebugElement } from '@angular/core'; -import { MockComponent } from 'ng2-mock-component'; -import { FieldType } from '../../domain/definition/field-type.model'; -import { CaseField } from '../../domain/definition/case-field.model'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { By } from '@angular/platform-browser'; -import createSpyObj = jasmine.createSpyObj; -import { YesNoService } from './yes-no.service'; - -const FIELD_ID = 'Billingual'; -const FIELD_TYPE: FieldType = { - id: 'YesOrNo', - type: 'YesOrNo' -}; -const VALUE = 'yes'; -const FORMATTED_VALUE = 'Yes'; -const CASE_FIELD: CaseField = { - id: FIELD_ID, - label: 'X', - display_context: 'OPTIONAL', - field_type: FIELD_TYPE, - value: VALUE -}; - -const FORM_GROUP: FormGroup = new FormGroup({}); -const REGISTER_CONTROL = (control) => { - FORM_GROUP.addControl(FIELD_ID, control); - return control; -}; - -describe('WriteYesNoFieldComponent', () => { - - const $INPUT = By.css('.form-group input'); - - // Input is mocked so that one-way bound inputs can be tested - let Input: any = MockComponent({ selector: 'input', inputs: [ - 'type', - 'formControl' - ]}); - - let fixture: ComponentFixture; - let component: WriteYesNoFieldComponent; - let de: DebugElement; - - let yesNoService: any; - - beforeEach(async(() => { - yesNoService = createSpyObj('yesNoService', ['format']); - yesNoService.format.and.returnValue(FORMATTED_VALUE); - - TestBed - .configureTestingModule({ - imports: [ - ReactiveFormsModule, - PaletteUtilsModule - ], - declarations: [ - WriteYesNoFieldComponent, - - // Mock - Input, - ], - providers: [ - { provide: YesNoService, useValue: yesNoService } - ] - }) - .compileComponents(); - - fixture = TestBed.createComponent(WriteYesNoFieldComponent); - component = fixture.componentInstance; - - component.registerControl = REGISTER_CONTROL; - component.caseField = CASE_FIELD; - - de = fixture.debugElement; - fixture.detectChanges(); - })); - - it('should add a formControl linked to the field ID to the formGroup', () => { - expect(FORM_GROUP.controls[FIELD_ID]).toBeTruthy(); - }); - - it('should initialise formControl with formatted provided value', () => { - expect(yesNoService.format).toHaveBeenCalledWith(VALUE); - expect(FORM_GROUP.controls[FIELD_ID].value).toBe(FORMATTED_VALUE); - }); - - it('should render radio input element linked to formControl', () => { - component.idPrefix = 'prefix_'; - fixture.detectChanges(); - - let input = de.query($INPUT); - expect(input.nativeElement.getAttribute('type')).toBe('radio'); - expect(input.componentInstance.formControl).toBe(component.yesNoControl); - }); -}); diff --git a/src/app/shared/palette/yes-no/write-yes-no-field.component.ts b/src/app/shared/palette/yes-no/write-yes-no-field.component.ts deleted file mode 100644 index 446db403a..000000000 --- a/src/app/shared/palette/yes-no/write-yes-no-field.component.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { FormControl } from '@angular/forms'; -import { AbstractFieldWriteComponent } from '../base-field/abstract-field-write.component'; -import { YesNoService } from './yes-no.service'; - -@Component({ - selector: 'ccd-write-yes-no-field', - templateUrl: './write-yes-no-field.html' -}) -export class WriteYesNoFieldComponent extends AbstractFieldWriteComponent implements OnInit { - - yesNoValues = [ 'Yes', 'No' ]; - yesNoControl: FormControl; - - constructor(private yesNoService: YesNoService) { - super(); - } - - ngOnInit() { - this.yesNoControl = this.registerControl(new FormControl(this.yesNoService.format(this.caseField.value))); - } - -} diff --git a/src/app/shared/palette/yes-no/write-yes-no-field.html b/src/app/shared/palette/yes-no/write-yes-no-field.html deleted file mode 100644 index fcaa8b9bc..000000000 --- a/src/app/shared/palette/yes-no/write-yes-no-field.html +++ /dev/null @@ -1,22 +0,0 @@ -
- -
- - - {{caseField | ccdFieldLabel}} - {{caseField.hint_text}} - {{yesNoControl.errors | ccdFirstError}} - - -
- -
- - -
- -
- -
- -
diff --git a/src/app/shared/palette/yes-no/yes-no.module.ts b/src/app/shared/palette/yes-no/yes-no.module.ts deleted file mode 100644 index 4670dfe4f..000000000 --- a/src/app/shared/palette/yes-no/yes-no.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { ReadYesNoFieldComponent } from './read-yes-no-field.component'; -import { YesNoService } from './yes-no.service'; -import { WriteYesNoFieldComponent } from './write-yes-no-field.component'; -import { ReactiveFormsModule } from '@angular/forms'; -import { PaletteUtilsModule } from '../utils/utils.module'; -import { MarkdownModule } from '../../markdown/markdown.module'; - -@NgModule({ - imports: [ - CommonModule, - ReactiveFormsModule, - PaletteUtilsModule, - MarkdownModule - ], - declarations: [ - ReadYesNoFieldComponent, - WriteYesNoFieldComponent - ], - entryComponents: [ - ReadYesNoFieldComponent, - WriteYesNoFieldComponent - ], - providers: [ - YesNoService - ] -}) -export class YesNoModule {} diff --git a/src/app/shared/palette/yes-no/yes-no.service.spec.ts b/src/app/shared/palette/yes-no/yes-no.service.spec.ts deleted file mode 100644 index db504841e..000000000 --- a/src/app/shared/palette/yes-no/yes-no.service.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { YesNoService } from './yes-no.service'; - -describe('YesNoService', () => { - - const YES = 'Yes'; - const NO = 'No'; - const EMPTY = ''; - - let yesNoService: YesNoService; - - beforeEach(() => { - yesNoService = new YesNoService(); - }); - - describe(YES, () => { - it('should return "Yes" when value is `true`', () => { - expect(yesNoService.format(true)).toBe(YES); - }); - - it('should return "Yes" when value is "Yes"', () => { - expect(yesNoService.format('Yes')).toBe(YES); - }); - - it('should return "Yes" when value is "yes"', () => { - expect(yesNoService.format('yes')).toBe(YES); - }); - - it('should return "Yes" when value is "YES"', () => { - expect(yesNoService.format('YES')).toBe(YES); - }); - - it('should return "Yes" when value is "yeS"', () => { - expect(yesNoService.format('yeS')).toBe(YES); - }); - - it('should return "Yes" when value is "y"', () => { - expect(yesNoService.format('y')).toBe(YES); - }); - - it('should return "Yes" when value is "Y"', () => { - expect(yesNoService.format('Y')).toBe(YES); - }); - }); - - describe(NO, () => { - it('should return "No" when value is `false`', () => { - expect(yesNoService.format(false)).toBe(NO); - }); - - it('should return "No" when value is "No"', () => { - expect(yesNoService.format('No')).toBe(NO); - }); - - it('should return "No" when value is "no"', () => { - expect(yesNoService.format('no')).toBe(NO); - }); - - it('should return "No" when value is "NO"', () => { - expect(yesNoService.format('NO')).toBe(NO); - }); - - it('should return "No" when value is "n"', () => { - expect(yesNoService.format('n')).toBe(NO); - }); - - it('should return "No" when value is "N"', () => { - expect(yesNoService.format('N')).toBe(NO); - }); - }); - - describe('empty', () => { - it('should return empty string when value is undefined', () => { - expect(yesNoService.format(undefined)).toBe(EMPTY); - }); - - it('should return empty string when value is null', () => { - expect(yesNoService.format(null)).toBe(EMPTY); - }); - - it('should return empty string when value is not a supported value', () => { - expect(yesNoService.format('plop')).toBe(EMPTY); - expect(yesNoService.format('yesno')).toBe(EMPTY); - expect(yesNoService.format('nop')).toBe(EMPTY); - }); - }); -}); diff --git a/src/app/shared/palette/yes-no/yes-no.service.ts b/src/app/shared/palette/yes-no/yes-no.service.ts deleted file mode 100644 index be7bf7eee..000000000 --- a/src/app/shared/palette/yes-no/yes-no.service.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable() -export class YesNoService { - private static readonly YES_INPUTS: string[] = [ - 'Y', - 'YES' - ]; - private static readonly NO_INPUTS: string[] = [ - 'N', - 'NO' - ]; - private static readonly YES = 'Yes'; - private static readonly NO = 'No'; - private static readonly EMPTY = ''; - - format(value: any): string { - - if (this.isYes(value)) { - return YesNoService.YES; - } else if (this.isNo(value)) { - return YesNoService.NO; - } - - return YesNoService.EMPTY; - } - - private isYes(value: any): boolean { - switch (typeof(value)) { - case 'boolean': - return value; - case 'string': - return YesNoService.YES_INPUTS.indexOf(value.toUpperCase()) !== -1; - } - - return false; - } - - private isNo(value: any): boolean { - switch (typeof(value)) { - case 'boolean': - return !value; - case 'string': - return YesNoService.NO_INPUTS.indexOf(value.toUpperCase()) !== -1; - } - - return false; - } -} diff --git a/src/app/shared/remove-dialog/remove-dialog.component.html b/src/app/shared/remove-dialog/remove-dialog.component.html deleted file mode 100644 index 753f907ec..000000000 --- a/src/app/shared/remove-dialog/remove-dialog.component.html +++ /dev/null @@ -1,17 +0,0 @@ - -
-
-

X

-
-
-

Are you sure you want to remove the item

-
-
- You are about to permanently remove an item, are you sure you want to - remove this item? -
-
- - -
-
diff --git a/src/app/shared/remove-dialog/remove-dialog.component.scss b/src/app/shared/remove-dialog/remove-dialog.component.scss deleted file mode 100644 index ae08b2e1f..000000000 --- a/src/app/shared/remove-dialog/remove-dialog.component.scss +++ /dev/null @@ -1,22 +0,0 @@ -.x { - margin: 0; - padding: 9px 9px 0px 0px; - font-size: 24px; - font-weight: bold; - font-style: normal; - font-stretch: normal; - cursor: pointer; - color: #6e7071; -} -.dialog-header { - text-align: right; -} -.dialog-title { - margin: 0px 0px 21px 25px; -} -.dialog-info { - margin: 0px 0px 21px 25px; -} -.remove-button { - margin: 0px 15px 0px 25px; -} diff --git a/src/app/shared/remove-dialog/remove-dialog.component.spec.ts b/src/app/shared/remove-dialog/remove-dialog.component.spec.ts deleted file mode 100644 index 7a0b5db54..000000000 --- a/src/app/shared/remove-dialog/remove-dialog.component.spec.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { RemoveDialogComponent } from './remove-dialog.component'; -import { MatDialogRef } from '@angular/material'; -import { By } from '@angular/platform-browser'; -import { DebugElement } from '@angular/core'; -import createSpyObj = jasmine.createSpyObj; - -describe('RemoveDialogComponent', () => { - const REMOVE_BUTTON = By.css('button[title="Remove"]'); - const CANCEL_BUTTON = By.css('button[title="Cancel"]'); - - let component: RemoveDialogComponent; - let fixture: ComponentFixture; - let de: DebugElement; - let matDialogRef: any; - - beforeEach(async(() => { - matDialogRef = createSpyObj>('MatDialogRef', ['close']); - - TestBed.configureTestingModule({ - declarations: [ RemoveDialogComponent ], - providers: [ - { provide: MatDialogRef, useValue: matDialogRef } - ] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(RemoveDialogComponent); - component = fixture.componentInstance; - de = fixture.debugElement; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should close dialog with `Remove` when remove button clicked', () => { - let removeButton = de.query(REMOVE_BUTTON); - - removeButton.nativeElement.click(); - fixture.detectChanges(); - - expect(matDialogRef.close).toHaveBeenCalledWith('Remove'); - }); - - it('should close dialog with `Cancel` when cancel button clicked', () => { - let removeButton = de.query(CANCEL_BUTTON); - - removeButton.nativeElement.click(); - fixture.detectChanges(); - - expect(matDialogRef.close).toHaveBeenCalledWith('Cancel'); - }); -}); diff --git a/src/app/shared/remove-dialog/remove-dialog.component.ts b/src/app/shared/remove-dialog/remove-dialog.component.ts deleted file mode 100644 index 69b361bb7..000000000 --- a/src/app/shared/remove-dialog/remove-dialog.component.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Component } from '@angular/core'; -import { MatDialogRef } from '@angular/material'; - -@Component({ - selector: 'ccd-remove-dialog', - templateUrl: './remove-dialog.component.html', - styleUrls: ['./remove-dialog.component.scss'] -}) -export class RemoveDialogComponent { - - result: string; - - constructor(private matDialogRef: MatDialogRef) {} - - remove() { - this.result = 'Remove'; - this.matDialogRef.close(this.result); - } - cancel() { - this.result = 'Cancel'; - this.matDialogRef.close(this.result); - } -} diff --git a/src/app/shared/search/search-result-view-column.model.ts b/src/app/shared/search/search-result-view-column.model.ts index 9a9d57324..750954aaf 100644 --- a/src/app/shared/search/search-result-view-column.model.ts +++ b/src/app/shared/search/search-result-view-column.model.ts @@ -1,4 +1,4 @@ -import { FieldType } from '../../shared/domain/definition/field-type.model'; +import { FieldType } from '@hmcts/ccd-case-ui-toolkit'; export class SearchResultViewColumn { case_field_id: string; diff --git a/src/app/shared/search/search-result-view.model.ts b/src/app/shared/search/search-result-view.model.ts index aad5e2df6..519b977ce 100644 --- a/src/app/shared/search/search-result-view.model.ts +++ b/src/app/shared/search/search-result-view.model.ts @@ -1,7 +1,7 @@ import { SearchResultViewColumn } from './search-result-view-column.model'; import { SearchResultViewItem } from './search-result-view-item.model'; import { Type } from 'class-transformer'; -import { Draft } from '../domain/draft'; +import { Draft } from '@hmcts/ccd-case-ui-toolkit'; export class SearchResultView { @Type(() => SearchResultViewColumn) diff --git a/src/app/shared/search/search-result.component.ts b/src/app/shared/search/search-result.component.ts index 474865b25..07934a62f 100644 --- a/src/app/shared/search/search-result.component.ts +++ b/src/app/shared/search/search-result.component.ts @@ -13,7 +13,7 @@ import { AppConfig } from '../../app.config'; import { CaseType } from '../domain/definition/case-type.model'; import { FormGroup } from '@angular/forms'; import { ActivityService } from '../../core/activity/activity.service'; -import { CaseReferencePipe } from '../utils/case-reference.pipe'; +import { CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-search-result', diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 4d7f75211..19189b84e 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -4,7 +4,8 @@ import { CommonModule } from '@angular/common'; import { NgxPaginationModule } from 'ngx-pagination'; import { SearchResultComponent } from './search/search-result.component'; import { SearchFiltersComponent } from './search/filters/search-filters.component'; -import { PaletteModule } from './palette/palette.module'; +import { PaletteModule, CaseFieldService, ConditionalShowModule, DocumentDialogComponent, + MarkdownModule, LabelFieldComponent, LabelSubstitutorModule, SharedUtilsModule } from '@hmcts/ccd-case-ui-toolkit'; import { RouterModule } from '@angular/router'; import { EventTriggerModule } from './event-trigger/event-trigger.module'; import { CaseHeaderComponent } from './header/case-header.component'; @@ -14,16 +15,9 @@ import { SearchResultViewItemComparatorFactory } from './search/sorting/search-r import { CcdActivityComponent } from '../core/activity/ccd-activity/ccd-activity.component'; import { CcdActivityIconComponent } from '../core/activity/ccd-activity/ccd-activity-icon/ccd-activity-icon.component'; import { CcdActivityBannerComponent } from '../core/activity/ccd-activity/ccd-activity-banner/ccd-activity-banner.component'; -import { CaseFieldService } from './domain/case-field.service'; import { CaseHistoryComponent } from './case-history/case-history.component'; import { CaseHistoryResolver } from './case-history/case-history.resolver'; -import { LabelSubstitutorModule } from './substitutor/label-substitutor.module'; -import { ConditionalShowModule } from './conditional-show/conditional-show.module'; import { CaseHistoryService } from '../core/cases/case-history.service'; -import { DocumentDialogComponent } from './document-dialog/document-dialog.component'; -import { MarkdownModule } from './markdown/markdown.module'; -import { LabelFieldComponent } from './palette/label/label-field.component'; -import { SharedUtilsModule } from './utils/shared-utils.module'; @NgModule({ imports: [ diff --git a/src/app/shared/substitutor/label-substitutor.directive.spec.ts b/src/app/shared/substitutor/label-substitutor.directive.spec.ts deleted file mode 100644 index dfe7d5a5f..000000000 --- a/src/app/shared/substitutor/label-substitutor.directive.spec.ts +++ /dev/null @@ -1,808 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; -import { DebugElement, Component, Input } from '@angular/core'; -import { LabelSubstitutorDirective } from './label-substitutor.directive'; -import { CaseField } from '../domain/definition/case-field.model'; -import { async } from '@angular/core/testing'; -import { FormGroup, FormControl } from '@angular/forms'; -import { FieldsUtils } from '../utils/fields.utils'; -import { LabelSubstitutionService } from '../case-editor/label-substitution.service'; -import createSpyObj = jasmine.createSpyObj; - -@Component({ - template: ` - {{caseField.label}}` -}) -class TestHostComponent { - - @Input() caseField: CaseField; - @Input() eventFields: CaseField[]; - @Input() formGroup: FormGroup; -} - -let field = (id, value, fieldType, label?) => { - let caseField = new CaseField(); - caseField.id = id; - caseField.value = value; - caseField.field_type = fieldType; - caseField.label = label; - return caseField; -}; - -describe('LabelSubstitutorDirective', () => { - - let comp: TestHostComponent; - let fixture: ComponentFixture; - let de: DebugElement; - let el: HTMLElement; - let labelSubstitutionService: any; - - beforeEach( async(() => { - labelSubstitutionService = createSpyObj('labelSubstitutionService', ['substituteLabel']); - - TestBed.configureTestingModule({ - declarations: [ LabelSubstitutorDirective, TestHostComponent ], - providers: [ FieldsUtils , - {provide: LabelSubstitutionService, useValue: labelSubstitutionService}] - }).compileComponents(); - - fixture = TestBed.createComponent(TestHostComponent); - comp = fixture.componentInstance; - de = fixture.debugElement.query(By.directive(LabelSubstitutorDirective)); - el = de.nativeElement; - })); - - describe('simple type fields', () => { - - it('should display label returned by label substitution service', () => { - let label = 'Label B with valueA=${LabelA} and valueA=${LabelA}:'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField]; - labelSubstitutionService.substituteLabel.and.returnValue('Label B with valueA=ValueA and valueA=ValueA:'); - fixture.detectChanges(); - - expect(el.innerText).toBe('Label B with valueA=ValueA and valueA=ValueA:'); - }); - - it('should pass case field value to substitute label when case field value but no form field value present', () => { - let label = 'someLabel:'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', 'ValueA', '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: 'ValueA' }, label); - }); - - it('should pass form value to substitute label if both case field and form values exist for same field', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', 'ValueA1', '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('ValueA2'), - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: 'ValueA2' }, label); - }); - - it('should pass correct values when both form field and case field values present for different fields', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelD', 'ValueD', { - id: 'LabelD', - type: 'Text' - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('ValueA'), - LabelC: new FormControl('ValueC') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: 'ValueA', LabelC: 'ValueC', LabelD: 'ValueD' }, label); - }); - }); - - describe('fixed list type fields', () => { - - it('should pass form field value when field is not read only and no case field value but form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text', - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '', { - id: 'LabelA', - type: 'FixedList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - } - ] - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('ValueA') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: 'Option A' }, label); - }); - - it('should pass case field value when field is read only and no form field but case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text', - }, label); - comp.eventFields = [comp.caseField, field('LabelA', 'ValueC', { - id: 'LabelA', - type: 'FixedList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - } - ] - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: 'Option C' }, label); - }); - - it('should pass field form value when field is not read only and both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text', - }, label); - comp.eventFields = [comp.caseField, field('LabelA', 'ValueC', { - id: 'LabelA', - type: 'FixedList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - } - ] - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('ValueA') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: 'Option A' }, label); - }); - }); - - describe('multi list type fields', () => { - - it('should pass form field value when field is not read only and no case field value but form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text', - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '', { - id: 'LabelA', - type: 'MultiSelectList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - }, - { - code: 'ValueD', - label: 'Option D' - } - ] - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(['ValueA', 'ValueD']) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: ['ValueA', 'ValueD'], 'LabelA-LABEL': ['Option A', 'Option D']}, label); - }); - - it('should pass case field value when field is read only and no form field but case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text', - }, label); - comp.eventFields = [comp.caseField, field('LabelA', ['ValueC', 'ValueD'], { - id: 'LabelA', - type: 'MultiSelectList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - }, - { - code: 'ValueD', - label: 'Option D' - } - ] - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: ['ValueC', 'ValueD'], 'LabelA-LABEL': ['Option C', 'Option D']}, label); - }); - - it('should pass field form value when field is not read only and both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text', - }, label); - comp.eventFields = [comp.caseField, field('LabelA', 'ValueC', { - id: 'LabelA', - type: 'MultiSelectList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - }, - { - code: 'ValueD', - label: 'Option D' - } - ] - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(['ValueA', 'ValueC']) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith( - { LabelB: '', LabelA: ['ValueA', 'ValueC'], 'LabelA-LABEL': ['Option A', 'Option C']}, label); - }); - }); - - describe('MoneyGBP type fields', () => { - - it('should pass null value for null MoneyGBP', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', null, { - id: 'LabelA', - type: 'MoneyGBP' - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: null }, label); - }); - - it('should pass case field value with MoneyGBP when case field value but no form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '20055', { - id: 'LabelA', - type: 'MoneyGBP' - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '£200.55' }, label); - }); - - it('should pass form field value with MoneyGBP when form field value but no case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '', { - id: 'LabelA', - type: 'MoneyGBP' - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('20055') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '£200.55' }, label); - }); - - it('should pass form field value with MoneyGBP when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '99999', { - id: 'LabelA', - type: 'MoneyGBP' - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('20055') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '£200.55' }, label); - }); - }); - - describe('Date type fields', () => { - - it('should pass case field value with Date when case field value but no form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '2018-03-07', { - id: 'LabelA', - type: 'Date' - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '7 Mar 2018' }, label); - }); - - it('should pass form field value with Date when form field value but no case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '', { - id: 'LabelA', - type: 'Date' - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('2018-03-07') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '7 Mar 2018' }, label); - }); - - it('should pass form field value with Date when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '2018-03-07', { - id: 'LabelA', - type: 'Date' - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('2018-03-07') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '7 Mar 2018' }, label); - }); - - it('should pass form field value with invalid date when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - comp.eventFields = [comp.caseField, field('LabelA', '2018-03', { - id: 'LabelA', - type: 'Date' - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl('2018-03') - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: '{ Invalid Date: 2018-03 }' }, label); - }); - }); - - describe('Collection type fields', () => { - - it('should pass form field value with comma delimited text items when case field value but no form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const VALUES = [ - { - value: 'Pierre', - }, - { - value: 'Paul', - }, - { - value: 'Jacques', - } - ]; - comp.eventFields = [comp.caseField, field('LabelA', VALUES, { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'Text', - type: 'Text' - } - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: VALUES}, label); - }); - - it('should pass form field value with comma delimited text items when form field value but no case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const VALUES = [ - { - value: 'Pierre', - }, - { - value: 'Paul', - }, - { - value: 'Jacques', - } - ]; - comp.eventFields = [comp.caseField, field('LabelA', [], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'Text', - type: 'Text' - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: VALUES}, label); - }); - - it('should pass form field value with comma delimited text items when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const VALUES = [ - { - value: 'Pierre', - }, - { - value: 'Paul', - }, - { - value: 'Jacques', - } - ]; - comp.eventFields = [comp.caseField, field('LabelA', [ - { - value: 'Tom', - }, - { - value: 'George', - }, - { - value: 'John', - } - ], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'Text', - type: 'Text' - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: VALUES}, label); - }); - }); - - describe('Collection of fixed list type fields', () => { - - it('should pass form field value with comma delimited label items when case field value but no form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const VALUES = [{value: 'ValueA'}, {value: 'ValueC'}, {value: 'ValueD'}]; - comp.eventFields = [comp.caseField, field('LabelA', VALUES, { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'FixedList', - type: 'FixedList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - }, - { - code: 'ValueD', - label: 'Option D' - } - ] - } - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: VALUES}, label); - }); - - it('should pass form field value with comma delimited label items when form field value but no case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const VALUES = [{value: 'ValueA'}, {value: 'ValueC'}, {value: 'ValueD'}]; - comp.eventFields = [comp.caseField, field('LabelA', [], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'FixedList', - type: 'FixedList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - }, - { - code: 'ValueD', - label: 'Option D' - } - ] - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: VALUES}, label); - }); - - it('should pass form field value with comma delimited label items when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const VALUES = [{value: 'ValueA'}, {value: 'ValueC'}, {value: 'ValueD'}]; - comp.eventFields = [comp.caseField, field('LabelA', [{value: 'ValueD'}, {value: 'ValueD'}, {value: 'ValueD'}], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'FixedList', - type: 'FixedList', - fixed_list_items: [ - { - code: 'ValueA', - label: 'Option A' - }, - { - code: 'ValueC', - label: 'Option C' - }, - { - code: 'ValueD', - label: 'Option D' - } - ] - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: VALUES}, label); - }); - }); - - describe('Collection of MoneyGBP type fields', () => { - - it('should pass form field value with comma delimited label items when case field value but no form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const RAW_VALUES = [{value: '12345'}, {value: '34888'}, {value: '9944521'}]; - const TRANSFORMED_VALUES = [{value: '£123.45'}, {value: '£348.88'}, {value: '£99,445.21'}]; - comp.eventFields = [comp.caseField, field('LabelA', RAW_VALUES, { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'MoneyGBP', - type: 'MoneyGBP' - } - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: TRANSFORMED_VALUES}, label); - }); - - it('should pass form field value with comma delimited label items when form field value but no case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const RAW_VALUES = [{value: '12345'}, {value: '34888'}, {value: '9944521'}]; - const TRANSFORMED_VALUES = [{value: '£123.45'}, {value: '£348.88'}, {value: '£99,445.21'}]; - comp.eventFields = [comp.caseField, field('LabelA', [], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'MoneyGBP', - type: 'MoneyGBP' - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(RAW_VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: TRANSFORMED_VALUES}, label); - }); - - it('should pass form field value with comma delimited label items when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const RAW_VALUES = [{value: '12345'}, {value: '34888'}, {value: '9944521'}]; - const TRANSFORMED_VALUES = [{value: '£123.45'}, {value: '£348.88'}, {value: '£99,445.21'}]; - comp.eventFields = [comp.caseField, field('LabelA', [{value: 'ValueD'}, {value: 'ValueD'}, {value: 'ValueD'}], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'MoneyGBP', - type: 'MoneyGBP' - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(RAW_VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: TRANSFORMED_VALUES}, label); - }); - }); - - describe('Collection of Date type fields', () => { - - it('should pass form field value with comma delimited label items when case field value but no form field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const RAW_VALUES = [{value: '2018-03-07'}, {value: '2015-02-22'}, {value: '2017-12-12'}]; - const TRANSFORMED_VALUES = [{value: '7 Mar 2018'}, {value: '22 Feb 2015'}, {value: '12 Dec 2017'}]; - comp.eventFields = [comp.caseField, field('LabelA', RAW_VALUES, { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'Date', - type: 'Date' - } - }, '')]; - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: TRANSFORMED_VALUES}, label); - }); - - it('should pass form field value with comma delimited label items when form field value but no case field value present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const RAW_VALUES = [{value: '2018-03-07'}, {value: '2015-02-22'}, {value: '2017-12-12'}]; - const TRANSFORMED_VALUES = [{value: '7 Mar 2018'}, {value: '22 Feb 2015'}, {value: '12 Dec 2017'}]; - comp.eventFields = [comp.caseField, field('LabelA', [], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'Date', - type: 'Date' - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(RAW_VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: TRANSFORMED_VALUES}, label); - }); - - it('should pass form field value with comma delimited label items when both form and case field values present', () => { - let label = 'someLabel'; - comp.caseField = field('LabelB', '', { - id: 'LabelB', - type: 'Text' - }, label); - const RAW_VALUES = [{value: '2018-03-07'}, {value: '2015-02-22'}, {value: '2017-12-12'}]; - const TRANSFORMED_VALUES = [{value: '7 Mar 2018'}, {value: '22 Feb 2015'}, {value: '12 Dec 2017'}]; - comp.eventFields = [comp.caseField, field('LabelA', [{value: 'ValueD'}, {value: 'ValueD'}, {value: 'ValueD'}], { - id: 'LabelA', - type: 'Collection', - collection_field_type: { - id: 'Date', - type: 'Date' - } - }, '')]; - comp.formGroup = new FormGroup({ - LabelA: new FormControl(RAW_VALUES) - }); - fixture.detectChanges(); - - expect(labelSubstitutionService.substituteLabel).toHaveBeenCalledWith({ LabelB: '', LabelA: TRANSFORMED_VALUES}, label); - }); - }); -}); diff --git a/src/app/shared/substitutor/label-substitutor.directive.ts b/src/app/shared/substitutor/label-substitutor.directive.ts deleted file mode 100644 index f7675653c..000000000 --- a/src/app/shared/substitutor/label-substitutor.directive.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Directive, Input, OnInit, OnDestroy } from '@angular/core'; -import { FormGroup } from '@angular/forms'; -import { CaseField } from '../domain/definition/case-field.model'; -import { FieldsUtils } from '../utils/fields.utils'; -import { LabelSubstitutionService } from '../case-editor/label-substitution.service'; - -@Directive({ selector: '[ccdLabelSubstitutor]' }) -/** Checks all labels and substitutes any that reference other ones. -*/ -export class LabelSubstitutorDirective implements OnInit, OnDestroy { - - @Input() caseField: CaseField; - @Input() eventFields: CaseField[] = []; - @Input() formGroup: FormGroup; - - initialLabel: string; - - constructor(private fieldsUtils: FieldsUtils, private labelSubstitutionService: LabelSubstitutionService) {} - - ngOnInit() { - if (this.caseField.label) { - this.initialLabel = this.caseField.label; - this.formGroup = this.formGroup || new FormGroup({}); - // console.log('SubstitutorDirective FIELD: ' + this.caseField.id + ' init. Label: ' + this.caseField.label); - // console.log('SubstitutorDirective EVENT_FIELDS: ', this.eventFields); - this.caseField.label = this.getResolvedLabel(this.getReadOnlyAndFormFields()); - } - } - - ngOnDestroy() { - this.caseField.label = this.initialLabel; - } - - private getResolvedLabel(fields) { - // console.log('SubstitutorDirective FIELD ' + this.caseField.id + ' updatingVisibility based on fields: ', fields); - return this.labelSubstitutionService.substituteLabel(fields, this.caseField.label); - // console.log('SubstitutorDirective RESOLVED LABEL ', this.caseField.label); - } - - private getReadOnlyAndFormFields() { - let formFields = this.getFormFieldsValuesIncludingDisabled(); - // console.log('SubstitutorDirective FIELD ' + this.caseField.id + ' current form values including disabled: ', formFields); - return this.fieldsUtils.mergeLabelCaseFieldsAndFormFields(this.eventFields, formFields); - } - - private getFormFieldsValuesIncludingDisabled() { - return this.formGroup.getRawValue(); - } - -} diff --git a/src/app/shared/substitutor/label-substitutor.module.ts b/src/app/shared/substitutor/label-substitutor.module.ts deleted file mode 100644 index 9b27ede34..000000000 --- a/src/app/shared/substitutor/label-substitutor.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { LabelSubstitutorDirective } from './label-substitutor.directive'; -import { FieldsUtils } from '../utils/fields.utils'; -import { CurrencyPipe } from '@angular/common'; - -@NgModule({ - declarations: [ - LabelSubstitutorDirective - ], - exports: [ - LabelSubstitutorDirective - ], - providers: [ - FieldsUtils, - CurrencyPipe, - ] -}) -export class LabelSubstitutorModule {} diff --git a/src/app/shared/utils/case-reference.pipe.spec.ts b/src/app/shared/utils/case-reference.pipe.spec.ts deleted file mode 100644 index b6e3c1e0f..000000000 --- a/src/app/shared/utils/case-reference.pipe.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { CaseReferencePipe } from './case-reference.pipe'; - -describe('CaseReferencePipe', () => { - - let caseReference: CaseReferencePipe; - - beforeEach(() => { - caseReference = new CaseReferencePipe(); - }); - - it('should hyphenate every 4th digit of case reference', () => { - expect(caseReference.transform('1234567890123456')).toBe('1234-5678-9012-3456'); - }); - - it('should return DRAFT case reference looks like a draft Id', () => { - expect(caseReference.transform('DRAFT123456789')).toBe('DRAFT'); - }); -}); diff --git a/src/app/shared/utils/case-reference.pipe.ts b/src/app/shared/utils/case-reference.pipe.ts deleted file mode 100644 index 3a7bed2da..000000000 --- a/src/app/shared/utils/case-reference.pipe.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Pipe, PipeTransform } from '@angular/core'; -import { Draft } from '../domain/draft'; - -@Pipe({ - name: 'ccdCaseReference' -}) -export class CaseReferencePipe implements PipeTransform { - - transform(caseReference: string): string { - if (Draft.isDraft(caseReference)) { - return Draft.DRAFT; - } else { - return String(caseReference).replace(/(\d{4})(\d{4})(\d{4})(\d{4})/, '$1-$2-$3-$4'); - } - } -} diff --git a/src/app/shared/utils/fields.purger.ts b/src/app/shared/utils/fields.purger.ts deleted file mode 100644 index c4b996ea8..000000000 --- a/src/app/shared/utils/fields.purger.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CaseField } from '../domain/definition/case-field.model'; -import { FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms'; -import { WizardPage } from '../domain/wizard-page.model'; -import { ShowCondition } from '../conditional-show/conditional-show.model'; -import { FieldsUtils } from '../utils/fields.utils'; -import { Predicate } from '../predicate'; - -@Injectable() -export class FieldsPurger { - - constructor( - private fieldsUtils: FieldsUtils, - ) {} - - clearHiddenFields(form, wizard, eventTrigger, currentPageId) { - this.clearHiddenFieldForFieldShowCondition(currentPageId, form, wizard, eventTrigger); - this.clearHiddenFieldForPageShowCondition(form, wizard); - } - - private clearHiddenFieldForPageShowCondition(form, wizard) { - let formFields = form.getRawValue(); - wizard.pages.forEach(wp => { - if (this.hasShowConditionPage(wp, formFields)) { - let condition = new ShowCondition(wp.show_condition); - if (this.isHidden(condition, formFields)) { - this.resetPage(form, wp); - } - } - }); - } - - private clearHiddenFieldForFieldShowCondition(currentPageId, form, wizard, eventTrigger) { - let formFields = form.getRawValue(); - let currentPage: WizardPage = wizard.getPage(currentPageId, this.fieldsUtils.buildCanShowPredicate(eventTrigger, form)); - currentPage.wizard_page_fields.forEach(wpf => { - let case_field = this.findCaseFieldByWizardPageFieldId(currentPage, wpf); - if (this.hasShowConditionField(case_field, formFields)) { - let condition = new ShowCondition(case_field.show_condition); - if (this.isHidden(condition, formFields)) { - this.resetField(form, case_field); - } - } - }); - } - - private isHidden(condition, formFields) { - return !condition.match(formFields.data); - } - - private findCaseFieldByWizardPageFieldId(currentPage, wizardPageField) { - return currentPage.case_fields.find(cf => cf.id === wizardPageField.case_field_id); - } - - private hasShowConditionPage(wizardPage, formFields): boolean { - return wizardPage.show_condition && formFields.data[this.getShowConditionKey(wizardPage.show_condition)]; - } - - private hasShowConditionField(case_field, formFields): boolean { - return case_field.show_condition && formFields.data[this.getShowConditionKey(case_field.show_condition)]; - } - - private getShowConditionKey(show_condition) { - return show_condition.split('=')[0]; - } - - private resetField(form, field) { - if (Array.isArray(field.value)) { - field.value.splice(0, field.value.length); - } else if (this.isObject(field.value)) { - field.value = {}; - } else { - field.value = ''; - } - (form.get('data') as FormGroup).removeControl(field.id); - } - - private resetPage(form, wizardPage: WizardPage) { - wizardPage.wizard_page_fields.forEach(wpf => { - let case_field = this.findCaseFieldByWizardPageFieldId(wizardPage, wpf); - this.resetField(form, case_field); - }); - } - - private getType(elem): string { - return Object.prototype.toString.call(elem).slice(8, -1); - } - - private isObject(elem) { - return this.getType(elem) === 'Object'; - }; -} diff --git a/src/app/shared/utils/fields.utils.ts b/src/app/shared/utils/fields.utils.ts deleted file mode 100644 index 730715b27..000000000 --- a/src/app/shared/utils/fields.utils.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CaseField } from '../domain/definition/case-field.model'; -import { CurrencyPipe, } from '@angular/common'; -import { DatePipe } from '../palette/utils/date.pipe'; -import { WizardPage } from '../domain/wizard-page.model'; -import { Predicate } from '../predicate'; - -@Injectable() -export class FieldsUtils { - - private static readonly currencyPipe: CurrencyPipe = new CurrencyPipe('en-GB'); - private static readonly datePipe: DatePipe = new DatePipe(); - public static readonly LABEL_SUFFIX = '-LABEL'; - - public static toValuesMap(caseFields: CaseField[]): any { - let valueMap = {}; - caseFields.forEach(field => { - valueMap[field.id] = field.value; - }); - return valueMap; - } - - private static readonly DEFAULT_MERGE_FUNCTION = function mergeFunction(field: CaseField, result: any) { - if (!result.hasOwnProperty(field.id)) { - result[field.id] = field.value; - } - }; - - private static readonly LABEL_MERGE_FUNCTION = function mergeFunction(field: CaseField, result: any) { - if (!result.hasOwnProperty(field.id)) { - result[field.id] = field.value; - } - switch (field.field_type.type) { - case 'FixedList': { - result[field.id] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, result[field.id] || field.value); - break; - } - case 'MultiSelectList': { - let fieldValue = result[field.id] || []; - result[field.id + FieldsUtils.LABEL_SUFFIX] = []; - fieldValue.forEach((code, idx) => { - result[field.id + FieldsUtils.LABEL_SUFFIX][idx] = FieldsUtils.getFixedListLabelByCodeOrEmpty(field, code); - }); - break; - } - case 'MoneyGBP': { - let fieldValue = (result[field.id] || field.value); - result[field.id] = FieldsUtils.getMoneyGBP(fieldValue); - break; - } - case 'Date': { - let fieldValue = (result[field.id] || field.value); - result[field.id] = FieldsUtils.getDate(fieldValue); - break; - } - case 'Collection': { - let elements = (result[field.id] || field.value); - if (elements) { - elements.forEach(elem => { - switch (field.field_type.collection_field_type.type) { - case 'MoneyGBP': { - elem.value = FieldsUtils.getMoneyGBP(elem.value); - break; - } - case 'Date': { - elem.value = FieldsUtils.getDate(elem.value); - break; - } - } - }); - } - break; - } - } - }; - - private static getMoneyGBP(fieldValue) { - return fieldValue ? FieldsUtils.currencyPipe.transform(fieldValue / 100, 'GBP', 'symbol') : fieldValue; - } - - private static getDate(fieldValue) { - try { - return FieldsUtils.datePipe.transform(fieldValue, null, 'dd-MM-yyyy'); - } catch (e) { - return this.textForInvalidField('Date', fieldValue); - } - } - - private static getFixedListLabelByCodeOrEmpty(field, code) { - let relevantItem = code ? field.field_type.fixed_list_items.find(item => item.code === code) : ''; - return relevantItem ? relevantItem.label : ''; - } - - private static textForInvalidField(type: string, invalidValue: string): string { - return `{ Invalid ${type}: ${invalidValue} }`; - } - - public buildCanShowPredicate(eventTrigger, form): Predicate { - let currentState = this.mergeCaseFieldsAndFormFields(eventTrigger.case_fields, form.controls['data'].value); - return (page: WizardPage): boolean => { - return page.parsedShowCondition.match(currentState); - }; - } - - mergeCaseFieldsAndFormFields(caseFields: CaseField[], formFields: any): any { - return this.mergeFields(caseFields, formFields, FieldsUtils.DEFAULT_MERGE_FUNCTION); - } - - mergeLabelCaseFieldsAndFormFields(caseFields: CaseField[], formFields: any): any { - return this.mergeFields(caseFields, formFields, FieldsUtils.LABEL_MERGE_FUNCTION); - } - - private mergeFields(caseFields: CaseField[], formFields: any, mergeFunction: (CaseField, any) => void) { - let result = this.cloneObject(formFields); - caseFields.forEach(field => { - mergeFunction(field, result); - }); - return result; - } - - private cloneObject(obj: any): any { - return Object.assign({}, obj); - } - -} diff --git a/src/app/shared/utils/shared-utils.module.ts b/src/app/shared/utils/shared-utils.module.ts deleted file mode 100644 index c4d709ae7..000000000 --- a/src/app/shared/utils/shared-utils.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { CaseReferencePipe } from './case-reference.pipe'; - -@NgModule({ - imports: [ - CommonModule, - ], - declarations: [ - CaseReferencePipe, - ], - exports: [ - CaseReferencePipe, - ] -}) -export class SharedUtilsModule {} diff --git a/src/app/workbasket/workbasket-input-filter.service.ts b/src/app/workbasket/workbasket-input-filter.service.ts index 82dbf213d..98b6116fc 100644 --- a/src/app/workbasket/workbasket-input-filter.service.ts +++ b/src/app/workbasket/workbasket-input-filter.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import 'rxjs/add/operator/map'; -import { HttpService } from '../core/http/http.service'; import { AppConfig } from '../app.config'; import { WorkbasketInputModel } from './workbasket-input.model'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class WorkbasketInputFilterService { diff --git a/src/app/workbasket/workbasket-input.model.ts b/src/app/workbasket/workbasket-input.model.ts index ecb83af54..d7678fa0d 100644 --- a/src/app/workbasket/workbasket-input.model.ts +++ b/src/app/workbasket/workbasket-input.model.ts @@ -1,4 +1,4 @@ -import { Orderable } from '../core/order/orderable.model'; +import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; import { Field } from '../core/search/field.model'; export class WorkbasketInputModel implements Orderable { diff --git a/src/app/workbasket/workbasket.module.ts b/src/app/workbasket/workbasket.module.ts index a3ea0ce32..ce3ff6c0a 100644 --- a/src/app/workbasket/workbasket.module.ts +++ b/src/app/workbasket/workbasket.module.ts @@ -6,7 +6,7 @@ import { WorkbasketFiltersComponent } from './filters/workbasket-filters.compone import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { SharedModule } from '../shared/shared.module'; import { CaseUIToolkitModule } from '@hmcts/ccd-case-ui-toolkit'; -import { PaletteModule } from '../shared/palette/palette.module'; +import { PaletteModule } from '@hmcts/ccd-case-ui-toolkit'; @NgModule({ imports: [ diff --git a/tsconfig.json b/tsconfig.json index a6c016bf3..6f300c5a9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "es5", + "target": "es2015", "typeRoots": [ "node_modules/@types" ], diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fad121d22..000000000 --- a/yarn.lock +++ /dev/null @@ -1,9718 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@angular-devkit/architect@0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.6.8.tgz#977acc605aba45d21b95ca704cc99492e14299dd" - dependencies: - "@angular-devkit/core" "0.6.8" - rxjs "^6.0.0" - -"@angular-devkit/architect@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.7.1.tgz#c1e999f6565e4596d0912ea30c190981f79a9481" - dependencies: - "@angular-devkit/core" "0.7.1" - rxjs "^6.0.0" - -"@angular-devkit/build-angular@~0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz#ea108509f970efc9cd9087a47894c0164dd2d0c0" - dependencies: - "@angular-devkit/architect" "0.6.8" - "@angular-devkit/build-optimizer" "0.6.8" - "@angular-devkit/core" "0.6.8" - "@ngtools/webpack" "6.0.8" - ajv "~6.4.0" - autoprefixer "^8.4.1" - cache-loader "^1.2.2" - chalk "~2.2.2" - circular-dependency-plugin "^5.0.2" - clean-css "^4.1.11" - copy-webpack-plugin "^4.5.1" - file-loader "^1.1.11" - glob "^7.0.3" - html-webpack-plugin "^3.0.6" - istanbul "^0.4.5" - istanbul-instrumenter-loader "^3.0.1" - karma-source-map-support "^1.2.0" - less "^3.0.4" - less-loader "^4.1.0" - license-webpack-plugin "^1.3.1" - lodash "^4.17.4" - memory-fs "^0.4.1" - mini-css-extract-plugin "~0.4.0" - minimatch "^3.0.4" - opn "^5.1.0" - parse5 "^4.0.0" - portfinder "^1.0.13" - postcss "^6.0.22" - postcss-import "^11.1.0" - postcss-loader "^2.1.5" - postcss-url "^7.3.2" - raw-loader "^0.5.1" - resolve "^1.5.0" - rxjs "^6.0.0" - sass-loader "^7.0.1" - silent-error "^1.1.0" - source-map-support "^0.5.0" - stats-webpack-plugin "^0.6.2" - style-loader "^0.21.0" - stylus "^0.54.5" - stylus-loader "^3.0.2" - tree-kill "^1.2.0" - uglifyjs-webpack-plugin "^1.2.5" - url-loader "^1.0.1" - webpack "~4.8.1" - webpack-dev-middleware "^3.1.3" - webpack-dev-server "^3.1.4" - webpack-merge "^4.1.2" - webpack-sources "^1.1.0" - webpack-subresource-integrity "^1.1.0-rc.4" - optionalDependencies: - node-sass "^4.9.0" - -"@angular-devkit/build-optimizer@0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz#9e18a4f447290d3a8e32df1110aac8b98b80dec2" - dependencies: - loader-utils "^1.1.0" - source-map "^0.5.6" - typescript "~2.9.1" - webpack-sources "^1.1.0" - -"@angular-devkit/core@0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.6.8.tgz#3b09d97bd2588f0091df11921f7ed772431806aa" - dependencies: - ajv "~6.4.0" - chokidar "^2.0.3" - rxjs "^6.0.0" - source-map "^0.5.6" - -"@angular-devkit/core@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.7.1.tgz#a8c2ef8cca34d6918ebe618317fee5b0ec84a1e9" - dependencies: - ajv "~6.4.0" - chokidar "^2.0.3" - rxjs "^6.0.0" - source-map "^0.5.6" - -"@angular-devkit/schematics@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.7.1.tgz#4b805c66e38f09553ee953e4c81f993432a582fe" - dependencies: - "@angular-devkit/core" "0.7.1" - rxjs "^6.0.0" - -"@angular/animations@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-6.0.9.tgz#c077b8d7542117e42365e14f0f030ea9f9a7db78" - dependencies: - tslib "^1.9.0" - -"@angular/cdk@^6.3.0": - version "6.4.2" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-6.4.2.tgz#e623cdbbe6258980b0fa93beafce0ea7c4e2c17b" - dependencies: - tslib "^1.7.1" - -"@angular/cli@^6.0.8": - version "6.1.1" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-6.1.1.tgz#a5d56ad2fbff71bead6b62d0000b1dda4099613d" - dependencies: - "@angular-devkit/architect" "0.7.1" - "@angular-devkit/core" "0.7.1" - "@angular-devkit/schematics" "0.7.1" - "@schematics/angular" "0.7.1" - "@schematics/update" "0.7.1" - opn "^5.3.0" - rxjs "^6.0.0" - semver "^5.1.0" - symbol-observable "^1.2.0" - yargs-parser "^10.0.0" - -"@angular/common@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-6.0.9.tgz#e12fc4ea74cdb9f007af1098d3573c8d5441680a" - dependencies: - tslib "^1.9.0" - -"@angular/compiler-cli@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-6.0.9.tgz#a4b48b37d8b3dd8d702e034d4f062596d048a8a2" - dependencies: - chokidar "^1.4.2" - minimist "^1.2.0" - reflect-metadata "^0.1.2" - tsickle "^0.29.0" - -"@angular/compiler@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-6.0.9.tgz#7d4fbb08f88cbef7cff78e11a9474e8df5516bee" - dependencies: - tslib "^1.9.0" - -"@angular/core@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-6.0.9.tgz#a68cc0f5ddffa535df65f3e798ba2fcd6f6eec1b" - dependencies: - tslib "^1.9.0" - -"@angular/forms@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-6.0.9.tgz#4252626875319f09e03d6b5eb61ea8d274061b8f" - dependencies: - tslib "^1.9.0" - -"@angular/http@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/http/-/http-6.0.9.tgz#199c04cc0085bbeba44b9832ba029848c376d5a9" - dependencies: - tslib "^1.9.0" - -"@angular/material@^6.3.0": - version "6.4.2" - resolved "https://registry.yarnpkg.com/@angular/material/-/material-6.4.2.tgz#f39529d56bad97f0470b886c3f30591b9d3a7d05" - dependencies: - tslib "^1.7.1" - optionalDependencies: - parse5 "^5.0.0" - -"@angular/platform-browser-dynamic@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.9.tgz#237fff728a518cc8fb89094638ff32c40d310374" - dependencies: - tslib "^1.9.0" - -"@angular/platform-browser@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-6.0.9.tgz#3f6738046eca03fffdd4558ab3ca75673b6f11d1" - dependencies: - tslib "^1.9.0" - -"@angular/platform-server@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-6.0.9.tgz#b0fcdb46761aba4523f7ee21869247148ba1e1f3" - dependencies: - domino "^2.0.1" - tslib "^1.9.0" - xhr2 "^0.1.4" - -"@angular/router@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-6.0.9.tgz#c40572031c7ff2e1dfb5279a8cb508b962a85262" - dependencies: - tslib "^1.9.0" - -"@angular/upgrade@~6.0.6": - version "6.0.9" - resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-6.0.9.tgz#d04ec65f951fbddf50a51d681b477e9a6370200e" - dependencies: - tslib "^1.9.0" - -"@babel/code-frame@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz#bd71d9b192af978df915829d39d4094456439a0c" - dependencies: - "@babel/highlight" "7.0.0-beta.51" - -"@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz#5c2154415d6c09959a71845ef519d11157e95d10" - dependencies: - "@babel/highlight" "7.0.0-rc.1" - -"@babel/generator@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" - dependencies: - "@babel/types" "7.0.0-beta.51" - jsesc "^2.5.1" - lodash "^4.17.5" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/helper-function-name@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz#21b4874a227cf99ecafcc30a90302da5a2640561" - dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.51" - "@babel/template" "7.0.0-beta.51" - "@babel/types" "7.0.0-beta.51" - -"@babel/helper-get-function-arity@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz#3281b2d045af95c172ce91b20825d85ea4676411" - dependencies: - "@babel/types" "7.0.0-beta.51" - -"@babel/helper-split-export-declaration@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz#8a6c3f66c4d265352fc077484f9f6e80a51ab978" - dependencies: - "@babel/types" "7.0.0-beta.51" - -"@babel/highlight@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.51.tgz#e8844ae25a1595ccfd42b89623b4376ca06d225d" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -"@babel/highlight@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.1.tgz#e0ca4731fa4786f7b9500421d6ff5e5a7753e81e" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -"@babel/parser@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" - -"@babel/template@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.51.tgz#9602a40aebcf357ae9677e2532ef5fc810f5fbff" - dependencies: - "@babel/code-frame" "7.0.0-beta.51" - "@babel/parser" "7.0.0-beta.51" - "@babel/types" "7.0.0-beta.51" - lodash "^4.17.5" - -"@babel/traverse@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.51.tgz#981daf2cec347a6231d3aa1d9e1803b03aaaa4a8" - dependencies: - "@babel/code-frame" "7.0.0-beta.51" - "@babel/generator" "7.0.0-beta.51" - "@babel/helper-function-name" "7.0.0-beta.51" - "@babel/helper-split-export-declaration" "7.0.0-beta.51" - "@babel/parser" "7.0.0-beta.51" - "@babel/types" "7.0.0-beta.51" - debug "^3.1.0" - globals "^11.1.0" - invariant "^2.2.0" - lodash "^4.17.5" - -"@babel/types@7.0.0-beta.51": - version "7.0.0-beta.51" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.51.tgz#d802b7b543b5836c778aa691797abf00f3d97ea9" - dependencies: - esutils "^2.0.2" - lodash "^4.17.5" - to-fast-properties "^2.0.0" - -"@hmcts/ccd-case-ui-toolkit@1.2.5": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@hmcts/ccd-case-ui-toolkit/-/ccd-case-ui-toolkit-1.2.5.tgz#d5ca9ee0b42cca676d690092970dce12261c8e7d" - dependencies: - govuk-elements-sass "^3.1.2" - karma-jasmine-html-reporter "^1.2.0" - -"@hmcts/ccpay-web-component@~1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@hmcts/ccpay-web-component/-/ccpay-web-component-1.5.0.tgz#78c8e645bbe1780c2d04c89a11a24f2c048ce1a4" - dependencies: - tslib "^1.9.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@ngtools/webpack@6.0.8": - version "6.0.8" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-6.0.8.tgz#a05bce526aee9da62bb230a95fba83fee99d0bca" - dependencies: - "@angular-devkit/core" "0.6.8" - tree-kill "^1.0.0" - webpack-sources "^1.1.0" - -"@nguniversal/express-engine@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@nguniversal/express-engine/-/express-engine-6.0.0.tgz#f8bc7b5e940afb1ffdbdcb1bb22665d440ea0b0b" - -"@nguniversal/module-map-ngfactory-loader@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@nguniversal/module-map-ngfactory-loader/-/module-map-ngfactory-loader-6.0.0.tgz#0dd26c3f1c26d17bb21b8dfc0da53d82b7f11028" - -"@nicky-lenaers/ngx-scroll-to@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@nicky-lenaers/ngx-scroll-to/-/ngx-scroll-to-1.0.0.tgz#2afdc03e5b3218bbb5e19ec69fb1e7f7c8eb83dc" - dependencies: - tslib "^1.9.0" - -"@nodelib/fs.stat@^1.0.1": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" - -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - dependencies: - any-observable "^0.3.0" - -"@schematics/angular@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.7.1.tgz#29db78d148d3260e9bb545c86a4c6bfbaed9e933" - dependencies: - "@angular-devkit/core" "0.7.1" - "@angular-devkit/schematics" "0.7.1" - typescript ">=2.6.2 <2.8" - -"@schematics/update@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.7.1.tgz#56cf82df0bf8f5a0ef75aef94b7a9bc9598d7f51" - dependencies: - "@angular-devkit/core" "0.7.1" - "@angular-devkit/schematics" "0.7.1" - npm-registry-client "^8.5.1" - rc "^1.2.8" - rxjs "^6.0.0" - semver "^5.3.0" - semver-intersect "^1.1.2" - -"@sindresorhus/is@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" - -"@types/jasmine@*", "@types/jasmine@~2.8.0": - version "2.8.8" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9" - -"@types/jasminewd2@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" - dependencies: - "@types/jasmine" "*" - -"@types/node@^6.0.46": - version "6.0.115" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.115.tgz#2ebbd6e57589484c043a25ec3b75799c32f67520" - -"@types/node@^8.0.30": - version "8.10.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.23.tgz#e5ccfdafff42af5397c29669b6d7d65f7d629a00" - -"@types/q@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" - -"@types/selenium-webdriver@^3.0.0": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.10.tgz#e98cc6f05b4b436277671c784ee2f9d05a634f9b" - -"@webassemblyjs/ast@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.3.tgz#3b3f6fced944d8660273347533e6d4d315b5934a" - dependencies: - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/wast-parser" "1.4.3" - debug "^3.1.0" - webassemblyjs "1.4.3" - -"@webassemblyjs/floating-point-hex-parser@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz#f5aee4c376a717c74264d7bacada981e7e44faad" - -"@webassemblyjs/helper-buffer@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz#0434b55958519bf503697d3824857b1dea80b729" - dependencies: - debug "^3.1.0" - -"@webassemblyjs/helper-code-frame@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz#f1349ca3e01a8e29ee2098c770773ef97af43641" - dependencies: - "@webassemblyjs/wast-printer" "1.4.3" - -"@webassemblyjs/helper-fsm@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz#65a921db48fb43e868f17b27497870bdcae22b79" - -"@webassemblyjs/helper-wasm-bytecode@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz#0e5b4b5418e33f8a26e940b7809862828c3721a5" - -"@webassemblyjs/helper-wasm-section@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz#9ceedd53a3f152c3412e072887ade668d0b1acbf" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-buffer" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/wasm-gen" "1.4.3" - debug "^3.1.0" - -"@webassemblyjs/leb128@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.3.tgz#5a5e5949dbb5adfe3ae95664d0439927ac557fb8" - dependencies: - leb "^0.3.0" - -"@webassemblyjs/validation@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.3.tgz#9e66c9b3079d7bbcf2070c1bf52a54af2a09aac9" - dependencies: - "@webassemblyjs/ast" "1.4.3" - -"@webassemblyjs/wasm-edit@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz#87febd565e0ffb5ae25f6495bb3958d17aa0a779" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-buffer" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/helper-wasm-section" "1.4.3" - "@webassemblyjs/wasm-gen" "1.4.3" - "@webassemblyjs/wasm-opt" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - "@webassemblyjs/wast-printer" "1.4.3" - debug "^3.1.0" - -"@webassemblyjs/wasm-gen@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz#8553164d0154a6be8f74d653d7ab355f73240aa4" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/leb128" "1.4.3" - -"@webassemblyjs/wasm-opt@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz#26c7a23bfb136aa405b1d3410e63408ec60894b8" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-buffer" "1.4.3" - "@webassemblyjs/wasm-gen" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - debug "^3.1.0" - -"@webassemblyjs/wasm-parser@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz#7ddd3e408f8542647ed612019cfb780830993698" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/helper-wasm-bytecode" "1.4.3" - "@webassemblyjs/leb128" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - webassemblyjs "1.4.3" - -"@webassemblyjs/wast-parser@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz#3250402e2c5ed53dbe2233c9de1fe1f9f0d51745" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/floating-point-hex-parser" "1.4.3" - "@webassemblyjs/helper-code-frame" "1.4.3" - "@webassemblyjs/helper-fsm" "1.4.3" - long "^3.2.0" - webassemblyjs "1.4.3" - -"@webassemblyjs/wast-printer@1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz#3d59aa8d0252d6814a3ef4e6d2a34c9ded3904e0" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/wast-parser" "1.4.3" - long "^3.2.0" - -"@webpack-contrib/schema-utils@^1.0.0-beta.0": - version "1.0.0-beta.0" - resolved "https://registry.yarnpkg.com/@webpack-contrib/schema-utils/-/schema-utils-1.0.0-beta.0.tgz#bf9638c9464d177b48209e84209e23bee2eb4f65" - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chalk "^2.3.2" - strip-ansi "^4.0.0" - text-table "^0.2.0" - webpack-log "^1.1.2" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -accepts@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" - -accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -acorn-dynamic-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" - dependencies: - acorn "^5.0.0" - -acorn@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" - -adm-zip@^0.4.9: - version "0.4.11" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -agent-base@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - dependencies: - es6-promisify "^5.0.0" - -ajv-keywords@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ajv@^5.0.0, ajv@^5.1.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.1.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.2.tgz#678495f9b82f7cca6be248dd92f59bff5e1f4360" - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.1" - -ajv@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" - dependencies: - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - uri-js "^3.0.2" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-align@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - dependencies: - string-width "^2.0.0" - -ansi-escapes@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - -ansi-escapes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - dependencies: - ansi-wrap "0.1.0" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - -ansi-wrap@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -app-root-path@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.1.0.tgz#98bf6599327ecea199309866e8140368fd2e646a" - -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - dependencies: - default-require-extensions "^2.0.0" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - -array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1, array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - -arraybuffer.slice@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" - -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -assertion-error-formatter@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz#6bbdffaec8e2fa9e2b0eb158bfe353132d7c0a9b" - dependencies: - diff "^3.0.0" - pad-right "^0.2.2" - repeat-string "^1.6.1" - -assertion-error@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - -ast-types@0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" - -ast-types@0.11.5: - version "0.11.5" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - -async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.4, async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - dependencies: - lodash "^4.17.10" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -atob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" - -autoprefixer@^8.4.1: - version "8.6.5" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" - dependencies: - browserslist "^3.2.8" - caniuse-lite "^1.0.30000864" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^6.0.23" - postcss-value-parser "^3.2.3" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - -aws4@^1.2.1, aws4@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" - -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-bindify-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-explode-class@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" - dependencies: - babel-helper-bindify-decorators "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -babel-plugin-syntax-class-constructor-call@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - -babel-plugin-syntax-export-extensions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-constructor-call@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" - dependencies: - babel-plugin-syntax-class-constructor-call "^6.18.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" - dependencies: - babel-helper-explode-class "^6.24.1" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-export-extensions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" - dependencies: - babel-plugin-syntax-export-extensions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-regenerator@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-es2015@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-preset-stage-1@^6.5.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" - dependencies: - babel-plugin-transform-class-constructor-call "^6.24.1" - babel-plugin-transform-export-extensions "^6.22.0" - babel-preset-stage-2 "^6.24.1" - -babel-preset-stage-2@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.24.1" - babel-plugin-transform-decorators "^6.24.1" - babel-preset-stage-3 "^6.24.1" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@^6.26.0, babel-register@^6.9.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.17.3, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -babylon@^7.0.0-beta.47: - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - dependencies: - 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" - -basic-auth@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba" - dependencies: - safe-buffer "5.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - dependencies: - tweetnacl "^0.14.3" - -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" - -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - dependencies: - callsite "1.0.0" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" - -binaryextensions@2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -blocking-proxy@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" - dependencies: - minimist "^1.2.0" - -bluebird@^3.3.0, bluebird@^3.4.1, bluebird@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" - on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" - -body-parser@^1.16.1, body-parser@^1.18.2: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boom@5.x.x: - version "5.2.0" - resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" - dependencies: - hoek "4.x.x" - -boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" - dependencies: - ansi-align "^2.0.0" - camelcase "^4.0.0" - chalk "^2.0.1" - cli-boxes "^1.0.0" - string-width "^2.0.0" - term-size "^1.2.0" - widest-line "^2.0.0" - -brace-expansion@^1.0.0, brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - dependencies: - expand-range "^0.1.0" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.0, braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - dependencies: - 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" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - dependencies: - pako "~1.0.5" - -browserslist@^3.2.8: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserstack@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.1.tgz#e2dfa66ffee940ebad0a07f7e00fd4687c455d66" - dependencies: - https-proxy-agent "^2.2.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.0.0, builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - dependencies: - 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" - -cache-loader@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5" - dependencies: - loader-utils "^1.1.0" - mkdirp "^0.5.1" - neo-async "^2.5.0" - schema-utils "^0.4.2" - -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -camelcase@^4.0.0, camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864: - version "1.0.30000865" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000865.tgz#70026616e8afe6e1442f8bb4e1092987d81a2f25" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chai-as-promised@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" - dependencies: - check-error "^1.0.2" - -chai-like@^0.2.14: - version "0.2.14" - resolved "https://registry.yarnpkg.com/chai-like/-/chai-like-0.2.14.tgz#8d19101aa2071550c3eac2804b9ef6faf626cb46" - -chai@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c" - dependencies: - assertion-error "^1.0.1" - check-error "^1.0.1" - deep-eql "^3.0.0" - get-func-name "^2.0.0" - pathval "^1.0.0" - type-detect "^4.0.0" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -chalk@~2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - -check-error@^1.0.1, check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - -chokidar@^1.4.1, chokidar@^1.4.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - dependencies: - anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" - glob-parent "^3.1.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - -chrome-trace-event@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084" - -ci-info@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-dependency-plugin@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - -circular-json@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.5.tgz#64182ef359042d37cd8e767fc9de878b1e9447d3" - -class-transformer@^0.1.8: - version "0.1.9" - resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.1.9.tgz#29977c528233ca014e6fd9523327ebd31d11ca54" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.1.x, clean-css@^4.1.11: - version "4.1.11" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" - dependencies: - source-map "0.5.x" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-spinners@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" - -cli-table2@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/cli-table2/-/cli-table2-0.2.0.tgz#2d1ef7f218a0e786e214540562d4bd177fe32d97" - dependencies: - lodash "^3.10.1" - string-width "^1.0.1" - optionalDependencies: - colors "^1.1.2" - -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - dependencies: - colors "1.0.3" - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -clipboard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.1.tgz#a12481e1c13d8a50f5f036b0560fe5d16d74e46a" - dependencies: - good-listener "^1.2.2" - select "^1.1.2" - tiny-emitter "^2.0.0" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - -clone-deep@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" - dependencies: - for-own "^1.0.0" - is-plain-object "^2.0.4" - kind-of "^6.0.0" - shallow-clone "^1.0.0" - -clone-response@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - dependencies: - mimic-response "^1.0.0" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - -clone@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - -cloneable-readable@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -codelyzer@^4.1.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.4.2.tgz#af11fed6ddf9362ed5b174495467fb7315306fb1" - dependencies: - app-root-path "^2.0.1" - css-selector-tokenizer "^0.7.0" - cssauron "^1.4.0" - semver-dsl "^1.0.1" - source-map "^0.5.7" - sprintf-js "^1.1.1" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" - dependencies: - color-name "1.1.1" - -color-name@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" - -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - -colors@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -colors@^1.1.0, colors@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d" - -combine-lists@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" - dependencies: - lodash "^4.5.0" - -combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" - dependencies: - delayed-stream "~1.0.0" - -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - -commander@2.16.x, commander@^2.12.1, commander@~2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" - -commander@^2.9.0: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - -commander@~2.14.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -compare-versions@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" - -component-emitter@1.2.1, component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - -compressible@~2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7" - dependencies: - mime-db ">= 1.34.0 < 2" - -compression@^1.5.2, compression@^1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.14" - debug "2.6.9" - on-headers "~1.0.1" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@1.6.2, concat-stream@^1.5.0, concat-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - -connect-history-api-fallback@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" - -connect-pause@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/connect-pause/-/connect-pause-0.1.1.tgz#b269b2bb82ddb1ac3db5099c0fb582aba99fb37a" - -connect@^3.6.0: - version "3.6.6" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" - dependencies: - debug "2.6.9" - finalhandler "1.1.0" - parseurl "~1.3.2" - utils-merge "1.0.1" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -convert-source-map@^1.5.0, convert-source-map@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - dependencies: - 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" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - -copy-webpack-plugin@^4.5.1: - version "4.5.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - globby "^7.1.1" - is-glob "^4.0.0" - loader-utils "^1.1.0" - minimatch "^3.0.4" - p-limit "^1.0.0" - serialize-javascript "^1.4.0" - -core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - -core-js@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cors@^2.8.4: - version "2.8.4" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - -css-parse@1.7.x: - version "1.7.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-selector-tokenizer@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-what@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - -cssauron@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" - dependencies: - through X.X.X - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - -cucumber-expressions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-3.0.0.tgz#4cf424813dae396cc9dab714b8104b459befc32c" - -cucumber-tag-expressions@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz#7f5c7b70009bc2b666591bfe64854578bedee85a" - -cucumber@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-2.3.1.tgz#3791a51ffd0c61462ad57fdb8ed111d55b51cde3" - dependencies: - assertion-error-formatter "^2.0.0" - babel-runtime "^6.11.6" - bluebird "^3.4.1" - cli-table "^0.3.1" - colors "^1.1.2" - commander "^2.9.0" - cucumber-expressions "^3.0.0" - cucumber-tag-expressions "^1.0.0" - duration "^0.2.0" - figures "2.0.0" - gherkin "^4.1.0" - glob "^7.0.0" - indent-string "^3.1.0" - is-generator "^1.0.2" - is-stream "^1.1.0" - lodash "^4.0.0" - mz "^2.4.0" - progress "^2.0.0" - resolve "^1.3.3" - stack-chain "^1.3.5" - stacktrace-js "^2.0.0" - string-argv "0.0.2" - upper-case-first "^1.1.2" - util-arity "^1.0.2" - verror "^1.9.0" - -cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - -cvss@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cvss/-/cvss-1.0.3.tgz#70df9c4a4e07fdb9341f27a2847a21df25c3a83a" - -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -d@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" - dependencies: - es5-ext "~0.10.2" - -dargs@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-fns@^1.27.2: - version "1.29.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -dateformat@^1.0.11, dateformat@^1.0.6: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -dateformat@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - -debug@*, debug@3.1.0, debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -debug@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - dependencies: - mimic-response "^1.0.0" - -deep-eql@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - dependencies: - type-detect "^4.0.0" - -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - dependencies: - strip-bom "^3.0.0" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegate@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -depd@~1.1.1, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-conflict@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -detect-node@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@3.5.0, diff@^3.0.0, diff@^3.1.0, diff@^3.2.0, diff@^3.3.1, diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - dependencies: - buffer-indexof "^1.0.0" - -dom-converter@~0.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - dependencies: - utila "~0.3" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dom-serializer@0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - -domelementtype@1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - dependencies: - domelementtype "1" - -domino@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/domino/-/domino-2.0.3.tgz#729fc28e0a54249ba5aaf95d2a35750d12201b01" - -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - dependencies: - is-obj "^1.0.0" - -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -duration@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.0.tgz#5f9c4dfaafff655de986112efe25c5978dd85146" - dependencies: - d "~0.1.1" - es5-ext "~0.10.2" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -editions@^1.3.3: - version "1.3.4" - resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -ejs@^2.5.7, ejs@^2.5.9: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" - -electron-to-chromium@^1.3.47: - version "1.3.52" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz#d2d9f1270ba4a3b967b831c40ef71fb4d9ab5ce0" - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.1, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - dependencies: - once "^1.4.0" - -engine.io-client@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.2" - has-cors "1.1.0" - indexof "0.0.1" - parsejson "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - ws "1.1.2" - xmlhttprequest-ssl "1.5.3" - yeast "0.1.2" - -engine.io-parser@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary "0.1.7" - wtf-8 "1.0.0" - -engine.io@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" - dependencies: - accepts "1.3.3" - base64id "1.0.0" - cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.2" - ws "1.1.2" - -enhanced-resolve@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - -envinfo@^5.7.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.10.0.tgz#503a9774ae15b93ea68bdfae2ccd6306624ea6df" - -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" - dependencies: - stackframe "^1.0.4" - -error@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" - dependencies: - string-template "~0.2.1" - xtend "~4.0.0" - -errorhandler@^1.2.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.0.tgz#eaba64ca5d542a311ac945f582defc336165d9f4" - dependencies: - accepts "~1.3.3" - escape-html "~1.0.3" - -es-abstract@^1.5.1, es-abstract@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: - version "0.10.45" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "1" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-promise@^4.0.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" - -es6-promise@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - dependencies: - es6-promise "^4.0.3" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -eslint-scope@^3.7.1: - version "3.7.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - -esprima@^4.0.0, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - dependencies: - estraverse "^4.1.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - dependencies: - original ">=0.0.5" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - dependencies: - 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" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - dependencies: - homedir-polyfill "^1.0.1" - -expect@^23.0.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^23.5.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.5.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - -express-urlrewrite@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/express-urlrewrite/-/express-urlrewrite-1.2.0.tgz#8e667b7761ff1c7ffdb0efa05d64035387c823eb" - dependencies: - debug "*" - path-to-regexp "^1.0.3" - -express@^4.16.2: - version "4.16.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.2" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.1.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.3" - qs "6.5.1" - range-parser "~1.2.0" - safe-buffer "5.1.1" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - -external-editor@^2.0.4, external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - dependencies: - 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" - -extract-zip@^1.6.5, extract-zip@^1.6.6: - version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - dependencies: - concat-stream "1.6.2" - debug "2.6.9" - mkdirp "0.5.1" - yauzl "2.4.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - -fancy-log@^1.1.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - time-stamp "^1.0.0" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - -fast-glob@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf" - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.0.1" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.1" - micromatch "^3.1.10" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fastparse@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - dependencies: - websocket-driver ">=0.5.1" - -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - dependencies: - pend "~1.2.0" - -figures@2.0.0, figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-loader@^1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.4.5" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fileset@0.2.x: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067" - dependencies: - glob "5.x" - minimatch "2.x" - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" - dependencies: - debug "2.6.9" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.3.1" - unpipe "~1.0.0" - -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - dependencies: - readable-stream "^2.0.2" - -flow-parser@^0.*: - version "0.76.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.76.0.tgz#f7d4c4d26df74805c3a0babd5d8ea4c2cd57190b" - -flush-write-stream@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.4" - -follow-redirects@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291" - dependencies: - debug "^3.1.0" - -font-awesome@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" - -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" - dependencies: - asynckit "^0.4.0" - combined-stream "1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - -from2@^2.1.0, from2@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - dependencies: - null-check "^1.0.0" - -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^3.0.0" - universalify "^0.1.0" - -fs-extra@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - dependencies: - minipass "^2.2.1" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0, fsevents@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -fstream@^1.0.0, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - 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" - -gaze@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" - dependencies: - globule "^1.0.0" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@3.0.0, get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -gh-got@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" - dependencies: - got "^7.0.0" - is-plain-obj "^1.1.0" - -gherkin@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-4.1.3.tgz#11687db93976df97633125a6b2228a1a4bfdfa24" - -github-username@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" - dependencies: - gh-got "^6.0.0" - -glob-all@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" - dependencies: - glob "^7.0.5" - yargs "~1.2.6" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - -glob@5.x, glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.0.x: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - dependencies: - ini "^1.3.4" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -globals@^11.1.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - dependencies: - glob "~7.1.1" - lodash "~4.17.10" - minimatch "~3.0.2" - -glogg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" - dependencies: - sparkles "^1.0.0" - -good-listener@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" - dependencies: - delegate "^3.1.2" - -got@^6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - -got@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -got@^8.3.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" - dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - -govuk-elements-sass@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/govuk-elements-sass/-/govuk-elements-sass-3.1.3.tgz#ceba688ca7cb7ab64b1427d9e1d44ede4a464712" - dependencies: - govuk_frontend_toolkit "^7.1.0" - -govuk_frontend_toolkit@^7.1.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/govuk_frontend_toolkit/-/govuk_frontend_toolkit-7.6.0.tgz#b09a60631afbba4bfac76a8b7c02e72419c29cf5" - -govuk_template_mustache@^0.23.0: - version "0.23.3" - resolved "https://registry.yarnpkg.com/govuk_template_mustache/-/govuk_template_mustache-0.23.3.tgz#d923f564932649f03dcf38ea9d866c0effc62544" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -grouped-queue@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" - dependencies: - lodash "^4.17.2" - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - -gulp-util@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^1.0.11" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - dependencies: - glogg "^1.0.0" - -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - -handlebars@^4.0.1, handlebars@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" - dependencies: - ajv "^5.1.0" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-binary@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" - dependencies: - isarray "0.0.1" - -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - dependencies: - has-symbol-support-x "^1.4.1" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasha@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" - dependencies: - is-stream "^1.0.1" - pinkie-promise "^2.0.0" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -he@1.1.1, he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoek@4.x.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - -html-minifier@^3.2.3: - version "3.5.19" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.19.tgz#ed53c4b7326fe507bc3a1adbcc3bbb56660a2ebd" - dependencies: - camel-case "3.0.x" - clean-css "4.1.x" - commander "2.16.x" - he "1.1.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" - -html-webpack-plugin@^3.0.6: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" - -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - -http-errors@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.4.0: - version "0.4.13" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" - -http-proxy-middleware@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" - dependencies: - http-proxy "^1.16.2" - is-glob "^4.0.0" - lodash "^4.17.5" - micromatch "^3.1.9" - -http-proxy@^1.13.0, http-proxy@^1.16.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - -https-proxy-agent@^2.1.0, https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -iconv-lite@0.4.23, iconv-lite@^0.4.17, iconv-lite@^0.4.4: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.4: - version "1.1.12" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - dependencies: - minimatch "^3.0.4" - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - dependencies: - import-from "^2.1.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - dependencies: - resolve-from "^3.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indent-string@^3.0.0, indent-string@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@^1.3.4, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -inquirer@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -internal-ip@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" - dependencies: - meow "^3.3.0" - -interpret@^1.0.0, interpret@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" - dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" - -invariant@^2.2.0, invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - -ipaddr.js@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - -is-ci@^1.0.10: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" - dependencies: - ci-info "^1.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-generator@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - dependencies: - path-is-inside "^1.0.1" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-scoped@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" - dependencies: - scoped-regex "^1.0.0" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isbinaryfile@^3.0.0, isbinaryfile@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul-api@^1.3.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.6.tgz#0c695f17e533131de8c49e0657175dcfd8af8a8f" - dependencies: - async "^2.1.4" - compare-versions "^3.1.0" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-hook "^1.2.0" - istanbul-lib-instrument "^2.1.0" - istanbul-lib-report "^1.1.4" - istanbul-lib-source-maps "^1.2.5" - istanbul-reports "^1.4.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-instrumenter-loader@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949" - dependencies: - convert-source-map "^1.5.0" - istanbul-lib-instrument "^1.7.3" - loader-utils "^1.1.0" - schema-utils "^0.3.0" - -istanbul-lib-coverage@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" - -istanbul-lib-coverage@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" - -istanbul-lib-hook@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" - dependencies: - append-transform "^1.0.0" - -istanbul-lib-instrument@^1.7.3: - version "1.10.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.0" - semver "^5.3.0" - -istanbul-lib-instrument@^2.1.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz#b287cbae2b5f65f3567b05e2e29b275eaf92d25e" - dependencies: - "@babel/generator" "7.0.0-beta.51" - "@babel/parser" "7.0.0-beta.51" - "@babel/template" "7.0.0-beta.51" - "@babel/traverse" "7.0.0-beta.51" - "@babel/types" "7.0.0-beta.51" - istanbul-lib-coverage "^2.0.1" - semver "^5.5.0" - -istanbul-lib-report@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" - dependencies: - istanbul-lib-coverage "^1.2.0" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.0" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.0.tgz#c6c2867fa65f59eb7dcedb7f845dfc76aaee70f9" - dependencies: - handlebars "^4.0.11" - -istanbul@0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.3.tgz#5b714ee0ae493ac5ef204b99f3872bceef73d53a" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - fileset "0.2.x" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -istanbul@^0.4.0, istanbul@^0.4.3, istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -istextorbinary@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" - dependencies: - binaryextensions "2" - editions "^1.3.3" - textextensions "2" - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -jasmine-core@~2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - -jasmine-spec-reporter@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" - dependencies: - colors "1.1.2" - -jasmine@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - dependencies: - exit "^0.1.2" - glob "^7.0.6" - jasmine-core "~2.8.0" - -jasminewd2@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" - -jest-diff@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba" - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.5.0" - -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - -jest-matcher-utils@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a" - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.5.0" - -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" - -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" - -jju@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - -js-base64@^2.1.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.8.tgz#57a9b130888f956834aa40c5b165ba59c758f033" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - -js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.9.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jscodeshift@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" - dependencies: - async "^1.5.0" - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-preset-es2015 "^6.9.0" - babel-preset-stage-1 "^6.5.0" - babel-register "^6.9.0" - babylon "^6.17.3" - colors "^1.1.2" - flow-parser "^0.*" - lodash "^4.13.1" - micromatch "^2.3.7" - node-dir "0.1.8" - nomnom "^1.8.1" - recast "^0.12.5" - temp "^0.8.1" - write-file-atomic "^1.2.0" - -jscodeshift@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.1.tgz#4af6a721648be8638ae1464a190342da52960c33" - dependencies: - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-preset-es2015 "^6.9.0" - babel-preset-stage-1 "^6.5.0" - babel-register "^6.9.0" - babylon "^7.0.0-beta.47" - colors "^1.1.2" - flow-parser "^0.*" - lodash "^4.13.1" - micromatch "^2.3.7" - neo-async "^2.5.0" - node-dir "0.1.8" - nomnom "^1.8.1" - recast "^0.15.0" - temp "^0.8.1" - write-file-atomic "^1.2.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - -json-parse-helpfulerror@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" - dependencies: - jju "^1.1.0" - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-server@^0.12.1: - version "0.12.2" - resolved "https://registry.yarnpkg.com/json-server/-/json-server-0.12.2.tgz#2ae4de8de432e279f3374cc9f3882e49e29b35a0" - dependencies: - body-parser "^1.18.2" - chalk "^2.3.0" - compression "^1.7.1" - connect-pause "^0.1.0" - cors "^2.8.4" - errorhandler "^1.2.0" - express "^4.16.2" - express-urlrewrite "^1.2.0" - json-parse-helpfulerror "^1.0.3" - lodash "^4.11.2" - lodash-id "^0.14.0" - lowdb "^0.15.0" - method-override "^2.3.10" - morgan "^1.9.0" - nanoid "^1.0.1" - object-assign "^4.0.1" - please-upgrade-node "^3.0.2" - pluralize "^7.0.0" - request "^2.83.0" - server-destroy "^1.0.1" - update-notifier "^2.3.0" - yargs "^10.0.3" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2, json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jszip@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" - dependencies: - core-js "~2.3.0" - es6-promise "~3.0.2" - lie "~3.1.0" - pako "~1.0.2" - readable-stream "~2.0.6" - -karma-chrome-launcher@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-cli@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960" - dependencies: - resolve "^1.1.6" - -karma-coverage-istanbul-reporter@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.1.tgz#26b969317d191c6a897c783b4ffe7831cb92e684" - dependencies: - istanbul-api "^1.3.1" - minimatch "^3.0.4" - -karma-coverage@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" - dependencies: - dateformat "^1.0.6" - istanbul "^0.4.0" - lodash "^4.17.0" - minimatch "^3.0.0" - source-map "^0.5.1" - -karma-jasmine-html-reporter@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c" - dependencies: - karma-jasmine "^1.0.2" - -karma-jasmine-html-reporter@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.3.1.tgz#17db92e76ecbce97b281c97c9ac3d8b1723848f9" - -karma-jasmine@^1.0.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3" - -karma-mocha-reporter@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - strip-ansi "^4.0.0" - -karma-phantomjs-launcher@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" - dependencies: - lodash "^4.0.1" - phantomjs-prebuilt "^2.1.7" - -karma-remap-istanbul@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/karma-remap-istanbul/-/karma-remap-istanbul-0.2.1.tgz#04ce35ae4bfa7c710d37afe910d9cc11b5e5d7cf" - dependencies: - istanbul "^0.4.3" - remap-istanbul "^0.6.4" - -karma-source-map-support@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz#36dd4d8ca154b62ace95696236fae37caf0a7dde" - dependencies: - source-map-support "^0.5.5" - -karma@^1.3.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.1.tgz#85cc08e9e0a22d7ce9cca37c4a1be824f6a2b1ae" - dependencies: - bluebird "^3.3.0" - body-parser "^1.16.1" - chokidar "^1.4.1" - colors "^1.1.0" - combine-lists "^1.0.0" - connect "^3.6.0" - core-js "^2.2.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.1.1" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^3.8.0" - log4js "^0.6.31" - mime "^1.3.4" - minimatch "^3.0.2" - optimist "^0.6.1" - qjobs "^1.1.4" - range-parser "^1.2.0" - rimraf "^2.6.0" - safe-buffer "^5.0.1" - socket.io "1.7.3" - source-map "^0.5.3" - tmp "0.0.31" - useragent "^2.1.12" - -kew@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" - -keyv@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" - dependencies: - json-buffer "3.0.0" - -killable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - -klaw-sync@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-2.1.0.tgz#3d3bcd8600e7bfdef53231c739ff053aed560e44" - optionalDependencies: - graceful-fs "^4.1.11" - -klaw-sync@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-3.0.2.tgz#bf3a5ca463af5aec007201dbe8be7088ef29d067" - dependencies: - graceful-fs "^4.1.11" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -latest-version@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - dependencies: - package-json "^4.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -leb@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/leb/-/leb-0.3.0.tgz#32bee9fad168328d6aea8522d833f4180eed1da3" - -less-loader@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" - dependencies: - clone "^2.1.1" - loader-utils "^1.1.0" - pify "^3.0.0" - -less@^3.0.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/less/-/less-3.8.0.tgz#44785e40c23841c15ba3be741d36bd2775dd0596" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - mime "^1.4.1" - mkdirp "^0.5.0" - promise "^7.1.1" - request "^2.83.0" - source-map "~0.6.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -license-webpack-plugin@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.3.1.tgz#688b76472188ef597918b7cae3eec7dc2fa5a0e8" - dependencies: - ejs "^2.5.7" - -lie@~3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - dependencies: - immediate "~3.0.5" - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - -listr-update-renderer@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" - dependencies: - chalk "^1.1.3" - cli-cursor "^1.0.2" - date-fns "^1.27.2" - figures "^1.7.0" - -listr@^0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.1.tgz#8a7afa4a7135cee4c921d128e0b7dfc6e522d43d" - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - cli-truncate "^0.2.1" - figures "^1.7.0" - indent-string "^2.1.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.4.0" - listr-verbose-renderer "^0.4.0" - log-symbols "^1.0.2" - log-update "^1.0.2" - ora "^0.2.3" - p-map "^1.1.1" - rxjs "^6.1.0" - strip-ansi "^3.0.1" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash-id@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/lodash-id/-/lodash-id-0.14.0.tgz#baf48934e543a1b5d6346f8c84698b1a8c803896" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - -lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - dependencies: - lodash._root "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.mergewith@^4.6.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - -lodash@4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - -lodash@^3.10.1, lodash@^3.8.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - dependencies: - chalk "^1.0.0" - -log-symbols@^2.1.0, log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" - -log4js@^0.6.31: - version "0.6.38" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" - dependencies: - readable-stream "~1.0.2" - semver "~4.3.3" - -loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - -loglevelnext@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - -long@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loud-rejection@^1.0.0, loud-rejection@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lowdb@^0.15.0: - version "0.15.5" - resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-0.15.5.tgz#9ade105df8aa573692d1221622b85414fbf4fa96" - dependencies: - graceful-fs "^4.1.3" - is-promise "^2.1.0" - json-parse-helpfulerror "^1.0.3" - lodash "4" - steno "^0.4.1" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -lowercase-keys@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - -lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-dir@^1.0.0, make-dir@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - dependencies: - pify "^3.0.0" - -make-error@^1.1.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - dependencies: - object-visit "^1.0.0" - -marked@^0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" - -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - -md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem-fs-editor@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz#d282a0c4e0d796e9eff9d75661f25f68f389af53" - dependencies: - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^2.5.9" - glob "^7.0.3" - globby "^7.1.1" - isbinaryfile "^3.0.2" - mkdirp "^0.5.0" - multimatch "^2.0.0" - rimraf "^2.2.8" - through2 "^2.0.0" - vinyl "^2.0.1" - -mem-fs@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" - dependencies: - through2 "^2.0.0" - vinyl "^1.1.0" - vinyl-file "^2.0.0" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0, meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - 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" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - -merge2@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" - -method-override@^2.3.10: - version "2.3.10" - resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.3.10.tgz#e3daf8d5dee10dd2dce7d4ae88d62bbee77476b4" - dependencies: - debug "2.6.9" - methods "~1.1.2" - parseurl "~1.3.2" - vary "~1.1.2" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - dependencies: - 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" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -"mime-db@>= 1.34.0 < 2", mime-db@~1.35.0: - version "1.35.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" - -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: - version "2.1.19" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" - dependencies: - mime-db "~1.35.0" - -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - -mime@^1.3.4, mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - -mime@^2.0.3, mime@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - -mini-css-extract-plugin@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.1.tgz#d2bcf77bb2596b8e4bd9257e43d3f9164c2e86cb" - dependencies: - "@webpack-contrib/schema-utils" "^1.0.0-beta.0" - loader-utils "^1.1.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimatch@2.x: - version "2.0.10" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" - dependencies: - brace-expansion "^1.0.0" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" - -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - dependencies: - minipass "^2.2.1" - -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - dependencies: - 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 "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mkdirp@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" - -mocha@^5.0.5: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" - dependencies: - browser-stdout "1.3.1" - commander "2.15.1" - debug "3.1.0" - diff "3.5.0" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.5" - he "1.1.1" - minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "5.4.0" - -moment@^2.20.1: - version "2.22.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" - -morgan@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051" - dependencies: - basic-auth "~2.0.0" - debug "2.6.9" - depd "~1.1.1" - on-finished "~2.3.0" - on-headers "~1.0.1" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - dependencies: - 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" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -multidep@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/multidep/-/multidep-2.0.2.tgz#ffa2b97791bc4c879267dc3f7324c207b2decc67" - dependencies: - rimraf "^2.4.3" - rsvp "^3.1.0" - spawn-cmd "0.0.2" - -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -mz@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.10.0, nan@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - -nanoid@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-1.1.0.tgz#b18e806e1cdbfdbe030374d5cf08a48cbc80b474" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - dependencies: - 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" - -needle@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -neo-async@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" - -next-tick@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - -ng2-mock-component@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ng2-mock-component/-/ng2-mock-component-0.1.1.tgz#5980e8887523754f855febc0c11f6c20f016d865" - -ngx-device-detector@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ngx-device-detector/-/ngx-device-detector-1.3.0.tgz#df36e034572ee4b3e68dda26f2c57c67f0280f2d" - -ngx-md@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ngx-md/-/ngx-md-6.0.0.tgz#67c9a1ac49f4608d43d5b309d8d7ecc8ae7a6898" - dependencies: - marked "^0.3.19" - prismjs "^1.14.0" - tslib "^1.9.0" - -ngx-pagination@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/ngx-pagination/-/ngx-pagination-3.1.1.tgz#fcde5cb5fd4a1bd6aa785ff062a55f3deefcd3ac" - -nice-try@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - dependencies: - lower-case "^1.1.1" - -node-dir@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" - -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - -node-gyp@^3.3.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.7.0.tgz#789478e8f6c45e277aa014f3e28f958f286f9203" - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request ">=2.9.0 <2.82.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - -node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-sass@^4.9.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.2.tgz#5e63fe6bd0f2ae3ac9d6c14ede8620e2b8bdb437" - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.clonedeep "^4.3.2" - lodash.mergewith "^4.6.0" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.10.0" - node-gyp "^3.3.1" - npmlog "^4.0.0" - request "2.87.0" - sass-graph "^2.2.4" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - -nodesecurity-npm-utils@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/nodesecurity-npm-utils/-/nodesecurity-npm-utils-6.0.0.tgz#5fb5974008c0c97a5c01844faa8fd3fc5520806c" - -nomnom@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - -"nopt@2 || 3", nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - -normalize-url@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - -npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" - -"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - dependencies: - hosted-git-info "^2.6.0" - osenv "^0.1.5" - semver "^5.5.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npm-registry-client@^8.5.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" - dependencies: - concat-stream "^1.5.2" - graceful-fs "^4.1.6" - normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - once "^1.3.3" - request "^2.74.0" - retry "^0.10.0" - safe-buffer "^5.1.1" - semver "2 >=2.2.1 || 3.x || 4 || 5" - slide "^1.1.3" - ssri "^5.2.4" - optionalDependencies: - npmlog "2 || ^3.1.0 || ^4.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nsp@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/nsp/-/nsp-3.2.1.tgz#0f540f8e85851e4ad370b14d5001098046dedfd1" - dependencies: - chalk "^2.1.0" - cli-table2 "^0.2.0" - cvss "^1.0.2" - https-proxy-agent "^2.1.0" - inquirer "^3.3.0" - nodesecurity-npm-utils "^6.0.0" - semver "^5.4.1" - wreck "^12.5.1" - yargs "^9.0.1" - -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - dependencies: - boolbase "~1.0.0" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.8.1, oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-keys@^1.0.11, object-keys@^1.0.8: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -opn@^5.1.0, opn@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - dependencies: - is-wsl "^1.1.0" - -optimist@^0.6.1, optimist@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - -ora@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" - dependencies: - chalk "^1.1.1" - cli-cursor "^1.0.2" - cli-spinners "^0.1.2" - object-assign "^4.0.1" - -original@>=0.0.5: - version "1.0.1" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190" - dependencies: - url-parse "~1.4.0" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@0, osenv@^0.1.4, osenv@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" - -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - dependencies: - p-reduce "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - -p-lazy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" - -p-limit@^1.0.0, p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - dependencies: - p-try "^1.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - dependencies: - p-finally "^1.0.0" - -p-timeout@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - -package-json@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - dependencies: - got "^6.7.1" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pad-right@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" - dependencies: - repeat-string "^1.5.2" - -pako@~1.0.2, pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - -parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - -parse5@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - -parse5@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.0.0.tgz#4d02710d44f3c3846197a11e205d4ef17842b81a" - -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - -path-to-regexp@^1.0.3: - version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - dependencies: - isarray "0.0.1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - dependencies: - pify "^3.0.0" - -pathval@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - -pbkdf2@^3.0.3: - version "3.0.16" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - -phantomjs-prebuilt@^2.1.16, phantomjs-prebuilt@^2.1.7: - version "2.1.16" - resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef" - dependencies: - es6-promise "^4.0.3" - extract-zip "^1.6.5" - fs-extra "^1.0.0" - hasha "^2.2.0" - kew "^0.7.0" - progress "^1.1.8" - request "^2.81.0" - request-progress "^2.0.1" - which "^1.2.10" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - -please-upgrade-node@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - dependencies: - semver-compare "^1.0.0" - -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - -portfinder@^1.0.13, portfinder@^1.0.9: - version "1.0.13" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - -postcss-import@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0" - dependencies: - postcss "^6.0.1" - postcss-value-parser "^3.2.3" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-load-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" - dependencies: - cosmiconfig "^4.0.0" - import-cwd "^2.0.0" - -postcss-loader@^2.1.5: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" - dependencies: - loader-utils "^1.1.0" - postcss "^6.0.0" - postcss-load-config "^2.0.0" - schema-utils "^0.4.0" - -postcss-url@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.2.tgz#5fea273807fb84b38c461c3c9a9e8abd235f7120" - dependencies: - mime "^1.4.1" - minimatch "^3.0.4" - mkdirp "^0.5.0" - postcss "^6.0.1" - xxhashjs "^0.2.1" - -postcss-value-parser@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - -postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.22, postcss@^6.0.23: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -prettier@^1.12.1: - version "1.14.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.0.tgz#847c235522035fd988100f1f43cf20a7d24f9372" - -prettier@^1.7.4: - version "1.14.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" - -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -prismjs@^1.14.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.15.0.tgz#8801d332e472091ba8def94976c8877ad60398d9" - optionalDependencies: - clipboard "^2.0.0" - -private@^0.1.6, private@^0.1.8, private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -progress@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - dependencies: - asap "~2.0.3" - -protractor-beautiful-reporter@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/protractor-beautiful-reporter/-/protractor-beautiful-reporter-1.2.3.tgz#84a224d357703d90f2a498f691ecc62857442f93" - dependencies: - circular-json "^0.3.1" - fs-extra "^3.0.1" - klaw-sync "^2.1.0" - mkdirp "~0.3.5" - underscore "~1.6.0" - -protractor-cucumber-framework@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/protractor-cucumber-framework/-/protractor-cucumber-framework-4.2.0.tgz#e44f6d33e6c4dc103a9b4b5dc91023b474530dbe" - dependencies: - debug "^3.1.0" - glob "^7.0.3" - q "^1.4.1" - tmp "^0.0.33" - -protractor-screenshoter-plugin@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/protractor-screenshoter-plugin/-/protractor-screenshoter-plugin-0.10.1.tgz#0db218af99df381fce7254d47a2ebcaa307cf3f9" - dependencies: - circular-json "^0.5.1" - fs-extra "^5.0.0" - klaw-sync "^3.0.2" - lodash "^4.17.4" - mkdirp "^0.5.1" - moment "^2.20.1" - q "^1.5.1" - screenshoter-report-analyzer "^0.6" - uuid "^3.1.0" - -protractor@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.0.tgz#e71c9c1f5cf6c5e9bdbcdb71e7f31b17ffd2878f" - dependencies: - "@types/node" "^6.0.46" - "@types/q" "^0.0.32" - "@types/selenium-webdriver" "^3.0.0" - blocking-proxy "^1.0.0" - browserstack "^1.5.1" - chalk "^1.1.3" - glob "^7.0.3" - jasmine "2.8.0" - jasminewd2 "^2.1.0" - optimist "~0.6.0" - q "1.4.1" - saucelabs "^1.5.0" - selenium-webdriver "3.6.0" - source-map-support "~0.4.0" - webdriver-js-extender "2.0.0" - webdriver-manager "^12.0.6" - -proxy-addr@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.8.0" - -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -public-encrypt@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -pump@^2.0.0, pump@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.2.4, punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - -puppeteer@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.8.0.tgz#9e8bbd2f5448cc19cac220efc0512837104877ad" - dependencies: - debug "^3.1.0" - extract-zip "^1.6.6" - https-proxy-agent "^2.2.1" - mime "^2.0.3" - progress "^2.0.0" - proxy-from-env "^1.0.0" - rimraf "^2.6.1" - ws "^5.1.1" - -q@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - -q@^1.4.1, q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - -qjobs@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - -qs@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - -qs@6.5.2, qs@~6.5.1: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -querystringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" - -randomatic@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" - -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - -raw-loader@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" - -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - dependencies: - pify "^2.3.0" - -read-chunk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" - dependencies: - pify "^3.0.0" - safe-buffer "^5.1.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - dependencies: - 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" - -readable-stream@1.0, readable-stream@~1.0.2: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~2.0.0, readable-stream@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -recast@^0.12.5: - version "0.12.9" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" - dependencies: - ast-types "0.10.1" - core-js "^2.4.1" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -recast@^0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.3.tgz#5fc1fd1c8e2d4d027ee3977a176bbb8d1c83305e" - dependencies: - ast-types "0.11.5" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -reflect-metadata@^0.1.12, reflect-metadata@^0.1.2: - version "0.1.12" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" - -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -remap-istanbul@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.6.4.tgz#ac551eff1aa641504b4f318d0303dda61e3bb695" - dependencies: - amdefine "1.0.0" - gulp-util "3.0.7" - istanbul "0.4.3" - source-map ">=0.5.6" - through2 "2.0.1" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - dependencies: - css-select "^1.1.0" - dom-converter "~0.1" - htmlparser2 "~3.3.0" - strip-ansi "^3.0.0" - utila "~0.3" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - -request-progress@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" - dependencies: - throttleit "^1.0.0" - -request@2.87.0, request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.6.0" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" - forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.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.17" - oauth-sign "~0.8.2" - performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" - tunnel-agent "^0.6.0" - uuid "^3.1.0" - -"request@>=2.9.0 <2.82.0": - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.5.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" - dependencies: - path-parse "^1.0.5" - -responselike@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rsvp@^3.1.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - -run-async@^2.0.0, run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - dependencies: - aproba "^1.1.1" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - -rx-polling@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rx-polling/-/rx-polling-1.0.0.tgz#47914b934e8f7c934e0d016ef7eb9019c55c9d48" - -rxjs-compat@^6.0.0-rc.0: - version "6.2.2" - resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.2.2.tgz#3c0fcdb46130cc70aa55412c2b1147905ab4680a" - -rxjs@^5.5.2: - version "5.5.11" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.11.tgz#f733027ca43e3bec6b994473be4ab98ad43ced87" - dependencies: - symbol-observable "1.0.1" - -rxjs@^6.0.0, rxjs@^6.1.0, rxjs@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^7.0.0" - -sass-loader@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.0.3.tgz#6ca10871a1cc7549f8143db5a9958242c4e4ca2a" - dependencies: - clone-deep "^2.0.1" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - neo-async "^2.5.0" - pify "^3.0.0" - -saucelabs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" - dependencies: - https-proxy-agent "^2.2.1" - -sax@0.5.x: - version "0.5.8" - resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" - -sax@>=0.6.0, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - dependencies: - ajv "^5.0.0" - -schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.3, schema-utils@^0.4.4, schema-utils@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - -scoped-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" - -screenshoter-report-analyzer@^0.6: - version "0.6.0" - resolved "https://registry.yarnpkg.com/screenshoter-report-analyzer/-/screenshoter-report-analyzer-0.6.0.tgz#0a6f88d5f5d1ac16b6cf7262effba31fee48ed12" - -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - -select@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" - -selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" - dependencies: - jszip "^3.1.3" - rimraf "^2.5.4" - tmp "0.0.30" - xml2js "^0.4.17" - -selfsigned@^1.9.1: - version "1.10.3" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" - dependencies: - node-forge "0.7.5" - -semver-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -semver-dsl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" - dependencies: - semver "^5.3.0" - -semver-intersect@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.3.1.tgz#8fa84a9e1028bd239e4530d1a3e181e698d884ba" - dependencies: - semver "^5.0.0" - -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -semver@~4.3.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - -serialize-javascript@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" - -serve-index@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - -server-destroy@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shelljs@^0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -silent-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9" - dependencies: - debug "^2.2.0" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slide@^1.1.3, slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - dependencies: - 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" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -socket.io-adapter@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" - dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" - -socket.io-client@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "1.8.3" - has-binary "0.1.7" - indexof "0.0.1" - object-component "0.0.3" - parseuri "0.0.5" - socket.io-parser "2.3.1" - to-array "0.1.4" - -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" - dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" - -socket.io@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" - dependencies: - debug "2.3.3" - engine.io "1.8.3" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.7.3" - socket.io-parser "2.3.1" - -sockjs-client@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -sonar-scanner@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/sonar-scanner/-/sonar-scanner-3.1.0.tgz#51c1c1101f54b98abc5d8565209b1d9232979343" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - -source-list-map@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" - -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.4.0, source-map-support@^0.4.15, source-map-support@~0.4.0: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.0, source-map-support@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - -source-map@0.1.x: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -source-map@0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@>=0.5.6: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - -source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - -spawn-cmd@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/spawn-cmd/-/spawn-cmd-0.0.2.tgz#6d5e251fad0eab00b0f193d245669a7a228ec0de" - -spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" - -spdy-transport@^2.0.18: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" - dependencies: - debug "^2.6.8" - detect-node "^2.0.3" - hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" - -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" - http-deceiver "^1.2.7" - safe-buffer "^5.0.1" - select-hose "^2.0.0" - spdy-transport "^2.0.18" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - safer-buffer "^2.0.2" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - dependencies: - safe-buffer "^5.1.1" - -stack-chain@^1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" - -stack-generator@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.3.tgz#bb74385c67ffc4ccf3c4dee5831832d4e509c8a0" - dependencies: - stackframe "^1.0.4" - -stack-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" - -stackframe@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" - -stacktrace-gps@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz#33f8baa4467323ab2bd1816efa279942ba431ccc" - dependencies: - source-map "0.5.6" - stackframe "^1.0.4" - -stacktrace-js@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.0.tgz#776ca646a95bc6c6b2b90776536a7fc72c6ddb58" - dependencies: - error-stack-parser "^2.0.1" - stack-generator "^2.0.1" - stacktrace-gps "^3.0.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stats-webpack-plugin@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b" - dependencies: - lodash "^4.17.4" - -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - -stdout-stream@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" - dependencies: - readable-stream "^2.0.1" - -steno@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" - dependencies: - graceful-fs "^4.1.3" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - -string-argv@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" - -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.0.0, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -stringstream@~0.0.4: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" - dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -style-loader@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" - dependencies: - loader-utils "^1.1.0" - schema-utils "^0.4.5" - -stylus-loader@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" - dependencies: - loader-utils "^1.0.2" - lodash.clonedeep "^4.5.0" - when "~3.6.x" - -stylus@^0.54.5: - version "0.54.5" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" - dependencies: - css-parse "1.7.x" - debug "*" - glob "7.0.x" - mkdirp "0.5.x" - sax "0.5.x" - source-map "0.1.x" - -supports-color@5.4.0, supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.0, supports-color@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - -symbol-observable@^1.1.0, symbol-observable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - -tapable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" - -tar@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" - dependencies: - chownr "^1.0.1" - fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -temp@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - dependencies: - execa "^0.7.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -textextensions@2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - dependencies: - any-promise "^1.0.0" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - -through2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" - dependencies: - readable-stream "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through@X.X.X, through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -thunky@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - -timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - dependencies: - setimmediate "^1.0.4" - -tiny-emitter@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" - -tmp@0.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - dependencies: - os-tmpdir "~1.0.1" - -tmp@0.0.x, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - -tough-cookie@~2.3.0, tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - -tree-kill@^1.0.0, tree-kill@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -"true-case-path@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" - dependencies: - glob "^6.0.4" - -ts-loader@^4.2.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-4.4.2.tgz#778d4464b24436873c78f7f9e914d88194c2a248" - dependencies: - chalk "^2.3.0" - enhanced-resolve "^4.0.0" - loader-utils "^1.0.2" - micromatch "^3.1.4" - semver "^5.0.1" - -ts-node@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" - dependencies: - arrify "^1.0.0" - chalk "^2.0.0" - diff "^3.1.0" - make-error "^1.1.1" - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.0" - tsconfig "^6.0.0" - v8flags "^3.0.0" - yn "^2.0.0" - -tsconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" - dependencies: - strip-bom "^3.0.0" - strip-json-comments "^2.0.0" - -tsickle@^0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.29.0.tgz#812806554bb46c1aa16eb0fe2a051da95ca8f5a4" - dependencies: - minimist "^1.2.0" - mkdirp "^0.5.1" - source-map "^0.6.0" - source-map-support "^0.5.0" - -tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - -tslint@^5.0.0: - version "5.11.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" - dependencies: - babel-code-frame "^6.22.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^3.2.0" - glob "^7.1.1" - js-yaml "^3.7.0" - minimatch "^3.0.4" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.27.2" - -tsutils@^2.27.2: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-detect@^4.0.0: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - -type-is@~1.6.15, type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -typescript@2.7.2, "typescript@>=2.6.2 <2.8": - version "2.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" - -typescript@~2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" - -uglify-es@^3.3.4: - version "3.3.10" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.10.tgz#8b0b7992cebe20edc26de1bf325cef797b8f3fa5" - dependencies: - commander "~2.14.1" - source-map "~0.6.1" - -uglify-js@3.4.x: - version "3.4.6" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.6.tgz#bc546d53f3e02b05d97d0ca5a7abfe0fb0384ddb" - dependencies: - commander "~2.16.0" - source-map "~0.6.1" - -uglify-js@^2.6: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00" - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - schema-utils "^0.4.5" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - uglify-es "^3.3.4" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -unique-filename@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -untildify@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - -upath@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - -update-notifier@^2.3.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" - dependencies: - boxen "^1.2.1" - chalk "^2.0.1" - configstore "^3.0.0" - import-lazy "^2.1.0" - is-ci "^1.0.10" - is-installed-globally "^0.1.0" - is-npm "^1.0.0" - latest-version "^3.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - -upper-case-first@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" - dependencies: - upper-case "^1.1.1" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -uri-js@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" - dependencies: - punycode "^2.1.0" - -uri-js@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -url-join@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" - -url-loader@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.0.1.tgz#61bc53f1f184d7343da2728a1289ef8722ea45ee" - dependencies: - loader-utils "^1.1.0" - mime "^2.0.3" - schema-utils "^0.4.3" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.1.8, url-parse@~1.4.0: - version "1.4.3" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" - dependencies: - querystringify "^2.0.0" - requires-port "^1.0.0" - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - -useragent@^2.1.12: - version "2.3.0" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" - dependencies: - lru-cache "4.1.x" - tmp "0.0.x" - -util-arity@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - dependencies: - inherits "2.0.3" - -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - -uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - -v8-compile-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" - -v8flags@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.1.tgz#42259a1461c08397e37fe1d4f1cfb59cad85a053" - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - dependencies: - builtins "^1.0.3" - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - -verror@1.10.0, verror@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vinyl-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" - dependencies: - graceful-fs "^4.1.2" - pify "^2.3.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - strip-bom-stream "^2.0.0" - vinyl "^1.1.0" - -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - dependencies: - minimalistic-assert "^1.0.0" - -webassemblyjs@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.3.tgz#0591893efb8fbde74498251cbe4b2d83df9239cb" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/validation" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - "@webassemblyjs/wast-parser" "1.4.3" - long "^3.2.0" - -webdriver-js-extender@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz#b27fc1ed1afbf78f0ac57e4c878f31b10e57f146" - dependencies: - "@types/selenium-webdriver" "^3.0.0" - selenium-webdriver "^3.0.1" - -webdriver-manager@^12.0.6, webdriver-manager@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.0.tgz#f6601e52de5f0c97fc7024c889eeb2416f2f1d9d" - dependencies: - adm-zip "^0.4.9" - chalk "^1.1.1" - del "^2.2.0" - glob "^7.0.3" - ini "^1.3.4" - minimist "^1.2.0" - q "^1.4.1" - request "^2.87.0" - rimraf "^2.5.2" - semver "^5.3.0" - xml2js "^0.4.17" - -webpack-addons@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" - dependencies: - jscodeshift "^0.4.0" - -webpack-cli@^2.0.14: - version "2.1.5" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.5.tgz#3081fdeb2f205f0a54aa397986880b0c20a71f7a" - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - diff "^3.5.0" - enhanced-resolve "^4.0.0" - envinfo "^5.7.0" - glob-all "^3.1.0" - global-modules "^1.0.0" - got "^8.3.1" - import-local "^1.0.0" - inquirer "^5.2.0" - interpret "^1.1.0" - jscodeshift "^0.5.0" - listr "^0.14.1" - loader-utils "^1.1.0" - lodash "^4.17.10" - log-symbols "^2.2.0" - mkdirp "^0.5.1" - p-each-series "^1.0.0" - p-lazy "^1.0.0" - prettier "^1.12.1" - supports-color "^5.4.0" - v8-compile-cache "^2.0.0" - webpack-addons "^1.1.5" - yargs "^11.1.0" - yeoman-environment "^2.1.1" - yeoman-generator "^2.0.5" - -webpack-core@^0.6.8: - version "0.6.9" - resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" - dependencies: - source-list-map "~0.1.7" - source-map "~0.4.1" - -webpack-dev-middleware@3.1.3, webpack-dev-middleware@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed" - dependencies: - loud-rejection "^1.6.0" - memory-fs "~0.4.1" - mime "^2.1.0" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - url-join "^4.0.0" - webpack-log "^1.0.1" - -webpack-dev-server@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401" - dependencies: - ansi-html "0.0.7" - array-includes "^3.0.3" - bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" - debug "^3.1.0" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "~0.18.0" - import-local "^1.0.0" - internal-ip "1.2.0" - ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" - selfsigned "^1.9.1" - serve-index "^1.7.2" - sockjs "0.3.19" - sockjs-client "1.1.5" - spdy "^3.4.1" - strip-ansi "^3.0.0" - supports-color "^5.1.0" - webpack-dev-middleware "3.1.3" - webpack-log "^1.1.2" - yargs "11.0.0" - -webpack-log@^1.0.1, webpack-log@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" - dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" - -webpack-merge@^4.1.2: - version "4.1.3" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.3.tgz#8aaff2108a19c29849bc9ad2a7fd7fce68e87c4a" - dependencies: - lodash "^4.17.5" - -webpack-sources@^1.0.1, webpack-sources@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack-subresource-integrity@^1.1.0-rc.4: - version "1.1.0-rc.4" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz#c5c4e3d690f9d2f64a9550e07a8767f9796aa5d8" - dependencies: - webpack-core "^0.6.8" - -webpack@~4.8.1: - version "4.8.3" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.3.tgz#957c8e80000f9e5cc03d775e78b472d8954f4eeb" - dependencies: - "@webassemblyjs/ast" "1.4.3" - "@webassemblyjs/wasm-edit" "1.4.3" - "@webassemblyjs/wasm-parser" "1.4.3" - acorn "^5.0.0" - acorn-dynamic-import "^3.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^0.1.1" - enhanced-resolve "^4.0.0" - eslint-scope "^3.7.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^0.4.4" - tapable "^1.0.0" - uglifyjs-webpack-plugin "^1.2.4" - watchpack "^1.5.0" - webpack-sources "^1.0.1" - -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - -when@~3.6.x: - version "3.6.4" - resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@1, which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.14, which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" - dependencies: - string-width "^2.1.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -worker-farm@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -wreck@^12.5.1: - version "12.5.1" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.5.1.tgz#cd2ffce167449e1f0242ed9cf80552e20fb6902a" - dependencies: - boom "5.x.x" - hoek "4.x.x" - -write-file-atomic@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-file-atomic@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -ws@^5.1.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - dependencies: - async-limiter "~1.0.0" - -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" - -x-frame-options@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/x-frame-options/-/x-frame-options-1.0.0.tgz#ff9c1ca944b916a9bc27d6672a8b39b5b08b427f" - -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - -xhr2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" - -xml2js@^0.4.17: - version "0.4.19" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" - dependencies: - sax ">=0.6.0" - xmlbuilder "~9.0.1" - -xmlbuilder@~9.0.1: - version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" - -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -xxhashjs@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" - dependencies: - cuint "^0.2.2" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - dependencies: - camelcase "^4.1.0" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - dependencies: - camelcase "^4.1.0" - -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - dependencies: - camelcase "^4.1.0" - -yargs@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.1.0" - -yargs@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" - dependencies: - minimist "^0.1.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - dependencies: - fd-slicer "~1.0.1" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - -yeoman-environment@^2.0.5, yeoman-environment@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.3.1.tgz#1aa00cc474a8e48518ab2b0f64b43034215e9997" - dependencies: - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^3.1.0" - diff "^3.3.1" - escape-string-regexp "^1.0.2" - globby "^8.0.1" - grouped-queue "^0.3.3" - inquirer "^5.2.0" - is-scoped "^1.0.0" - lodash "^4.17.10" - log-symbols "^2.1.0" - mem-fs "^1.1.0" - strip-ansi "^4.0.0" - text-table "^0.2.0" - untildify "^3.0.2" - -yeoman-generator@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.5.tgz#57b0b3474701293cc9ec965288f3400b00887c81" - dependencies: - async "^2.6.0" - chalk "^2.3.0" - cli-table "^0.3.1" - cross-spawn "^6.0.5" - dargs "^5.1.0" - dateformat "^3.0.3" - debug "^3.1.0" - detect-conflict "^1.0.0" - error "^7.0.2" - find-up "^2.1.0" - github-username "^4.0.0" - istextorbinary "^2.2.1" - lodash "^4.17.10" - make-dir "^1.1.0" - mem-fs-editor "^4.0.0" - minimist "^1.2.0" - pretty-bytes "^4.0.2" - read-chunk "^2.1.0" - read-pkg-up "^3.0.0" - rimraf "^2.6.2" - run-async "^2.0.0" - shelljs "^0.8.0" - text-table "^0.2.0" - through2 "^2.0.0" - yeoman-environment "^2.0.5" - -yn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" - -zone.js@^0.8.26: - version "0.8.26" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d" From 15010deaf831b9d67db5534a72babd4d79c0832d Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 12:53:55 +0100 Subject: [PATCH 02/30] RDM-3203 Reimport Config. --- src/app/app.server.config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/app.server.config.ts b/src/app/app.server.config.ts index 69cbbffad..ecad64777 100644 --- a/src/app/app.server.config.ts +++ b/src/app/app.server.config.ts @@ -1,4 +1,5 @@ -import { AppConfig, Config } from './app.config'; +import { AppConfig } from './app.config'; +import { Config } from '@hmcts/ccd-case-ui-toolkit'; export class AppServerConfig extends AppConfig { constructor(config: Config) { From 9bfaab57e2969be8c79987c8ad53e429b35136c8 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 12:58:55 +0100 Subject: [PATCH 03/30] RDM-3023 Fix compilation issues. --- server.ts | 4 +--- src/app/app.module.ts | 5 ++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/server.ts b/server.ts index 9cb6b623d..dbbd74b2b 100644 --- a/server.ts +++ b/server.ts @@ -45,8 +45,6 @@ const CONFIG = { 'activity_max_request_per_batch': parseInt(process.env['CCD_ACTIVITY_MAX_REQUEST_PER_BATCH'], 10) || 25 }; -const APP_SERVER_CONFIG = new AppServerConfig(CONFIG); - // * NOTE :: leave this as require() since this file is built Dynamically from webpack const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main'); @@ -57,7 +55,7 @@ app.engine('html', ngExpressEngine({ bootstrap: AppServerModuleNgFactory, providers: [ provideModuleMap(LAZY_MODULE_MAP), - { provide: AppConfig, useValue: APP_SERVER_CONFIG }, + { provide: AppConfig, useValue: new AppServerConfig(CONFIG) }, ] })); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d12a3b444..478ad977b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -17,8 +17,7 @@ import { SharedModule } from './shared/shared.module'; import { isPlatformBrowser } from '@angular/common'; import { OAuth2RedirectModule } from './oauth2/oauth2-redirect.module'; import { AppConfigGuard } from './app.config.guard'; -import { AbstractAppConfig } from '@hmcts/ccd-case-ui-toolkit'; -import { AppServerConfig } from './app.server.config'; +import { AbstractAppConfig, Config } from '@hmcts/ccd-case-ui-toolkit'; @NgModule({ imports: [ @@ -43,7 +42,7 @@ import { AppServerConfig } from './app.server.config'; AppConfigGuard, { provide: AbstractAppConfig, - useClass: AppConfig + useValue: AppConfig } ], bootstrap: [AppComponent] From c6f77f8593f5c368339bf743778d950ee3023de0 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 14:31:04 +0100 Subject: [PATCH 04/30] RDM-3023 fix provider. --- src/app/app.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 478ad977b..d7c9afcc1 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -42,7 +42,7 @@ import { AbstractAppConfig, Config } from '@hmcts/ccd-case-ui-toolkit'; AppConfigGuard, { provide: AbstractAppConfig, - useValue: AppConfig + useClass: AppConfig } ], bootstrap: [AppComponent] From 2647390dff78b406d1a81007f9d7538a9586003d Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 14:41:25 +0100 Subject: [PATCH 05/30] RDM-3203 Remove debug logging. --- src/app/app.config.guard.ts | 6 +----- src/app/app.module.ts | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/app/app.config.guard.ts b/src/app/app.config.guard.ts index 5b4d33287..d2c47a57e 100644 --- a/src/app/app.config.guard.ts +++ b/src/app/app.config.guard.ts @@ -10,11 +10,7 @@ export class AppConfigGuard implements CanActivate { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { return this.appConfig.load() - .then(() => { - console.log('2appConfig', this.appConfig); - console.log('2abstractAppConfig', this.abstractAppConfig); - return true; - }); + .then(() => true); } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index d7c9afcc1..dc01a3396 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -17,7 +17,7 @@ import { SharedModule } from './shared/shared.module'; import { isPlatformBrowser } from '@angular/common'; import { OAuth2RedirectModule } from './oauth2/oauth2-redirect.module'; import { AppConfigGuard } from './app.config.guard'; -import { AbstractAppConfig, Config } from '@hmcts/ccd-case-ui-toolkit'; +import { AbstractAppConfig } from '@hmcts/ccd-case-ui-toolkit'; @NgModule({ imports: [ @@ -42,7 +42,7 @@ import { AbstractAppConfig, Config } from '@hmcts/ccd-case-ui-toolkit'; AppConfigGuard, { provide: AbstractAppConfig, - useClass: AppConfig + useExisting: AppConfig } ], bootstrap: [AppComponent] From 513ecf371cbafb933cb42560ef185bab8e512964 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 15:12:12 +0100 Subject: [PATCH 06/30] RDM-3023 Add missing section for drafts in header component. --- src/app/app.config.ts | 2 +- src/app/shared/header/case-header.component.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 169a3507b..d5a3c9a5e 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -29,7 +29,7 @@ export class AppConfig extends AbstractAppConfig { }) .subscribe((config: Config) => { this.config = config; - console.log('Loading app config: OK, config=', this.config); + console.log('Loading app config: OK'); resolve(); }); }); diff --git a/src/app/shared/header/case-header.component.ts b/src/app/shared/header/case-header.component.ts index 4a24b8847..c2047c66c 100644 --- a/src/app/shared/header/case-header.component.ts +++ b/src/app/shared/header/case-header.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit } from '@angular/core'; import { CaseView } from '../../core/cases/case-view.model'; -import { CaseField } from '@hmcts/ccd-case-ui-toolkit'; +import { CaseField, Draft } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-case-header', @@ -16,12 +16,16 @@ export class CaseHeaderComponent implements OnInit { ngOnInit(): void { this.caseTitle = new CaseField(); - if (this.caseDetails.state.title_display) { + if (!this.isDraft() && this.caseDetails.state.title_display) { this.caseTitle.label = this.caseDetails.state.title_display; this.caseFields = this.getCaseFields(); } } + isDraft(): boolean { + return Draft.isDraft(this.caseDetails.case_id); + } + showCaseReference(): boolean { return !this.caseTitle.label; } From e4447bdf36a4bd64d51a9e8c001c36ea05b1d1da Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 3 Oct 2018 15:59:47 +0100 Subject: [PATCH 07/30] RDM-3023 Fix compilation errors --- .../case-editor/case-edit.component.spec.ts | 16 +++------------- .../documentManagement.service.spec.ts | 4 +--- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/app/shared/case-editor/case-edit.component.spec.ts b/src/app/shared/case-editor/case-edit.component.spec.ts index a8f920082..737b0cbcb 100644 --- a/src/app/shared/case-editor/case-edit.component.spec.ts +++ b/src/app/shared/case-editor/case-edit.component.spec.ts @@ -1,25 +1,15 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule, FormGroup, FormControl, FormArray } from '@angular/forms'; import { MockComponent } from 'ng2-mock-component'; -import { By } from '@angular/platform-browser'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; -import { PaletteUtilsModule } from '../palette/utils/utils.module'; +import { CaseEventTrigger, PaletteUtilsModule, FormValueService, FormErrorService, + ConditionalShowDirective, FieldsUtils, WizardPage, WizardPageField, CaseField, FieldsPurger, + createCaseEventTrigger, ConditionalShowRegistrarService } from '@hmcts/ccd-case-ui-toolkit'; import { CaseEditComponent } from './case-edit.component'; -import { FormValueService } from '../../core/form/form-value.service'; -import { FormErrorService } from '../../core/form/form-error.service'; -import { ConditionalShowDirective } from '../conditional-show/conditional-show.directive'; import { DebugElement } from '@angular/core'; import { RouterTestingModule } from '@angular/router/testing'; -import { FieldsUtils } from '../utils/fields.utils'; import { Wizard } from './wizard.model'; import { Router } from '@angular/router'; -import { WizardPage } from '../domain/wizard-page.model'; import createSpyObj = jasmine.createSpyObj; -import { WizardPageField } from '../domain/wizard-page-field.model'; -import { CaseField } from '../domain/definition/case-field.model'; -import { FieldsPurger } from '../utils/fields.purger'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' -import { ConditionalShowRegistrarService } from '../conditional-show/conditional-show-registrar.service'; import { WizardFactoryService } from '../../core/case-editor/wizard-factory.service'; describe('CaseEditComponent', () => { diff --git a/src/app/shared/documentManagement/documentManagement.service.spec.ts b/src/app/shared/documentManagement/documentManagement.service.spec.ts index 9e0a8c26c..c57853aa1 100644 --- a/src/app/shared/documentManagement/documentManagement.service.spec.ts +++ b/src/app/shared/documentManagement/documentManagement.service.spec.ts @@ -1,10 +1,8 @@ import { DocumentManagementService } from './documentManagement.service'; import createSpyObj = jasmine.createSpyObj; -import { HttpService } from '../http/http.service'; -import { DocumentData } from '../../shared/domain/document/document-data.model'; import { of } from 'rxjs'; import { Response, ResponseOptions } from '@angular/http'; -import { AbstractAppConfig } from '../../app.config'; +import { AbstractAppConfig, DocumentData, HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('DocumentManagementService', () => { const DOCUMENT_MANAGEMENT_URL = 'http://docmanagement.ccd.reform/documents'; From c0a03c554acb852793a22c1ff0072bb074c050af Mon Sep 17 00:00:00 2001 From: andrewf Date: Thu, 4 Oct 2018 11:31:45 +0100 Subject: [PATCH 08/30] RDM-3023 Fix tests. --- package.json | 27 +- src/app/app.config.spec.ts | 3 +- .../case-creator-submit.component.spec.ts | 23 +- ...create-case-event-trigger.resolver.spec.ts | 11 +- .../create-case-filters.component.spec.ts | 2 +- .../case-event-trigger.component.spec.ts | 6 +- .../event-trigger.resolver.spec.ts | 4 +- .../case-print-documents.resolver.spec.ts | 2 +- .../printer/case-printer.component.spec.ts | 2 +- .../viewer/case-viewer.component.spec.ts | 8 +- .../core/activity/activity.service.spec.ts | 2 +- src/app/core/auth/oauth2.service.spec.ts | 2 +- .../case-edit-wizard.guard.spec.ts | 5 +- .../wizard-factory.service.spec.ts | 4 +- .../core/cases/case-history.service.spec.ts | 4 +- src/app/core/cases/cases.service.spec.ts | 8 +- src/app/core/core.component.spec.ts | 2 +- src/app/core/draft/draft.service.spec.ts | 7 +- .../pagination/pagination.service.spec.ts | 2 +- src/app/core/profile/profile.service.spec.ts | 2 +- src/app/core/search/search.service.spec.ts | 3 +- .../oauth2/oauth2-redirect.component.spec.ts | 2 +- .../case-edit-confirm.component.spec.ts | 4 +- .../case-edit-page.component.spec.ts | 11 +- .../case-edit-submit.component.spec.ts | 13 +- src/app/shared/case-editor/case-edit.spec.ts | 13 + .../page-validation.service.spec.ts | 5 +- .../shared/case-editor/wizard.model.spec.ts | 2 +- .../case-history.component.spec.ts | 7 +- .../error/callback-errors.component.spec.ts | 2 +- .../event-log-details.component.spec.ts | 3 +- .../event-log-table.component.spec.ts | 2 +- .../event-log/event-log.component.spec.ts | 2 +- .../event-trigger.component.spec.ts | 2 +- .../header/case-header.component.spec.ts | 7 +- .../event-trigger-header.component.spec.ts | 3 +- .../filters/search-filters.component.spec.ts | 2 +- .../search/search-result.component.spec.ts | 2 +- ...esult-view-item-comparator-factory.spec.ts | 3 +- .../workbasket-filters.component.spec.ts | 3 +- .../workbasket-input-filter.service.spec.ts | 2 +- src/polyfills.ts | 2 +- src/tsconfig.spec.json | 6 +- tsconfig.json | 4 +- yarn.lock | 9993 +++++++++++++++++ 45 files changed, 10083 insertions(+), 141 deletions(-) create mode 100644 src/app/shared/case-editor/case-edit.spec.ts create mode 100644 yarn.lock diff --git a/package.json b/package.json index 014652e9a..e5737204f 100644 --- a/package.json +++ b/package.json @@ -36,24 +36,26 @@ "stub-functional": "json-server -p 3453 --delay 800 --routes stubs/functional/aggregated.routes.json --watch stubs/functional/aggregated.api.json" }, "dependencies": { - "@angular/animations": "~6.0.6", + "@angular/animations": "~6.1.8", "@angular/cdk": "^6.3.0", - "@angular/common": "~6.0.6", - "@angular/compiler": "~6.0.6", - "@angular/core": "~6.0.6", - "@angular/forms": "~6.0.6", - "@angular/http": "~6.0.6", + "@angular/common": "~6.1.8", + "@angular/compiler": "~6.1.8", + "@angular/core": "~6.1.8", + "@angular/forms": "~6.1.8", + "@angular/http": "~6.1.8", "@angular/material": "^6.3.0", - "@angular/platform-browser": "~6.0.6", - "@angular/platform-browser-dynamic": "~6.0.6", - "@angular/platform-server": "~6.0.6", - "@angular/router": "~6.0.6", - "@angular/upgrade": "~6.0.6", + "@angular/platform-browser": "~6.1.8", + "@angular/platform-browser-dynamic": "~6.1.8", + "@angular/platform-server": "~6.1.8", + "@angular/router": "~6.1.8", + "@angular/upgrade": "~6.1.8", "@hmcts/ccd-case-ui-toolkit": "1.2.5", "@hmcts/ccpay-web-component": "~1.5.0", "@nguniversal/express-engine": "^6.0.0", "@nguniversal/module-map-ngfactory-loader": "^6.0.0", "@nicky-lenaers/ngx-scroll-to": "^1.0.0", + "growl": "1.10.5", + "grunt": "^1.0.1", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "chai-like": "^0.2.14", @@ -81,7 +83,7 @@ "devDependencies": { "@angular-devkit/build-angular": "~0.6.8", "@angular/cli": "^6.0.8", - "@angular/compiler-cli": "~6.0.6", + "@angular/compiler-cli": "~6.1.8", "@types/jasmine": "~2.8.0", "@types/jasminewd2": "^2.0.3", "@types/node": "^8.0.30", @@ -99,6 +101,7 @@ "karma-mocha-reporter": "^2.2.5", "karma-phantomjs-launcher": "^1.0.4", "karma-remap-istanbul": "0.2.1", + "karma-typescript": "^3.0.5", "lodash": "^4.16.2", "ng2-mock-component": "^0.1.1", "nsp": "^3.2.1", diff --git a/src/app/app.config.spec.ts b/src/app/app.config.spec.ts index a2592a42f..8508e13be 100644 --- a/src/app/app.config.spec.ts +++ b/src/app/app.config.spec.ts @@ -1,7 +1,8 @@ -import { AppConfig, Config } from './app.config'; +import { AppConfig } from './app.config'; import { async, inject, TestBed } from '@angular/core/testing'; import { HttpModule, Response, ResponseOptions, XHRBackend } from '@angular/http'; import { MockBackend } from '@angular/http/testing'; +import { Config } from '@hmcts/ccd-case-ui-toolkit'; describe('AppConfig', () => { diff --git a/src/app/cases/creator/case-creator-submit.component.spec.ts b/src/app/cases/creator/case-creator-submit.component.spec.ts index 34faf34d9..a29603772 100644 --- a/src/app/cases/creator/case-creator-submit.component.spec.ts +++ b/src/app/cases/creator/case-creator-submit.component.spec.ts @@ -6,19 +6,12 @@ import { ActivatedRoute, Params, Router } from '@angular/router'; import { CasesService } from '../../core/cases/cases.service'; import { Observable } from 'rxjs/Observable'; import { AlertService } from '../../core/alert/alert.service'; -import { HttpError } from '../../core/http/http-error.model'; -import { FormValueService } from '../../core/form/form-value.service'; -import { CaseReferencePipe } from '../../shared/utils/case-reference.pipe'; -import { FormErrorService } from '../../core/form/form-error.service'; import { CaseCreatorSubmitComponent } from './case-creator-submit.component'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; import { CaseView } from '../../core/cases/case-view.model'; -import { CaseDetails } from '../../shared/domain/case-details'; -import { CaseEventData } from '../../shared/domain/case-event-data'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' -import { Draft } from '../../shared/domain/draft'; import { DraftService } from '../../core/draft/draft.service'; import createSpyObj = jasmine.createSpyObj; +import { HttpError, Draft, DRAFT, createCaseEventTrigger, CaseEventData, CaseDetails, CaseEventTrigger, + FormErrorService, CaseReferencePipe, FormValueService } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-case-edit', @@ -128,14 +121,6 @@ describe('CaseCreatorSubmitComponent', () => { ignore_warning: false }; - const DRAFT: Draft = { - 'id': '1234', - 'document': CREATED_CASE, - 'type': 'dummy', - 'created': 'sometime', - 'updated': 'another time' - }; - let mockRoute: any = { snapshot: { data: { @@ -229,10 +214,10 @@ describe('CaseCreatorSubmitComponent', () => { it('should update draft when saveDraft called with sanitised data for second time', () => { const DRAFT_ID = '12345'; - component.eventTrigger.case_id = Draft.DRAFT + DRAFT_ID; // Set behaviour to draft has been saved before + component.eventTrigger.case_id = DRAFT + DRAFT_ID; // Set behaviour to draft has been saved before component.saveDraft()(SANITISED_EDIT_FORM); - expect(draftService.createOrUpdateDraft).toHaveBeenCalledWith(JID, CTID, Draft.DRAFT + DRAFT_ID, SANITISED_EDIT_FORM); + expect(draftService.createOrUpdateDraft).toHaveBeenCalledWith(JID, CTID, DRAFT + DRAFT_ID, SANITISED_EDIT_FORM); }); it('should navigate to case view upon successful case creation', () => { diff --git a/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts b/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts index 03b6b42be..0996a4d27 100644 --- a/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts +++ b/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts @@ -1,10 +1,7 @@ import { Observable } from 'rxjs/Observable'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; -import { HttpError } from '../../core/http/http-error.model'; import { CreateCaseEventTriggerResolver } from './create-case-event-trigger.resolver'; import createSpyObj = jasmine.createSpyObj; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' -import { Draft } from '../../shared/domain/draft'; +import { DRAFT, createCaseEventTrigger, HttpError, CaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; describe('CreateCaseFieldsResolver', () => { @@ -18,7 +15,7 @@ describe('CreateCaseFieldsResolver', () => { const EVENT_TRIGGER_ID = 'enterCaseIntoLegacy'; const EVENT_TRIGGER: CaseEventTrigger = createCaseEventTrigger(EVENT_TRIGGER_ID, 'Into legacy', 'caseId', true, []); - const DRAFT_ID = Draft.DRAFT + '12345'; + const DRAFT_ID = DRAFT + '12345'; const EVENT_TRIGGER_OBS: Observable = Observable.of(EVENT_TRIGGER); const ERROR: HttpError = { timestamp: '', @@ -86,7 +83,7 @@ describe('CreateCaseFieldsResolver', () => { expect(route.paramMap.get).toHaveBeenCalledWith(PARAM_CASE_TYPE_ID); expect(route.paramMap.get).toHaveBeenCalledWith(PARAM_EVENT_ID); expect(route.queryParamMap.get).toHaveBeenCalledWith(QUERY_PARAM_IGNORE_WARNINGS); - expect(route.queryParamMap.get).toHaveBeenCalledWith(Draft.DRAFT); + expect(route.queryParamMap.get).toHaveBeenCalledWith(DRAFT); expect(route.paramMap.get).toHaveBeenCalledTimes(3); expect(route.queryParamMap.get).toHaveBeenCalledTimes(2); expect(createCaseFieldsResolver['cachedEventTrigger']).toBe(EVENT_TRIGGER); @@ -140,7 +137,7 @@ describe('CreateCaseFieldsResolver', () => { switch (key) { case QUERY_PARAM_IGNORE_WARNINGS: return IGNORE_WARNINGS; - case Draft.DRAFT: + case DRAFT: return DRAFT_ID; } }); diff --git a/src/app/cases/creator/filters/create-case-filters.component.spec.ts b/src/app/cases/creator/filters/create-case-filters.component.spec.ts index 3488b7b75..a6d479f9a 100644 --- a/src/app/cases/creator/filters/create-case-filters.component.spec.ts +++ b/src/app/cases/creator/filters/create-case-filters.component.spec.ts @@ -10,11 +10,11 @@ import { Router } from '@angular/router'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsContext } from '../../../shared/error/error-context'; import { attr, text } from '../../../test/helpers'; -import { HttpError } from '../../../core/http/http-error.model'; import { AlertService } from '../../../core/alert/alert.service'; import { CaseType } from '../../../shared/domain/definition/case-type.model'; import { JurisdictionService } from '../../../shared/jurisdiction.service'; import createSpyObj = jasmine.createSpyObj; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; const EVENT_ID_1 = 'ID_1'; const EVENT_NAME_1 = 'Event one'; diff --git a/src/app/cases/event-trigger/case-event-trigger.component.spec.ts b/src/app/cases/event-trigger/case-event-trigger.component.spec.ts index 2debc151d..bf0080a0e 100644 --- a/src/app/cases/event-trigger/case-event-trigger.component.spec.ts +++ b/src/app/cases/event-trigger/case-event-trigger.component.spec.ts @@ -4,17 +4,13 @@ import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/c import { MockComponent } from 'ng2-mock-component'; import { ActivatedRoute, Router } from '@angular/router'; import { CaseView } from '../../core/cases/case-view.model'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; import { CasesService } from '../../core/cases/cases.service'; import { Observable } from 'rxjs/Observable'; import { AlertService } from '../../core/alert/alert.service'; -import { HttpError } from '../../core/http/http-error.model'; -import { CaseReferencePipe } from '../../shared/utils/case-reference.pipe'; import { ReactiveFormsModule } from '@angular/forms'; import { ActivityPollingService } from '../../core/activity/activity.polling.service'; -import { CaseEventData } from '../../shared/domain/case-event-data'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' import createSpyObj = jasmine.createSpyObj; +import { CaseEventData, createCaseEventTrigger, CaseReferencePipe, HttpError, CaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-case-edit', diff --git a/src/app/cases/event-trigger/event-trigger.resolver.spec.ts b/src/app/cases/event-trigger/event-trigger.resolver.spec.ts index 53c74af0b..1436e7372 100644 --- a/src/app/cases/event-trigger/event-trigger.resolver.spec.ts +++ b/src/app/cases/event-trigger/event-trigger.resolver.spec.ts @@ -1,11 +1,9 @@ import { EventTriggerResolver } from './event-trigger.resolver'; import createSpyObj = jasmine.createSpyObj; import { Observable } from 'rxjs/Observable'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; import { CaseResolver } from '../case.resolver'; -import { HttpError } from '../../core/http/http-error.model'; import { CaseView } from '../../core/cases/case-view.model'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' +import { CaseEventTrigger, createCaseEventTrigger, HttpError } from '@hmcts/ccd-case-ui-toolkit'; describe('EventTriggerResolver', () => { diff --git a/src/app/cases/printer/case-print-documents.resolver.spec.ts b/src/app/cases/printer/case-print-documents.resolver.spec.ts index 3eb64612c..8b82cbd8d 100644 --- a/src/app/cases/printer/case-print-documents.resolver.spec.ts +++ b/src/app/cases/printer/case-print-documents.resolver.spec.ts @@ -1,10 +1,10 @@ import { CasePrintDocumentsResolver } from './case-print-documents.resolver'; import { Observable } from 'rxjs/Observable'; import { CaseResolver } from '../case.resolver'; -import { HttpError } from '../../core/http/http-error.model'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import createSpyObj = jasmine.createSpyObj; import { CaseView } from '../../core/cases/case-view.model'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; describe('CasePrintDocumentsResolver', () => { diff --git a/src/app/cases/printer/case-printer.component.spec.ts b/src/app/cases/printer/case-printer.component.spec.ts index e20d52199..40c84baed 100644 --- a/src/app/cases/printer/case-printer.component.spec.ts +++ b/src/app/cases/printer/case-printer.component.spec.ts @@ -3,7 +3,6 @@ import { DebugElement } from '@angular/core'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; import { MockComponent } from 'ng2-mock-component'; -import { PaletteUtilsModule } from '../../shared/palette/utils/utils.module'; import { CasePrinterComponent } from './case-printer.component'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import { attr, text } from '../../test/helpers'; @@ -11,6 +10,7 @@ import { CaseView } from '../../core/cases/case-view.model'; import createSpyObj = jasmine.createSpyObj; import { AppConfig } from '../../app.config'; import { PrintUrlPipe } from './print-url.pipe'; +import { PaletteUtilsModule } from '@hmcts/ccd-case-ui-toolkit'; describe('CasePrinterComponent', () => { diff --git a/src/app/cases/viewer/case-viewer.component.spec.ts b/src/app/cases/viewer/case-viewer.component.spec.ts index f713a80c4..16246ba85 100644 --- a/src/app/cases/viewer/case-viewer.component.spec.ts +++ b/src/app/cases/viewer/case-viewer.component.spec.ts @@ -10,17 +10,13 @@ import { Observable } from 'rxjs/Observable'; import { CaseViewEvent } from '../../core/cases/case-view-event.model'; import { CaseViewTrigger } from '../../shared/domain/case-view/case-view-trigger.model'; import { attr, text } from '../../test/helpers'; -import { PaletteUtilsModule } from '../../shared/palette/utils/utils.module'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsContext } from '../../shared/error/error-context'; -import { HttpError } from '../../core/http/http-error.model'; -import { LabelSubstitutorDirective } from '../../shared/substitutor/label-substitutor.directive'; -import { FieldsUtils } from '../../shared/utils/fields.utils'; -import { LabelSubstitutionService } from '../../shared/case-editor/label-substitution.service'; import { ActivityPollingService } from '../../core/activity/activity.polling.service'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; import createSpyObj = jasmine.createSpyObj; import any = jasmine.any; +import { PaletteUtilsModule, CaseField, LabelSubstitutionService, FieldsUtils, + LabelSubstitutorDirective, HttpError } from '@hmcts/ccd-case-ui-toolkit'; @Component({ // tslint:disable-next-line diff --git a/src/app/core/activity/activity.service.spec.ts b/src/app/core/activity/activity.service.spec.ts index 2293ffd07..4611361ae 100644 --- a/src/app/core/activity/activity.service.spec.ts +++ b/src/app/core/activity/activity.service.spec.ts @@ -1,8 +1,8 @@ import { ActivityService } from './activity.service'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; import { Observable } from 'rxjs'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; let httpService: any; let appConfig: any; diff --git a/src/app/core/auth/oauth2.service.spec.ts b/src/app/core/auth/oauth2.service.spec.ts index 78519aab9..e4e3d5223 100644 --- a/src/app/core/auth/oauth2.service.spec.ts +++ b/src/app/core/auth/oauth2.service.spec.ts @@ -1,9 +1,9 @@ -import { HttpService } from '../http/http.service'; import { AppConfig } from '../../app.config'; import { Observable } from 'rxjs/Observable'; import { Response, ResponseOptions, URLSearchParams } from '@angular/http'; import { OAuth2Service } from './oauth2.service'; import createSpyObj = jasmine.createSpyObj; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('OAuth2Service', () => { diff --git a/src/app/core/case-editor/case-edit-wizard.guard.spec.ts b/src/app/core/case-editor/case-edit-wizard.guard.spec.ts index 38dc0c0c6..7a40157b4 100644 --- a/src/app/core/case-editor/case-edit-wizard.guard.spec.ts +++ b/src/app/core/case-editor/case-edit-wizard.guard.spec.ts @@ -2,11 +2,8 @@ import createSpyObj = jasmine.createSpyObj; import { CaseEditWizardGuard } from './case-edit-wizard.guard'; import { ActivatedRouteSnapshot } from '@angular/router'; import { TestRouteSnapshotBuilder } from '../../test/test-route-snapshot-builder'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; -import { WizardPage } from '../../shared/domain/wizard-page.model'; -import { CaseField } from '../../shared/domain/definition/case-field.model'; import { AlertService } from '../alert/alert.service'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' +import { CaseEventTrigger, createCaseEventTrigger, CaseField, WizardPage } from '@hmcts/ccd-case-ui-toolkit'; describe('CaseEditWizardGuard', () => { diff --git a/src/app/core/case-editor/wizard-factory.service.spec.ts b/src/app/core/case-editor/wizard-factory.service.spec.ts index 33b313471..134fbf993 100644 --- a/src/app/core/case-editor/wizard-factory.service.spec.ts +++ b/src/app/core/case-editor/wizard-factory.service.spec.ts @@ -1,7 +1,5 @@ -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; -import { WizardPage } from '../../shared/domain/wizard-page.model'; import { WizardFactoryService } from './wizard-factory.service'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' +import { CaseEventTrigger, WizardPage, createCaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; describe('WizardFactoryService', () => { diff --git a/src/app/core/cases/case-history.service.spec.ts b/src/app/core/cases/case-history.service.spec.ts index 0355224bd..e20dac036 100644 --- a/src/app/core/cases/case-history.service.spec.ts +++ b/src/app/core/cases/case-history.service.spec.ts @@ -1,13 +1,11 @@ import { Response, ResponseOptions } from '@angular/http'; import { AppConfig } from '../../app.config'; -import { HttpService } from '../http/http.service'; import { Observable } from 'rxjs/Observable'; -import { HttpError } from '../http/http-error.model'; import { CaseHistory } from './case-history.model'; import { CaseHistoryService } from './case-history.service'; import { createCaseHistory } from './case-history.test.fixture'; -import { HttpErrorService } from '../http/http-error.service'; import createSpyObj = jasmine.createSpyObj; +import { HttpService, HttpError, HttpErrorService } from '@hmcts/ccd-case-ui-toolkit'; describe('CaseHistoryService', () => { diff --git a/src/app/core/cases/cases.service.spec.ts b/src/app/core/cases/cases.service.spec.ts index 158e11870..78670d5da 100644 --- a/src/app/core/cases/cases.service.spec.ts +++ b/src/app/core/cases/cases.service.spec.ts @@ -2,16 +2,12 @@ import { Response, ResponseOptions, Headers } from '@angular/http'; import { AppConfig } from '../../app.config'; import { CasesService } from './cases.service'; import { CaseView } from './case-view.model'; -import { HttpService } from '../http/http.service'; import { Observable } from 'rxjs/Observable'; -import { CaseEventTrigger } from '../../shared/domain/case-view/case-event-trigger.model'; -import { CaseEventData } from '../../shared/domain/case-event-data'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import { OrderService } from '../order/order.service'; import createSpyObj = jasmine.createSpyObj; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' -import { HttpError } from '../http/http-error.model'; -import { HttpErrorService } from '../http/http-error.service'; +import { HttpErrorService, HttpError, HttpService, CaseEventTrigger, CaseEventData, + createCaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; describe('CasesService', () => { diff --git a/src/app/core/core.component.spec.ts b/src/app/core/core.component.spec.ts index 25bbc2166..ce83a033d 100644 --- a/src/app/core/core.component.spec.ts +++ b/src/app/core/core.component.spec.ts @@ -9,11 +9,11 @@ import { By } from '@angular/platform-browser'; import { Jurisdiction } from '../shared/domain/definition/jurisdiction.model'; import { attr } from '../test/helpers'; import { OAuth2Service } from './auth/oauth2.service'; -import { HttpService } from './http/http.service'; import { AppConfig } from '../app.config'; import createSpyObj = jasmine.createSpyObj; import createSpy = jasmine.createSpy; import { CcdBrowserSupportComponent } from '../core/ccd-browser-support/ccd-browser-support.component'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('CoreComponent', () => { diff --git a/src/app/core/draft/draft.service.spec.ts b/src/app/core/draft/draft.service.spec.ts index f139f333f..a123aa861 100644 --- a/src/app/core/draft/draft.service.spec.ts +++ b/src/app/core/draft/draft.service.spec.ts @@ -1,15 +1,10 @@ -import { HttpError } from '../http/http-error.model'; -import { HttpService } from '../http/http.service'; -import { HttpErrorService } from '../http/http-error.service'; import { AppConfig } from '../../app.config'; -import { CaseEventData } from '../../shared/domain/case-event-data'; import { Observable } from 'rxjs/Observable'; import { Response, ResponseOptions } from '@angular/http'; import createSpyObj = jasmine.createSpyObj; import { DraftService } from './draft.service'; -import { Draft } from '../../shared/domain/draft'; -import { CaseDetails } from '../../shared/domain/case-details'; import { CaseView } from '../cases/case-view.model'; +import { HttpError, CaseDetails, Draft, CaseEventData, HttpErrorService, HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('Drafts Service', () => { diff --git a/src/app/core/pagination/pagination.service.spec.ts b/src/app/core/pagination/pagination.service.spec.ts index af9e28b5b..c462e14c9 100644 --- a/src/app/core/pagination/pagination.service.spec.ts +++ b/src/app/core/pagination/pagination.service.spec.ts @@ -1,10 +1,10 @@ import { Response, ResponseOptions, URLSearchParams, RequestOptionsArgs } from '@angular/http'; import { AppConfig } from '../../app.config'; import createSpyObj = jasmine.createSpyObj; -import { HttpService } from '../http/http.service'; import { PaginationService } from './pagination.service'; import { Observable } from 'rxjs/Observable'; import { RequestOptionsBuilder } from '../request.options.builder'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('PaginationService', () => { diff --git a/src/app/core/profile/profile.service.spec.ts b/src/app/core/profile/profile.service.spec.ts index 509eaed52..c23be14fd 100644 --- a/src/app/core/profile/profile.service.spec.ts +++ b/src/app/core/profile/profile.service.spec.ts @@ -4,8 +4,8 @@ import { AppConfig } from '../../app.config'; import createSpyObj = jasmine.createSpyObj; import { Observable } from 'rxjs/Observable'; import { Response, ResponseOptions } from '@angular/http'; -import { HttpService } from '../http/http.service'; import { createAProfile } from './profile.test.fixture'; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('ProfileService', () => { diff --git a/src/app/core/search/search.service.spec.ts b/src/app/core/search/search.service.spec.ts index d38cf4562..734dd8fdc 100644 --- a/src/app/core/search/search.service.spec.ts +++ b/src/app/core/search/search.service.spec.ts @@ -4,10 +4,9 @@ import { AppConfig } from '../../app.config'; import createSpyObj = jasmine.createSpyObj; import { SearchInput } from './search-input.model'; import { Field } from './field.model'; -import { HttpService } from '../http/http.service'; import { Observable } from 'rxjs/Observable'; -import { FieldType } from '../../shared/domain/definition/field-type.model'; import { RequestOptionsBuilder } from '../request.options.builder'; +import { HttpService, FieldType } from '@hmcts/ccd-case-ui-toolkit'; describe('SearchService', () => { diff --git a/src/app/oauth2/oauth2-redirect.component.spec.ts b/src/app/oauth2/oauth2-redirect.component.spec.ts index fe4f26588..468aafede 100644 --- a/src/app/oauth2/oauth2-redirect.component.spec.ts +++ b/src/app/oauth2/oauth2-redirect.component.spec.ts @@ -6,7 +6,7 @@ import { By } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { OAuth2Service } from '../core/auth/oauth2.service'; import createSpyObj = jasmine.createSpyObj; -import { AuthService } from '../core/auth/auth.service'; +import { AuthService } from '@hmcts/ccd-case-ui-toolkit'; describe('OAuth2RedirectComponent', () => { const ROUTE_WITH_CODE = { diff --git a/src/app/shared/case-editor/case-edit-confirm.component.spec.ts b/src/app/shared/case-editor/case-edit-confirm.component.spec.ts index 7fd6d6aff..a2e4680b2 100644 --- a/src/app/shared/case-editor/case-edit-confirm.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-confirm.component.spec.ts @@ -5,10 +5,8 @@ import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { Router } from '@angular/router'; import { CaseEditConfirmComponent } from './case-edit-confirm.component'; -import { WizardPage } from '../domain/wizard-page.model'; -import { MarkdownModule } from '../markdown/markdown.module'; import { By } from '@angular/platform-browser'; -import { CaseReferencePipe } from '../utils/case-reference.pipe'; +import { WizardPage, MarkdownModule, CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; describe('CaseEditConfirmComponent', () => { let fixture: ComponentFixture; diff --git a/src/app/shared/case-editor/case-edit-page.component.spec.ts b/src/app/shared/case-editor/case-edit-page.component.spec.ts index 4bc2d48c0..4de5a2ecb 100644 --- a/src/app/shared/case-editor/case-edit-page.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-page.component.spec.ts @@ -4,18 +4,11 @@ import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { By } from '@angular/platform-browser'; import { CaseEditComponent } from './case-edit.component'; import { ActivatedRoute } from '@angular/router'; -import { WizardPage } from '../domain/wizard-page.model'; -import { CaseField } from '../domain/definition/case-field.model'; -import { FormValueService } from '../../core/form/form-value.service'; -import { FormErrorService } from '../../core/form/form-error.service'; import { Observable } from 'rxjs/Observable'; import { FormControl, FormGroup } from '@angular/forms'; -import { CaseFieldService } from '../domain/case-field.service'; -import { aCaseField } from './case-edit.spec'; -import { CaseReferencePipe } from '../utils/case-reference.pipe'; import { PageValidationService } from './page-validation.service'; -import { CaseEventData } from '../domain/case-event-data'; -import { Draft } from '../domain/draft'; +import { WizardPage, CaseField, FormValueService, FormErrorService, CaseFieldService, aCaseField, + CaseReferencePipe, CaseEventData, Draft } from '@hmcts/ccd-case-ui-toolkit'; describe('CaseEditPageComponent', () => { diff --git a/src/app/shared/case-editor/case-edit-submit.component.spec.ts b/src/app/shared/case-editor/case-edit-submit.component.spec.ts index 0e6490936..97d522dca 100644 --- a/src/app/shared/case-editor/case-edit-submit.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-submit.component.spec.ts @@ -1,24 +1,17 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { CaseEditSubmitComponent } from './case-edit-submit.component'; -import { CaseFieldService } from '../domain/case-field.service'; -import { FormValueService } from '../../core/form/form-value.service'; import { CaseEditComponent } from './case-edit.component'; import { ActivatedRoute } from '@angular/router'; -import { FormErrorService } from '../../core/form/form-error.service'; import { Observable } from 'rxjs/Observable'; import { FormControl, FormGroup } from '@angular/forms'; -import { WizardPage } from '../domain/wizard-page.model'; -import { FieldsUtils } from '../utils/fields.utils'; -import { IsCompoundPipe } from '../palette/utils/is-compound.pipe'; -import { CaseField } from '../domain/definition/case-field.model'; -import { aCaseField, aWizardPage } from './case-edit.spec'; import { Wizard } from './wizard.model'; import { OrderService } from '../../core/order/order.service'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; -import { CaseReferencePipe } from '../utils/case-reference.pipe'; import { By } from '@angular/platform-browser'; import createSpyObj = jasmine.createSpyObj; +import { CaseFieldService, CaseReferencePipe, CaseEventTrigger, aCaseField, CaseField, + IsCompoundPipe, FieldsUtils, WizardPage, FormErrorService, FormValueService } from '@hmcts/ccd-case-ui-toolkit'; +import { aWizardPage } from './case-edit.spec'; describe('CaseEditSubmitComponent', () => { let comp: CaseEditSubmitComponent; diff --git a/src/app/shared/case-editor/case-edit.spec.ts b/src/app/shared/case-editor/case-edit.spec.ts new file mode 100644 index 000000000..9ad5352be --- /dev/null +++ b/src/app/shared/case-editor/case-edit.spec.ts @@ -0,0 +1,13 @@ +import { WizardPage, ShowCondition } from '@hmcts/ccd-case-ui-toolkit'; +import createSpyObj = jasmine.createSpyObj; + +export let aWizardPage = (pageId: string, label: string, order: number): WizardPage => { + let wp = new WizardPage(); + wp.id = pageId; + wp.label = label; + wp.order = order; + let parsedShowCondition = createSpyObj('parsedShowCondition', ['match']); + parsedShowCondition.match.and.returnValue(true); + wp.parsedShowCondition = parsedShowCondition; + return wp; + }; diff --git a/src/app/shared/case-editor/page-validation.service.spec.ts b/src/app/shared/case-editor/page-validation.service.spec.ts index 397bf5f37..7c525512a 100644 --- a/src/app/shared/case-editor/page-validation.service.spec.ts +++ b/src/app/shared/case-editor/page-validation.service.spec.ts @@ -1,10 +1,7 @@ import { async } from '@angular/core/testing'; -import { WizardPage } from '../domain/wizard-page.model'; -import { CaseField } from '../domain/definition/case-field.model'; -import { CaseFieldService } from '../domain/case-field.service'; import { FormControl, FormGroup } from '@angular/forms'; import { PageValidationService } from './page-validation.service'; -import { aCaseField } from './case-edit.spec'; +import { WizardPage, aCaseField, CaseField, CaseFieldService } from '@hmcts/ccd-case-ui-toolkit'; describe('PageValidationService', () => { diff --git a/src/app/shared/case-editor/wizard.model.spec.ts b/src/app/shared/case-editor/wizard.model.spec.ts index 598dac18f..ab82cec63 100644 --- a/src/app/shared/case-editor/wizard.model.spec.ts +++ b/src/app/shared/case-editor/wizard.model.spec.ts @@ -1,6 +1,6 @@ import { Wizard } from './wizard.model'; -import { WizardPage } from '../domain/wizard-page.model'; import createSpy = jasmine.createSpy; +import { WizardPage } from '@hmcts/ccd-case-ui-toolkit'; describe('wizard.model', () => { diff --git a/src/app/shared/case-history/case-history.component.spec.ts b/src/app/shared/case-history/case-history.component.spec.ts index 07579c876..d35e6ebdb 100644 --- a/src/app/shared/case-history/case-history.component.spec.ts +++ b/src/app/shared/case-history/case-history.component.spec.ts @@ -1,21 +1,18 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { CaseHistoryComponent } from './case-history.component'; -import { FieldsUtils } from '../utils/fields.utils'; -import { PaletteUtilsModule } from '../palette/utils/utils.module'; import { attr } from '../../test/helpers'; import { MockComponent } from 'ng2-mock-component'; import { By } from '@angular/platform-browser'; -import { HttpError } from '../../core/http/http-error.model'; -import { LabelSubstitutorDirective } from '../substitutor/label-substitutor.directive'; import { ActivatedRoute, Router } from '@angular/router'; -import { LabelSubstitutionService } from '../case-editor/label-substitution.service'; import { CaseHistory } from '../../core/cases/case-history.model'; import { DebugElement } from '@angular/core'; import { OrderService } from '../../core/order/order.service'; import { createCaseHistory } from '../../core/cases/case-history.test.fixture'; import createSpyObj = jasmine.createSpyObj; import any = jasmine.any; +import { FieldsUtils, PaletteUtilsModule, HttpError, LabelSubstitutorDirective, + LabelSubstitutionService } from '@hmcts/ccd-case-ui-toolkit'; describe('CaseHistoryComponent', () => { diff --git a/src/app/shared/error/callback-errors.component.spec.ts b/src/app/shared/error/callback-errors.component.spec.ts index ec6a17e3e..4d9ac2d4f 100644 --- a/src/app/shared/error/callback-errors.component.spec.ts +++ b/src/app/shared/error/callback-errors.component.spec.ts @@ -2,11 +2,11 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement, EventEmitter } from '@angular/core'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsComponent } from './callback-errors.component'; -import { HttpError } from '../../core/http/http-error.model'; import createSpyObj = jasmine.createSpyObj; import { CallbackErrorsContext } from './error-context'; import { By } from '@angular/platform-browser'; import { text } from '../../test/helpers'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; describe('CallbackErrorsComponent', () => { diff --git a/src/app/shared/event-log/event-log-details.component.spec.ts b/src/app/shared/event-log/event-log-details.component.spec.ts index a7e094dc4..6653f8c49 100644 --- a/src/app/shared/event-log/event-log-details.component.spec.ts +++ b/src/app/shared/event-log/event-log-details.component.spec.ts @@ -3,8 +3,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; import { CaseViewEvent } from '../../core/cases/case-view-event.model'; import { By } from '@angular/platform-browser'; -import { DatePipe } from '../palette/utils/date.pipe'; -import { DashPipe } from '../palette/utils/dash.pipe'; +import { DatePipe, DashPipe } from '@hmcts/ccd-case-ui-toolkit/dist/shared/palette/utils'; describe('EventLogDetails', () => { diff --git a/src/app/shared/event-log/event-log-table.component.spec.ts b/src/app/shared/event-log/event-log-table.component.spec.ts index aecd2e09b..45943ddf9 100644 --- a/src/app/shared/event-log/event-log-table.component.spec.ts +++ b/src/app/shared/event-log/event-log-table.component.spec.ts @@ -3,8 +3,8 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; import { CaseViewEvent } from '../../core/cases/case-view-event.model'; import { By } from '@angular/platform-browser'; -import { DatePipe } from '../palette/utils/date.pipe'; import { RouterTestingModule } from '@angular/router/testing'; +import { DatePipe } from '@hmcts/ccd-case-ui-toolkit/dist/shared/palette/utils'; describe('EventLogTableComponent', () => { diff --git a/src/app/shared/event-log/event-log.component.spec.ts b/src/app/shared/event-log/event-log.component.spec.ts index 02502d35b..d0bf8b5a9 100644 --- a/src/app/shared/event-log/event-log.component.spec.ts +++ b/src/app/shared/event-log/event-log.component.spec.ts @@ -3,7 +3,7 @@ import { EventLogComponent } from './event-log.component'; import { Component, DebugElement, EventEmitter, Input, Output } from '@angular/core'; import { By } from '@angular/platform-browser'; import { CaseViewEvent } from '../../core/cases/case-view-event.model'; -import { DatePipe } from '../palette/utils/date.pipe'; +import { DatePipe } from '@hmcts/ccd-case-ui-toolkit/dist/shared/palette/utils'; describe('EventLogComponent', () => { diff --git a/src/app/shared/event-trigger/event-trigger.component.spec.ts b/src/app/shared/event-trigger/event-trigger.component.spec.ts index e75f81dac..3ca144f6f 100644 --- a/src/app/shared/event-trigger/event-trigger.component.spec.ts +++ b/src/app/shared/event-trigger/event-trigger.component.spec.ts @@ -8,8 +8,8 @@ import { ReactiveFormsModule } from '@angular/forms'; import createSpyObj = jasmine.createSpyObj; import { OrderService } from '../../core/order/order.service'; import { AlertService } from '../../core/alert/alert.service'; -import { HttpError } from '../../core/http/http-error.model'; import { Subject } from 'rxjs/Subject'; +import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; describe('EventTriggerComponent', () => { diff --git a/src/app/shared/header/case-header.component.spec.ts b/src/app/shared/header/case-header.component.spec.ts index f42a059fe..5d5f3702b 100644 --- a/src/app/shared/header/case-header.component.spec.ts +++ b/src/app/shared/header/case-header.component.spec.ts @@ -1,15 +1,12 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { CaseHeaderComponent } from './case-header.component'; import { DebugElement } from '@angular/core'; -import { CaseReferencePipe } from '../utils/case-reference.pipe'; import { By } from '@angular/platform-browser'; import { text } from '../../test/helpers'; import { createCaseView } from '../../core/cases/case-view.test.fixture'; import { MockComponent } from 'ng2-mock-component'; -import { LabelSubstitutorDirective } from '../substitutor/label-substitutor.directive'; -import { FieldsUtils } from '../utils/fields.utils'; -import { LabelSubstitutionService } from '../case-editor/label-substitution.service'; -import { LabelFieldComponent } from '../palette/label/label-field.component'; +import { CaseReferencePipe, LabelSubstitutorDirective, FieldsUtils, LabelSubstitutionService, + LabelFieldComponent } from '@hmcts/ccd-case-ui-toolkit'; describe('CaseHeaderComponent', () => { diff --git a/src/app/shared/header/event-trigger-header.component.spec.ts b/src/app/shared/header/event-trigger-header.component.spec.ts index 2843a1c34..498166492 100644 --- a/src/app/shared/header/event-trigger-header.component.spec.ts +++ b/src/app/shared/header/event-trigger-header.component.spec.ts @@ -3,8 +3,7 @@ import { EventTriggerHeaderComponent } from './event-trigger-header.component'; import { DebugElement } from '@angular/core'; import { text } from '../../test/helpers'; import { By } from '@angular/platform-browser'; -import { CaseEventTrigger } from '../domain/case-view/case-event-trigger.model'; -import { createCaseEventTrigger } from '../../fixture/shared.fixture' +import { CaseEventTrigger, createCaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; describe('EventTriggerHeaderComponent', () => { diff --git a/src/app/shared/search/filters/search-filters.component.spec.ts b/src/app/shared/search/filters/search-filters.component.spec.ts index bbbed6d74..495ac5575 100644 --- a/src/app/shared/search/filters/search-filters.component.spec.ts +++ b/src/app/shared/search/filters/search-filters.component.spec.ts @@ -8,11 +8,11 @@ import { SearchService } from '../../../core/search/search.service'; import { Observable } from 'rxjs/Rx'; import { SearchInput } from '../../../core/search/search-input.model'; import { OrderService } from '../../../core/order/order.service'; -import { AbstractFieldWriteComponent } from '../../palette/base-field/abstract-field-write.component'; import { JurisdictionService } from '../../jurisdiction.service'; import { CaseType } from '../../domain/definition/case-type.model'; import { createSearchInputs } from '../../../core/search/search-input.test.fixture'; import createSpyObj = jasmine.createSpyObj; +import { AbstractFieldWriteComponent } from '@hmcts/ccd-case-ui-toolkit'; const JURISDICTION_1: Jurisdiction = { id: 'J1', diff --git a/src/app/shared/search/search-result.component.spec.ts b/src/app/shared/search/search-result.component.spec.ts index 74c05521e..ec5175f8d 100644 --- a/src/app/shared/search/search-result.component.spec.ts +++ b/src/app/shared/search/search-result.component.spec.ts @@ -5,7 +5,6 @@ import { SearchResultView } from './search-result-view.model'; import { RouterTestingModule } from '@angular/router/testing'; import { By } from '@angular/platform-browser'; import { SortSearchResultPipe } from './sorting/sort-search-result.pipe'; -import { CaseReferencePipe } from '../utils/case-reference.pipe'; import { SearchResultViewItemComparatorFactory } from './sorting/search-result-view-item-comparator-factory'; import { Jurisdiction } from '../domain/definition/jurisdiction.model'; import { ActivityService } from '../../core/activity/activity.service'; @@ -18,6 +17,7 @@ import { AppConfig } from '../../app.config'; import { CaseType } from '../domain/definition/case-type.model'; import { FormGroup } from '@angular/forms'; import createSpyObj = jasmine.createSpyObj; +import { CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-field-read', diff --git a/src/app/shared/search/sorting/search-result-view-item-comparator-factory.spec.ts b/src/app/shared/search/sorting/search-result-view-item-comparator-factory.spec.ts index 158a2e20c..2c03e86c4 100644 --- a/src/app/shared/search/sorting/search-result-view-item-comparator-factory.spec.ts +++ b/src/app/shared/search/sorting/search-result-view-item-comparator-factory.spec.ts @@ -1,8 +1,7 @@ import { SearchResultViewItemComparatorFactory } from './search-result-view-item-comparator-factory'; import { SearchResultViewColumn } from '../search-result-view-column.model'; import { SearchResultViewItem } from '../search-result-view-item.model'; -import { FieldTypeEnum } from '../../domain/definition/field-type-enum.model'; -import { FieldType } from '../../domain/definition/field-type.model'; +import { FieldTypeEnum, FieldType } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; describe('SearchResultViewItemComparatorFactory', () => { diff --git a/src/app/workbasket/filters/workbasket-filters.component.spec.ts b/src/app/workbasket/filters/workbasket-filters.component.spec.ts index cda7cb4f4..28b88285c 100644 --- a/src/app/workbasket/filters/workbasket-filters.component.spec.ts +++ b/src/app/workbasket/filters/workbasket-filters.component.spec.ts @@ -12,10 +12,9 @@ import { CaseType } from '../../shared/domain/definition/case-type.model'; import { AlertService } from '../../core/alert/alert.service'; import { OrderService } from '../../core/order/order.service'; import { WorkbasketInputFilterService } from '../workbasket-input-filter.service'; -import { AbstractFieldWriteComponent } from '../../shared/palette/base-field/abstract-field-write.component'; import { WorkbasketInputModel } from '../workbasket-input.model'; -import { FieldTypeEnum } from '../../shared/domain/definition/field-type-enum.model'; import createSpyObj = jasmine.createSpyObj; +import { AbstractFieldWriteComponent, FieldTypeEnum } from '@hmcts/ccd-case-ui-toolkit'; @Component({ selector: 'ccd-field-write', diff --git a/src/app/workbasket/workbasket-input-filter.service.spec.ts b/src/app/workbasket/workbasket-input-filter.service.spec.ts index 216a7d0b0..90c7ac224 100644 --- a/src/app/workbasket/workbasket-input-filter.service.spec.ts +++ b/src/app/workbasket/workbasket-input-filter.service.spec.ts @@ -2,9 +2,9 @@ import { Response, ResponseOptions } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import { WorkbasketInputFilterService } from './workbasket-input-filter.service'; import { AppConfig } from '../app.config'; -import { HttpService } from '../core/http/http.service'; import { WorkbasketInputModel } from './workbasket-input.model'; import createSpyObj = jasmine.createSpyObj; +import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; describe('DefinitionsService', () => { const API_DATA_URL = 'http://data.ccd.reform/aggregated'; diff --git a/src/polyfills.ts b/src/polyfills.ts index 1020a4d1c..3af717116 100644 --- a/src/polyfills.ts +++ b/src/polyfills.ts @@ -19,7 +19,7 @@ */ /** IE9, IE10 and IE11 requires all of the following polyfills. **/ -// import 'core-js/es6/symbol'; +import 'core-js/es6/symbol'; import 'core-js/es6/object'; // import 'core-js/es6/function'; // import 'core-js/es6/parse-int'; diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index 18bad40ed..a24c78f8b 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -4,10 +4,14 @@ "outDir": "../out-tsc/spec", "baseUrl": "./", "module": "commonjs", - "target": "es5", + // "target": "es2015", "types": [ "jasmine", "node" + ], + "lib": [ + "es2015", + "dom" ] }, "files": [ diff --git a/tsconfig.json b/tsconfig.json index 6f300c5a9..50d188322 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,11 +7,13 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "es2015", + "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ + "es2015", + "es5", "es2017", "dom" ] diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..dcdaa9ca0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9993 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@angular-devkit/architect@0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.6.8.tgz#977acc605aba45d21b95ca704cc99492e14299dd" + dependencies: + "@angular-devkit/core" "0.6.8" + rxjs "^6.0.0" + +"@angular-devkit/architect@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.8.4.tgz#095b382908d7dfaa2f64edfe93555dfac42957aa" + dependencies: + "@angular-devkit/core" "0.8.4" + rxjs "~6.2.0" + +"@angular-devkit/build-angular@~0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz#ea108509f970efc9cd9087a47894c0164dd2d0c0" + dependencies: + "@angular-devkit/architect" "0.6.8" + "@angular-devkit/build-optimizer" "0.6.8" + "@angular-devkit/core" "0.6.8" + "@ngtools/webpack" "6.0.8" + ajv "~6.4.0" + autoprefixer "^8.4.1" + cache-loader "^1.2.2" + chalk "~2.2.2" + circular-dependency-plugin "^5.0.2" + clean-css "^4.1.11" + copy-webpack-plugin "^4.5.1" + file-loader "^1.1.11" + glob "^7.0.3" + html-webpack-plugin "^3.0.6" + istanbul "^0.4.5" + istanbul-instrumenter-loader "^3.0.1" + karma-source-map-support "^1.2.0" + less "^3.0.4" + less-loader "^4.1.0" + license-webpack-plugin "^1.3.1" + lodash "^4.17.4" + memory-fs "^0.4.1" + mini-css-extract-plugin "~0.4.0" + minimatch "^3.0.4" + opn "^5.1.0" + parse5 "^4.0.0" + portfinder "^1.0.13" + postcss "^6.0.22" + postcss-import "^11.1.0" + postcss-loader "^2.1.5" + postcss-url "^7.3.2" + raw-loader "^0.5.1" + resolve "^1.5.0" + rxjs "^6.0.0" + sass-loader "^7.0.1" + silent-error "^1.1.0" + source-map-support "^0.5.0" + stats-webpack-plugin "^0.6.2" + style-loader "^0.21.0" + stylus "^0.54.5" + stylus-loader "^3.0.2" + tree-kill "^1.2.0" + uglifyjs-webpack-plugin "^1.2.5" + url-loader "^1.0.1" + webpack "~4.8.1" + webpack-dev-middleware "^3.1.3" + webpack-dev-server "^3.1.4" + webpack-merge "^4.1.2" + webpack-sources "^1.1.0" + webpack-subresource-integrity "^1.1.0-rc.4" + optionalDependencies: + node-sass "^4.9.0" + +"@angular-devkit/build-optimizer@0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz#9e18a4f447290d3a8e32df1110aac8b98b80dec2" + dependencies: + loader-utils "^1.1.0" + source-map "^0.5.6" + typescript "~2.9.1" + webpack-sources "^1.1.0" + +"@angular-devkit/core@0.6.8": + version "0.6.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.6.8.tgz#3b09d97bd2588f0091df11921f7ed772431806aa" + dependencies: + ajv "~6.4.0" + chokidar "^2.0.3" + rxjs "^6.0.0" + source-map "^0.5.6" + +"@angular-devkit/core@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.8.4.tgz#ccc73308990c7bc912e2f2759bf29e069eabf42f" + dependencies: + ajv "~6.4.0" + chokidar "^2.0.3" + rxjs "~6.2.0" + source-map "^0.5.6" + +"@angular-devkit/schematics@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.8.4.tgz#e19f6fc8b1e88277d921a286914dc9d01f139738" + dependencies: + "@angular-devkit/core" "0.8.4" + rxjs "~6.2.0" + +"@angular/animations@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-6.1.9.tgz#1d87469e6f6b89a8713570dfbe97700ea85bd007" + dependencies: + tslib "^1.9.0" + +"@angular/cdk@^6.3.0": + version "6.4.7" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-6.4.7.tgz#1549b304dd412e82bd854cc55a7d5c6772ee0411" + dependencies: + tslib "^1.7.1" + +"@angular/cli@^6.0.8": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-6.2.4.tgz#e292a5e4d3184a40caec0337d8bc3cd597c5f292" + dependencies: + "@angular-devkit/architect" "0.8.4" + "@angular-devkit/core" "0.8.4" + "@angular-devkit/schematics" "0.8.4" + "@schematics/angular" "0.8.4" + "@schematics/update" "0.8.4" + json-schema-traverse "^0.4.1" + opn "^5.3.0" + rxjs "~6.2.0" + semver "^5.1.0" + symbol-observable "^1.2.0" + yargs-parser "^10.0.0" + +"@angular/common@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-6.1.9.tgz#638fa8e8e30626116ea9ea36e6f2f00fed971f77" + dependencies: + tslib "^1.9.0" + +"@angular/compiler-cli@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-6.1.9.tgz#9ac56fc3ea274c897ccbb3c3fe0aaa100c01137d" + dependencies: + chokidar "^1.4.2" + minimist "^1.2.0" + reflect-metadata "^0.1.2" + tsickle "^0.32.1" + +"@angular/compiler@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-6.1.9.tgz#3696659f752b5e239f5186cea72cf17965b59cb8" + dependencies: + tslib "^1.9.0" + +"@angular/core@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-6.1.9.tgz#a21a35de551c95f276ecbb1f314949cc69326950" + dependencies: + tslib "^1.9.0" + +"@angular/forms@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-6.1.9.tgz#d9d8591f4c74270e53e3184eb45e19ba490fdf32" + dependencies: + tslib "^1.9.0" + +"@angular/http@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-6.1.9.tgz#241f35207d62f86bc155feb124a1e73515d66fb6" + dependencies: + tslib "^1.9.0" + +"@angular/material@^6.3.0": + version "6.4.7" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-6.4.7.tgz#3c8f2d6a6a7904d97be29e06a84ffb62a8da6c16" + dependencies: + tslib "^1.7.1" + optionalDependencies: + parse5 "^5.0.0" + +"@angular/platform-browser-dynamic@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.9.tgz#e00f1a4948b4c299b17c9561d83f7ea588117818" + dependencies: + tslib "^1.9.0" + +"@angular/platform-browser@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-6.1.9.tgz#6c832e528c660ad880a16531754e65b9b97d4f9f" + dependencies: + tslib "^1.9.0" + +"@angular/platform-server@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-6.1.9.tgz#431f40278b52779825d5e087283b5d823d72c29d" + dependencies: + domino "^2.0.1" + tslib "^1.9.0" + xhr2 "^0.1.4" + +"@angular/router@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-6.1.9.tgz#29869e53442703c53a943ce375cbb0a0f36927fb" + dependencies: + tslib "^1.9.0" + +"@angular/upgrade@~6.1.8": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-6.1.9.tgz#fe288f2818692d310c84fd040b676afa5b80fc9e" + dependencies: + tslib "^1.9.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/generator@^7.0.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.2.tgz#fde75c072575ce7abbd97322e8fef5bae67e4630" + dependencies: + "@babel/types" "^7.1.2" + jsesc "^2.5.1" + lodash "^4.17.10" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + dependencies: + "@babel/types" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.2.tgz#85c5c47af6d244fab77bce6b9bd830e38c978409" + +"@babel/template@^7.0.0", "@babel/template@^7.1.0": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.1.2" + "@babel/types" "^7.1.2" + +"@babel/traverse@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.0.tgz#503ec6669387efd182c3888c4eec07bcc45d91b2" + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.0.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + debug "^3.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.2.tgz#183e7952cf6691628afdc2e2b90d03240bac80c0" + dependencies: + esutils "^2.0.2" + lodash "^4.17.10" + to-fast-properties "^2.0.0" + +"@hmcts/ccd-case-ui-toolkit@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@hmcts/ccd-case-ui-toolkit/-/ccd-case-ui-toolkit-1.2.5.tgz#d5ca9ee0b42cca676d690092970dce12261c8e7d" + dependencies: + govuk-elements-sass "^3.1.2" + karma-jasmine-html-reporter "^1.2.0" + +"@hmcts/ccpay-web-component@~1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@hmcts/ccpay-web-component/-/ccpay-web-component-1.5.0.tgz#78c8e645bbe1780c2d04c89a11a24f2c048ce1a4" + dependencies: + tslib "^1.9.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@ngtools/webpack@6.0.8": + version "6.0.8" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-6.0.8.tgz#a05bce526aee9da62bb230a95fba83fee99d0bca" + dependencies: + "@angular-devkit/core" "0.6.8" + tree-kill "^1.0.0" + webpack-sources "^1.1.0" + +"@nguniversal/express-engine@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@nguniversal/express-engine/-/express-engine-6.1.0.tgz#384d761556a0accc0738ae89b8a63afb43e76a86" + +"@nguniversal/module-map-ngfactory-loader@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@nguniversal/module-map-ngfactory-loader/-/module-map-ngfactory-loader-6.1.0.tgz#49eb65ed4dc3a3273c920b905e0925e0ed2fbcb8" + +"@nicky-lenaers/ngx-scroll-to@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@nicky-lenaers/ngx-scroll-to/-/ngx-scroll-to-1.1.1.tgz#0ed2681c321b8f357c8e4f45300fec379ca82467" + dependencies: + tslib "^1.9.0" + +"@nodelib/fs.stat@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz#54c5a964462be3d4d78af631363c18d6fa91ac26" + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + dependencies: + any-observable "^0.3.0" + +"@schematics/angular@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.8.4.tgz#ee3c8535476d7b49b1a5676f4a5eee3fc158506f" + dependencies: + "@angular-devkit/core" "0.8.4" + "@angular-devkit/schematics" "0.8.4" + typescript ">=2.6.2 <2.10" + +"@schematics/update@0.8.4": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.8.4.tgz#dddd0f278a21db8d97be102f42ced8b37ba9be7b" + dependencies: + "@angular-devkit/core" "0.8.4" + "@angular-devkit/schematics" "0.8.4" + npm-registry-client "^8.5.1" + rxjs "~6.2.0" + semver "^5.3.0" + semver-intersect "^1.1.2" + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + +"@types/jasmine@*", "@types/jasmine@~2.8.0": + version "2.8.9" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.9.tgz#e028c891e8551fdf6de905d959581fc4fa0b5509" + +"@types/jasminewd2@^2.0.3": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.5.tgz#0910db4bd50202dea9fe6ec37517b0ae6a01a9e6" + dependencies: + "@types/jasmine" "*" + +"@types/node@^6.0.46": + version "6.0.117" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.117.tgz#ccfc2506001404708528d657aad9c1b931111646" + +"@types/node@^8.0.30": + version "8.10.33" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.33.tgz#ca171622ea65852e76d2ac3c5dab71f4882b2e85" + +"@types/q@^0.0.32": + version "0.0.32" + resolved "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + +"@types/selenium-webdriver@^3.0.0": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.12.tgz#6affe5aed1ba379175075a889adbe2bc3aa62159" + +"@webassemblyjs/ast@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.4.3.tgz#3b3f6fced944d8660273347533e6d4d315b5934a" + dependencies: + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/wast-parser" "1.4.3" + debug "^3.1.0" + webassemblyjs "1.4.3" + +"@webassemblyjs/floating-point-hex-parser@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz#f5aee4c376a717c74264d7bacada981e7e44faad" + +"@webassemblyjs/helper-buffer@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz#0434b55958519bf503697d3824857b1dea80b729" + dependencies: + debug "^3.1.0" + +"@webassemblyjs/helper-code-frame@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz#f1349ca3e01a8e29ee2098c770773ef97af43641" + dependencies: + "@webassemblyjs/wast-printer" "1.4.3" + +"@webassemblyjs/helper-fsm@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz#65a921db48fb43e868f17b27497870bdcae22b79" + +"@webassemblyjs/helper-wasm-bytecode@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz#0e5b4b5418e33f8a26e940b7809862828c3721a5" + +"@webassemblyjs/helper-wasm-section@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz#9ceedd53a3f152c3412e072887ade668d0b1acbf" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-buffer" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/wasm-gen" "1.4.3" + debug "^3.1.0" + +"@webassemblyjs/leb128@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.4.3.tgz#5a5e5949dbb5adfe3ae95664d0439927ac557fb8" + dependencies: + leb "^0.3.0" + +"@webassemblyjs/validation@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/validation/-/validation-1.4.3.tgz#9e66c9b3079d7bbcf2070c1bf52a54af2a09aac9" + dependencies: + "@webassemblyjs/ast" "1.4.3" + +"@webassemblyjs/wasm-edit@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz#87febd565e0ffb5ae25f6495bb3958d17aa0a779" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-buffer" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/helper-wasm-section" "1.4.3" + "@webassemblyjs/wasm-gen" "1.4.3" + "@webassemblyjs/wasm-opt" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + "@webassemblyjs/wast-printer" "1.4.3" + debug "^3.1.0" + +"@webassemblyjs/wasm-gen@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz#8553164d0154a6be8f74d653d7ab355f73240aa4" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/leb128" "1.4.3" + +"@webassemblyjs/wasm-opt@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz#26c7a23bfb136aa405b1d3410e63408ec60894b8" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-buffer" "1.4.3" + "@webassemblyjs/wasm-gen" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + debug "^3.1.0" + +"@webassemblyjs/wasm-parser@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz#7ddd3e408f8542647ed612019cfb780830993698" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/helper-wasm-bytecode" "1.4.3" + "@webassemblyjs/leb128" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + webassemblyjs "1.4.3" + +"@webassemblyjs/wast-parser@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz#3250402e2c5ed53dbe2233c9de1fe1f9f0d51745" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/floating-point-hex-parser" "1.4.3" + "@webassemblyjs/helper-code-frame" "1.4.3" + "@webassemblyjs/helper-fsm" "1.4.3" + long "^3.2.0" + webassemblyjs "1.4.3" + +"@webassemblyjs/wast-printer@1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz#3d59aa8d0252d6814a3ef4e6d2a34c9ded3904e0" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/wast-parser" "1.4.3" + long "^3.2.0" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +accepts@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +accepts@~1.3.3, accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + dependencies: + acorn "^5.0.0" + +acorn@^4.0.4: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.0.0: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + +adm-zip@^0.4.9: + version "0.4.11" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.11.tgz#2aa54c84c4b01a9d0fb89bb11982a51f13e3d62a" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +agent-base@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + dependencies: + es6-promisify "^5.0.0" + +ajv-errors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" + +ajv-keywords@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0: + version "6.5.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59" + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@~6.4.0: + version "6.4.0" + resolved "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + uri-js "^3.0.2" + +amdefine@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33" + +amdefine@>=0.0.4, amdefine@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-colors@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.1.0.tgz#dcfaacc90ef9187de413ec3ef8d5eb981a98808f" + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + dependencies: + ansi-wrap "0.1.0" + +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +ansi-wrap@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +app-root-path@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.1.0.tgz#98bf6599327ecea199309866e8140368fd2e646a" + +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + dependencies: + default-require-extensions "^2.0.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.2, argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert@^1.1.1, assert@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assertion-error-formatter@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error-formatter/-/assertion-error-formatter-2.0.1.tgz#6bbdffaec8e2fa9e2b0eb158bfe353132d7c0a9b" + dependencies: + diff "^3.0.0" + pad-right "^0.2.2" + repeat-string "^1.6.1" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +ast-types@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" + +ast-types@0.11.5: + version "0.11.5" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + +async@1.x, async@^1.5.0, async@^1.5.2, async@~1.5.2: + version "1.5.2" + resolved "http://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.4, async@^2.5.0, async@^2.6.0, async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + dependencies: + lodash "^4.17.10" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + +autoprefixer@^8.4.1: + version "8.6.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9" + dependencies: + browserslist "^3.2.8" + caniuse-lite "^1.0.30000864" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.23" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.6.0, aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-generator@^6.18.0, babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-es2015@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-stage-1@^6.5.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0, babel-register@^6.9.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.3, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +babylon@^7.0.0-beta.47: + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + 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" + +basic-auth@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + dependencies: + safe-buffer "5.1.2" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +binary-extensions@^1.0.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + +binaryextensions@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +blocking-proxy@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" + dependencies: + minimist "^1.2.0" + +bluebird@^3.3.0, bluebird@^3.4.1, bluebird@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +body-parser@^1.16.1, body-parser@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "~1.6.3" + iconv-lite "0.4.23" + on-finished "~2.3.0" + qs "6.5.2" + raw-body "2.3.3" + type-is "~1.6.16" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + 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" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browser-resolve@^1.11.0: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + dependencies: + resolve "1.1.7" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@^3.2.8: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +browserstack@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.5.1.tgz#e2dfa66ffee940ebad0a07f7e00fd4687c455d66" + dependencies: + https-proxy-agent "^2.2.1" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.0.6: + version "5.2.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + 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" + +cache-loader@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5" + dependencies: + loader-utils "^1.1.0" + mkdirp "^0.5.1" + neo-async "^2.5.0" + schema-utils "^0.4.2" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864: + version "1.0.30000889" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000889.tgz#53e266c83e725ad3bd2e4a3ea76d5031a8aa4c3e" + +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + dependencies: + check-error "^1.0.2" + +chai-like@^0.2.14: + version "0.2.14" + resolved "https://registry.yarnpkg.com/chai-like/-/chai-like-0.2.14.tgz#8d19101aa2071550c3eac2804b9ef6faf626cb46" + +chai@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "http://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +chalk@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + +chokidar@^1.4.1, chokidar@^1.4.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + lodash.debounce "^4.0.8" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.5" + optionalDependencies: + fsevents "^1.2.2" + +chownr@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + +chrome-trace-event@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-dependency-plugin@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +circular-json@^0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.7.tgz#b8be478d72ea58c7eeda26bf1cf1fba43d188842" + +class-transformer@^0.1.8: + version "0.1.9" + resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.1.9.tgz#29977c528233ca014e6fd9523327ebd31d11ca54" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x, clean-css@^4.1.11: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + dependencies: + source-map "~0.6.0" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-table2@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/cli-table2/-/cli-table2-0.2.0.tgz#2d1ef7f218a0e786e214540562d4bd177fe32d97" + dependencies: + lodash "^3.10.1" + string-width "^1.0.1" + optionalDependencies: + colors "^1.1.2" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +clipboard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.1.tgz#a12481e1c13d8a50f5f036b0560fe5d16d74e46a" + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.0" + shallow-clone "^1.0.0" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + dependencies: + mimic-response "^1.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +clone@^2.1.1, clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +codelyzer@^4.1.0: + version "4.4.4" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.4.4.tgz#29b7dbb51ba9ecc45c7300d61280a6564765d402" + dependencies: + app-root-path "^2.1.0" + css-selector-tokenizer "^0.7.0" + cssauron "^1.4.0" + semver-dsl "^1.0.1" + source-map "^0.5.7" + sprintf-js "^1.1.1" + +coffeescript@~1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.10.0.tgz#e7aa8301917ef621b35d8a39f348dcdd1db7e33e" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +colors@1.1.2, colors@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +colors@^1.1.0, colors@^1.1.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.2.tgz#2df8ff573dfbf255af562f8ce7181d6b971a359b" + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + +combine-source-map@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" + dependencies: + convert-source-map "~1.1.0" + inline-source-map "~0.6.0" + lodash.memoize "~3.0.3" + source-map "~0.5.3" + +combined-stream@1.0.6: + version "1.0.6" + resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +combined-stream@~1.0.5, combined-stream@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + dependencies: + delayed-stream "~1.0.0" + +commander@2.15.1: + version "2.15.1" + resolved "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +commander@2.17.x, commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + +commander@^2.12.1, commander@^2.9.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + +commander@~2.14.1: + version "2.14.1" + resolved "http://registry.npmjs.org/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +compare-versions@^3.2.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.1, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +compressible@~2.0.14: + version "2.0.15" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" + dependencies: + mime-db ">= 1.36.0 < 2" + +compression@^1.5.2, compression@^1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.14" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.6.2, concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + +connect-pause@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/connect-pause/-/connect-pause-0.1.1.tgz#b269b2bb82ddb1ac3db5099c0fb582aba99fb37a" + +connect@^3.6.0: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.5.0, convert-source-map@^1.5.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@~1.1.0: + version "1.1.3" + resolved "http://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + 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" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +copy-webpack-plugin@^4.5.1: + version "4.5.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^1.1.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" + +core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.5.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cors@^2.8.4: + version "2.8.4" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0, crypto-browserify@^3.11.1: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +css-parse@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssauron@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + dependencies: + through X.X.X + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +cucumber-expressions@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cucumber-expressions/-/cucumber-expressions-3.0.0.tgz#4cf424813dae396cc9dab714b8104b459befc32c" + +cucumber-tag-expressions@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/cucumber-tag-expressions/-/cucumber-tag-expressions-1.1.1.tgz#7f5c7b70009bc2b666591bfe64854578bedee85a" + +cucumber@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/cucumber/-/cucumber-2.3.1.tgz#3791a51ffd0c61462ad57fdb8ed111d55b51cde3" + dependencies: + assertion-error-formatter "^2.0.0" + babel-runtime "^6.11.6" + bluebird "^3.4.1" + cli-table "^0.3.1" + colors "^1.1.2" + commander "^2.9.0" + cucumber-expressions "^3.0.0" + cucumber-tag-expressions "^1.0.0" + duration "^0.2.0" + figures "2.0.0" + gherkin "^4.1.0" + glob "^7.0.0" + indent-string "^3.1.0" + is-generator "^1.0.2" + is-stream "^1.1.0" + lodash "^4.0.0" + mz "^2.4.0" + progress "^2.0.0" + resolve "^1.3.3" + stack-chain "^1.3.5" + stacktrace-js "^2.0.0" + string-argv "0.0.2" + upper-case-first "^1.1.2" + util-arity "^1.0.2" + verror "^1.9.0" + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + +cvss@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cvss/-/cvss-1.0.4.tgz#7f4093b0e462e2e6b11fe3dcd08168b8a8693163" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dargs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + +date-format@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-0.0.0.tgz#09206863ab070eb459acea5542cbd856b11966b3" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^1.0.11, dateformat@^1.0.6, dateformat@~1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + +dateformat@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + +debug@*: + version "4.0.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b" + dependencies: + ms "^2.1.1" + +debug@2.2.0: + version "2.2.0" + resolved "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@3.1.0, debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@^0.7.2: + version "0.7.4" + resolved "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decamelize@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" + dependencies: + xregexp "4.0.0" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + dependencies: + type-detect "^4.0.0" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-gateway@^2.6.0: + version "2.7.2" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" + dependencies: + execa "^0.10.0" + ip-regex "^2.1.0" + +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + dependencies: + strip-bom "^3.0.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-conflict@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-node@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@3.5.0, diff@^3.0.0, diff@^3.1.0, diff@^3.2.0, diff@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + +dom-converter@~0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + dependencies: + utila "~0.4" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1, domain-browser@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +domelementtype@1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domino@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.0.tgz#653ba7d331441113b42e40ba05f24253ec86e02e" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +duration@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/duration/-/duration-0.2.1.tgz#c87477ac08c2e540954b730094a5cb33bb1ae3d4" + dependencies: + d "1" + es5-ext "~0.10.23" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +editions@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +ejs@^2.5.7, ejs@^2.5.9: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + +electron-to-chromium@^1.3.47: + version "1.3.73" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.73.tgz#aa67787067d58cc3920089368b3b8d6fe0fc12f6" + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + +elliptic@^6.0.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.2" + +enhanced-resolve@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +envinfo@^5.7.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.10.0.tgz#503a9774ae15b93ea68bdfae2ccd6306624ea6df" + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.2.tgz#4ae8dbaa2bf90a8b450707b9149dcabca135520d" + dependencies: + stackframe "^1.0.4" + +error@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + +errorhandler@^1.2.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.0.tgz#eaba64ca5d542a311ac945f582defc336165d9f4" + dependencies: + accepts "~1.3.3" + escape-html "~1.0.3" + +es-abstract@^1.5.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.23: + version "0.10.46" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3: + version "4.2.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + +es6-promise@~3.0.2: + version "3.0.2" + resolved "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +eventemitter2@~0.4.13: + version "0.4.14" + resolved "http://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + +events@^1.0.0, events@^1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +exit@^0.1.2, exit@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + 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" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +expect@^23.0.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^23.6.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^23.6.0" + jest-message-util "^23.4.0" + jest-regex-util "^23.3.0" + +express-urlrewrite@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/express-urlrewrite/-/express-urlrewrite-1.2.0.tgz#8e667b7761ff1c7ffdb0efa05d64035387c823eb" + dependencies: + debug "*" + path-to-regexp "^1.0.3" + +express@^4.16.2: + version "4.16.3" + resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.3" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + dependencies: + kind-of "^1.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + +external-editor@^2.0.4, external-editor@^2.1.0: + version "2.2.0" + resolved "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + 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" + +extract-zip@^1.6.5, extract-zip@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" + dependencies: + concat-stream "1.6.2" + debug "2.6.9" + mkdirp "0.5.1" + yauzl "2.4.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fancy-log@^1.1.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + time-stamp "^1.0.0" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + +fast-glob@^2.0.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.3.tgz#d09d378e9ef6b0076a0fa1ba7519d9d4d9699c28" + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.0.1" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.1" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@2.0.0, figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-loader@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.4.5" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fileset@0.2.x: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067" + dependencies: + glob "5.x" + minimatch "2.x" + +fileset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + dependencies: + locate-path "^3.0.0" + +findup-sync@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" + dependencies: + glob "~5.0.0" + +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + dependencies: + readable-stream "^2.0.2" + +flow-parser@^0.*: + version "0.82.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.82.0.tgz#0ebb30452ecd5c3c620c8840a1f5a655cc1f8f7d" + +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +follow-redirects@^1.0.0: + version "1.5.8" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" + dependencies: + debug "=3.1.0" + +font-awesome@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.3.1, form-data@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +from2@^2.1.0, from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0, fsevents@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + +fstream@^1.0.0, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + 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" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getobject@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +gh-got@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" + dependencies: + got "^7.0.0" + is-plain-obj "^1.1.0" + +gherkin@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/gherkin/-/gherkin-4.1.3.tgz#11687db93976df97633125a6b2228a1a4bfdfa24" + +github-username@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" + dependencies: + gh-got "^6.0.0" + +glob-all@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" + dependencies: + glob "^7.0.5" + yargs "~1.2.6" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + +glob@5.x, glob@^5.0.15, glob@~5.0.0: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.0.x, glob@~7.0.0: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +globals@^11.1.0: + version "11.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globule@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + dependencies: + delegate "^3.1.2" + +got@^6.7.1: + version "6.7.1" + resolved "http://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +govuk-elements-sass@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/govuk-elements-sass/-/govuk-elements-sass-3.1.3.tgz#ceba688ca7cb7ab64b1427d9e1d44ede4a464712" + dependencies: + govuk_frontend_toolkit "^7.1.0" + +govuk_frontend_toolkit@^7.1.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/govuk_frontend_toolkit/-/govuk_frontend_toolkit-7.6.0.tgz#b09a60631afbba4bfac76a8b7c02e72419c29cf5" + +govuk_template_mustache@^0.23.0: + version "0.23.3" + resolved "https://registry.yarnpkg.com/govuk_template_mustache/-/govuk_template_mustache-0.23.3.tgz#d923f564932649f03dcf38ea9d866c0effc62544" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +grouped-queue@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" + dependencies: + lodash "^4.17.2" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + +grunt-cli@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" + dependencies: + findup-sync "~0.3.0" + grunt-known-options "~1.1.0" + nopt "~3.0.6" + resolve "~1.1.0" + +grunt-known-options@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" + +grunt-legacy-log-utils@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz#d2f442c7c0150065d9004b08fd7410d37519194e" + dependencies: + chalk "~2.4.1" + lodash "~4.17.10" + +grunt-legacy-log@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz#c8cd2c6c81a4465b9bbf2d874d963fef7a59ffb9" + dependencies: + colors "~1.1.2" + grunt-legacy-log-utils "~2.0.0" + hooker "~0.2.3" + lodash "~4.17.5" + +grunt-legacy-util@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz#e10624e7c86034e5b870c8a8616743f0a0845e42" + dependencies: + async "~1.5.2" + exit "~0.1.1" + getobject "~0.1.0" + hooker "~0.2.3" + lodash "~4.17.10" + underscore.string "~3.3.4" + which "~1.3.0" + +grunt@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.3.tgz#b3c99260c51d1b42835766e796527b60f7bba374" + dependencies: + coffeescript "~1.10.0" + dateformat "~1.0.12" + eventemitter2 "~0.4.13" + exit "~0.1.1" + findup-sync "~0.3.0" + glob "~7.0.0" + grunt-cli "~1.2.0" + grunt-known-options "~1.1.0" + grunt-legacy-log "~2.0.0" + grunt-legacy-util "~1.1.1" + iconv-lite "~0.4.13" + js-yaml "~3.5.2" + minimatch "~3.0.2" + mkdirp "~0.5.1" + nopt "~3.0.6" + path-is-absolute "~1.0.0" + rimraf "~2.6.2" + +gulp-util@3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^1.0.11" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +handlebars@^4.0.1, handlebars@^4.0.11: + version "4.0.12" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" + dependencies: + ajv "^5.3.0" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + dependencies: + has-symbol-support-x "^1.4.1" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasha@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +he@1.1.1, he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hooker@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" + +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-minifier@^3.2.3: + version "3.5.20" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14" + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.1.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-webpack-plugin@^3.0.6: + version "3.2.0" + resolved "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: + version "1.6.3" + resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.4.0: + version "0.4.13" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" + +http-proxy-middleware@~0.18.0: + version "0.18.0" + resolved "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + dependencies: + http-proxy "^1.16.2" + is-glob "^4.0.0" + lodash "^4.17.5" + micromatch "^3.1.9" + +http-proxy@^1.13.0, http-proxy@^1.16.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +https-proxy-agent@^2.1.0, https-proxy-agent@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + +iconv-lite@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +iconv-lite@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + dependencies: + import-from "^2.1.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0, indent-string@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +inline-source-map@~0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" + dependencies: + source-map "~0.5.3" + +inquirer@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^5.2.0: + version "5.2.0" + resolved "http://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.0" + figures "^2.0.0" + lodash "^4.17.10" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.1.0" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-ip@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" + dependencies: + default-gateway "^2.6.0" + ipaddr.js "^1.5.2" + +interpret@^1.0.0, interpret@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + +ipaddr.js@^1.5.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + dependencies: + ci-info "^1.5.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-generator@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-generator/-/is-generator-1.0.3.tgz#c14c21057ed36e328db80347966c693f886389f3" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-obj@^1.0.0: + version "1.0.1" + resolved "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + dependencies: + scoped-regex "^1.0.0" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isbinaryfile@^3.0.0, isbinaryfile@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + dependencies: + buffer-alloc "^1.2.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-api@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.0.6.tgz#cd7b33ee678f6c01531d05f5e567ebbcd25f8ecc" + dependencies: + async "^2.6.1" + compare-versions "^3.2.1" + fileset "^2.0.3" + istanbul-lib-coverage "^2.0.1" + istanbul-lib-hook "^2.0.1" + istanbul-lib-instrument "^3.0.0" + istanbul-lib-report "^2.0.2" + istanbul-lib-source-maps "^2.0.1" + istanbul-reports "^2.0.1" + js-yaml "^3.12.0" + make-dir "^1.3.0" + once "^1.4.0" + +istanbul-instrumenter-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949" + dependencies: + convert-source-map "^1.5.0" + istanbul-lib-instrument "^1.7.3" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + +istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + +istanbul-lib-coverage@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#2aee0e073ad8c5f6a0b00e0dfbf52b4667472eda" + +istanbul-lib-hook@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.1.tgz#918a57b75a0f951d552a08487ca1fa5336433d72" + dependencies: + append-transform "^1.0.0" + +istanbul-lib-instrument@^1.7.3: + version "1.10.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.1" + semver "^5.3.0" + +istanbul-lib-instrument@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz#b5f066b2a161f75788be17a9d556f40a0cf2afc9" + dependencies: + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + istanbul-lib-coverage "^2.0.1" + semver "^5.5.0" + +istanbul-lib-report@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.2.tgz#430a2598519113e1da7af274ba861bd42dd97535" + dependencies: + istanbul-lib-coverage "^2.0.1" + make-dir "^1.3.0" + supports-color "^5.4.0" + +istanbul-lib-source-maps@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-2.0.1.tgz#ce8b45131d8293fdeaa732f4faf1852d13d0a97e" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^2.0.1" + make-dir "^1.3.0" + rimraf "^2.6.2" + source-map "^0.6.1" + +istanbul-reports@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.0.1.tgz#fb8d6ea850701a3984350b977a969e9a556116a7" + dependencies: + handlebars "^4.0.11" + +istanbul@0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.3.tgz#5b714ee0ae493ac5ef204b99f3872bceef73d53a" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + fileset "0.2.x" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +istanbul@0.4.5, istanbul@^0.4.0, istanbul@^0.4.3, istanbul@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +istextorbinary@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" + dependencies: + binaryextensions "2" + editions "^1.3.3" + textextensions "2" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + +jasmine-diff@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8" + dependencies: + diff "^3.2.0" + +jasmine-spec-reporter@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" + dependencies: + colors "1.1.2" + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + +jest-diff@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-get-type@^22.1.0: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + +jest-matcher-utils@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" + +jest-message-util@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + +jest-regex-util@^23.3.0: + version "23.3.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" + +jju@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + +js-base64@^2.1.8: + version "2.4.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@~3.5.2: + version "3.5.5" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" + dependencies: + argparse "^1.0.2" + esprima "^2.6.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jscodeshift@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" + dependencies: + async "^1.5.0" + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^6.17.3" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.12.5" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jscodeshift@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.1.tgz#4af6a721648be8638ae1464a190342da52960c33" + dependencies: + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^7.0.0-beta.47" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + neo-async "^2.5.0" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.15.0" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + +json-parse-helpfulerror@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" + dependencies: + jju "^1.1.0" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-server@^0.12.1: + version "0.12.2" + resolved "https://registry.yarnpkg.com/json-server/-/json-server-0.12.2.tgz#2ae4de8de432e279f3374cc9f3882e49e29b35a0" + dependencies: + body-parser "^1.18.2" + chalk "^2.3.0" + compression "^1.7.1" + connect-pause "^0.1.0" + cors "^2.8.4" + errorhandler "^1.2.0" + express "^4.16.2" + express-urlrewrite "^1.2.0" + json-parse-helpfulerror "^1.0.3" + lodash "^4.11.2" + lodash-id "^0.14.0" + lowdb "^0.15.0" + method-override "^2.3.10" + morgan "^1.9.0" + nanoid "^1.0.1" + object-assign "^4.0.1" + please-upgrade-node "^3.0.2" + pluralize "^7.0.0" + request "^2.83.0" + server-destroy "^1.0.1" + update-notifier "^2.3.0" + yargs "^10.0.3" + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2, json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +karma-chrome-launcher@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-cli@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960" + dependencies: + resolve "^1.1.6" + +karma-coverage-istanbul-reporter@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.4.tgz#402ae4ed6eadb9d9dafbd408ffda17897c0d003a" + dependencies: + istanbul-api "^2.0.5" + minimatch "^3.0.4" + +karma-coverage@^1.0.0, karma-coverage@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.2.tgz#cc09dceb589a83101aca5fe70c287645ef387689" + dependencies: + dateformat "^1.0.6" + istanbul "^0.4.0" + lodash "^4.17.0" + minimatch "^3.0.0" + source-map "^0.5.1" + +karma-jasmine-html-reporter@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c" + dependencies: + karma-jasmine "^1.0.2" + +karma-jasmine-html-reporter@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.3.1.tgz#17db92e76ecbce97b281c97c9ac3d8b1723848f9" + +karma-jasmine@^1.0.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3" + +karma-mocha-reporter@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" + dependencies: + chalk "^2.1.0" + log-symbols "^2.1.0" + strip-ansi "^4.0.0" + +karma-phantomjs-launcher@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" + dependencies: + lodash "^4.0.1" + phantomjs-prebuilt "^2.1.7" + +karma-remap-istanbul@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/karma-remap-istanbul/-/karma-remap-istanbul-0.2.1.tgz#04ce35ae4bfa7c710d37afe910d9cc11b5e5d7cf" + dependencies: + istanbul "^0.4.3" + remap-istanbul "^0.6.4" + +karma-source-map-support@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz#36dd4d8ca154b62ace95696236fae37caf0a7dde" + dependencies: + source-map-support "^0.5.5" + +karma-typescript@^3.0.5: + version "3.0.13" + resolved "https://registry.yarnpkg.com/karma-typescript/-/karma-typescript-3.0.13.tgz#8948afbd103ac1987a5961a0f43a1ba2871067cd" + dependencies: + acorn "^4.0.4" + assert "^1.4.1" + async "^2.1.4" + browser-resolve "^1.11.0" + browserify-zlib "^0.2.0" + buffer "^5.0.6" + combine-source-map "^0.8.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + convert-source-map "^1.5.0" + crypto-browserify "^3.11.1" + diff "^3.2.0" + domain-browser "^1.1.7" + events "^1.1.1" + glob "^7.1.1" + https-browserify "^1.0.0" + istanbul "0.4.5" + json-stringify-safe "^5.0.1" + karma-coverage "^1.1.1" + lodash "^4.17.4" + log4js "^1.1.1" + minimatch "^3.0.3" + os-browserify "^0.3.0" + pad "^2.0.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.4.1" + querystring-es3 "^0.2.1" + readable-stream "^2.3.3" + remap-istanbul "^0.10.1" + source-map "0.6.1" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.3" + timers-browserify "^2.0.2" + tmp "0.0.29" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +karma@^1.3.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.1.tgz#85cc08e9e0a22d7ce9cca37c4a1be824f6a2b1ae" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "1.7.3" + source-map "^0.5.3" + tmp "0.0.31" + useragent "^2.1.12" + +kew@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + dependencies: + json-buffer "3.0.0" + +killable@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + +kind-of@^1.1.0: + version "1.1.0" + resolved "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +klaw-sync@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-2.1.0.tgz#3d3bcd8600e7bfdef53231c739ff053aed560e44" + optionalDependencies: + graceful-fs "^4.1.11" + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + dependencies: + graceful-fs "^4.1.11" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + dependencies: + invert-kv "^2.0.0" + +leb@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/leb/-/leb-0.3.0.tgz#32bee9fad168328d6aea8522d833f4180eed1da3" + +less-loader@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^3.0.0" + +less@^3.0.4: + version "3.8.1" + resolved "https://registry.yarnpkg.com/less/-/less-3.8.1.tgz#f31758598ef5a1930dd4caefa9e4340641e71e1d" + dependencies: + clone "^2.1.2" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +license-webpack-plugin@^1.3.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.5.0.tgz#22ca0f12a884aee35bb61dfd8eab45fe36a04523" + dependencies: + ejs "^2.5.7" + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + dependencies: + immediate "~3.0.5" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.14.1: + version "0.14.2" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.2.tgz#cbe44b021100a15376addfc2d79349ee430bfe14" + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.4.0" + listr-verbose-renderer "^0.4.0" + p-map "^1.1.1" + rxjs "^6.1.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash-id@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/lodash-id/-/lodash-id-0.14.0.tgz#baf48934e543a1b5d6346f8c84698b1a8c803896" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.memoize@~3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" + +lodash.mergewith@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash@4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10, lodash@~4.17.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + +lodash@^3.10.1, lodash@^3.8.0: + version "3.10.1" + resolved "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-symbols@^2.1.0, log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + +log4js@^0.6.31: + version "0.6.38" + resolved "http://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + +log4js@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-1.1.1.tgz#c21d29c7604089e4f255833e7f94b3461de1ff43" + dependencies: + debug "^2.2.0" + semver "^5.3.0" + streamroller "^0.4.0" + +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + +long@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowdb@^0.15.0: + version "0.15.5" + resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-0.15.5.tgz#9ade105df8aa573692d1221622b85414fbf4fa96" + dependencies: + graceful-fs "^4.1.3" + is-promise "^2.1.0" + json-parse-helpfulerror "^1.0.3" + lodash "4" + steno "^0.4.1" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + +lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0, make-dir@^1.1.0, make-dir@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + dependencies: + pify "^3.0.0" + +make-error@^1.1.1: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + +map-age-cleaner@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz#098fb15538fd3dbe461f12745b0ca8568d4e3f74" + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +marked@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.5.1.tgz#062f43b88b02ee80901e8e8d8e6a620ddb3aa752" + +math-random@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem-fs-editor@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz#d282a0c4e0d796e9eff9d75661f25f68f389af53" + dependencies: + commondir "^1.0.1" + deep-extend "^0.6.0" + ejs "^2.5.9" + glob "^7.0.3" + globby "^7.1.1" + isbinaryfile "^3.0.2" + mkdirp "^0.5.0" + multimatch "^2.0.0" + rimraf "^2.2.8" + through2 "^2.0.0" + vinyl "^2.0.1" + +mem-fs@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" + dependencies: + through2 "^2.0.0" + vinyl "^1.1.0" + vinyl-file "^2.0.0" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +mem@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^1.0.0" + p-is-promise "^1.1.0" + +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + 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" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +merge2@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" + +method-override@^2.3.10: + version "2.3.10" + resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.3.10.tgz#e3daf8d5dee10dd2dce7d4ae88d62bbee77476b4" + dependencies: + debug "2.6.9" + methods "~1.1.2" + parseurl "~1.3.2" + vary "~1.1.2" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + 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" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.36.0 < 2", mime-db@~1.36.0: + version "1.36.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + dependencies: + mime-db "~1.36.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^1.3.4, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mime@^2.0.3, mime@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + +mini-css-extract-plugin@~0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@2.x: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^0.1.0: + version "0.1.0" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +minipass@^2.2.1, minipass@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + dependencies: + 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 "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mkdirp@~0.3.5: + version "0.3.5" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + +mocha@^5.0.5: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + +moment@^2.20.1: + version "2.22.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" + +morgan@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59" + dependencies: + basic-auth "~2.0.0" + debug "2.6.9" + depd "~1.1.2" + on-finished "~2.3.0" + on-headers "~1.0.1" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + 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" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multidep@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/multidep/-/multidep-2.0.2.tgz#ffa2b97791bc4c879267dc3f7324c207b2decc67" + dependencies: + rimraf "^2.4.3" + rsvp "^3.1.0" + spawn-cmd "0.0.2" + +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.10.0, nan@^2.9.2: + version "2.11.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + +nanoid@^1.0.1: + version "1.2.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-1.2.6.tgz#5b9427cabf41f5df1fc371b14c969ffcd3b095aa" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + dependencies: + 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" + +needle@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +neo-async@^2.5.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" + +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + +ng2-mock-component@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ng2-mock-component/-/ng2-mock-component-0.1.1.tgz#5980e8887523754f855febc0c11f6c20f016d865" + +ngx-device-detector@^1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/ngx-device-detector/-/ngx-device-detector-1.3.3.tgz#87371c03abe08a6bf1b96ab5ca891e6356b63913" + +ngx-md@~6.0.0: + version "6.0.9" + resolved "https://registry.yarnpkg.com/ngx-md/-/ngx-md-6.0.9.tgz#0664ccf05e84e64afc1c134b89259452364ee4cb" + dependencies: + marked "^0.5.0" + prismjs "^1.15.0" + tslib "^1.9.0" + +ngx-pagination@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ngx-pagination/-/ngx-pagination-3.2.0.tgz#67271e5395854464657a151276faa8154dce4806" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + +node-dir@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.10.0: + version "0.10.3" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-sass@^4.9.0: + version "4.9.3" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.3.tgz#f407cf3d66f78308bb1e346b24fa428703196224" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.10.0" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "2.87.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +nodesecurity-npm-utils@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nodesecurity-npm-utils/-/nodesecurity-npm-utils-6.0.0.tgz#5fb5974008c0c97a5c01844faa8fd3fc5520806c" + +nomnom@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + +"nopt@2 || 3", nopt@3.x, nopt@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-bundled@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + +"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + dependencies: + hosted-git-info "^2.6.0" + osenv "^0.1.5" + semver "^5.5.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.6: + version "1.1.11" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-registry-client@^8.5.1: + version "8.6.0" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + safe-buffer "^5.1.1" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + ssri "^5.2.4" + optionalDependencies: + npmlog "2 || ^3.1.0 || ^4.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nsp@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/nsp/-/nsp-3.2.1.tgz#0f540f8e85851e4ad370b14d5001098046dedfd1" + dependencies: + chalk "^2.1.0" + cli-table2 "^0.2.0" + cvss "^1.0.2" + https-proxy-agent "^2.1.0" + inquirer "^3.3.0" + nodesecurity-npm-utils "^6.0.0" + semver "^5.4.1" + wreck "^12.5.1" + yargs "^9.0.1" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +opn@^5.1.0, opn@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1, optimist@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +original@>=0.0.5: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-locale@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + dependencies: + execa "^0.10.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.4, osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "http://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + dependencies: + p-reduce "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + +p-lazy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" + +p-limit@^1.0.0, p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + dependencies: + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +p-try@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pad-right@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/pad-right/-/pad-right-0.2.2.tgz#6fbc924045d244f2a2a244503060d3bfc6009774" + dependencies: + repeat-string "^1.5.2" + +pad@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/pad/-/pad-2.2.1.tgz#e53e5de1304bc4c6c38004cad803f7641cff3220" + dependencies: + wcwidth "^1.0.1" + +pako@~1.0.2, pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.1" + resolved "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +parse5@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + +parse5@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1, path-is-absolute@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-to-regexp@^1.0.3: + version "1.7.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" + dependencies: + isarray "0.0.1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +phantomjs-prebuilt@^2.1.16, phantomjs-prebuilt@^2.1.7: + version "2.1.16" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz#efd212a4a3966d3647684ea8ba788549be2aefef" + dependencies: + es6-promise "^4.0.3" + extract-zip "^1.6.5" + fs-extra "^1.0.0" + hasha "^2.2.0" + kew "^0.7.0" + progress "^1.1.8" + request "^2.81.0" + request-progress "^2.0.1" + which "^1.2.10" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + dependencies: + find-up "^3.0.0" + +please-upgrade-node@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" + dependencies: + semver-compare "^1.0.0" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +portfinder@^1.0.13, portfinder@^1.0.9: + version "1.0.17" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.17.tgz#a8a1691143e46c4735edefcf4fbcccedad26456a" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +postcss-import@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0" + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-load-config@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + dependencies: + cosmiconfig "^4.0.0" + import-cwd "^2.0.0" + +postcss-loader@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.6.tgz#1d7dd7b17c6ba234b9bed5af13e0bea40a42d740" + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.0" + postcss-load-config "^2.0.0" + schema-utils "^0.4.0" + +postcss-url@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.2.tgz#5fea273807fb84b38c461c3c9a9e8abd235f7120" + dependencies: + mime "^1.4.1" + minimatch "^3.0.4" + mkdirp "^0.5.0" + postcss "^6.0.1" + xxhashjs "^0.2.1" + +postcss-value-parser@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.22, postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +prettier@^1.12.1, prettier@^1.7.4: + version "1.14.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +pretty-format@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +prismjs@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.15.0.tgz#8801d332e472091ba8def94976c8877ad60398d9" + optionalDependencies: + clipboard "^2.0.0" + +private@^0.1.6, private@^0.1.8, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +protractor-beautiful-reporter@^1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/protractor-beautiful-reporter/-/protractor-beautiful-reporter-1.2.5.tgz#c56194c704828c83e7a72d546f953fa30d3d4711" + dependencies: + circular-json "^0.3.1" + fs-extra "^3.0.1" + klaw-sync "^2.1.0" + mkdirp "~0.3.5" + underscore "~1.6.0" + +protractor-cucumber-framework@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/protractor-cucumber-framework/-/protractor-cucumber-framework-4.2.0.tgz#e44f6d33e6c4dc103a9b4b5dc91023b474530dbe" + dependencies: + debug "^3.1.0" + glob "^7.0.3" + q "^1.4.1" + tmp "^0.0.33" + +protractor-screenshoter-plugin@^0.10.1: + version "0.10.3" + resolved "https://registry.yarnpkg.com/protractor-screenshoter-plugin/-/protractor-screenshoter-plugin-0.10.3.tgz#27de0caaa49eddda7cd80ab9ba809937733aafee" + dependencies: + circular-json "^0.5.1" + fs-extra "^7.0.0" + klaw-sync "^6.0.0" + lodash "^4.17.11" + mkdirp "^0.5.1" + moment "^2.20.1" + q "^1.5.1" + screenshoter-report-analyzer "^0.6" + uuid "^3.1.0" + +protractor@^5.4.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.1.tgz#011a99e38df7aa45d22455b889ffbb13a6ce0bd9" + dependencies: + "@types/node" "^6.0.46" + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "^3.0.0" + blocking-proxy "^1.0.0" + browserstack "^1.5.1" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "2.8.0" + jasminewd2 "^2.1.0" + optimist "~0.6.0" + q "1.4.1" + saucelabs "^1.5.0" + selenium-webdriver "3.6.0" + source-map-support "~0.4.0" + webdriver-js-extender "2.1.0" + webdriver-manager "^12.0.6" + +proxy-addr@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + +proxy-from-env@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +psl@^1.1.24: + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +puppeteer@^1.6.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.8.0.tgz#9e8bbd2f5448cc19cac220efc0512837104877ad" + dependencies: + debug "^3.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^2.2.1" + mime "^2.0.3" + progress "^2.0.0" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^5.1.1" + +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +q@^1.4.1, q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + +qs@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@6.5.2, qs@~6.5.1, qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + +query-string@^5.0.1: + version "5.1.1" + resolved "http://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0, querystring-es3@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" + +randomatic@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +raw-body@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" + dependencies: + bytes "3.0.0" + http-errors "1.6.3" + iconv-lite "0.4.23" + unpipe "1.0.0" + +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + dependencies: + pify "^2.3.0" + +read-chunk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" + dependencies: + pify "^3.0.0" + safe-buffer "^5.1.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: + version "2.3.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + 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" + +readable-stream@1.0, readable-stream@~1.0.2: + version "1.0.34" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^1.1.7, readable-stream@~1.1.9: + version "1.1.14" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.0, readable-stream@~2.0.6: + version "2.0.6" + resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +recast@^0.12.5: + version "0.12.9" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" + dependencies: + ast-types "0.10.1" + core-js "^2.4.1" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +recast@^0.15.0: + version "0.15.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.5.tgz#6871177ee26720be80d7624e4283d5c855a5cb0b" + dependencies: + ast-types "0.11.5" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reflect-metadata@^0.1.12, reflect-metadata@^0.1.2: + version "0.1.12" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" + +regenerate@^1.2.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remap-istanbul@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.10.1.tgz#3aa58dd5021d499f336d3ba5bf3bbb91c1b88e37" + dependencies: + amdefine "^1.0.0" + istanbul "0.4.5" + minimatch "^3.0.3" + plugin-error "^0.1.2" + source-map "^0.6.1" + through2 "2.0.1" + +remap-istanbul@^0.6.4: + version "0.6.4" + resolved "http://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.6.4.tgz#ac551eff1aa641504b4f318d0303dda61e3bb695" + dependencies: + amdefine "1.0.0" + gulp-util "3.0.7" + istanbul "0.4.3" + source-map ">=0.5.6" + through2 "2.0.1" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +renderkid@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" + dependencies: + css-select "^1.1.0" + dom-converter "~0.2" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + +request-progress@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@2.87.0: + version "2.87.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.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.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@^2.74.0, request@^2.81.0, request@^2.83.0, request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + dependencies: + 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.0" + 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.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@1.1.7, resolve@1.1.x, resolve@~1.1.0: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.5.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + dependencies: + path-parse "^1.0.5" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +rimraf@~2.2.6: + version "2.2.8" + resolved "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rsvp@^3.1.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + +run-async@^2.0.0, run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +rx-polling@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rx-polling/-/rx-polling-1.0.1.tgz#d7dd8857633ba07ed4617dd333fcac51852693f1" + +rxjs-compat@^6.0.0-rc.0: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs-compat/-/rxjs-compat-6.3.3.tgz#2ab3b9ac0dac0c073749d55fef9c03ea1df2045c" + +rxjs@^5.5.2: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + dependencies: + symbol-observable "1.0.1" + +rxjs@^6.0.0, rxjs@^6.1.0, rxjs@^6.2.1: + version "6.3.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + dependencies: + tslib "^1.9.0" + +rxjs@~6.2.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.2.tgz#eb75fa3c186ff5289907d06483a77884586e1cf9" + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sass-loader@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.1.0.tgz#16fd5138cb8b424bf8a759528a1972d72aad069d" + dependencies: + clone-deep "^2.0.1" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + neo-async "^2.5.0" + pify "^3.0.0" + semver "^5.5.0" + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + dependencies: + https-proxy-agent "^2.2.1" + +sax@0.5.x: + version "0.5.8" + resolved "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.4, schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + +screenshoter-report-analyzer@^0.6: + version "0.6.0" + resolved "https://registry.yarnpkg.com/screenshoter-report-analyzer/-/screenshoter-report-analyzer-0.6.0.tgz#0a6f88d5f5d1ac16b6cf7262effba31fee48ed12" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + +selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +selfsigned@^1.9.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" + dependencies: + node-forge "0.7.5" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver-dsl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" + dependencies: + semver "^5.3.0" + +semver-intersect@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.4.0.tgz#bdd9c06bedcdd2fedb8cd352c3c43ee8c61321f3" + dependencies: + semver "^5.0.0" + +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + +semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-javascript@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +server-destroy@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + dependencies: + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shelljs@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +silent-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9" + dependencies: + debug "^2.2.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.3, slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + 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" + +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.3" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + dependencies: + debug "2.3.3" + engine.io "1.8.3" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.3" + socket.io-parser "2.3.1" + +sockjs-client@1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sonar-scanner@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/sonar-scanner/-/sonar-scanner-3.1.0.tgz#51c1c1101f54b98abc5d8565209b1d9232979343" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.0, source-map-support@^0.4.15, source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.0, source-map-support@^0.5.5: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +source-map@>=0.5.6: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + +source-map@^0.4.2, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.3: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + +spawn-cmd@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-cmd/-/spawn-cmd-0.0.2.tgz#6d5e251fad0eab00b0f193d245669a7a228ec0de" + +spdx-correct@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.1.tgz#434434ff9d1726b4d9f4219d1004813d80639e30" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f" + +spdy-transport@^2.0.18: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@^1.0.3, sprintf-js@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + safer-buffer "^2.0.2" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + dependencies: + safe-buffer "^5.1.1" + +stack-chain@^1.3.5: + version "1.3.7" + resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285" + +stack-generator@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.3.tgz#bb74385c67ffc4ccf3c4dee5831832d4e509c8a0" + dependencies: + stackframe "^1.0.4" + +stack-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + +stackframe@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" + +stacktrace-gps@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.2.tgz#33f8baa4467323ab2bd1816efa279942ba431ccc" + dependencies: + source-map "0.5.6" + stackframe "^1.0.4" + +stacktrace-js@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.0.tgz#776ca646a95bc6c6b2b90776536a7fc72c6ddb58" + dependencies: + error-stack-parser "^2.0.1" + stack-generator "^2.0.1" + stacktrace-gps "^3.0.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stats-webpack-plugin@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b" + dependencies: + lodash "^4.17.4" + +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + dependencies: + readable-stream "^2.0.1" + +steno@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" + dependencies: + graceful-fs "^4.1.3" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +streamroller@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.4.1.tgz#d435bd5974373abd9bd9068359513085106cc05f" + dependencies: + date-format "^0.0.0" + debug "^0.7.2" + mkdirp "^0.5.1" + readable-stream "^1.1.7" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + +string-argv@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@^1.0.3, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" + dependencies: + loader-utils "^1.1.0" + schema-utils "^0.4.5" + +stylus-loader@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" + dependencies: + loader-utils "^1.0.2" + lodash.clonedeep "^4.5.0" + when "~3.6.x" + +stylus@^0.54.5: + version "0.54.5" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" + dependencies: + css-parse "1.7.x" + debug "*" + glob "7.0.x" + mkdirp "0.5.x" + sax "0.5.x" + source-map "0.1.x" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +symbol-observable@^1.1.0, symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + +tapable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + +tar@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +tar@^4: + version "4.4.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.3.3" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +temp@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +textextensions@2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + dependencies: + any-promise "^1.0.0" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through2@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" + dependencies: + readable-stream "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@X.X.X, through@^2.3.6: + version "2.3.8" + resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +thunky@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.2, timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + dependencies: + setimmediate "^1.0.4" + +tiny-emitter@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.0.2.tgz#82d27468aca5ade8e5fd1e6d22b57dd43ebdfb7c" + +tmp@0.0.29: + version "0.0.29" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.x, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + +tough-cookie@~2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +tree-kill@^1.0.0, tree-kill@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + dependencies: + glob "^7.1.2" + +ts-loader@^4.2.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-4.5.0.tgz#a1ce70b2dc799941fb2197605f0d67874097859b" + dependencies: + chalk "^2.3.0" + enhanced-resolve "^4.0.0" + loader-utils "^1.0.2" + micromatch "^3.1.4" + semver "^5.0.1" + +ts-node@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-3.3.0.tgz#c13c6a3024e30be1180dd53038fc209289d4bf69" + dependencies: + arrify "^1.0.0" + chalk "^2.0.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.0" + tsconfig "^6.0.0" + v8flags "^3.0.0" + yn "^2.0.0" + +tsconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-6.0.0.tgz#6b0e8376003d7af1864f8df8f89dd0059ffcd032" + dependencies: + strip-bom "^3.0.0" + strip-json-comments "^2.0.0" + +tsickle@^0.32.1: + version "0.32.1" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.32.1.tgz#f16e94ba80b32fc9ebe320dc94fbc2ca7f3521a5" + dependencies: + jasmine-diff "^0.1.3" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map "^0.6.0" + source-map-support "^0.5.0" + +tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + +tslint@^5.0.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.27.2" + +tsutils@^2.27.2: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + +type-is@~1.6.15, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +typescript@2.7.2: + version "2.7.2" + resolved "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + +"typescript@>=2.6.2 <2.10", typescript@~2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" + +uglify-es@^3.3.4: + version "3.3.10" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.10.tgz#8b0b7992cebe20edc26de1bf325cef797b8f3fa5" + dependencies: + commander "~2.14.1" + source-map "~0.6.1" + +uglify-js@3.4.x, uglify-js@^3.1.4: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + dependencies: + commander "~2.17.1" + source-map "~0.6.1" + +uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +underscore.string@~3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-filename@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +upath@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + +update-notifier@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + dependencies: + upper-case "^1.1.1" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +uri-js@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" + dependencies: + punycode "^2.1.0" + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url-loader@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.3.tgz#bfaee455c889023219d757e045fa6a684ec36c15" + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + +useragent@^2.1.12: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-arity@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" + +util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + +v8-compile-cache@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" + +v8flags@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.1.tgz#42259a1461c08397e37fe1d4f1cfb59cad85a053" + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +verror@1.10.0, verror@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" + dependencies: + graceful-fs "^4.1.2" + pify "^2.3.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^2.0.0" + vinyl "^1.1.0" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + +webassemblyjs@1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webassemblyjs/-/webassemblyjs-1.4.3.tgz#0591893efb8fbde74498251cbe4b2d83df9239cb" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/validation" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + "@webassemblyjs/wast-parser" "1.4.3" + long "^3.2.0" + +webdriver-js-extender@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" + dependencies: + "@types/selenium-webdriver" "^3.0.0" + selenium-webdriver "^3.0.1" + +webdriver-manager@^12.0.6, webdriver-manager@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.0.tgz#f6601e52de5f0c97fc7024c889eeb2416f2f1d9d" + dependencies: + adm-zip "^0.4.9" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.87.0" + rimraf "^2.5.2" + semver "^5.3.0" + xml2js "^0.4.17" + +webpack-addons@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" + dependencies: + jscodeshift "^0.4.0" + +webpack-cli@^2.0.14: + version "2.1.5" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.5.tgz#3081fdeb2f205f0a54aa397986880b0c20a71f7a" + dependencies: + chalk "^2.4.1" + cross-spawn "^6.0.5" + diff "^3.5.0" + enhanced-resolve "^4.0.0" + envinfo "^5.7.0" + glob-all "^3.1.0" + global-modules "^1.0.0" + got "^8.3.1" + import-local "^1.0.0" + inquirer "^5.2.0" + interpret "^1.1.0" + jscodeshift "^0.5.0" + listr "^0.14.1" + loader-utils "^1.1.0" + lodash "^4.17.10" + log-symbols "^2.2.0" + mkdirp "^0.5.1" + p-each-series "^1.0.0" + p-lazy "^1.0.0" + prettier "^1.12.1" + supports-color "^5.4.0" + v8-compile-cache "^2.0.0" + webpack-addons "^1.1.5" + yargs "^11.1.0" + yeoman-environment "^2.1.1" + yeoman-generator "^2.0.5" + +webpack-core@^0.6.8: + version "0.6.9" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + dependencies: + source-list-map "~0.1.7" + source-map "~0.4.1" + +webpack-dev-middleware@3.4.0, webpack-dev-middleware@^3.1.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" + dependencies: + memory-fs "~0.4.1" + mime "^2.3.1" + range-parser "^1.0.3" + webpack-log "^2.0.0" + +webpack-dev-server@^3.1.4: + version "3.1.9" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.9.tgz#8b32167624d2faff40dcedc2cbce17ed1f34d3e0" + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.18.0" + import-local "^2.0.0" + internal-ip "^3.0.1" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + schema-utils "^1.0.0" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.1.5" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "3.4.0" + webpack-log "^2.0.0" + yargs "12.0.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.1.2: + version "4.1.4" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" + dependencies: + lodash "^4.17.5" + +webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-subresource-integrity@^1.1.0-rc.4: + version "1.1.0-rc.6" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz#37f6f1264e1eb378e41465a98da80fad76ab8886" + dependencies: + webpack-core "^0.6.8" + +webpack@~4.8.1: + version "4.8.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.8.3.tgz#957c8e80000f9e5cc03d775e78b472d8954f4eeb" + dependencies: + "@webassemblyjs/ast" "1.4.3" + "@webassemblyjs/wasm-edit" "1.4.3" + "@webassemblyjs/wasm-parser" "1.4.3" + acorn "^5.0.0" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^0.1.1" + enhanced-resolve "^4.0.0" + eslint-scope "^3.7.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.0.1" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + +when@~3.6.x: + version "3.6.4" + resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@1, which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.14, which@^1.2.9, which@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + dependencies: + string-width "^1.0.2 || 2" + +widest-line@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + dependencies: + string-width "^2.1.1" + +wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +wreck@^12.5.1: + version "12.5.1" + resolved "https://registry.yarnpkg.com/wreck/-/wreck-12.5.1.tgz#cd2ffce167449e1f0242ed9cf80552e20fb6902a" + dependencies: + boom "5.x.x" + hoek "4.x.x" + +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^5.1.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + dependencies: + async-limiter "~1.0.0" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +x-frame-options@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/x-frame-options/-/x-frame-options-1.0.0.tgz#ff9c1ca944b916a9bc27d6672a8b39b5b08b427f" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +xhr2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" + +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +xregexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" + +xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +xxhashjs@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + dependencies: + cuint "^0.2.2" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + +yargs-parser@^10.0.0, yargs-parser@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + dependencies: + camelcase "^4.1.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + dependencies: + camelcase "^4.1.0" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.0" + +yargs@12.0.2: + version "12.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" + dependencies: + cliui "^4.0.0" + decamelize "^2.0.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^10.1.0" + +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.1.0" + +yargs@^11.1.0: + version "11.1.0" + resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~1.2.6: + version "1.2.6" + resolved "http://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" + dependencies: + minimist "^0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +yeoman-environment@^2.0.5, yeoman-environment@^2.1.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.3.3.tgz#1bd9720714cc49036e901503a789d809df8f51bf" + dependencies: + chalk "^2.4.1" + cross-spawn "^6.0.5" + debug "^3.1.0" + diff "^3.5.0" + escape-string-regexp "^1.0.2" + globby "^8.0.1" + grouped-queue "^0.3.3" + inquirer "^6.0.0" + is-scoped "^1.0.0" + lodash "^4.17.10" + log-symbols "^2.2.0" + mem-fs "^1.1.0" + strip-ansi "^4.0.0" + text-table "^0.2.0" + untildify "^3.0.3" + +yeoman-generator@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.5.tgz#57b0b3474701293cc9ec965288f3400b00887c81" + dependencies: + async "^2.6.0" + chalk "^2.3.0" + cli-table "^0.3.1" + cross-spawn "^6.0.5" + dargs "^5.1.0" + dateformat "^3.0.3" + debug "^3.1.0" + detect-conflict "^1.0.0" + error "^7.0.2" + find-up "^2.1.0" + github-username "^4.0.0" + istextorbinary "^2.2.1" + lodash "^4.17.10" + make-dir "^1.1.0" + mem-fs-editor "^4.0.0" + minimist "^1.2.0" + pretty-bytes "^4.0.2" + read-chunk "^2.1.0" + read-pkg-up "^3.0.0" + rimraf "^2.6.2" + run-async "^2.0.0" + shelljs "^0.8.0" + text-table "^0.2.0" + through2 "^2.0.0" + yeoman-environment "^2.0.5" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + +zone.js@^0.8.26: + version "0.8.26" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d" From 88071422445f33d7b311b70c3cee5c7e8f84a937 Mon Sep 17 00:00:00 2001 From: andrewf Date: Thu, 4 Oct 2018 11:48:09 +0100 Subject: [PATCH 09/30] RDM-3023 Attempt at fixing tests. --- package.json | 11 +++--- yarn.lock | 105 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 88 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index e5737204f..5fc4a4821 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,6 @@ "@nguniversal/express-engine": "^6.0.0", "@nguniversal/module-map-ngfactory-loader": "^6.0.0", "@nicky-lenaers/ngx-scroll-to": "^1.0.0", - "growl": "1.10.5", - "grunt": "^1.0.1", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "chai-like": "^0.2.14", @@ -67,9 +65,12 @@ "font-awesome": "^4.7.0", "govuk-elements-sass": "^3.1.2", "govuk_template_mustache": "^0.23.0", + "growl": "1.10.5", + "grunt": "^1.0.1", + "karma-typescript-es6-transform": "^1.0.4", "mocha": "^5.0.5", - "ngx-device-detector": "^1.3.0", "multidep": "2.0.2", + "ngx-device-detector": "^1.3.0", "ngx-md": "~6.0.0", "ngx-pagination": "^3.0.3", "reflect-metadata": "^0.1.12", @@ -88,7 +89,7 @@ "@types/jasminewd2": "^2.0.3", "@types/node": "^8.0.30", "codelyzer": "^4.1.0", - "jasmine-core": "~2.8.0", + "jasmine-core": "~3.2.0", "jasmine-spec-reporter": "^4.2.1", "json-server": "^0.12.1", "karma": "^1.3.0", @@ -108,10 +109,10 @@ "phantomjs-prebuilt": "^2.1.16", "prettier": "^1.7.4", "protractor": "^5.4.0", - "puppeteer": "^1.6.0", "protractor-beautiful-reporter": "^1.2.1", "protractor-cucumber-framework": "^4.2.0", "protractor-screenshoter-plugin": "^0.10.1", + "puppeteer": "^1.6.0", "sonar-scanner": "^3.0.3", "ts-loader": "^4.2.0", "ts-node": "^3.3.0", diff --git a/yarn.lock b/yarn.lock index dcdaa9ca0..36b06e41b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -541,7 +541,7 @@ acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0: +acorn@^5.0.0, acorn@^5.4.1: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" @@ -901,7 +901,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.26.0: +babel-core@^6.23.1, babel-core@^6.26.0: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" dependencies: @@ -1120,7 +1120,7 @@ babel-plugin-transform-async-generator-functions@^6.24.1: babel-plugin-syntax-async-generators "^6.5.0" babel-runtime "^6.22.0" -babel-plugin-transform-async-to-generator@^6.24.1: +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" dependencies: @@ -1167,7 +1167,7 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.24.1: +babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" dependencies: @@ -1177,7 +1177,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-types "^6.26.0" lodash "^4.17.4" -babel-plugin-transform-es2015-classes@^6.24.1: +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -1191,33 +1191,33 @@ babel-plugin-transform-es2015-classes@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.24.1: +babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.22.0: +babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: +babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0: +babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.24.1: +babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: @@ -1231,7 +1231,7 @@ babel-plugin-transform-es2015-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.24.1: +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" dependencies: @@ -1239,7 +1239,7 @@ babel-plugin-transform-es2015-modules-amd@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: version "6.26.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" dependencies: @@ -1248,7 +1248,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1: babel-template "^6.26.0" babel-types "^6.26.0" -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: +babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" dependencies: @@ -1256,7 +1256,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.24.1: +babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" dependencies: @@ -1264,14 +1264,14 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.24.1: +babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.24.1: +babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: @@ -1282,7 +1282,7 @@ babel-plugin-transform-es2015-parameters@^6.24.1: babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: +babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: @@ -1295,7 +1295,7 @@ babel-plugin-transform-es2015-spread@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.24.1: +babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: @@ -1309,13 +1309,13 @@ babel-plugin-transform-es2015-template-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: +babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.24.1: +babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: @@ -1323,7 +1323,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1: babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.24.1: +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" dependencies: @@ -1352,7 +1352,7 @@ babel-plugin-transform-object-rest-spread@^6.22.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-plugin-transform-regenerator@^6.24.1: +babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" dependencies: @@ -1365,6 +1365,41 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" +babel-preset-env@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + babel-preset-es2015@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" @@ -1741,7 +1776,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.8: +browserslist@^3.2.6, browserslist@^3.2.8: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" dependencies: @@ -5166,6 +5201,10 @@ jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" +jasmine-core@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.2.1.tgz#8e4ff5b861603ee83343f2b49eee6a0ffe9650ce" + jasmine-diff@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8" @@ -5485,6 +5524,16 @@ karma-source-map-support@^1.2.0: dependencies: source-map-support "^0.5.5" +karma-typescript-es6-transform@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-typescript-es6-transform/-/karma-typescript-es6-transform-1.0.4.tgz#0ab2fd2fbd5f16e734a71f44a4cbf91b257be408" + dependencies: + acorn "^5.4.1" + babel-core "^6.23.1" + babel-preset-env "^1.6.1" + log4js "^1.1.1" + magic-string "^0.22.4" + karma-typescript@^3.0.5: version "3.0.13" resolved "https://registry.yarnpkg.com/karma-typescript/-/karma-typescript-3.0.13.tgz#8948afbd103ac1987a5961a0f43a1ba2871067cd" @@ -5988,6 +6037,12 @@ lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1: pseudomap "^1.0.2" yallist "^2.1.2" +magic-string@^0.22.4: + version "0.22.5" + resolved "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + dependencies: + vlq "^0.2.2" + make-dir@^1.0.0, make-dir@^1.1.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -9436,6 +9491,10 @@ vinyl@^2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" From f82fb34abe7834b83320879a1656f218f084191e Mon Sep 17 00:00:00 2001 From: andrewf Date: Fri, 5 Oct 2018 10:01:30 +0100 Subject: [PATCH 10/30] RDM-3023 Fix tests --- src/app/cases/case.resolver.spec.ts | 2 +- src/app/cases/case.resolver.ts | 2 +- src/app/cases/creator/case-creator-submit.component.spec.ts | 2 +- src/app/cases/creator/case-creator-submit.component.ts | 2 +- .../cases/creator/create-case-event-trigger.resolver.spec.ts | 2 +- src/app/cases/creator/create-case-event-trigger.resolver.ts | 2 +- .../cases/event-trigger/case-event-trigger.component.spec.ts | 2 +- src/app/cases/event-trigger/case-event-trigger.component.ts | 2 +- src/app/cases/event-trigger/event-trigger.resolver.spec.ts | 2 +- src/app/cases/event-trigger/event-trigger.resolver.ts | 2 +- src/app/cases/printer/case-print-documents.resolver.spec.ts | 2 +- src/app/cases/printer/case-print-documents.resolver.ts | 2 +- src/app/cases/viewer/case-viewer.component.spec.ts | 2 +- src/app/cases/viewer/case-viewer.component.ts | 2 +- src/app/core/auth/oauth2.service.spec.ts | 2 +- src/app/core/auth/oauth2.service.ts | 2 +- src/app/core/cases/case-history.service.spec.ts | 2 +- src/app/core/cases/cases.service.spec.ts | 2 +- src/app/core/definitions/definitions.service.spec.ts | 2 +- src/app/core/draft/draft.service.spec.ts | 2 +- src/app/core/pagination/pagination.service.spec.ts | 2 +- src/app/core/profile/profile.service.spec.ts | 2 +- src/app/core/search/search.service.spec.ts | 2 +- src/app/oauth2/oauth2-redirect.component.spec.ts | 2 +- src/app/shared/case-editor/case-edit-page.component.spec.ts | 2 +- src/app/shared/case-editor/case-edit-submit.component.spec.ts | 2 +- src/app/shared/case-editor/case-edit.component.ts | 2 +- src/app/shared/case-history/case-history.resolver.spec.ts | 2 +- src/app/shared/case-history/case-history.resolver.ts | 2 +- src/app/shared/documentManagement/documentManagement.service.ts | 2 +- src/app/workbasket/filters/workbasket-filters.component.spec.ts | 2 +- src/app/workbasket/workbasket-input-filter.service.spec.ts | 2 +- src/app/workbasket/workbasket.component.spec.ts | 2 +- src/app/workbasket/workbasket.component.ts | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/app/cases/case.resolver.spec.ts b/src/app/cases/case.resolver.spec.ts index 54a26bc94..2a579d0eb 100644 --- a/src/app/cases/case.resolver.spec.ts +++ b/src/app/cases/case.resolver.spec.ts @@ -1,5 +1,5 @@ import { CaseResolver } from './case.resolver'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseView } from '../core/cases/case-view.model'; import { AlertService } from '../core/alert/alert.service'; import { DraftService } from '../core/draft/draft.service'; diff --git a/src/app/cases/case.resolver.ts b/src/app/cases/case.resolver.ts index f039373e6..43c5c71ef 100644 --- a/src/app/cases/case.resolver.ts +++ b/src/app/cases/case.resolver.ts @@ -1,7 +1,7 @@ import { CaseView } from '../core/cases/case-view.model'; import { ActivatedRouteSnapshot, ParamMap, Resolve, Router } from '@angular/router'; import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CasesService } from '../core/cases/cases.service'; import { Response } from '@angular/http'; import { AlertService } from '../core/alert/alert.service'; diff --git a/src/app/cases/creator/case-creator-submit.component.spec.ts b/src/app/cases/creator/case-creator-submit.component.spec.ts index a29603772..dac386882 100644 --- a/src/app/cases/creator/case-creator-submit.component.spec.ts +++ b/src/app/cases/creator/case-creator-submit.component.spec.ts @@ -4,7 +4,7 @@ import { ReactiveFormsModule } from '@angular/forms'; import { MockComponent } from 'ng2-mock-component'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { CasesService } from '../../core/cases/cases.service'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { AlertService } from '../../core/alert/alert.service'; import { CaseCreatorSubmitComponent } from './case-creator-submit.component'; import { CaseView } from '../../core/cases/case-view.model'; diff --git a/src/app/cases/creator/case-creator-submit.component.ts b/src/app/cases/creator/case-creator-submit.component.ts index ed6841e40..9e4196e73 100644 --- a/src/app/cases/creator/case-creator-submit.component.ts +++ b/src/app/cases/creator/case-creator-submit.component.ts @@ -3,7 +3,7 @@ import { ActivatedRoute, Params, Router } from '@angular/router'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; import { CaseEventTrigger, CaseEventData, Draft, CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { EventStatusService } from '../../core/cases/event-status.service'; import { DraftService } from '../../core/draft/draft.service'; diff --git a/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts b/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts index 0996a4d27..f4c23f2a4 100644 --- a/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts +++ b/src/app/cases/creator/create-case-event-trigger.resolver.spec.ts @@ -1,4 +1,4 @@ -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CreateCaseEventTriggerResolver } from './create-case-event-trigger.resolver'; import createSpyObj = jasmine.createSpyObj; import { DRAFT, createCaseEventTrigger, HttpError, CaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; diff --git a/src/app/cases/creator/create-case-event-trigger.resolver.ts b/src/app/cases/creator/create-case-event-trigger.resolver.ts index 4995a0800..42116f3be 100644 --- a/src/app/cases/creator/create-case-event-trigger.resolver.ts +++ b/src/app/cases/creator/create-case-event-trigger.resolver.ts @@ -1,6 +1,6 @@ import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseEventTrigger, Draft, DRAFT, HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { AlertService } from '../../core/alert/alert.service'; import { CasesService } from '../../core/cases/cases.service'; diff --git a/src/app/cases/event-trigger/case-event-trigger.component.spec.ts b/src/app/cases/event-trigger/case-event-trigger.component.spec.ts index bf0080a0e..9bd98653d 100644 --- a/src/app/cases/event-trigger/case-event-trigger.component.spec.ts +++ b/src/app/cases/event-trigger/case-event-trigger.component.spec.ts @@ -5,7 +5,7 @@ import { MockComponent } from 'ng2-mock-component'; import { ActivatedRoute, Router } from '@angular/router'; import { CaseView } from '../../core/cases/case-view.model'; import { CasesService } from '../../core/cases/cases.service'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { AlertService } from '../../core/alert/alert.service'; import { ReactiveFormsModule } from '@angular/forms'; import { ActivityPollingService } from '../../core/activity/activity.polling.service'; diff --git a/src/app/cases/event-trigger/case-event-trigger.component.ts b/src/app/cases/event-trigger/case-event-trigger.component.ts index 20b875b50..4f0157156 100644 --- a/src/app/cases/event-trigger/case-event-trigger.component.ts +++ b/src/app/cases/event-trigger/case-event-trigger.component.ts @@ -4,7 +4,7 @@ import { CaseView } from '../../core/cases/case-view.model'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; import { CaseEventTrigger, CaseEventData, CaseReferencePipe } from '@hmcts/ccd-case-ui-toolkit'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Activity, DisplayMode } from '../../core/activity/activity.model'; import { Subscription } from 'rxjs/Subscription'; import { EventStatusService } from '../../core/cases/event-status.service'; diff --git a/src/app/cases/event-trigger/event-trigger.resolver.spec.ts b/src/app/cases/event-trigger/event-trigger.resolver.spec.ts index 1436e7372..82df60f48 100644 --- a/src/app/cases/event-trigger/event-trigger.resolver.spec.ts +++ b/src/app/cases/event-trigger/event-trigger.resolver.spec.ts @@ -1,6 +1,6 @@ import { EventTriggerResolver } from './event-trigger.resolver'; import createSpyObj = jasmine.createSpyObj; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseResolver } from '../case.resolver'; import { CaseView } from '../../core/cases/case-view.model'; import { CaseEventTrigger, createCaseEventTrigger, HttpError } from '@hmcts/ccd-case-ui-toolkit'; diff --git a/src/app/cases/event-trigger/event-trigger.resolver.ts b/src/app/cases/event-trigger/event-trigger.resolver.ts index cd1cb3475..ea625ee44 100644 --- a/src/app/cases/event-trigger/event-trigger.resolver.ts +++ b/src/app/cases/event-trigger/event-trigger.resolver.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; import { CaseEventTrigger, HttpError } from '@hmcts/ccd-case-ui-toolkit'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; import { CaseView } from '../../core/cases/case-view.model'; diff --git a/src/app/cases/printer/case-print-documents.resolver.spec.ts b/src/app/cases/printer/case-print-documents.resolver.spec.ts index 8b82cbd8d..e2e84aa24 100644 --- a/src/app/cases/printer/case-print-documents.resolver.spec.ts +++ b/src/app/cases/printer/case-print-documents.resolver.spec.ts @@ -1,5 +1,5 @@ import { CasePrintDocumentsResolver } from './case-print-documents.resolver'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseResolver } from '../case.resolver'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import createSpyObj = jasmine.createSpyObj; diff --git a/src/app/cases/printer/case-print-documents.resolver.ts b/src/app/cases/printer/case-print-documents.resolver.ts index 641b6851e..a7c91919d 100644 --- a/src/app/cases/printer/case-print-documents.resolver.ts +++ b/src/app/cases/printer/case-print-documents.resolver.ts @@ -1,5 +1,5 @@ import { ActivatedRouteSnapshot, Resolve } from '@angular/router'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import { CasesService } from '../../core/cases/cases.service'; import { AlertService } from '../../core/alert/alert.service'; diff --git a/src/app/cases/viewer/case-viewer.component.spec.ts b/src/app/cases/viewer/case-viewer.component.spec.ts index 16246ba85..92459e684 100644 --- a/src/app/cases/viewer/case-viewer.component.spec.ts +++ b/src/app/cases/viewer/case-viewer.component.spec.ts @@ -6,7 +6,7 @@ import { CaseView } from '../../core/cases/case-view.model'; import { ActivatedRoute, Router } from '@angular/router'; import { MockComponent } from 'ng2-mock-component'; import { OrderService } from '../../core/order/order.service'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseViewEvent } from '../../core/cases/case-view-event.model'; import { CaseViewTrigger } from '../../shared/domain/case-view/case-view-trigger.model'; import { attr, text } from '../../test/helpers'; diff --git a/src/app/cases/viewer/case-viewer.component.ts b/src/app/cases/viewer/case-viewer.component.ts index ec8b3be3e..136ddfb03 100644 --- a/src/app/cases/viewer/case-viewer.component.ts +++ b/src/app/cases/viewer/case-viewer.component.ts @@ -9,7 +9,7 @@ import { CallbackErrorsContext } from '../../shared/error/error-context'; import { CallbackErrorsComponent } from '../../shared/error/callback-errors.component'; import { Activity, DisplayMode } from '../../core/activity/activity.model'; import { ActivityPollingService } from '../../core/activity/activity.polling.service'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Subscription } from 'rxjs/Subscription'; import { CaseField, ShowCondition, Draft, DRAFT, HttpError } from '@hmcts/ccd-case-ui-toolkit'; diff --git a/src/app/core/auth/oauth2.service.spec.ts b/src/app/core/auth/oauth2.service.spec.ts index e4e3d5223..5304f5d7f 100644 --- a/src/app/core/auth/oauth2.service.spec.ts +++ b/src/app/core/auth/oauth2.service.spec.ts @@ -1,5 +1,5 @@ import { AppConfig } from '../../app.config'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Response, ResponseOptions, URLSearchParams } from '@angular/http'; import { OAuth2Service } from './oauth2.service'; import createSpyObj = jasmine.createSpyObj; diff --git a/src/app/core/auth/oauth2.service.ts b/src/app/core/auth/oauth2.service.ts index b3095faac..5093e6a4e 100644 --- a/src/app/core/auth/oauth2.service.ts +++ b/src/app/core/auth/oauth2.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { AppConfig } from '../../app.config'; import { Response, URLSearchParams } from '@angular/http'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { HttpService, AuthService } from '@hmcts/ccd-case-ui-toolkit'; /** diff --git a/src/app/core/cases/case-history.service.spec.ts b/src/app/core/cases/case-history.service.spec.ts index e20dac036..f80e61527 100644 --- a/src/app/core/cases/case-history.service.spec.ts +++ b/src/app/core/cases/case-history.service.spec.ts @@ -1,6 +1,6 @@ import { Response, ResponseOptions } from '@angular/http'; import { AppConfig } from '../../app.config'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseHistory } from './case-history.model'; import { CaseHistoryService } from './case-history.service'; import { createCaseHistory } from './case-history.test.fixture'; diff --git a/src/app/core/cases/cases.service.spec.ts b/src/app/core/cases/cases.service.spec.ts index 78670d5da..ec1912e18 100644 --- a/src/app/core/cases/cases.service.spec.ts +++ b/src/app/core/cases/cases.service.spec.ts @@ -2,7 +2,7 @@ import { Response, ResponseOptions, Headers } from '@angular/http'; import { AppConfig } from '../../app.config'; import { CasesService } from './cases.service'; import { CaseView } from './case-view.model'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; import { OrderService } from '../order/order.service'; import createSpyObj = jasmine.createSpyObj; diff --git a/src/app/core/definitions/definitions.service.spec.ts b/src/app/core/definitions/definitions.service.spec.ts index b446a0eb7..62e8a17f6 100644 --- a/src/app/core/definitions/definitions.service.spec.ts +++ b/src/app/core/definitions/definitions.service.spec.ts @@ -1,7 +1,7 @@ import { Response, ResponseOptions } from '@angular/http'; import { AppConfig } from '../../app.config'; import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { DefinitionsService } from './definitions.service'; import { CaseType } from '../../shared/domain/definition/case-type.model'; import createSpyObj = jasmine.createSpyObj; diff --git a/src/app/core/draft/draft.service.spec.ts b/src/app/core/draft/draft.service.spec.ts index a123aa861..120bb7641 100644 --- a/src/app/core/draft/draft.service.spec.ts +++ b/src/app/core/draft/draft.service.spec.ts @@ -1,5 +1,5 @@ import { AppConfig } from '../../app.config'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Response, ResponseOptions } from '@angular/http'; import createSpyObj = jasmine.createSpyObj; import { DraftService } from './draft.service'; diff --git a/src/app/core/pagination/pagination.service.spec.ts b/src/app/core/pagination/pagination.service.spec.ts index c462e14c9..60edcc94f 100644 --- a/src/app/core/pagination/pagination.service.spec.ts +++ b/src/app/core/pagination/pagination.service.spec.ts @@ -2,7 +2,7 @@ import { Response, ResponseOptions, URLSearchParams, RequestOptionsArgs } from ' import { AppConfig } from '../../app.config'; import createSpyObj = jasmine.createSpyObj; import { PaginationService } from './pagination.service'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { RequestOptionsBuilder } from '../request.options.builder'; import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; diff --git a/src/app/core/profile/profile.service.spec.ts b/src/app/core/profile/profile.service.spec.ts index c23be14fd..4d2d5b094 100644 --- a/src/app/core/profile/profile.service.spec.ts +++ b/src/app/core/profile/profile.service.spec.ts @@ -2,7 +2,7 @@ import { ProfileService } from './profile.service'; import { Profile } from './profile.model'; import { AppConfig } from '../../app.config'; import createSpyObj = jasmine.createSpyObj; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Response, ResponseOptions } from '@angular/http'; import { createAProfile } from './profile.test.fixture'; import { HttpService } from '@hmcts/ccd-case-ui-toolkit'; diff --git a/src/app/core/search/search.service.spec.ts b/src/app/core/search/search.service.spec.ts index 734dd8fdc..625d19eb1 100644 --- a/src/app/core/search/search.service.spec.ts +++ b/src/app/core/search/search.service.spec.ts @@ -4,7 +4,7 @@ import { AppConfig } from '../../app.config'; import createSpyObj = jasmine.createSpyObj; import { SearchInput } from './search-input.model'; import { Field } from './field.model'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { RequestOptionsBuilder } from '../request.options.builder'; import { HttpService, FieldType } from '@hmcts/ccd-case-ui-toolkit'; diff --git a/src/app/oauth2/oauth2-redirect.component.spec.ts b/src/app/oauth2/oauth2-redirect.component.spec.ts index 468aafede..de1d3f49b 100644 --- a/src/app/oauth2/oauth2-redirect.component.spec.ts +++ b/src/app/oauth2/oauth2-redirect.component.spec.ts @@ -1,7 +1,7 @@ import { OAuth2RedirectComponent } from './oauth2-redirect.component'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { By } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { OAuth2Service } from '../core/auth/oauth2.service'; diff --git a/src/app/shared/case-editor/case-edit-page.component.spec.ts b/src/app/shared/case-editor/case-edit-page.component.spec.ts index 4de5a2ecb..edda499fa 100644 --- a/src/app/shared/case-editor/case-edit-page.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-page.component.spec.ts @@ -4,7 +4,7 @@ import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { By } from '@angular/platform-browser'; import { CaseEditComponent } from './case-edit.component'; import { ActivatedRoute } from '@angular/router'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { FormControl, FormGroup } from '@angular/forms'; import { PageValidationService } from './page-validation.service'; import { WizardPage, CaseField, FormValueService, FormErrorService, CaseFieldService, aCaseField, diff --git a/src/app/shared/case-editor/case-edit-submit.component.spec.ts b/src/app/shared/case-editor/case-edit-submit.component.spec.ts index 97d522dca..5cebee3db 100644 --- a/src/app/shared/case-editor/case-edit-submit.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-submit.component.spec.ts @@ -3,7 +3,7 @@ import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core'; import { CaseEditSubmitComponent } from './case-edit-submit.component'; import { CaseEditComponent } from './case-edit.component'; import { ActivatedRoute } from '@angular/router'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { FormControl, FormGroup } from '@angular/forms'; import { Wizard } from './wizard.model'; import { OrderService } from '../../core/order/order.service'; diff --git a/src/app/shared/case-editor/case-edit.component.ts b/src/app/shared/case-editor/case-edit.component.ts index 24db0d517..f96794e2c 100644 --- a/src/app/shared/case-editor/case-edit.component.ts +++ b/src/app/shared/case-editor/case-edit.component.ts @@ -1,7 +1,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { CaseEventTrigger, WizardPage, ConditionalShowRegistrarService, Draft, FieldsUtils, FieldsPurger } from '@hmcts/ccd-case-ui-toolkit'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Wizard } from './wizard.model'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Confirmation } from './confirmation.model'; diff --git a/src/app/shared/case-history/case-history.resolver.spec.ts b/src/app/shared/case-history/case-history.resolver.spec.ts index d7952dbd9..5fcd2baa0 100644 --- a/src/app/shared/case-history/case-history.resolver.spec.ts +++ b/src/app/shared/case-history/case-history.resolver.spec.ts @@ -1,5 +1,5 @@ import createSpyObj = jasmine.createSpyObj; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { CaseHistoryResolver } from './case-history.resolver'; import { CaseHistory } from '../../core/cases/case-history.model'; diff --git a/src/app/shared/case-history/case-history.resolver.ts b/src/app/shared/case-history/case-history.resolver.ts index db336fb40..93a3cfd45 100644 --- a/src/app/shared/case-history/case-history.resolver.ts +++ b/src/app/shared/case-history/case-history.resolver.ts @@ -1,6 +1,6 @@ import { ActivatedRouteSnapshot, ParamMap, Resolve, Router } from '@angular/router'; import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Response } from '@angular/http'; import 'rxjs/add/operator/catch'; import { CaseHistory } from '../../core/cases/case-history.model'; diff --git a/src/app/shared/documentManagement/documentManagement.service.ts b/src/app/shared/documentManagement/documentManagement.service.ts index 5b9b705d6..6525d6033 100644 --- a/src/app/shared/documentManagement/documentManagement.service.ts +++ b/src/app/shared/documentManagement/documentManagement.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Headers } from '@angular/http'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import 'rxjs/add/operator/map'; import { DocumentData, AbstractDocumentManagementService, HttpService } from '@hmcts/ccd-case-ui-toolkit'; import { AppConfig } from '../../app.config'; diff --git a/src/app/workbasket/filters/workbasket-filters.component.spec.ts b/src/app/workbasket/filters/workbasket-filters.component.spec.ts index 28b88285c..7a4b35424 100644 --- a/src/app/workbasket/filters/workbasket-filters.component.spec.ts +++ b/src/app/workbasket/filters/workbasket-filters.component.spec.ts @@ -5,7 +5,7 @@ import { By } from '@angular/platform-browser'; import { Jurisdiction } from '../../shared/domain/definition/jurisdiction.model'; import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import 'rxjs/add/operator/do'; import { JurisdictionService } from '../../shared/jurisdiction.service'; import { CaseType } from '../../shared/domain/definition/case-type.model'; diff --git a/src/app/workbasket/workbasket-input-filter.service.spec.ts b/src/app/workbasket/workbasket-input-filter.service.spec.ts index 90c7ac224..bc0e6a6f6 100644 --- a/src/app/workbasket/workbasket-input-filter.service.spec.ts +++ b/src/app/workbasket/workbasket-input-filter.service.spec.ts @@ -1,5 +1,5 @@ import { Response, ResponseOptions } from '@angular/http'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { WorkbasketInputFilterService } from './workbasket-input-filter.service'; import { AppConfig } from '../app.config'; import { WorkbasketInputModel } from './workbasket-input.model'; diff --git a/src/app/workbasket/workbasket.component.spec.ts b/src/app/workbasket/workbasket.component.spec.ts index 100345511..30e886489 100644 --- a/src/app/workbasket/workbasket.component.spec.ts +++ b/src/app/workbasket/workbasket.component.spec.ts @@ -8,7 +8,7 @@ import { WorkbasketComponent } from './workbasket.component'; import { SearchService } from '../core/search/search.service'; import { JurisdictionService } from '../shared/jurisdiction.service'; import { SearchResultView } from '../shared/search/search-result-view.model'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { Jurisdiction } from '../shared/domain/definition/jurisdiction.model'; import { CaseState } from '../shared/domain/definition/case-state.model'; import { PaginationService } from '../core/pagination/pagination.service'; diff --git a/src/app/workbasket/workbasket.component.ts b/src/app/workbasket/workbasket.component.ts index 5d09eb85c..692e0a4f4 100644 --- a/src/app/workbasket/workbasket.component.ts +++ b/src/app/workbasket/workbasket.component.ts @@ -11,7 +11,7 @@ import { PaginationService } from '../core/pagination/pagination.service'; import { CaseType } from '../shared/domain/definition/case-type.model'; import { FormGroup } from '@angular/forms'; import { SearchResultComponent } from '../shared/search/search-result.component'; -import { Observable } from 'rxjs/Observable'; +import { Observable } from 'rxjs'; import { AlertService } from '../core/alert/alert.service'; import { plainToClass } from 'class-transformer'; From 2ecd869731d23b1db1f69c17da0be5a5800c065a Mon Sep 17 00:00:00 2001 From: andrewf Date: Fri, 5 Oct 2018 11:13:16 +0100 Subject: [PATCH 11/30] RDM-3023 Update yarn.lock --- yarn.lock | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 36b06e41b..21b1c09e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -378,12 +378,12 @@ "@types/jasmine" "*" "@types/node@^6.0.46": - version "6.0.117" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.117.tgz#ccfc2506001404708528d657aad9c1b931111646" + version "6.0.118" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.118.tgz#8014a9b1dee0b72b4d7cd142563f1af21241c3a2" "@types/node@^8.0.30": - version "8.10.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.33.tgz#ca171622ea65852e76d2ac3c5dab71f4882b2e85" + version "8.10.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.34.tgz#a94d9f3767fe45f211e09e49af598bb84822280c" "@types/q@^0.0.32": version "0.0.32" @@ -2215,8 +2215,8 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" codelyzer@^4.1.0: - version "4.4.4" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.4.4.tgz#29b7dbb51ba9ecc45c7300d61280a6564765d402" + version "4.5.0" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.5.0.tgz#a65ddeeeca2894653253a89bfa229118ff9f59b1" dependencies: app-root-path "^2.1.0" css-selector-tokenizer "^0.7.0" @@ -6507,8 +6507,8 @@ ngx-md@~6.0.0: tslib "^1.9.0" ngx-pagination@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ngx-pagination/-/ngx-pagination-3.2.0.tgz#67271e5395854464657a151276faa8154dce4806" + version "3.2.1" + resolved "https://registry.yarnpkg.com/ngx-pagination/-/ngx-pagination-3.2.1.tgz#d82fe15b03a628621dabb835ebc90011f2557689" nice-try@^1.0.4: version "1.0.5" @@ -7509,8 +7509,8 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" puppeteer@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.8.0.tgz#9e8bbd2f5448cc19cac220efc0512837104877ad" + version "1.9.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.9.0.tgz#56dba79e7ea4faac807877bee3b23d63291fc59e" dependencies: debug "^3.1.0" extract-zip "^1.6.6" @@ -8551,8 +8551,8 @@ spawn-cmd@0.0.2: resolved "https://registry.yarnpkg.com/spawn-cmd/-/spawn-cmd-0.0.2.tgz#6d5e251fad0eab00b0f193d245669a7a228ec0de" spdx-correct@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.1.tgz#434434ff9d1726b4d9f4219d1004813d80639e30" + version "3.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -9225,8 +9225,8 @@ ultron@1.0.x: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" underscore.string@~3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db" + version "3.3.5" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" dependencies: sprintf-js "^1.0.3" util-deprecate "^1.0.2" @@ -9665,8 +9665,8 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-map "~0.6.1" webpack-subresource-integrity@^1.1.0-rc.4: - version "1.1.0-rc.6" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz#37f6f1264e1eb378e41465a98da80fad76ab8886" + version "1.1.0-rc.7" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.7.tgz#6dce39897484aa4914560883f551b69aad93a408" dependencies: webpack-core "^0.6.8" From 0fe01697747d9976fe5b68a9db1ea7406af704e6 Mon Sep 17 00:00:00 2001 From: andrewf Date: Fri, 5 Oct 2018 12:48:40 +0100 Subject: [PATCH 12/30] RDM-3023 Code cleanup. --- src/app/app.config.guard.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/app.config.guard.ts b/src/app/app.config.guard.ts index d2c47a57e..661408942 100644 --- a/src/app/app.config.guard.ts +++ b/src/app/app.config.guard.ts @@ -1,12 +1,11 @@ import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router'; import { AppConfig } from './app.config'; import { Injectable } from '@angular/core'; -import { AbstractAppConfig } from '@hmcts/ccd-case-ui-toolkit'; @Injectable() export class AppConfigGuard implements CanActivate { - constructor(private appConfig: AppConfig, private abstractAppConfig: AbstractAppConfig) {} + constructor(private appConfig: AppConfig) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise { return this.appConfig.load() From 03687831087c8b2dd22c2533d77461f84081c25e Mon Sep 17 00:00:00 2001 From: andrewf Date: Fri, 5 Oct 2018 13:29:42 +0100 Subject: [PATCH 13/30] RDM-3023 Doc mgmt service moved to ui toolkit now. --- src/app/core/core.module.ts | 4 +- .../documentManagement.service.spec.ts | 64 ------------------- .../documentManagement.service.ts | 26 -------- 3 files changed, 2 insertions(+), 92 deletions(-) delete mode 100644 src/app/shared/documentManagement/documentManagement.service.spec.ts delete mode 100644 src/app/shared/documentManagement/documentManagement.service.ts diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 14840c3fc..5225b9246 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; -import { CaseUIToolkitModule, FormValueService, FormErrorService, AddressesService, HttpErrorService, HttpService, AuthService } from '@hmcts/ccd-case-ui-toolkit'; +import { CaseUIToolkitModule, FormValueService, FormErrorService, AddressesService, HttpErrorService, HttpService, AuthService, + DocumentManagementService } from '@hmcts/ccd-case-ui-toolkit'; import { CasesService } from './cases/cases.service'; import { DefinitionsService } from './definitions/definitions.service'; import { WindowService } from './utils/window.service'; @@ -31,7 +32,6 @@ import { AccordionComponent } from '../shared/accordion/accordion.component'; import { DraftService } from './draft/draft.service'; import { CcdBrowserSupportComponent } from './ccd-browser-support/ccd-browser-support.component'; import { DeviceDetectorModule } from 'ngx-device-detector'; -import { DocumentManagementService } from '../shared/documentManagement/documentManagement.service'; @NgModule({ imports: [ diff --git a/src/app/shared/documentManagement/documentManagement.service.spec.ts b/src/app/shared/documentManagement/documentManagement.service.spec.ts deleted file mode 100644 index c57853aa1..000000000 --- a/src/app/shared/documentManagement/documentManagement.service.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { DocumentManagementService } from './documentManagement.service'; -import createSpyObj = jasmine.createSpyObj; -import { of } from 'rxjs'; -import { Response, ResponseOptions } from '@angular/http'; -import { AbstractAppConfig, DocumentData, HttpService } from '@hmcts/ccd-case-ui-toolkit'; - -describe('DocumentManagementService', () => { - const DOCUMENT_MANAGEMENT_URL = 'http://docmanagement.ccd.reform/documents'; - - let appConfig: any; - let httpService: any; - - let documentManagementService: DocumentManagementService; - - beforeEach(() => { - appConfig = createSpyObj('appConfig', ['getDocumentManagementUrl']); - appConfig.getDocumentManagementUrl.and.returnValue(DOCUMENT_MANAGEMENT_URL); - - httpService = createSpyObj('httpService', ['post']); - documentManagementService = new DocumentManagementService(httpService, appConfig); - }); - - describe('uploadFile', () => { - const RESPONSE: DocumentData = { - _embedded: { - documents: [{ - originalDocumentName: 'something.pdf', - _links: { - self: { - href: DOCUMENT_MANAGEMENT_URL + '/abcd0123' - }, - binary: { - href: DOCUMENT_MANAGEMENT_URL + '/abcd0123/binary' - } - } - }] - } - }; - - beforeEach(() => { - httpService.post.and.returnValue(of(new Response(new ResponseOptions({ - body: JSON.stringify(RESPONSE) - })))); - }); - - it('should use HttpService.post with the correct URL', () => { - documentManagementService.uploadFile(new FormData()).subscribe(); - - expect(httpService.post).toHaveBeenCalledWith(DOCUMENT_MANAGEMENT_URL, jasmine.any(FormData), jasmine.any(Object)); - }); - - it('should set Content-Type header to null', () => { - documentManagementService.uploadFile(new FormData()).subscribe(); - let headers = httpService.post.calls.mostRecent().args[2].headers; - - expect(headers.get('Content-Type')).toBe(null); - }); - - it('should return document metadata', () => { - documentManagementService.uploadFile(new FormData()) - .subscribe(documentMetadata => expect(documentMetadata).toEqual(RESPONSE)); - }); - }); -}); diff --git a/src/app/shared/documentManagement/documentManagement.service.ts b/src/app/shared/documentManagement/documentManagement.service.ts deleted file mode 100644 index 6525d6033..000000000 --- a/src/app/shared/documentManagement/documentManagement.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Headers } from '@angular/http'; -import { Observable } from 'rxjs'; -import 'rxjs/add/operator/map'; -import { DocumentData, AbstractDocumentManagementService, HttpService } from '@hmcts/ccd-case-ui-toolkit'; -import { AppConfig } from '../../app.config'; - -@Injectable() -export class DocumentManagementService implements AbstractDocumentManagementService { - private static readonly HEADER_ACCEPT = 'Accept'; - private static readonly HEADER_CONTENT_TYPE = 'Content-Type'; - - constructor(private http: HttpService, private appConfig: AppConfig) {} - - uploadFile(formData: FormData): Observable { - const url = this.appConfig.getDocumentManagementUrl(); - let headers = new Headers(); - headers.append(DocumentManagementService.HEADER_ACCEPT, null); - // Content-Type header value needs to be null; HttpService will delete it, so that Angular can set it automatically - // with the correct boundary - headers.append(DocumentManagementService.HEADER_CONTENT_TYPE, null); - return this.http - .post(url, formData, { headers }) - .map(response => response.json()); - } -} From 1b8c6286057f399f13b307413aa0d570be2a0054 Mon Sep 17 00:00:00 2001 From: andrewf Date: Sat, 6 Oct 2018 13:23:07 +0100 Subject: [PATCH 14/30] RDM-3023 Remove unused dependecies. --- package.json | 3 - src/tsconfig.spec.json | 1 - yarn.lock | 244 ++++++++--------------------------------- 3 files changed, 45 insertions(+), 203 deletions(-) diff --git a/package.json b/package.json index 5fc4a4821..3dda23f29 100644 --- a/package.json +++ b/package.json @@ -65,9 +65,6 @@ "font-awesome": "^4.7.0", "govuk-elements-sass": "^3.1.2", "govuk_template_mustache": "^0.23.0", - "growl": "1.10.5", - "grunt": "^1.0.1", - "karma-typescript-es6-transform": "^1.0.4", "mocha": "^5.0.5", "multidep": "2.0.2", "ngx-device-detector": "^1.3.0", diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index a24c78f8b..bfc96054b 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -4,7 +4,6 @@ "outDir": "../out-tsc/spec", "baseUrl": "./", "module": "commonjs", - // "target": "es2015", "types": [ "jasmine", "node" diff --git a/yarn.lock b/yarn.lock index 21b1c09e7..027a166e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -541,7 +541,7 @@ acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.4.1: +acorn@^5.0.0: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" @@ -711,7 +711,7 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -argparse@^1.0.2, argparse@^1.0.7: +argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" dependencies: @@ -856,7 +856,7 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@1.x, async@^1.5.0, async@^1.5.2, async@~1.5.2: +async@1.x, async@^1.5.0, async@^1.5.2: version "1.5.2" resolved "http://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -901,7 +901,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.23.1, babel-core@^6.26.0: +babel-core@^6.26.0: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" dependencies: @@ -1120,7 +1120,7 @@ babel-plugin-transform-async-generator-functions@^6.24.1: babel-plugin-syntax-async-generators "^6.5.0" babel-runtime "^6.22.0" -babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: +babel-plugin-transform-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" dependencies: @@ -1167,7 +1167,7 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: +babel-plugin-transform-es2015-block-scoping@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" dependencies: @@ -1177,7 +1177,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es20 babel-types "^6.26.0" lodash "^4.17.4" -babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: +babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -1191,33 +1191,33 @@ babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-cla babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: +babel-plugin-transform-es2015-computed-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: +babel-plugin-transform-es2015-destructuring@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: +babel-plugin-transform-es2015-for-of@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: +babel-plugin-transform-es2015-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: @@ -1231,7 +1231,7 @@ babel-plugin-transform-es2015-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: +babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" dependencies: @@ -1239,7 +1239,7 @@ babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015 babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: version "6.26.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" dependencies: @@ -1248,7 +1248,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-template "^6.26.0" babel-types "^6.26.0" -babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" dependencies: @@ -1256,7 +1256,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-e babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: +babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" dependencies: @@ -1264,14 +1264,14 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015 babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: +babel-plugin-transform-es2015-object-super@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: +babel-plugin-transform-es2015-parameters@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: @@ -1282,7 +1282,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015- babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: @@ -1295,7 +1295,7 @@ babel-plugin-transform-es2015-spread@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: +babel-plugin-transform-es2015-sticky-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: @@ -1309,13 +1309,13 @@ babel-plugin-transform-es2015-template-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: +babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: @@ -1323,7 +1323,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es20 babel-runtime "^6.22.0" regexpu-core "^2.0.0" -babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: +babel-plugin-transform-exponentiation-operator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" dependencies: @@ -1352,7 +1352,7 @@ babel-plugin-transform-object-rest-spread@^6.22.0: babel-plugin-syntax-object-rest-spread "^6.8.0" babel-runtime "^6.26.0" -babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: +babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" dependencies: @@ -1365,41 +1365,6 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-preset-env@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - babel-preset-es2015@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" @@ -1776,7 +1741,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.2.6, browserslist@^3.2.8: +browserslist@^3.2.8: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" dependencies: @@ -1977,7 +1942,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@~2.4.1: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -2225,10 +2190,6 @@ codelyzer@^4.1.0: source-map "^0.5.7" sprintf-js "^1.1.1" -coffeescript@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.10.0.tgz#e7aa8301917ef621b35d8a39f348dcdd1db7e33e" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2254,7 +2215,7 @@ colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" -colors@1.1.2, colors@~1.1.2: +colors@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -2686,7 +2647,7 @@ date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -dateformat@^1.0.11, dateformat@^1.0.6, dateformat@~1.0.12: +dateformat@^1.0.11, dateformat@^1.0.6: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" dependencies: @@ -3245,7 +3206,7 @@ eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" -esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: +esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -3275,10 +3236,6 @@ etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" -eventemitter2@~0.4.13: - version "0.4.14" - resolved "http://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -3328,7 +3285,7 @@ exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" -exit@^0.1.2, exit@~0.1.1: +exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -3577,7 +3534,7 @@ figures@^1.7.0: file-loader@^1.1.11: version "1.1.11" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + resolved "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" dependencies: loader-utils "^1.0.2" schema-utils "^0.4.5" @@ -3670,12 +3627,6 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - dependencies: - glob "~5.0.0" - first-chunk-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" @@ -3864,10 +3815,6 @@ get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" -getobject@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -3922,7 +3869,7 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@5.x, glob@^5.0.15, glob@~5.0.0: +glob@5.x, glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" dependencies: @@ -3932,7 +3879,7 @@ glob@5.x, glob@^5.0.15, glob@~5.0.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.0.x, glob@~7.0.0: +glob@7.0.x: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" dependencies: @@ -4146,69 +4093,6 @@ growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" -grunt-cli@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" - dependencies: - findup-sync "~0.3.0" - grunt-known-options "~1.1.0" - nopt "~3.0.6" - resolve "~1.1.0" - -grunt-known-options@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" - -grunt-legacy-log-utils@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz#d2f442c7c0150065d9004b08fd7410d37519194e" - dependencies: - chalk "~2.4.1" - lodash "~4.17.10" - -grunt-legacy-log@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz#c8cd2c6c81a4465b9bbf2d874d963fef7a59ffb9" - dependencies: - colors "~1.1.2" - grunt-legacy-log-utils "~2.0.0" - hooker "~0.2.3" - lodash "~4.17.5" - -grunt-legacy-util@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz#e10624e7c86034e5b870c8a8616743f0a0845e42" - dependencies: - async "~1.5.2" - exit "~0.1.1" - getobject "~0.1.0" - hooker "~0.2.3" - lodash "~4.17.10" - underscore.string "~3.3.4" - which "~1.3.0" - -grunt@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.3.tgz#b3c99260c51d1b42835766e796527b60f7bba374" - dependencies: - coffeescript "~1.10.0" - dateformat "~1.0.12" - eventemitter2 "~0.4.13" - exit "~0.1.1" - findup-sync "~0.3.0" - glob "~7.0.0" - grunt-cli "~1.2.0" - grunt-known-options "~1.1.0" - grunt-legacy-log "~2.0.0" - grunt-legacy-util "~1.1.1" - iconv-lite "~0.4.13" - js-yaml "~3.5.2" - minimatch "~3.0.2" - mkdirp "~0.5.1" - nopt "~3.0.6" - path-is-absolute "~1.0.0" - rimraf "~2.6.2" - gulp-util@3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb" @@ -4409,10 +4293,6 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" -hooker@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" - hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -4539,7 +4419,7 @@ iconv-lite@0.4.23: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" dependencies: @@ -5287,13 +5167,6 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@~3.5.2: - version "3.5.5" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.5.5.tgz#0377c38017cabc7322b0d1fbcd25a491641f2fbe" - dependencies: - argparse "^1.0.2" - esprima "^2.6.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -5524,16 +5397,6 @@ karma-source-map-support@^1.2.0: dependencies: source-map-support "^0.5.5" -karma-typescript-es6-transform@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/karma-typescript-es6-transform/-/karma-typescript-es6-transform-1.0.4.tgz#0ab2fd2fbd5f16e734a71f44a4cbf91b257be408" - dependencies: - acorn "^5.4.1" - babel-core "^6.23.1" - babel-preset-env "^1.6.1" - log4js "^1.1.1" - magic-string "^0.22.4" - karma-typescript@^3.0.5: version "3.0.13" resolved "https://registry.yarnpkg.com/karma-typescript/-/karma-typescript-3.0.13.tgz#8948afbd103ac1987a5961a0f43a1ba2871067cd" @@ -5945,7 +5808,7 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" -lodash@4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10, lodash@~4.17.5: +lodash@4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -6037,12 +5900,6 @@ lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1: pseudomap "^1.0.2" yallist "^2.1.2" -magic-string@^0.22.4: - version "0.22.5" - resolved "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - dependencies: - vlq "^0.2.2" - make-dir@^1.0.0, make-dir@^1.1.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -6333,7 +6190,7 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -6386,11 +6243,11 @@ move-concurrently@^1.0.1: ms@0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + resolved "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" ms@0.7.2: version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + resolved "http://registry.npmjs.org/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" ms@2.0.0: version "2.0.0" @@ -6623,7 +6480,7 @@ nomnom@^1.8.1: chalk "~0.4.0" underscore "~1.6.0" -"nopt@2 || 3", nopt@3.x, nopt@~3.0.6: +"nopt@2 || 3", nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -7124,7 +6981,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1, path-is-absolute@~1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -7986,7 +7843,7 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@1.1.7, resolve@1.1.x, resolve@~1.1.0: +resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -8024,7 +7881,7 @@ retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" -rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: +rimraf@2, rimraf@^2.2.8, rimraf@^2.4.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -8601,7 +8458,7 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -sprintf-js@^1.0.3, sprintf-js@^1.1.1: +sprintf-js@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" @@ -9224,13 +9081,6 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" -underscore.string@~3.3.4: - version "3.3.5" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" - dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" - underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" @@ -9383,7 +9233,7 @@ util-arity@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/util-arity/-/util-arity-1.1.0.tgz#59d01af1fdb3fede0ac4e632b0ab5f6ce97c9330" -util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9491,10 +9341,6 @@ vinyl@^2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" -vlq@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" @@ -9720,7 +9566,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.14, which@^1.2.9, which@~1.3.0: +which@1, which@^1.1.1, which@^1.2.1, which@^1.2.10, which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: From c934904707e3d5c2a88f05badfe9337a82937d28 Mon Sep 17 00:00:00 2001 From: andrewf Date: Sat, 6 Oct 2018 13:52:47 +0100 Subject: [PATCH 15/30] RDM-3023 Remove migrated order service and update ui toolkit. --- package.json | 2 +- .../create-case-filters.component.spec.ts | 2 +- .../filters/create-case-filters.component.ts | 2 +- .../viewer/case-viewer.component.spec.ts | 2 +- src/app/cases/viewer/case-viewer.component.ts | 2 +- src/app/core/cases/cases.service.spec.ts | 2 +- src/app/core/cases/cases.service.ts | 2 +- src/app/core/core.module.ts | 2 +- src/app/core/order/order.service.spec.ts | 68 ------------------- src/app/core/order/order.service.ts | 40 ----------- .../case-edit-submit.component.spec.ts | 2 +- .../case-editor/case-edit-submit.component.ts | 2 +- src/app/shared/case-editor/wizard.model.ts | 2 +- .../case-history.component.spec.ts | 2 +- .../case-history/case-history.component.ts | 2 +- .../event-trigger.component.spec.ts | 2 +- .../event-trigger/event-trigger.component.ts | 2 +- .../filters/search-filters.component.spec.ts | 2 +- .../filters/search-filters.component.ts | 2 +- .../workbasket-filters.component.spec.ts | 2 +- .../filters/workbasket-filters.component.ts | 2 +- 21 files changed, 19 insertions(+), 127 deletions(-) delete mode 100644 src/app/core/order/order.service.spec.ts delete mode 100644 src/app/core/order/order.service.ts diff --git a/package.json b/package.json index 3dda23f29..ff2aa88c5 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@angular/platform-server": "~6.1.8", "@angular/router": "~6.1.8", "@angular/upgrade": "~6.1.8", - "@hmcts/ccd-case-ui-toolkit": "1.2.5", + "@hmcts/ccd-case-ui-toolkit": "1.2.6", "@hmcts/ccpay-web-component": "~1.5.0", "@nguniversal/express-engine": "^6.0.0", "@nguniversal/module-map-ngfactory-loader": "^6.0.0", diff --git a/src/app/cases/creator/filters/create-case-filters.component.spec.ts b/src/app/cases/creator/filters/create-case-filters.component.spec.ts index a6d479f9a..8ed21af0c 100644 --- a/src/app/cases/creator/filters/create-case-filters.component.spec.ts +++ b/src/app/cases/creator/filters/create-case-filters.component.spec.ts @@ -4,7 +4,6 @@ import { By } from '@angular/platform-browser'; import { Jurisdiction } from '../../../shared/domain/definition/jurisdiction.model'; import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { CreateCaseFiltersComponent } from './create-case-filters.component'; -import { OrderService } from '../../../core/order/order.service'; import { CaseEvent } from '../../../shared/domain/definition/case-event.model'; import { Router } from '@angular/router'; import { Subject } from 'rxjs/Subject'; @@ -15,6 +14,7 @@ import { CaseType } from '../../../shared/domain/definition/case-type.model'; import { JurisdictionService } from '../../../shared/jurisdiction.service'; import createSpyObj = jasmine.createSpyObj; import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; const EVENT_ID_1 = 'ID_1'; const EVENT_NAME_1 = 'Event one'; diff --git a/src/app/cases/creator/filters/create-case-filters.component.ts b/src/app/cases/creator/filters/create-case-filters.component.ts index 4e2db4390..164740161 100644 --- a/src/app/cases/creator/filters/create-case-filters.component.ts +++ b/src/app/cases/creator/filters/create-case-filters.component.ts @@ -3,13 +3,13 @@ import { Jurisdiction } from '../../../shared/domain/definition/jurisdiction.mod import { CaseType } from '../../../shared/domain/definition/case-type.model'; import { FormControl, FormGroup } from '@angular/forms'; import { CaseEvent } from '../../../shared/domain/definition/case-event.model'; -import { OrderService } from '../../../core/order/order.service'; import { Router } from '@angular/router'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsContext } from '../../../shared/error/error-context'; import { CallbackErrorsComponent } from '../../../shared/error/callback-errors.component'; import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; import { AlertService } from '../../../core/alert/alert.service'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ selector: 'ccd-create-case-filters', diff --git a/src/app/cases/viewer/case-viewer.component.spec.ts b/src/app/cases/viewer/case-viewer.component.spec.ts index 92459e684..035cefe05 100644 --- a/src/app/cases/viewer/case-viewer.component.spec.ts +++ b/src/app/cases/viewer/case-viewer.component.spec.ts @@ -5,7 +5,6 @@ import { By } from '@angular/platform-browser'; import { CaseView } from '../../core/cases/case-view.model'; import { ActivatedRoute, Router } from '@angular/router'; import { MockComponent } from 'ng2-mock-component'; -import { OrderService } from '../../core/order/order.service'; import { Observable } from 'rxjs'; import { CaseViewEvent } from '../../core/cases/case-view-event.model'; import { CaseViewTrigger } from '../../shared/domain/case-view/case-view-trigger.model'; @@ -17,6 +16,7 @@ import createSpyObj = jasmine.createSpyObj; import any = jasmine.any; import { PaletteUtilsModule, CaseField, LabelSubstitutionService, FieldsUtils, LabelSubstitutorDirective, HttpError } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ // tslint:disable-next-line diff --git a/src/app/cases/viewer/case-viewer.component.ts b/src/app/cases/viewer/case-viewer.component.ts index 136ddfb03..cf7107ea9 100644 --- a/src/app/cases/viewer/case-viewer.component.ts +++ b/src/app/cases/viewer/case-viewer.component.ts @@ -2,7 +2,6 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { CaseView } from '../../core/cases/case-view.model'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { CaseTab } from '../../core/cases/case-tab.model'; -import { OrderService } from '../../core/order/order.service'; import { CaseViewTrigger } from '../../shared/domain/case-view/case-view-trigger.model'; import { Subject } from 'rxjs/Subject'; import { CallbackErrorsContext } from '../../shared/error/error-context'; @@ -12,6 +11,7 @@ import { ActivityPollingService } from '../../core/activity/activity.polling.ser import { Observable } from 'rxjs'; import { Subscription } from 'rxjs/Subscription'; import { CaseField, ShowCondition, Draft, DRAFT, HttpError } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ templateUrl: './case-viewer.component.html', diff --git a/src/app/core/cases/cases.service.spec.ts b/src/app/core/cases/cases.service.spec.ts index ec1912e18..9823c8427 100644 --- a/src/app/core/cases/cases.service.spec.ts +++ b/src/app/core/cases/cases.service.spec.ts @@ -4,10 +4,10 @@ import { CasesService } from './cases.service'; import { CaseView } from './case-view.model'; import { Observable } from 'rxjs'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; -import { OrderService } from '../order/order.service'; import createSpyObj = jasmine.createSpyObj; import { HttpErrorService, HttpError, HttpService, CaseEventTrigger, CaseEventData, createCaseEventTrigger } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; describe('CasesService', () => { diff --git a/src/app/core/cases/cases.service.ts b/src/app/core/cases/cases.service.ts index 04ff38db3..f80551b79 100644 --- a/src/app/core/cases/cases.service.ts +++ b/src/app/core/cases/cases.service.ts @@ -5,8 +5,8 @@ import { AppConfig } from '../../app.config'; import { CaseEventTrigger, CaseEventData, WizardPage, WizardPageField, ShowCondition, Draft, HttpService, HttpErrorService } from '@hmcts/ccd-case-ui-toolkit'; import { CasePrintDocument } from '../../shared/domain/case-view/case-print-document.model'; -import { OrderService } from '../order/order.service'; import { plainToClass } from 'class-transformer'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Injectable() export class CasesService { diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index 5225b9246..be8cb4523 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -12,7 +12,6 @@ import { ProfileResolver } from './profile/profile.resolver'; import { ProfileService } from './profile/profile.service'; import { SearchService } from './search/search.service'; import { PaginationService } from './pagination/pagination.service'; -import { OrderService } from './order/order.service'; import { AlertModule } from './alert/alert.module'; import { JurisdictionService } from '../shared/jurisdiction.service'; import { ActivityService } from './activity/activity.service'; @@ -32,6 +31,7 @@ import { AccordionComponent } from '../shared/accordion/accordion.component'; import { DraftService } from './draft/draft.service'; import { CcdBrowserSupportComponent } from './ccd-browser-support/ccd-browser-support.component'; import { DeviceDetectorModule } from 'ngx-device-detector'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @NgModule({ imports: [ diff --git a/src/app/core/order/order.service.spec.ts b/src/app/core/order/order.service.spec.ts deleted file mode 100644 index 10549e51b..000000000 --- a/src/app/core/order/order.service.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { OrderService } from './order.service'; - -describe('OrderService', () => { - - let orderService: OrderService; - - const ITEM_X = { id: 1, order: undefined }; - const ITEM_0 = { id: 0, order: 0 }; - const ITEM_1 = { id: 1, order: 1 }; - const ITEM_2 = { id: 2, order: 2 }; - - beforeEach(() => { - orderService = new OrderService(); - }); - - describe('sortAsc', () => { - - it('should sort in ascending order', () => { - expect(orderService.sortAsc(ITEM_1, ITEM_2)).toBe(-1); - expect(orderService.sortAsc(ITEM_2, ITEM_1)).toBe(1); - }); - - it('should keep order of items with same order', () => { - expect(orderService.sortAsc(ITEM_1, ITEM_1)).toBe(0); - }); - - it('should sort items without order at the end', () => { - expect(orderService.sortAsc(ITEM_X, ITEM_1)).toBe(1); - }); - - it('should keep order of items without order', () => { - expect(orderService.sortAsc(ITEM_X, ITEM_X)).toBe(0); - }); - - it('should consider 0 as a lower order', () => { - expect(orderService.sortAsc(ITEM_1, ITEM_0)).toBe(1); - }); - }); - - describe('sort', () => { - it('should return cloned array', () => { - let array = [ITEM_0, ITEM_1, ITEM_2]; - let arrayClone = [ITEM_0, ITEM_1, ITEM_2]; - - spyOn(array, 'slice').and.returnValue(arrayClone); - - let sortedArray = orderService.sort(array); - - expect(array.slice).toHaveBeenCalledWith(); - expect(sortedArray).toEqual(arrayClone); - }); - - it('should sort cloned array by ascending order', () => { - let array = [ITEM_2, ITEM_1, ITEM_0]; - let arrayClone = [ITEM_2, ITEM_1, ITEM_0]; - let arrayExpected = [ITEM_0, ITEM_1, ITEM_2]; - - spyOn(array, 'slice').and.returnValue(arrayClone); - spyOn(arrayClone, 'sort').and.returnValue(arrayExpected); - - let sortedArray = orderService.sort(array); - - expect(arrayClone.sort).toHaveBeenCalledWith(orderService.sortAsc); - expect(sortedArray).toBe(arrayExpected); - }); - }); - -}); diff --git a/src/app/core/order/order.service.ts b/src/app/core/order/order.service.ts deleted file mode 100644 index bd94f581e..000000000 --- a/src/app/core/order/order.service.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Orderable } from '@hmcts/ccd-case-ui-toolkit'; - -@Injectable() -export class OrderService { - - /** - * @deprecated Use `sort` function instead or `compareAsc` - * @type {(a:Orderable, b:Orderable)=>number} - */ - sortAsc = OrderService.DEFAULT_COMPARE_FUNCTION; - - private static readonly DEFAULT_COMPARE_FUNCTION = (a: Orderable, b: Orderable) => { - let aOrdered = a.order === 0 || a.order; - let bOrdered = b.order === 0 || b.order; - - if (!aOrdered) { - return !bOrdered ? 0 : 1; - } - - if (!bOrdered) { - return -1; - } - - return a.order - b.order; - } - - /** - * Clone and sort array. Ascending order used by default. - * - * @param array Array to sort - * @returns {Orderable[]} Sorted clone array. - */ - sort(array: T[], sortingFunction = this.sortAsc): T[] { - return array - .slice() - .sort(sortingFunction); - } - -} diff --git a/src/app/shared/case-editor/case-edit-submit.component.spec.ts b/src/app/shared/case-editor/case-edit-submit.component.spec.ts index 5cebee3db..9eb78b199 100644 --- a/src/app/shared/case-editor/case-edit-submit.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-submit.component.spec.ts @@ -6,12 +6,12 @@ import { ActivatedRoute } from '@angular/router'; import { Observable } from 'rxjs'; import { FormControl, FormGroup } from '@angular/forms'; import { Wizard } from './wizard.model'; -import { OrderService } from '../../core/order/order.service'; import { By } from '@angular/platform-browser'; import createSpyObj = jasmine.createSpyObj; import { CaseFieldService, CaseReferencePipe, CaseEventTrigger, aCaseField, CaseField, IsCompoundPipe, FieldsUtils, WizardPage, FormErrorService, FormValueService } from '@hmcts/ccd-case-ui-toolkit'; import { aWizardPage } from './case-edit.spec'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; describe('CaseEditSubmitComponent', () => { let comp: CaseEditSubmitComponent; diff --git a/src/app/shared/case-editor/case-edit-submit.component.ts b/src/app/shared/case-editor/case-edit-submit.component.ts index 2350a6322..425586b66 100644 --- a/src/app/shared/case-editor/case-edit-submit.component.ts +++ b/src/app/shared/case-editor/case-edit-submit.component.ts @@ -10,7 +10,7 @@ import { ActivatedRoute } from '@angular/router'; import { Profile } from '../../core/profile/profile.model'; import { Confirmation } from './confirmation.model'; import { Wizard } from './wizard.model'; -import { OrderService } from '../../core/order/order.service'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ selector: 'ccd-case-edit-submit', diff --git a/src/app/shared/case-editor/wizard.model.ts b/src/app/shared/case-editor/wizard.model.ts index 3d09efb91..eedacedde 100644 --- a/src/app/shared/case-editor/wizard.model.ts +++ b/src/app/shared/case-editor/wizard.model.ts @@ -1,6 +1,6 @@ import { WizardPage } from '@hmcts/ccd-case-ui-toolkit'; import { Predicate } from '../predicate'; -import { OrderService } from '../../core/order/order.service'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; export class Wizard { private orderService = new OrderService(); diff --git a/src/app/shared/case-history/case-history.component.spec.ts b/src/app/shared/case-history/case-history.component.spec.ts index d35e6ebdb..364b25a2a 100644 --- a/src/app/shared/case-history/case-history.component.spec.ts +++ b/src/app/shared/case-history/case-history.component.spec.ts @@ -7,12 +7,12 @@ import { By } from '@angular/platform-browser'; import { ActivatedRoute, Router } from '@angular/router'; import { CaseHistory } from '../../core/cases/case-history.model'; import { DebugElement } from '@angular/core'; -import { OrderService } from '../../core/order/order.service'; import { createCaseHistory } from '../../core/cases/case-history.test.fixture'; import createSpyObj = jasmine.createSpyObj; import any = jasmine.any; import { FieldsUtils, PaletteUtilsModule, HttpError, LabelSubstitutorDirective, LabelSubstitutionService } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; describe('CaseHistoryComponent', () => { diff --git a/src/app/shared/case-history/case-history.component.ts b/src/app/shared/case-history/case-history.component.ts index a95ba71d2..8456a00ad 100644 --- a/src/app/shared/case-history/case-history.component.ts +++ b/src/app/shared/case-history/case-history.component.ts @@ -1,9 +1,9 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { CaseHistory } from '../../core/cases/case-history.model'; -import { OrderService } from '../../core/order/order.service'; import { CaseTab } from '../../core/cases/case-tab.model'; import { ShowCondition } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ templateUrl: './case-history.component.html', diff --git a/src/app/shared/event-trigger/event-trigger.component.spec.ts b/src/app/shared/event-trigger/event-trigger.component.spec.ts index 3ca144f6f..150c56fde 100644 --- a/src/app/shared/event-trigger/event-trigger.component.spec.ts +++ b/src/app/shared/event-trigger/event-trigger.component.spec.ts @@ -6,10 +6,10 @@ import { By } from '@angular/platform-browser'; import { attr, text } from '../../test/helpers'; import { ReactiveFormsModule } from '@angular/forms'; import createSpyObj = jasmine.createSpyObj; -import { OrderService } from '../../core/order/order.service'; import { AlertService } from '../../core/alert/alert.service'; import { Subject } from 'rxjs/Subject'; import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; describe('EventTriggerComponent', () => { diff --git a/src/app/shared/event-trigger/event-trigger.component.ts b/src/app/shared/event-trigger/event-trigger.component.ts index eca27ea70..947bb49d4 100644 --- a/src/app/shared/event-trigger/event-trigger.component.ts +++ b/src/app/shared/event-trigger/event-trigger.component.ts @@ -1,11 +1,11 @@ import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'; import { CaseViewTrigger } from '../domain/case-view/case-view-trigger.model'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; -import { OrderService } from '../../core/order/order.service'; import { AlertService } from '../../core/alert/alert.service'; import { Subscription } from 'rxjs/Subscription'; import { Subject } from 'rxjs/Subject'; import { HttpError } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ selector: 'ccd-event-trigger', diff --git a/src/app/shared/search/filters/search-filters.component.spec.ts b/src/app/shared/search/filters/search-filters.component.spec.ts index 495ac5575..67c9d5e8b 100644 --- a/src/app/shared/search/filters/search-filters.component.spec.ts +++ b/src/app/shared/search/filters/search-filters.component.spec.ts @@ -7,12 +7,12 @@ import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angul import { SearchService } from '../../../core/search/search.service'; import { Observable } from 'rxjs/Rx'; import { SearchInput } from '../../../core/search/search-input.model'; -import { OrderService } from '../../../core/order/order.service'; import { JurisdictionService } from '../../jurisdiction.service'; import { CaseType } from '../../domain/definition/case-type.model'; import { createSearchInputs } from '../../../core/search/search-input.test.fixture'; import createSpyObj = jasmine.createSpyObj; import { AbstractFieldWriteComponent } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; const JURISDICTION_1: Jurisdiction = { id: 'J1', diff --git a/src/app/shared/search/filters/search-filters.component.ts b/src/app/shared/search/filters/search-filters.component.ts index 21f39c252..df4df9e6a 100644 --- a/src/app/shared/search/filters/search-filters.component.ts +++ b/src/app/shared/search/filters/search-filters.component.ts @@ -6,7 +6,7 @@ import { SearchService } from '../../../core/search/search.service'; import { SearchInput } from '../../../core/search/search-input.model'; import { FormGroup } from '@angular/forms'; import { JurisdictionService } from '../../jurisdiction.service'; -import { OrderService } from '../../../core/order/order.service'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ selector: 'ccd-search-filters', diff --git a/src/app/workbasket/filters/workbasket-filters.component.spec.ts b/src/app/workbasket/filters/workbasket-filters.component.spec.ts index 7a4b35424..891de46d5 100644 --- a/src/app/workbasket/filters/workbasket-filters.component.spec.ts +++ b/src/app/workbasket/filters/workbasket-filters.component.spec.ts @@ -10,11 +10,11 @@ import 'rxjs/add/operator/do'; import { JurisdictionService } from '../../shared/jurisdiction.service'; import { CaseType } from '../../shared/domain/definition/case-type.model'; import { AlertService } from '../../core/alert/alert.service'; -import { OrderService } from '../../core/order/order.service'; import { WorkbasketInputFilterService } from '../workbasket-input-filter.service'; import { WorkbasketInputModel } from '../workbasket-input.model'; import createSpyObj = jasmine.createSpyObj; import { AbstractFieldWriteComponent, FieldTypeEnum } from '@hmcts/ccd-case-ui-toolkit'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ selector: 'ccd-field-write', diff --git a/src/app/workbasket/filters/workbasket-filters.component.ts b/src/app/workbasket/filters/workbasket-filters.component.ts index 87463e895..7d22f74da 100644 --- a/src/app/workbasket/filters/workbasket-filters.component.ts +++ b/src/app/workbasket/filters/workbasket-filters.component.ts @@ -5,11 +5,11 @@ import { CaseType } from '../../shared/domain/definition/case-type.model'; import { JurisdictionService } from '../../shared/jurisdiction.service'; import { ActivatedRoute, ActivatedRouteSnapshot, Router } from '@angular/router'; import { FormGroup } from '@angular/forms'; -import { OrderService } from '../../core/order/order.service'; import { WorkbasketInputFilterService } from '../workbasket-input-filter.service'; import { WorkbasketInputModel } from '../workbasket-input.model'; import { AlertService } from '../../core/alert/alert.service'; import 'rxjs/add/operator/do'; +import { OrderService } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain'; @Component({ selector: 'ccd-workbasket-filters', From 03c89ad4910fe3339db26db8d0532cadcd32925a Mon Sep 17 00:00:00 2001 From: andrewf Date: Mon, 8 Oct 2018 10:22:43 +0100 Subject: [PATCH 16/30] RDM-3023 Update ui toolkit version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ff2aa88c5..2d20d87bd 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@angular/platform-server": "~6.1.8", "@angular/router": "~6.1.8", "@angular/upgrade": "~6.1.8", - "@hmcts/ccd-case-ui-toolkit": "1.2.6", + "@hmcts/ccd-case-ui-toolkit": "1.2.8", "@hmcts/ccpay-web-component": "~1.5.0", "@nguniversal/express-engine": "^6.0.0", "@nguniversal/module-map-ngfactory-loader": "^6.0.0", From a6b0267e5f1f73b3b639870013b863b226109e29 Mon Sep 17 00:00:00 2001 From: andrewf Date: Tue, 9 Oct 2018 17:27:20 +0100 Subject: [PATCH 17/30] RDM-3203 Update ui toolkit to latest. --- package.json | 2 +- yarn.lock | 563 ++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 513 insertions(+), 52 deletions(-) diff --git a/package.json b/package.json index 3455f449f..d85b37215 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@angular/platform-server": "~6.1.8", "@angular/router": "~6.1.8", "@angular/upgrade": "~6.1.8", - "@hmcts/ccd-case-ui-toolkit": "1.2.9", + "@hmcts/ccd-case-ui-toolkit": "1.2.12", "@hmcts/ccpay-web-component": "~1.6.1", "@nguniversal/express-engine": "^6.0.0", "@nguniversal/module-map-ngfactory-loader": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 59eff7874..c41adf3bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -292,9 +292,9 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@hmcts/ccd-case-ui-toolkit@1.2.9": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@hmcts/ccd-case-ui-toolkit/-/ccd-case-ui-toolkit-1.2.9.tgz#b5cf5f26026a7ae663754fafe95e0735be0eb063" +"@hmcts/ccd-case-ui-toolkit@1.2.12": + version "1.2.12" + resolved "https://registry.yarnpkg.com/@hmcts/ccd-case-ui-toolkit/-/ccd-case-ui-toolkit-1.2.12.tgz#52516b0c39049154ccb303e8d907bc59838768b3" dependencies: govuk-elements-sass "^3.1.2" karma-jasmine-html-reporter "^1.2.0" @@ -383,8 +383,8 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.118.tgz#8014a9b1dee0b72b4d7cd142563f1af21241c3a2" "@types/node@^8.0.30": - version "8.10.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.34.tgz#a94d9f3767fe45f211e09e49af598bb84822280c" + version "8.10.35" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.35.tgz#b24cc302d534177f7e4cb589e48fdc5ab6b907c4" "@types/q@^0.0.32": version "0.0.32" @@ -510,7 +510,11 @@ "@webassemblyjs/wast-parser" "1.4.3" long "^3.2.0" -abbrev@1: +"@yarnpkg/lockfile@^1.0.2": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + +abbrev@1, abbrev@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -554,7 +558,7 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -agent-base@^4.1.0: +agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" dependencies: @@ -623,7 +627,7 @@ ansi-escapes@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" -ansi-escapes@^3.0.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -669,6 +673,10 @@ ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" +ansicolors@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" @@ -705,6 +713,10 @@ aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -841,7 +853,7 @@ ast-types@0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" -ast-types@0.11.5: +ast-types@0.11.5, ast-types@0.x.x: version "0.11.5" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" @@ -857,7 +869,7 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@1.x, async@^1.5.0, async@^1.5.2: +async@1.x, async@^1.4.0, async@^1.5.0, async@^1.5.2, async@~1.5: version "1.5.2" resolved "http://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1888,7 +1900,7 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^2.0.0: +camelcase@^2.0.0, camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2113,7 +2125,7 @@ clipboard@^2.0.0: select "^1.1.2" tiny-emitter "^2.0.0" -cliui@^3.2.0: +cliui@^3.0.3, cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" dependencies: @@ -2133,6 +2145,15 @@ clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" +clone-deep@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.3.0.tgz#348c61ae9cdbe0edfe053d91ff4cc521d790ede8" + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.1" + kind-of "^3.2.2" + shallow-clone "^0.1.2" + clone-deep@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" @@ -2260,8 +2281,8 @@ commander@2.17.x, commander@~2.17.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" commander@^2.12.1, commander@^2.9.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" commander@~2.14.1: version "2.14.1" @@ -2322,7 +2343,7 @@ concat-stream@1.6.2, concat-stream@^1.5.0, concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" -configstore@^3.0.0: +configstore@^3.0.0, configstore@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" dependencies: @@ -2636,6 +2657,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" + date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" @@ -2660,11 +2685,17 @@ dateformat@^3.0.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" debug@*: - version "4.0.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.0.1.tgz#f9bb36d439b8d1f0dd52d8fb6b46e4ebb8c1cd5b" + version "4.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" dependencies: ms "^2.1.1" +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + debug@2.2.0: version "2.2.0" resolved "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" @@ -2677,12 +2708,6 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - debug@3.1.0, debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -2693,7 +2718,7 @@ debug@^0.7.2: version "0.7.4" resolved "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" -debug@^3.1.0: +debug@^3, debug@^3.1.0, debug@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" dependencies: @@ -2781,6 +2806,14 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +degenerator@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" + dependencies: + ast-types "0.x.x" + escodegen "1.x.x" + esprima "3.x.x" + del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -3021,6 +3054,10 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +email-validator@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/email-validator/-/email-validator-2.0.4.tgz#b8dfaa5d0dae28f1b03c95881d904d4e40bfe7ed" + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -3200,6 +3237,17 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" +escodegen@1.x.x: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-scope@^3.7.1: version "3.7.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" @@ -3211,6 +3259,10 @@ esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@3.x.x, esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -3225,7 +3277,7 @@ estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -3407,7 +3459,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: +extend@3, extend@^3.0.0, extend@~3.0.1, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -3540,6 +3592,10 @@ file-loader@^1.1.11: loader-utils "^1.0.2" schema-utils "^0.4.5" +file-uri-to-path@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -3773,6 +3829,13 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" +ftp@~0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3812,6 +3875,17 @@ get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-uri@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" + dependencies: + data-uri-to-buffer "1" + debug "2" + extend "3" + file-uri-to-path "1" + ftp "~0.3.10" + readable-stream "2" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -4084,6 +4158,12 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +graphlib@^2.1.1: + version "2.1.5" + resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.5.tgz#6afe1afcc5148555ec799e499056795bd6938c87" + dependencies: + lodash "^4.11.1" + grouped-queue@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" @@ -4244,6 +4324,12 @@ has@^1.0.1: dependencies: function-bind "^1.1.1" +hasbin@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/hasbin/-/hasbin-1.2.3.tgz#78c5926893c80215c2b568ae1fd3fcab7a2696b0" + dependencies: + async "~1.5" + hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -4374,6 +4460,13 @@ http-parser-js@>=0.4.0: version "0.4.13" resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + dependencies: + agent-base "4" + debug "3.1.0" + http-proxy-middleware@~0.18.0: version "0.18.0" resolved "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" @@ -4519,7 +4612,7 @@ inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.0, ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -4529,7 +4622,7 @@ inline-source-map@~0.6.0: dependencies: source-map "~0.5.3" -inquirer@^3.3.0: +inquirer@^3.0.0, inquirer@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: @@ -4620,7 +4713,7 @@ ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" -ip@^1.1.0, ip@^1.1.5: +ip@^1.1.0, ip@^1.1.4, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -4654,7 +4747,7 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" -is-buffer@^1.1.5: +is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -5161,7 +5254,7 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: +js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.5.3, js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -5316,7 +5409,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jszip@^3.1.3: +jszip@^3.1.3, jszip@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" dependencies: @@ -5493,7 +5586,13 @@ kind-of@^1.1.0: version "1.1.0" resolved "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +kind-of@^2.0.1: + version "2.0.1" + resolved "http://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" dependencies: @@ -5537,6 +5636,10 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -5742,7 +5845,15 @@ lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" -lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: +lodash.assignin@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + +lodash.clonedeep@^4.3.0, lodash.clonedeep@^4.3.1, lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -5756,6 +5867,14 @@ lodash.escape@^3.0.0: dependencies: lodash._root "^3.0.0" +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -5784,6 +5903,10 @@ lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" @@ -5809,10 +5932,14 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" -lodash@4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10: +lodash@4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.11.1, lodash@^4.11.2, lodash@^4.13.1, lodash@^4.16.2, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" +lodash@4.17.10: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + lodash@^3.10.1, lodash@^3.8.0: version "3.10.1" resolved "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" @@ -5894,13 +6021,17 @@ lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" -lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1: +lru-cache@4.1.x, lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" +macos-release@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-1.1.0.tgz#831945e29365b470aa8724b0ab36c8f8959d10fb" + make-dir@^1.0.0, make-dir@^1.1.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -6328,7 +6459,16 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -needle@^2.2.1: +nconf@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/nconf/-/nconf-0.10.0.tgz#da1285ee95d0a922ca6cee75adcf861f48205ad2" + dependencies: + async "^1.4.0" + ini "^1.3.0" + secure-keys "^1.0.0" + yargs "^3.19.0" + +needle@^2.2.1, needle@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" dependencies: @@ -6344,6 +6484,10 @@ neo-async@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" +netmask@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" + next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -6535,8 +6679,8 @@ npm-bundled@^1.0.1: validate-npm-package-name "^3.0.0" npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -6698,7 +6842,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opn@^5.1.0, opn@^5.3.0: +opn@^5.1.0, opn@^5.2.0, opn@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" dependencies: @@ -6762,6 +6906,13 @@ os-locale@^3.0.0: lcid "^2.0.0" mem "^4.0.0" +os-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-2.0.1.tgz#b9a386361c17ae3a21736ef0599405c9a8c5dc5e" + dependencies: + macos-release "^1.0.0" + win-release "^1.0.0" + os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -6855,6 +7006,29 @@ p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" +pac-proxy-agent@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz#90d9f6730ab0f4d2607dcdcd4d3d641aa26c3896" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + get-uri "^2.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + pac-resolver "^3.0.0" + raw-body "^2.2.0" + socks-proxy-agent "^3.0.0" + +pac-resolver@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" + dependencies: + co "^4.6.0" + degenerator "^1.0.4" + ip "^1.1.5" + netmask "^1.0.6" + thunkify "^2.1.2" + package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -7028,6 +7202,13 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path@0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + dependencies: + process "^0.11.1" + util "^0.10.3" + pathval@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -7229,7 +7410,7 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process@^0.11.10: +process@^0.11.1, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -7245,7 +7426,7 @@ promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" -promise@^7.1.1: +"promise@>=3.2 <8", promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" dependencies: @@ -7312,6 +7493,19 @@ proxy-addr@~2.0.3: forwarded "~0.1.2" ipaddr.js "1.8.0" +proxy-agent@^2.0.0: + version "2.3.1" + resolved "http://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz#3d49d863d46cf5f37ca8394848346ea02373eac6" + dependencies: + agent-base "^4.2.0" + debug "^3.1.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^4.1.2" + pac-proxy-agent "^2.0.1" + proxy-from-env "^1.0.0" + socks-proxy-agent "^3.0.0" + proxy-from-env@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" @@ -7453,7 +7647,7 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" -raw-body@2.3.3: +raw-body@2.3.3, raw-body@^2.2.0: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" dependencies: @@ -7533,7 +7727,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -7554,7 +7748,7 @@ readable-stream@1.0, readable-stream@~1.0.2: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^1.1.7, readable-stream@~1.1.9: +readable-stream@1.1.x, readable-stream@^1.1.7, readable-stream@~1.1.9: version "1.1.14" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: @@ -7607,6 +7801,12 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + dependencies: + minimatch "3.0.4" + redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -8039,6 +8239,10 @@ scss-tokenizer@^0.2.3: js-base64 "^2.1.8" source-map "^0.4.2" +secure-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/secure-keys/-/secure-keys-1.0.0.tgz#f0c82d98a3b139a8776a8808050b824431087fca" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -8084,7 +8288,7 @@ semver-intersect@^1.1.2: dependencies: semver "^5.0.0" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" @@ -8184,6 +8388,15 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + shallow-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" @@ -8232,6 +8445,10 @@ slide@^1.1.3, slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" +smart-buffer@^1.0.13: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -8259,6 +8476,179 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +snyk-config@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/snyk-config/-/snyk-config-2.2.0.tgz#d400ce50e293ce5c3ade4cf46a53bea8205771e6" + dependencies: + debug "^3.1.0" + lodash "^4.17.5" + nconf "^0.10.0" + +snyk-docker-plugin@1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-1.11.0.tgz#d0115279b731be86f710d45517850fb798517098" + dependencies: + debug "^3" + tslib "^1" + +snyk-go-plugin@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/snyk-go-plugin/-/snyk-go-plugin-1.5.2.tgz#c45273a2a05ca621553b3a0c60511757f8d24e1b" + dependencies: + graphlib "^2.1.1" + tmp "0.0.33" + toml "^2.3.2" + +snyk-gradle-plugin@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snyk-gradle-plugin/-/snyk-gradle-plugin-2.1.0.tgz#96c8c0774df6790f67ff0d2888a0a6f0da230754" + dependencies: + clone-deep "^0.3.0" + +snyk-module@1.8.2, snyk-module@^1.6.0, snyk-module@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/snyk-module/-/snyk-module-1.8.2.tgz#bd3c11b46a90b8ccb0a04a18b387b1d0e5b10291" + dependencies: + debug "^3.1.0" + hosted-git-info "^2.1.4" + +snyk-mvn-plugin@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.0.tgz#875dcfe0d77b50396321552f2469ee69ca8d1416" + +snyk-nodejs-lockfile-parser@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.5.1.tgz#fbd357d3ac8c9aa54fbb3c50f17005b7c0cc9b21" + dependencies: + "@yarnpkg/lockfile" "^1.0.2" + lodash "4.17.10" + path "0.12.7" + source-map-support "^0.5.7" + +snyk-nuget-plugin@1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz#0a5d53ba47a8bbdc82e245171446ec0485cc591b" + dependencies: + debug "^3.1.0" + jszip "^3.1.5" + lodash "^4.17.10" + xml2js "^0.4.17" + +snyk-php-plugin@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz#3785ee45f5e003919abc476a109ad4f34fabe631" + dependencies: + debug "^3.1.0" + lodash "^4.17.5" + path "0.12.7" + +snyk-policy@1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/snyk-policy/-/snyk-policy-1.12.0.tgz#5167cbc4a28b2046b82234f866e49ee4fea1f52a" + dependencies: + debug "^3.1.0" + email-validator "^2.0.3" + js-yaml "^3.5.3" + lodash.clonedeep "^4.3.1" + semver "^5.5.0" + snyk-module "^1.8.2" + snyk-resolve "^1.0.1" + snyk-try-require "^1.1.1" + then-fs "^2.0.0" + +snyk-python-plugin@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/snyk-python-plugin/-/snyk-python-plugin-1.8.2.tgz#5cd435f7fed745265cdfef30bb09246e43e8a7f5" + dependencies: + tmp "0.0.33" + +snyk-resolve-deps@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/snyk-resolve-deps/-/snyk-resolve-deps-4.0.1.tgz#099bacf1034a9737ebbe75bfdb8d06cca0553a3c" + dependencies: + ansicolors "^0.3.2" + debug "^3.2.5" + lodash.assign "^4.2.0" + lodash.assignin "^4.2.0" + lodash.clone "^4.5.0" + lodash.flatten "^4.4.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lru-cache "^4.0.0" + semver "^5.5.1" + snyk-module "^1.6.0" + snyk-resolve "^1.0.0" + snyk-tree "^1.0.0" + snyk-try-require "^1.1.1" + then-fs "^2.0.0" + +snyk-resolve@1.0.1, snyk-resolve@^1.0.0, snyk-resolve@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/snyk-resolve/-/snyk-resolve-1.0.1.tgz#eaa4a275cf7e2b579f18da5b188fe601b8eed9ab" + dependencies: + debug "^3.1.0" + then-fs "^2.0.0" + +snyk-sbt-plugin@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.0.tgz#d7fa18bee77ecb045ecc7feb8915f83b75186582" + +snyk-tree@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/snyk-tree/-/snyk-tree-1.0.0.tgz#0fb73176dbf32e782f19100294160448f9111cc8" + dependencies: + archy "^1.0.0" + +snyk-try-require@1.3.1, snyk-try-require@^1.1.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/snyk-try-require/-/snyk-try-require-1.3.1.tgz#6e026f92e64af7fcccea1ee53d524841e418a212" + dependencies: + debug "^3.1.0" + lodash.clonedeep "^4.3.0" + lru-cache "^4.0.0" + then-fs "^2.0.0" + +snyk@^1.94.0: + version "1.102.0" + resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.102.0.tgz#5d388eda24d8291b5dd5e24a4c8d5e390e8b8b1d" + dependencies: + abbrev "^1.1.1" + ansi-escapes "^3.1.0" + chalk "^2.4.1" + configstore "^3.1.2" + debug "^3.1.0" + hasbin "^1.2.3" + inquirer "^3.0.0" + lodash "^4.17.5" + needle "^2.2.4" + opn "^5.2.0" + os-name "^2.0.1" + proxy-agent "^2.0.0" + proxy-from-env "^1.0.0" + recursive-readdir "^2.2.2" + semver "^5.5.0" + snyk-config "2.2.0" + snyk-docker-plugin "1.11.0" + snyk-go-plugin "1.5.2" + snyk-gradle-plugin "2.1.0" + snyk-module "1.8.2" + snyk-mvn-plugin "2.0.0" + snyk-nodejs-lockfile-parser "1.5.1" + snyk-nuget-plugin "1.6.5" + snyk-php-plugin "1.5.1" + snyk-policy "1.12.0" + snyk-python-plugin "1.8.2" + snyk-resolve "1.0.1" + snyk-resolve-deps "4.0.1" + snyk-sbt-plugin "2.0.0" + snyk-tree "^1.0.0" + snyk-try-require "1.3.1" + source-map-support "^0.5.9" + tempfile "^2.0.0" + then-fs "^2.0.0" + undefsafe "^2.0.0" + uuid "^3.2.1" + socket.io-adapter@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" @@ -8321,6 +8711,20 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +socks-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + sonar-scanner@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/sonar-scanner/-/sonar-scanner-3.1.0.tgz#51c1c1101f54b98abc5d8565209b1d9232979343" @@ -8355,7 +8759,7 @@ source-map-support@^0.4.0, source-map-support@^0.4.15, source-map-support@~0.4.0 dependencies: source-map "^0.5.6" -source-map-support@^0.5.0, source-map-support@^0.5.5: +source-map-support@^0.5.0, source-map-support@^0.5.5, source-map-support@^0.5.7, source-map-support@^0.5.9: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" dependencies: @@ -8765,6 +9169,10 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + temp@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -8772,6 +9180,13 @@ temp@^0.8.1: os-tmpdir "^1.0.0" rimraf "~2.2.6" +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -8786,6 +9201,12 @@ textextensions@2: version "2.2.0" resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" +then-fs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/then-fs/-/then-fs-2.0.0.tgz#72f792dd9d31705a91ae19ebfcf8b3f968c81da2" + dependencies: + promise ">=3.2 <8" + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -8820,6 +9241,10 @@ through@X.X.X, through@^2.3.6: version "2.3.8" resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +thunkify@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" + thunky@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" @@ -8860,7 +9285,7 @@ tmp@0.0.31: dependencies: os-tmpdir "~1.0.1" -tmp@0.0.x, tmp@^0.0.33: +tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" dependencies: @@ -8904,6 +9329,10 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toml@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb" + toposort@^1.0.0: version "1.0.7" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" @@ -8981,7 +9410,7 @@ tsickle@^0.32.1: source-map "^0.6.0" source-map-support "^0.5.0" -tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -9082,6 +9511,12 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" +undefsafe@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" + dependencies: + debug "^2.2.0" + underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" @@ -9265,7 +9700,7 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -9585,6 +10020,16 @@ widest-line@^2.0.0: dependencies: string-width "^2.1.1" +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + dependencies: + semver "^5.0.1" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -9677,6 +10122,10 @@ xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + xregexp@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" @@ -9691,7 +10140,7 @@ xxhashjs@^0.2.1: dependencies: cuint "^0.2.2" -y18n@^3.2.1: +y18n@^3.2.0, y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" @@ -9788,6 +10237,18 @@ yargs@^11.1.0: y18n "^3.2.1" yargs-parser "^9.0.2" +yargs@^3.19.0: + version "3.32.0" + resolved "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0" + yargs@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" From 98bb8bb3e7e001c41d1f44402e871d493eee14da Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 08:39:58 +0100 Subject: [PATCH 18/30] RDM-3023 Update imports. --- src/app/cases/viewer/case-viewer.component.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/cases/viewer/case-viewer.component.spec.ts b/src/app/cases/viewer/case-viewer.component.spec.ts index ff356a207..aef03c699 100644 --- a/src/app/cases/viewer/case-viewer.component.spec.ts +++ b/src/app/cases/viewer/case-viewer.component.spec.ts @@ -15,11 +15,10 @@ import { ActivityPollingService } from '../../core/activity/activity.polling.ser import createSpyObj = jasmine.createSpyObj; import any = jasmine.any; import { PaletteUtilsModule, CaseField, LabelSubstitutionService, FieldsUtils, - LabelSubstitutorDirective, HttpError, OrderService } from '@hmcts/ccd-case-ui-toolkit'; + LabelSubstitutorDirective, HttpError, OrderService, DeleteOrCancelDialogComponent } from '@hmcts/ccd-case-ui-toolkit'; import { DraftService } from '../../core/draft/draft.service'; import { AlertService } from '../../core/alert/alert.service'; import { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material'; -import { DeleteOrCancelDialogComponent } from '../../shared/delete-or-cancel-dialog/delete-or-cancel-dialog.component'; @Component({ // tslint:disable-next-line From 0a186b1b0873d3d6b418917558c390d3c7970d1e Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 13:39:37 +0100 Subject: [PATCH 19/30] RDM-3023 Fix linting error. --- src/app/shared/case-editor/case-edit-page.component.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/shared/case-editor/case-edit-page.component.ts b/src/app/shared/case-editor/case-edit-page.component.ts index f249edb76..99a45e204 100644 --- a/src/app/shared/case-editor/case-edit-page.component.ts +++ b/src/app/shared/case-editor/case-edit-page.component.ts @@ -1,7 +1,6 @@ import { AfterViewChecked, ChangeDetectorRef, Component, OnInit } from '@angular/core'; import { CaseEventTrigger, WizardPage, CaseEventData, FormValueService, FormErrorService, DRAFT_PREFIX, - HttpError, - SaveOrDiscardDialogComponent} from '@hmcts/ccd-case-ui-toolkit'; + HttpError, SaveOrDiscardDialogComponent} from '@hmcts/ccd-case-ui-toolkit'; import { FormGroup } from '@angular/forms'; import { CaseEditComponent } from './case-edit.component'; import { ActivatedRoute } from '@angular/router'; From 042f02a1cbe64e00b1d42a21b0e9ff28347e6729 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 14:02:07 +0100 Subject: [PATCH 20/30] RDM-3023 Up the ui toolkit version to latest. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d85b37215..9204453f7 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@angular/platform-server": "~6.1.8", "@angular/router": "~6.1.8", "@angular/upgrade": "~6.1.8", - "@hmcts/ccd-case-ui-toolkit": "1.2.12", + "@hmcts/ccd-case-ui-toolkit": "1.2.13", "@hmcts/ccpay-web-component": "~1.6.1", "@nguniversal/express-engine": "^6.0.0", "@nguniversal/module-map-ngfactory-loader": "^6.0.0", From 53b10153f7a61fa60cd4f35b95ca0807f6d32df6 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 14:19:58 +0100 Subject: [PATCH 21/30] RDM-3023 Fix compilation error. --- src/app/shared/shared.module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index f6d6c9195..a9ae7f141 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -6,7 +6,8 @@ import { SearchResultComponent } from './search/search-result.component'; import { SearchFiltersComponent } from './search/filters/search-filters.component'; import { PaletteModule, CaseFieldService, ConditionalShowModule, DocumentDialogComponent, MarkdownModule, LabelFieldComponent, LabelSubstitutorModule, SharedUtilsModule, - DeleteOrCancelDialogComponent } from '@hmcts/ccd-case-ui-toolkit'; + DeleteOrCancelDialogComponent, + SaveOrDiscardDialogComponent} from '@hmcts/ccd-case-ui-toolkit'; import { RouterModule } from '@angular/router'; import { EventTriggerModule } from './event-trigger/event-trigger.module'; import { CaseHeaderComponent } from './header/case-header.component'; @@ -19,7 +20,6 @@ import { CcdActivityBannerComponent } from '../core/activity/ccd-activity/ccd-ac import { CaseHistoryComponent } from './case-history/case-history.component'; import { CaseHistoryResolver } from './case-history/case-history.resolver'; import { CaseHistoryService } from '../core/cases/case-history.service'; -import { SaveOrDiscardDialogComponent } from './save-or-discard-dialog/save-or-discard-dialog.component'; @NgModule({ imports: [ From 4a8e72425e01e28e5075b05c00057f48190bfa85 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 14:38:00 +0100 Subject: [PATCH 22/30] RDM-3023 yarn lock changes. --- yarn.lock | 58 +++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/yarn.lock b/yarn.lock index c41adf3bd..b1ff7d337 100644 --- a/yarn.lock +++ b/yarn.lock @@ -292,9 +292,9 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@hmcts/ccd-case-ui-toolkit@1.2.12": - version "1.2.12" - resolved "https://registry.yarnpkg.com/@hmcts/ccd-case-ui-toolkit/-/ccd-case-ui-toolkit-1.2.12.tgz#52516b0c39049154ccb303e8d907bc59838768b3" +"@hmcts/ccd-case-ui-toolkit@1.2.13": + version "1.2.13" + resolved "https://registry.yarnpkg.com/@hmcts/ccd-case-ui-toolkit/-/ccd-case-ui-toolkit-1.2.13.tgz#fabd5da50deb1a95b7e11159bcb4c0e0fd6ae30a" dependencies: govuk-elements-sass "^3.1.2" karma-jasmine-html-reporter "^1.2.0" @@ -379,12 +379,12 @@ "@types/jasmine" "*" "@types/node@^6.0.46": - version "6.0.118" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.118.tgz#8014a9b1dee0b72b4d7cd142563f1af21241c3a2" + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.0.tgz#85c6998293fc6f2945915419296c7fbb63384f66" "@types/node@^8.0.30": - version "8.10.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.35.tgz#b24cc302d534177f7e4cb589e48fdc5ab6b907c4" + version "8.10.36" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.36.tgz#eac05d576fbcd0b4ea3c912dc58c20475c08d9e4" "@types/q@^0.0.32": version "0.0.32" @@ -2427,8 +2427,8 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" copy-webpack-plugin@^4.5.1: - version "4.5.2" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz#d53444a8fea2912d806e78937390ddd7e632ee5c" + version "4.5.3" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.3.tgz#14a224d205e46f7a79f7956028e1da6df2225ff2" dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -2719,8 +2719,8 @@ debug@^0.7.2: resolved "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" debug@^3, debug@^3.1.0, debug@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" dependencies: ms "^2.1.1" @@ -3702,8 +3702,8 @@ flush-write-stream@^1.0.0: readable-stream "^2.0.4" follow-redirects@^1.0.0: - version "1.5.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.8.tgz#1dbfe13e45ad969f813e86c00e5296f525c885a1" + version "1.5.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.9.tgz#c9ed9d748b814a39535716e531b9196a845d89c6" dependencies: debug "=3.1.0" @@ -7610,8 +7610,8 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" querystringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" + version "2.1.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" randomatic@^3.0.0: version "3.1.0" @@ -8261,8 +8261,8 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: xml2js "^0.4.17" selfsigned@^1.9.1: - version "1.10.3" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" + version "1.10.4" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" dependencies: node-forge "0.7.5" @@ -8428,8 +8428,8 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" silent-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9" + version "1.1.1" + resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.1.tgz#f72af5b0d73682a2ba1778b7e32cd8aa7c2d8662" dependencies: debug "^2.2.0" @@ -8484,9 +8484,9 @@ snyk-config@2.2.0: lodash "^4.17.5" nconf "^0.10.0" -snyk-docker-plugin@1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-1.11.0.tgz#d0115279b731be86f710d45517850fb798517098" +snyk-docker-plugin@1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/snyk-docker-plugin/-/snyk-docker-plugin-1.12.0.tgz#6cbf61416946936cbb7bf07bb8293bf7dcdd33be" dependencies: debug "^3" tslib "^1" @@ -8609,8 +8609,8 @@ snyk-try-require@1.3.1, snyk-try-require@^1.1.1: then-fs "^2.0.0" snyk@^1.94.0: - version "1.102.0" - resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.102.0.tgz#5d388eda24d8291b5dd5e24a4c8d5e390e8b8b1d" + version "1.103.0" + resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.103.0.tgz#850de8ac2f20c311bc7de0629f5966d6f7f5a644" dependencies: abbrev "^1.1.1" ansi-escapes "^3.1.0" @@ -8628,7 +8628,7 @@ snyk@^1.94.0: recursive-readdir "^2.2.2" semver "^5.5.0" snyk-config "2.2.0" - snyk-docker-plugin "1.11.0" + snyk-docker-plugin "1.12.0" snyk-go-plugin "1.5.2" snyk-gradle-plugin "2.1.0" snyk-module "1.8.2" @@ -8736,8 +8736,8 @@ sort-keys@^2.0.0: is-plain-obj "^1.0.0" source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" source-list-map@~0.1.7: version "0.1.8" @@ -9617,8 +9617,8 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" url-loader@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.1.tgz#4d1f3b4f90dde89f02c008e662d604d7511167c1" + version "1.1.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" dependencies: loader-utils "^1.1.0" mime "^2.0.3" From 5ba1085c2605218c686423891c019238d41e84fa Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 14:57:30 +0100 Subject: [PATCH 23/30] RDM-3023 Fix linting error. --- src/app/shared/shared.module.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index a9ae7f141..b54e6787a 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -6,8 +6,7 @@ import { SearchResultComponent } from './search/search-result.component'; import { SearchFiltersComponent } from './search/filters/search-filters.component'; import { PaletteModule, CaseFieldService, ConditionalShowModule, DocumentDialogComponent, MarkdownModule, LabelFieldComponent, LabelSubstitutorModule, SharedUtilsModule, - DeleteOrCancelDialogComponent, - SaveOrDiscardDialogComponent} from '@hmcts/ccd-case-ui-toolkit'; + DeleteOrCancelDialogComponent, SaveOrDiscardDialogComponent} from '@hmcts/ccd-case-ui-toolkit'; import { RouterModule } from '@angular/router'; import { EventTriggerModule } from './event-trigger/event-trigger.module'; import { CaseHeaderComponent } from './header/case-header.component'; From e1c75f60508bf67d7dad344806a4ffbec1efe98a Mon Sep 17 00:00:00 2001 From: Ashley Noronha Date: Wed, 10 Oct 2018 16:30:44 +0100 Subject: [PATCH 24/30] timeout hotfix for tests --- test/functional-tests/config/conf.js | 1 + test/page-objects/login.po.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/functional-tests/config/conf.js b/test/functional-tests/config/conf.js index f947c50f3..5aac9d403 100644 --- a/test/functional-tests/config/conf.js +++ b/test/functional-tests/config/conf.js @@ -57,4 +57,5 @@ exports.config = { SELENIUM_PROMISE_MANAGER: false, + allScriptsTimeout: 30000 }; diff --git a/test/page-objects/login.po.js b/test/page-objects/login.po.js index 36cae7ec1..fbd6bb2b8 100644 --- a/test/page-objects/login.po.js +++ b/test/page-objects/login.po.js @@ -35,7 +35,7 @@ class Login extends BrowserUtils { } clickSignIn() { - + browser.wait(10000); element(this._signIn).click(); } From 14f64ecc521d356cde12c12cbffb713097c4e267 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 17:02:52 +0100 Subject: [PATCH 25/30] RDM-3023 Code cleanup plus up typescript version. --- package.json | 2 +- .../cases/creator/case-creator-submit.component.ts | 1 - src/app/cases/viewer/case-viewer.component.ts | 3 ++- .../case-editor/case-edit-page.component.spec.ts | 7 ++++--- .../shared/case-editor/case-edit-page.component.ts | 5 +++-- src/app/shared/case-editor/case-edit.component.ts | 8 ++++---- yarn.lock | 12 ++++-------- 7 files changed, 18 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 9204453f7..3eb0940ef 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "ts-loader": "^4.2.0", "ts-node": "^3.3.0", "tslint": "^5.0.0", - "typescript": "2.7.2", + "typescript": "2.9.2", "webdriver-manager": "^12.1.0", "webpack-cli": "^2.0.14" }, diff --git a/src/app/cases/creator/case-creator-submit.component.ts b/src/app/cases/creator/case-creator-submit.component.ts index dd1995cee..c90c1f9d9 100644 --- a/src/app/cases/creator/case-creator-submit.component.ts +++ b/src/app/cases/creator/case-creator-submit.component.ts @@ -14,7 +14,6 @@ import { CaseEditPageComponent } from '../../shared/case-editor/case-edit-page.c }) export class CaseCreatorSubmitComponent implements OnInit { - public static readonly ORIGIN_QUERY_PARAM = 'origin'; eventTrigger: CaseEventTrigger; jurisdictionId: string; diff --git a/src/app/cases/viewer/case-viewer.component.ts b/src/app/cases/viewer/case-viewer.component.ts index 90b1bcc70..d2490a643 100644 --- a/src/app/cases/viewer/case-viewer.component.ts +++ b/src/app/cases/viewer/case-viewer.component.ts @@ -23,6 +23,7 @@ import { DRAFT_QUERY_PARAM } from '@hmcts/ccd-case-ui-toolkit/dist/shared/domain styleUrls: ['./case-viewer.scss'] }) export class CaseViewerComponent implements OnInit, OnDestroy { + public static readonly ORIGIN_QUERY_PARAM = 'origin'; BANNER = DisplayMode.BANNER; caseDetails: CaseView; @@ -113,7 +114,7 @@ export class CaseViewerComponent implements OnInit, OnDestroy { }); } else if (this.isDraft() && trigger.id !== CaseViewTrigger.DELETE) { theQueryParams[DRAFT_QUERY_PARAM] = this.caseDetails.case_id; - theQueryParams[CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM] = 'viewDraft'; + theQueryParams[CaseViewerComponent.ORIGIN_QUERY_PARAM] = 'viewDraft'; return this.router.navigate( ['create/case', this.caseDetails.case_type.jurisdiction.id, diff --git a/src/app/shared/case-editor/case-edit-page.component.spec.ts b/src/app/shared/case-editor/case-edit-page.component.spec.ts index 3626660fc..6a03d33a1 100644 --- a/src/app/shared/case-editor/case-edit-page.component.spec.ts +++ b/src/app/shared/case-editor/case-edit-page.component.spec.ts @@ -12,6 +12,7 @@ import { WizardPage, CaseField, FormValueService, FormErrorService, CaseFieldSer import createSpyObj = jasmine.createSpyObj; import { MatDialog, MatDialogRef } from '@angular/material'; import { CaseCreatorSubmitComponent } from '../../cases/creator/case-creator-submit.component'; +import { CaseViewerComponent } from '../../cases/viewer/case-viewer.component'; describe('CaseEditPageComponent', () => { @@ -164,7 +165,7 @@ describe('CaseEditPageComponent', () => { comp.formValuesChanged = false; snapshot.queryParamMap.get.and.callFake(key => { switch (key) { - case CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM: + case CaseViewerComponent.ORIGIN_QUERY_PARAM: return 'viewDraft'; } }); @@ -192,7 +193,7 @@ describe('CaseEditPageComponent', () => { comp.formValuesChanged = true; snapshot.queryParamMap.get.and.callFake(key => { switch (key) { - case CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM: + case CaseViewerComponent.ORIGIN_QUERY_PARAM: return 'viewDraft'; } }); @@ -222,7 +223,7 @@ describe('CaseEditPageComponent', () => { comp.formValuesChanged = true; snapshot.queryParamMap.get.and.callFake(key => { switch (key) { - case CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM: + case CaseViewerComponent.ORIGIN_QUERY_PARAM: return 'viewDraft'; } }); diff --git a/src/app/shared/case-editor/case-edit-page.component.ts b/src/app/shared/case-editor/case-edit-page.component.ts index 99a45e204..0436f7772 100644 --- a/src/app/shared/case-editor/case-edit-page.component.ts +++ b/src/app/shared/case-editor/case-edit-page.component.ts @@ -10,6 +10,7 @@ import { CallbackErrorsContext } from '../error/error-context'; import { PageValidationService } from './page-validation.service'; import { MatDialogConfig, MatDialog } from '@angular/material'; import { CaseCreatorSubmitComponent } from '../../cases/creator/case-creator-submit.component'; +import { CaseViewerComponent } from '../../cases/viewer/case-viewer.component'; @Component({ selector: 'ccd-case-edit-page', @@ -148,7 +149,7 @@ export class CaseEditPageComponent implements OnInit, AfterViewChecked { this.discard(); } else if (result === 'Save') { const draftCaseEventData: CaseEventData = this.formValueService.sanitise(this.editForm.value) as CaseEventData; - if (this.route.snapshot.queryParamMap.get(CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') { + if (this.route.snapshot.queryParamMap.get(CaseViewerComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') { this.caseEdit.cancelled.emit({status: CaseEditPageComponent.RESUMED_FORM_SAVE, data: draftCaseEventData}); } else { this.caseEdit.cancelled.emit({status: CaseEditPageComponent.NEW_FORM_SAVE, data: draftCaseEventData}); @@ -161,7 +162,7 @@ export class CaseEditPageComponent implements OnInit, AfterViewChecked { } private discard() { - if (this.route.snapshot.queryParamMap.get(CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') { + if (this.route.snapshot.queryParamMap.get(CaseViewerComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') { this.caseEdit.cancelled.emit({status: CaseEditPageComponent.RESUMED_FORM_DISCARD}); } else { this.caseEdit.cancelled.emit({status: CaseEditPageComponent.NEW_FORM_DISCARD}); diff --git a/src/app/shared/case-editor/case-edit.component.ts b/src/app/shared/case-editor/case-edit.component.ts index 5ff1a8128..17804dc4a 100644 --- a/src/app/shared/case-editor/case-edit.component.ts +++ b/src/app/shared/case-editor/case-edit.component.ts @@ -8,7 +8,7 @@ import { Confirmation } from './confirmation.model'; import { ActivatedRoute, Router, Params } from '@angular/router'; import { CaseView } from '../../core/cases/case-view.model'; import { WizardFactoryService } from '../../core/case-editor/wizard-factory.service'; -import { CaseCreatorSubmitComponent } from '../../cases/creator/case-creator-submit.component'; +import { CaseViewerComponent } from '../../cases/viewer/case-viewer.component'; @Component({ selector: 'ccd-case-edit', @@ -69,7 +69,7 @@ export class CaseEditComponent implements OnInit { }); this.route.queryParams.subscribe((params: Params) => { - this.navigationOrigin = params[CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM]; + this.navigationOrigin = params[CaseViewerComponent.ORIGIN_QUERY_PARAM]; }); } @@ -92,7 +92,7 @@ export class CaseEditComponent implements OnInit { this.registrarService.reset(); let theQueryParams: Params = {}; - theQueryParams[CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM] = this.navigationOrigin; + theQueryParams[CaseViewerComponent.ORIGIN_QUERY_PARAM] = this.navigationOrigin; let nextPage = this.wizard.nextPage(currentPageId, this.fieldsUtils.buildCanShowPredicate(this.eventTrigger, this.form)); return this.router.navigate([nextPage ? nextPage.id : 'submit'], { queryParams: theQueryParams, relativeTo: this.route }); } @@ -107,7 +107,7 @@ export class CaseEditComponent implements OnInit { } let theQueryParams: Params = {}; - theQueryParams[CaseCreatorSubmitComponent.ORIGIN_QUERY_PARAM] = this.navigationOrigin; + theQueryParams[CaseViewerComponent.ORIGIN_QUERY_PARAM] = this.navigationOrigin; return this.router.navigate([previousPage.id], { queryParams: theQueryParams, relativeTo: this.route }); } diff --git a/yarn.lock b/yarn.lock index b1ff7d337..da595bc83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6237,8 +6237,8 @@ mimic-response@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" mini-css-extract-plugin@~0.4.0: - version "0.4.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" + version "0.4.4" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.4.tgz#c10410a004951bd3cedac1da69053940fccb625d" dependencies: loader-utils "^1.1.0" schema-utils "^1.0.0" @@ -9472,11 +9472,7 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@2.7.2: - version "2.7.2" - resolved "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" - -"typescript@>=2.6.2 <2.10", typescript@~2.9.1: +typescript@2.9.2, "typescript@>=2.6.2 <2.10", typescript@~2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" @@ -10116,7 +10112,7 @@ xml2js@^0.4.17: xmlbuilder@~9.0.1: version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + resolved "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" xmlhttprequest-ssl@1.5.3: version "1.5.3" From ed06fce1f84ed5d9fce7f28e47d5c009d09216fe Mon Sep 17 00:00:00 2001 From: Ashley Noronha Date: Wed, 10 Oct 2018 17:49:05 +0100 Subject: [PATCH 26/30] turn off 'browser.ignoreSynchronization = false' --- test/functional-tests/pageObjects/caseListPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional-tests/pageObjects/caseListPage.js b/test/functional-tests/pageObjects/caseListPage.js index 094218c9c..e8f414030 100644 --- a/test/functional-tests/pageObjects/caseListPage.js +++ b/test/functional-tests/pageObjects/caseListPage.js @@ -21,7 +21,7 @@ class CaseListPage extends BasePage { //As we are now on the CCD landing page, we can set this to false and make use of protractor angular functionality - browser.ignoreSynchronization = false; + // browser.ignoreSynchronization = false; } From 1e2bde3e18bdbf7bf47c2fb9a897742a2cbc6564 Mon Sep 17 00:00:00 2001 From: andrewf Date: Wed, 10 Oct 2018 20:08:30 +0100 Subject: [PATCH 27/30] RDM-3023 Fix tests. --- .../header/case-header.component.spec.ts | 23 +- .../filters/search-filters.component.spec.ts | 44 ++-- .../workbasket-filters.component.spec.ts | 244 +++++++++--------- 3 files changed, 166 insertions(+), 145 deletions(-) diff --git a/src/app/shared/header/case-header.component.spec.ts b/src/app/shared/header/case-header.component.spec.ts index 5d5f3702b..400d4c97f 100644 --- a/src/app/shared/header/case-header.component.spec.ts +++ b/src/app/shared/header/case-header.component.spec.ts @@ -39,20 +39,25 @@ describe('CaseHeaderComponent', () => { LabelSubstitutionService, ] }) - .compileComponents(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(CaseHeaderComponent); + component = fixture.componentInstance; + component.caseDetails = CASE_DETAILS; - fixture = TestBed.createComponent(CaseHeaderComponent); - component = fixture.componentInstance; - component.caseDetails = CASE_DETAILS; - - de = fixture.debugElement; - fixture.detectChanges(); + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should render a header with case reference when title display is empty', () => { let header = de.query($HEADING); - expect(header).toBeTruthy(); - expect(text(header)).toEqual('#1234-5678-9012-3456'); + fixture + .whenStable() + .then(() => { + expect(header).toBeTruthy(); + expect(text(header)).toEqual('#1234-5678-9012-3456'); + }); }); it('should render a header with markdown element when title display is not empty', () => { diff --git a/src/app/shared/search/filters/search-filters.component.spec.ts b/src/app/shared/search/filters/search-filters.component.spec.ts index 3b9958708..84967e111 100644 --- a/src/app/shared/search/filters/search-filters.component.spec.ts +++ b/src/app/shared/search/filters/search-filters.component.spec.ts @@ -163,31 +163,37 @@ describe('SearchFiltersComponent', () => { { provide: JurisdictionService, useValue: jurisdictionService }, ] }) - .compileComponents(); - - fixture = TestBed.createComponent(SearchFiltersComponent); - component = fixture.componentInstance; - - component.formGroup = TEST_FORM_GROUP; - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.onApply.subscribe(searchHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(SearchFiltersComponent); + component = fixture.componentInstance; + + component.formGroup = TEST_FORM_GROUP; + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.onApply.subscribe(searchHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); - it('should select the jurisdiction if there is only one jurisdiction', () => { + it('should select the jurisdiction if there is only one jurisdiction', async(() => { + resetCaseTypes(JURISDICTION_1, []); mockSearchService.getSearchInputs.and.returnValue(createObservableFrom(TEST_SEARCH_INPUTS)); component.jurisdictions = [JURISDICTION_1]; fixture.detectChanges(); component.ngOnInit(); - fixture.detectChanges(); - expect(component.selected.jurisdiction).toBe(JURISDICTION_1); - expect(component.selected.caseType).toBe(null); - }); + + fixture + .whenStable() + .then(() => { + expect(component.selected.jurisdiction).toBe(JURISDICTION_1); + expect(component.selected.caseType).toBe(null); + }); + })); it('should select the first caseType ', () => { resetCaseTypes(JURISDICTION_1, [CASE_TYPE_1, CASE_TYPE_2]); diff --git a/src/app/workbasket/filters/workbasket-filters.component.spec.ts b/src/app/workbasket/filters/workbasket-filters.component.spec.ts index 6379483fa..47f36b312 100644 --- a/src/app/workbasket/filters/workbasket-filters.component.spec.ts +++ b/src/app/workbasket/filters/workbasket-filters.component.spec.ts @@ -203,25 +203,26 @@ describe('WorkbasketFiltersComponent', () => { { provide: AlertService, useValue: alertService }, ] }) - .compileComponents(); - - fixture = TestBed.createComponent(WorkbasketFiltersComponent); - component = fixture.componentInstance; - - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.formGroup = TEST_FORM_GROUP; - component.defaults = { - jurisdiction_id: JURISDICTION_2.id, - case_type_id: DEFAULT_CASE_TYPE.id, - state_id: DEFAULT_CASE_STATE.id - }; - component.onApply.subscribe(workbasketHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(WorkbasketFiltersComponent); + component = fixture.componentInstance; + + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.formGroup = TEST_FORM_GROUP; + component.defaults = { + jurisdiction_id: JURISDICTION_2.id, + case_type_id: DEFAULT_CASE_TYPE.id, + state_id: DEFAULT_CASE_STATE.id + }; + component.onApply.subscribe(workbasketHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should have an Apply button disabled when case type is set but state is not set', async(() => { @@ -387,12 +388,16 @@ describe('WorkbasketFiltersComponent', () => { fixture.detectChanges(); let button = de.query($APPLY_BUTTON); - expect(button.nativeElement.disabled).toBeTruthy(); + fixture + .whenStable() + .then(() => { - component.selected.jurisdiction = JURISDICTION_1; - component.onJurisdictionIdChange(); - expect(component.workbasketInputsReady).toBeFalsy(); + expect(button.nativeElement.disabled).toBeTruthy(); + component.selected.jurisdiction = JURISDICTION_1; + component.onJurisdictionIdChange(); + expect(component.workbasketInputsReady).toBeFalsy(); + }); })); it('should have form group details added when apply button is clicked ', async(() => { @@ -524,24 +529,25 @@ describe('WorkbasketFiltersComponent', () => { { provide: AlertService, useValue: alertService } ] }) - .compileComponents(); - - fixture = TestBed.createComponent(WorkbasketFiltersComponent); - component = fixture.componentInstance; - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.formGroup = TEST_FORM_GROUP; - component.defaults = { - jurisdiction_id: JURISDICTION_2.id, - case_type_id: CASE_TYPES_2[1].id, - state_id: CASE_TYPES_2[1].states[1].id - }; - component.onApply.subscribe(workbasketHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(WorkbasketFiltersComponent); + component = fixture.componentInstance; + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.formGroup = TEST_FORM_GROUP; + component.defaults = { + jurisdiction_id: JURISDICTION_2.id, + case_type_id: CASE_TYPES_2[1].id, + state_id: CASE_TYPES_2[1].states[1].id + }; + component.onApply.subscribe(workbasketHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should populate case types drop down with CRUD filtered case types and sort states', async(() => { @@ -616,25 +622,26 @@ describe('WorkbasketFiltersComponent', () => { { provide: AlertService, useValue: alertService } ] }) - .compileComponents(); - - fixture = TestBed.createComponent(WorkbasketFiltersComponent); - component = fixture.componentInstance; - - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.formGroup = TEST_FORM_GROUP; - component.defaults = { - jurisdiction_id: JURISDICTION_2.id, - case_type_id: CRUD_FILTERED_CASE_TYPES[0].id, - state_id: CRUD_FILTERED_CASE_TYPES[0].states[0].id - }; - component.onApply.subscribe(workbasketHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(WorkbasketFiltersComponent); + component = fixture.componentInstance; + + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.formGroup = TEST_FORM_GROUP; + component.defaults = { + jurisdiction_id: JURISDICTION_2.id, + case_type_id: CRUD_FILTERED_CASE_TYPES[0].id, + state_id: CRUD_FILTERED_CASE_TYPES[0].states[0].id + }; + component.onApply.subscribe(workbasketHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should disable case type dropdown if default is filtered out due to CRUD and no other case types', async(() => { @@ -685,25 +692,26 @@ describe('WorkbasketFiltersComponent', () => { { provide: AlertService, useValue: alertService } ] }) - .compileComponents(); - - fixture = TestBed.createComponent(WorkbasketFiltersComponent); - component = fixture.componentInstance; - - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.formGroup = TEST_FORM_GROUP; - component.defaults = { - jurisdiction_id: JURISDICTION_2.id, - case_type_id: CRUD_FILTERED_CASE_TYPES[1].id, - state_id: CRUD_FILTERED_CASE_TYPES[0].states[0].id - }; - component.onApply.subscribe(workbasketHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(WorkbasketFiltersComponent); + component = fixture.componentInstance; + + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.formGroup = TEST_FORM_GROUP; + component.defaults = { + jurisdiction_id: JURISDICTION_2.id, + case_type_id: CRUD_FILTERED_CASE_TYPES[1].id, + state_id: CRUD_FILTERED_CASE_TYPES[0].states[0].id + }; + component.onApply.subscribe(workbasketHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should disable states dropdown if default is filtered out due to CRUD and no other states', async(() => { @@ -761,25 +769,26 @@ describe('WorkbasketFiltersComponent', () => { { provide: AlertService, useValue: alertService }, ] }) - .compileComponents(); - - fixture = TestBed.createComponent(WorkbasketFiltersComponent); - component = fixture.componentInstance; - - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.formGroup = TEST_FORM_GROUP; - component.defaults = { - jurisdiction_id: JURISDICTION_2.id, - case_type_id: DEFAULT_CASE_TYPE.id, - state_id: DEFAULT_CASE_STATE.id - }; - component.onApply.subscribe(workbasketHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(WorkbasketFiltersComponent); + component = fixture.componentInstance; + + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.formGroup = TEST_FORM_GROUP; + component.defaults = { + jurisdiction_id: JURISDICTION_2.id, + case_type_id: DEFAULT_CASE_TYPE.id, + state_id: DEFAULT_CASE_STATE.id + }; + component.onApply.subscribe(workbasketHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should initially select jurisdiction based on query parameter', () => { @@ -851,25 +860,26 @@ describe('WorkbasketFiltersComponent', () => { { provide: AlertService, useValue: alertService } ] }) - .compileComponents(); - - fixture = TestBed.createComponent(WorkbasketFiltersComponent); - component = fixture.componentInstance; - - component.jurisdictions = [ - JURISDICTION_1, - JURISDICTION_2 - ]; - component.formGroup = TEST_FORM_GROUP; - component.defaults = { - jurisdiction_id: JURISDICTION_2.id, - case_type_id: DEFAULT_CASE_TYPE.id, - state_id: DEFAULT_CASE_STATE.id - }; - component.onApply.subscribe(workbasketHandler.applyFilters); - - de = fixture.debugElement; - fixture.detectChanges(); + .compileComponents() + .then(() => { + fixture = TestBed.createComponent(WorkbasketFiltersComponent); + component = fixture.componentInstance; + + component.jurisdictions = [ + JURISDICTION_1, + JURISDICTION_2 + ]; + component.formGroup = TEST_FORM_GROUP; + component.defaults = { + jurisdiction_id: JURISDICTION_2.id, + case_type_id: DEFAULT_CASE_TYPE.id, + state_id: DEFAULT_CASE_STATE.id + }; + component.onApply.subscribe(workbasketHandler.applyFilters); + + de = fixture.debugElement; + fixture.detectChanges(); + }); })); it('should initially NOT select anything if jurisdiction is invalid and no case types', () => { From 5ed3bf65b02b69109cee61d1f22735ccedd4caee Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Wed, 10 Oct 2018 20:44:53 +0100 Subject: [PATCH 28/30] fix broken smoke tests --- test/page-objects/login.po.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/page-objects/login.po.js b/test/page-objects/login.po.js index fbd6bb2b8..3f8fe5b87 100644 --- a/test/page-objects/login.po.js +++ b/test/page-objects/login.po.js @@ -35,7 +35,7 @@ class Login extends BrowserUtils { } clickSignIn() { - browser.wait(10000); + //browser.wait(10000); element(this._signIn).click(); } From 5b3456579f3a3c6b4303363d27b56eee037f6b0a Mon Sep 17 00:00:00 2001 From: Hemanth Potipati Date: Thu, 11 Oct 2018 07:33:33 +0100 Subject: [PATCH 29/30] No change commit to trigger Preview From 8e10e5c747b3d72aff38568e40c6185756c1428b Mon Sep 17 00:00:00 2001 From: andrewf Date: Thu, 11 Oct 2018 09:54:00 +0100 Subject: [PATCH 30/30] RDM-3023 Downgrade jasmine-core to 2.8 as >3.0 causing Exceptions in afterAll (https://github.com/karma-runner/karma-jasmine/issues/161). --- package.json | 2 +- yarn.lock | 57 ++++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 47 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 538e071c9..8d1d06025 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@types/jasminewd2": "^2.0.3", "@types/node": "^8.0.30", "codelyzer": "^4.1.0", - "jasmine-core": "~3.2.0", + "jasmine-core": "~2.8.0", "jasmine-spec-reporter": "^4.2.1", "json-server": "^0.12.1", "karma": "^1.3.0", diff --git a/yarn.lock b/yarn.lock index da595bc83..c4fed46e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1945,7 +1945,7 @@ chai@^4.1.2: pathval "^1.1.0" type-detect "^4.0.5" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -3684,6 +3684,12 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/find/-/find-0.2.9.tgz#4b73f1ff9e56ad91b76e716407fe5ffe6554bb8c" + dependencies: + traverse-chain "~0.1.0" + first-chunk-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" @@ -3786,6 +3792,14 @@ fs-extra@^3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" +fs-extra@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" @@ -5175,10 +5189,6 @@ jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" -jasmine-core@~3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.2.1.tgz#8e4ff5b861603ee83343f2b49eee6a0ffe9650ce" - jasmine-diff@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/jasmine-diff/-/jasmine-diff-0.1.3.tgz#93ccc2dcc41028c5ddd4606558074839f2deeaa8" @@ -5242,7 +5252,7 @@ jju@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" -js-base64@^2.1.8: +js-base64@^2.1.8, js-base64@^2.4.3: version "2.4.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" @@ -6348,7 +6358,7 @@ mocha@^5.0.5: mkdirp "0.5.1" supports-color "5.4.0" -moment@^2.20.1: +moment@^2.20.1, moment@^2.21.0: version "2.22.2" resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.2.tgz#3c257f9839fc0e93ff53149632239eb90783ff66" @@ -6423,6 +6433,20 @@ multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" +multiple-cucumber-html-reporter@^1.11.0: + version "1.11.3" + resolved "https://registry.yarnpkg.com/multiple-cucumber-html-reporter/-/multiple-cucumber-html-reporter-1.11.3.tgz#3f3fa3ac9b1bb3b3bb72f24598186916eaf999a3" + dependencies: + chalk "1.1.3" + find "^0.2.9" + fs-extra "^5.0.0" + js-base64 "^2.4.3" + jsonfile "^4.0.0" + lodash "^4.17.5" + moment "^2.21.0" + opn "^5.2.0" + uuid "^3.2.1" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -7442,15 +7466,22 @@ protractor-beautiful-reporter@^1.2.1: mkdirp "~0.3.5" underscore "~1.6.0" -protractor-cucumber-framework@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/protractor-cucumber-framework/-/protractor-cucumber-framework-4.2.0.tgz#e44f6d33e6c4dc103a9b4b5dc91023b474530dbe" +protractor-cucumber-framework@^5.0.0: + version "5.0.0" + resolved "http://registry.npmjs.org/protractor-cucumber-framework/-/protractor-cucumber-framework-5.0.0.tgz#445c8963742e5b9e57a0da6990b3e6630ffefe26" dependencies: debug "^3.1.0" glob "^7.0.3" q "^1.4.1" tmp "^0.0.33" +protractor-multiple-cucumber-html-reporter-plugin@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/protractor-multiple-cucumber-html-reporter-plugin/-/protractor-multiple-cucumber-html-reporter-plugin-1.8.0.tgz#2c277e84c01ef371243a37ee1cd4e456f567e46f" + dependencies: + fs-extra "^3.0.1" + multiple-cucumber-html-reporter "^1.11.0" + protractor-screenshoter-plugin@^0.10.1: version "0.10.3" resolved "https://registry.yarnpkg.com/protractor-screenshoter-plugin/-/protractor-screenshoter-plugin-0.10.3.tgz#27de0caaa49eddda7cd80ab9ba809937733aafee" @@ -7465,7 +7496,7 @@ protractor-screenshoter-plugin@^0.10.1: screenshoter-report-analyzer "^0.6" uuid "^3.1.0" -protractor@^5.4.0: +protractor@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.1.tgz#011a99e38df7aa45d22455b889ffbb13a6ce0bd9" dependencies: @@ -9350,6 +9381,10 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +traverse-chain@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" + tree-kill@^1.0.0, tree-kill@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"