diff --git a/.travis.yml b/.travis.yml index de5f204479..0ae3987849 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ branches: only: - master - development - - /.*old-env.*/ + - /.*old-env.*/ - /.*next-release.*/ - /.*beta.*/ - /.*greenkeeper.*/ @@ -59,9 +59,9 @@ jobs: script: ./scripts/travis/deploy/deploy.sh - stage: Update children projects dependency #Update children projects dependency - name: Update Generator + name: Update Related Project if: tag =~ .*beta.* - script: ./scripts/travis/e2e/update-project.sh + script: ./scripts/update-project.sh - stage: e2e Test name: core script: ./scripts/travis/e2e/core-e2e.sh diff --git a/demo-shell/src/app/components/app-layout/app-layout.component.html b/demo-shell/src/app/components/app-layout/app-layout.component.html index 4db83becfa..92d19af509 100644 --- a/demo-shell/src/app/components/app-layout/app-layout.component.html +++ b/demo-shell/src/app/components/app-layout/app-layout.component.html @@ -25,6 +25,8 @@ + + diff --git a/demo-shell/src/app/components/process-service/task-attachments.component.html b/demo-shell/src/app/components/process-service/task-attachments.component.html index 471a790f2d..bf7f866426 100644 --- a/demo-shell/src/app/components/process-service/task-attachments.component.html +++ b/demo-shell/src/app/components/process-service/task-attachments.component.html @@ -1,5 +1,5 @@
-
+
diff --git a/docs/README.md b/docs/README.md index 01c8635c68..7f37375917 100644 --- a/docs/README.md +++ b/docs/README.md @@ -103,11 +103,13 @@ for more information about installing and using the source code. | [Login Dialog Panel component](core/components/login-dialog-panel.component.md) | Shows and manages a login dialog. | [Source](../lib/core/login/components/login-dialog-panel.component.ts) | | [Login Dialog component](core/components/login-dialog.component.md) | Allows a user to perform a login via a dialog. | [Source](../lib/core/login/components/login-dialog.component.ts) | | [Login component](core/components/login.component.md) | Authenticates to Alfresco Content Services and Alfresco Process Services. | [Source](../lib/core/login/components/login.component.ts) | +| [Notification History component](core/components/notification-history.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | This component is in the current status just an experimental component. | | +| The main purpose of the Notification history component is list all the notification received in the current session. They will disappear from the list after the refresh. | [Source](../lib/core/notification-history/notification-history.component.ts) | | | [Pagination Component](core/components/pagination.component.md) | Adds pagination to the component it is used with. | [Source](../lib/core/pagination/pagination.component.ts) | | [Sidebar action menu component](core/components/sidebar-action-menu.component.md) | Displays a sidebar-action menu information panel. | [Source](../lib/core/layout/components/sidebar-action/sidebar-action-menu.component.ts) | | [Sidenav Layout component](core/components/sidenav-layout.component.md) | Displays the standard three-region ADF application layout. | [Source](../lib/core/layout/components/sidenav-layout/sidenav-layout.component.ts) | | [Sorting Picker Component](core/components/sorting-picker.component.md) | Selects from a set of predefined sorting definitions and directions. | [Source](../lib/core/sorting-picker/sorting-picker.component.ts) | -| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/core/form/components/start-form.component.ts) | +| [Start Form component](core/components/start-form.component.md) | Displays the Start Form for a process. | [Source](../lib/process-services/form/start-form.component.ts) | | [Text Mask directive](core/components/text-mask.component.md) | Implements text field input masks. | [Source](../lib/core/form/components/widgets/text/text-mask.component.ts) | | [Toolbar Divider Component](core/components/toolbar-divider.component.md) | Divides groups of elements in a Toolbar with a visual separator. | [Source](../lib/core/toolbar/toolbar-divider.component.ts) | | [Toolbar Title Component](core/components/toolbar-title.component.md) | Supplies custom HTML to be included in a Toolbar component title. | [Source](../lib/core/toolbar/toolbar-title.component.ts) | @@ -158,7 +160,7 @@ for more information about installing and using the source code. | [Format Space pipe](core/pipes/format-space.pipe.md) | Replaces all the white space in a string with a supplied character. | [Source](../lib/core/pipes/format-space.pipe.ts) | | [Full name pipe](core/pipes/full-name.pipe.md) | Joins the first and last name properties from a UserProcessModel object into a single string. | [Source](../lib/core/pipes/full-name.pipe.ts) | | [Mime Type Icon pipe](core/pipes/mime-type-icon.pipe.md) | Retrieves an icon to represent a MIME type. | [Source](../lib/core/pipes/mime-type-icon.pipe.ts) | -| [Multi Value pipe](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is ', ', however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.ts) | +| [](core/pipes/multi-value.pipe.md) | Takes an array of strings and turns it into one string where items are separated by a separator. The default separator applied to the list is ', ', however, you can set your own separator in the params of the pipe. | [Source](../lib/core/pipes/multi-value.pipe.ts) | | [Node Name Tooltip pipe](core/pipes/node-name-tooltip.pipe.md) | Formats the tooltip for a Node. | [Source](../lib/core/pipes/node-name-tooltip.pipe.ts) | | [Text Highlight pipe](core/pipes/text-highlight.pipe.md) | Adds highlighting to words or sections of text that match a search string. | [Source](../lib/core/pipes/text-highlight.pipe.ts) | | [Time Ago pipe](core/pipes/time-ago.pipe.md) | Converts a recent past date into a number of days ago. | [Source](../lib/core/pipes/time-ago.pipe.ts) | @@ -410,7 +412,7 @@ for more information about installing and using the source code. | [Edit Task Filter Cloud component](process-services-cloud/components/edit-task-filter-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Edits task filter details. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts) | | [Form cloud custom outcomes component](process-services-cloud/components/form-cloud-custom-outcome.component.md) | Supplies custom outcome buttons to be included in Form cloud component. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud-custom-outcomes.component.ts) | | [Form cloud component](process-services-cloud/components/form-cloud.component.md) | Shows a form from Process Services. | [Source](../lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts) | -| [Form definition selector Cloud componet](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected. | [Source](../lib/process-services-cloud/src/lib/form-definition-selector/components/form-definition-selector-cloud.component.ts) | +| [Form definition selector Cloud componet](process-services-cloud/components/form-definition-selector-cloud.component.md) | Allows one form to be selected. | [Source](../lib/process-services-cloud/src/lib/form/components/form-definition-selector-cloud.component.ts) | | [Group Cloud component](process-services-cloud/components/group-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Searches Groups. | [Source](../lib/process-services-cloud/src/lib/group/components/group-cloud.component.ts) | | [People Cloud Component](process-services-cloud/components/people-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Allows one or more users to be selected (with auto-suggestion) based on the input parameters. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts) | | [Process Filters Cloud Component](process-services-cloud/components/process-filters-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Lists all available process filters and allows to select a filter. | [Source](../lib/process-services-cloud/src/lib/process/process-filters/components/process-filters-cloud.component.ts) | @@ -419,7 +421,7 @@ for more information about installing and using the source code. | [Start Process Cloud Component](process-services-cloud/components/start-process-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Starts a process. | [Source](../lib/process-services-cloud/src/lib/process/start-process/components/start-process-cloud.component.ts) | | [Start Task Cloud Component](process-services-cloud/components/start-task-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Creates/starts a new task for the specified app. | [Source](../lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.ts) | | [Task Filters Cloud component](process-services-cloud/components/task-filters-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all available filters. | [Source](../lib/process-services-cloud/src/lib/task/task-filters/components/task-filters-cloud.component.ts) | -| [Form cloud component](process-services-cloud/components/task-form-cloud.component.md) | Shows a form for a task. | [Source](../lib/process-services-cloud/src/lib/form/components/task-form-cloud.component.ts) | +| [Form cloud component](process-services-cloud/components/task-form-cloud.component.md) | Shows a form for a task. | [Source](../lib/process-services-cloud/src/lib/task/task-form/components/task-form-cloud.component.ts) | | [Task Header Cloud Component](process-services-cloud/components/task-header-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Shows all the information related to a task. | [Source](../lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts) | | [Task List Cloud component](process-services-cloud/components/task-list-cloud.component.md) ![Experimental](docassets/images/ExperimentalIcon.png) | Renders a list containing all the tasks matched by the parameters specified. | [Source](../lib/process-services-cloud/src/lib/task/task-list/components/task-list-cloud.component.ts) | diff --git a/docs/compatibility.md b/docs/compatibility.md index eb002796c8..0b7b509362 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -20,7 +20,7 @@ You can find further information about released versions of ADF in the [version index](versionIndex.md) and the [release notes](release-notes/README.md). | ADF version | Content Services | Process Services | -| -- | -- | -- | +| --- | --- | --- | | [3.2.0](versionIndex.md#v320) - [3.2.1](versionIndex.md#v321) | **Full test:** v6.1.0
**Smoke test:** v5.2.4 | **Full test:** v7.1.0 (latest CI pipeline build), v1.9.0
**Smoke test:** v1.8.1 | | [3.1.0](versionIndex.md#v310) | **Full test:** v6.1.0 RC7
**Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0
**Smoke test:** v1.8.1 | | [3.0.0](versionIndex.md#v300) | **Full test:** v6.1.0 RC7
**Smoke test:** v5.2.4 | **Full test:** v2.0.0 (latest CI pipeline build), v1.9.0
**Smoke test:** v1.8.1 | diff --git a/docs/content-services/models/image-resolver.model.md b/docs/content-services/models/image-resolver.model.md index 1ea0d8592f..5bca680915 100644 --- a/docs/content-services/models/image-resolver.model.md +++ b/docs/content-services/models/image-resolver.model.md @@ -11,7 +11,7 @@ Defines the Image Resolver function used by the [Document List Component](../com ## Definitions -- `type` **[ImageResolver](../../../lib/content-services/document-list/data/image-resolver.model.ts)** = (row: [`DataRow`](../../../lib/core/datatable/data/data-row.model.ts), column: [`DataColumn`](../../../lib/core/datatable/data/data-column.model.ts)) => `string` +- `type` **[`ImageResolver`](../../../lib/content-services/document-list/data/image-resolver.model.ts)** = (row: [`DataRow`](../../../lib/core/datatable/data/data-row.model.ts), column: [`DataColumn`](../../../lib/core/datatable/data/data-column.model.ts)) => `string` - _row:_ [`DataRow`](../../../lib/core/datatable/data/data-row.model.ts) - Data that defines the row - _column:_ [`DataColumn`](../../../lib/core/datatable/data/data-column.model.ts) - Data that defines the column - **Returns** File path for the image diff --git a/docs/content-services/models/row-filter.model.md b/docs/content-services/models/row-filter.model.md index 894c8c4530..f553ddb9a8 100644 --- a/docs/content-services/models/row-filter.model.md +++ b/docs/content-services/models/row-filter.model.md @@ -11,7 +11,7 @@ Defines the Row Filter function used by the [Document List Component](../compone ## Definitions -- `type` **[RowFilter](../../../lib/content-services/document-list/data/row-filter.model.ts)** = (value: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts), index: `number`, array: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts)`[]`) => any +- `type` **[`RowFilter`](../../../lib/content-services/document-list/data/row-filter.model.ts)** = (value: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts), index: `number`, array: [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts)`[]`) => any - _value:_ [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts) - Data that defines the row - _index:_ `number` - Index of the row within the list - _array:_ [`ShareDataRow`](../../../lib/content-services/document-list/data/share-data-row.model.ts)`[]` - The full set of rows for the list diff --git a/docs/content-services/services/document-list.service.md b/docs/content-services/services/document-list.service.md index 139b0795ea..c2a5630d7a 100644 --- a/docs/content-services/services/document-list.service.md +++ b/docs/content-services/services/document-list.service.md @@ -48,7 +48,7 @@ Implements node operations used by the [Document List component](../components/d - _nodeId:_ `string` - - _pagination:_ [`PaginationModel`](../../../lib/core/models/pagination.model.ts) - - _includeFields:_ `string[]` - - - _where:_ `string` - (Optional) + - _where:_ `string` - (Optional) - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`DocumentLoaderNode`](../../../lib/content-services/document-list/models/document-folder.model.ts)`>` - - **moveNode**(nodeId: `string`, targetParentId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`NodeEntry`](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-core-rest-api/docs/NodeEntry.md)`>`
diff --git a/docs/core/components/notification-history.component.md b/docs/core/components/notification-history.component.md new file mode 100644 index 0000000000..f94c0b92be --- /dev/null +++ b/docs/core/components/notification-history.component.md @@ -0,0 +1,28 @@ +--- +Title: Notification History component +Added: v3.3.0 +Status: Experimental +Last reviewed: 2019-06-05 +--- + +# [Notification History component](../../../lib/core/notification-history/notification-history.component.ts "Defined in notification-history.component.ts") + +This component is in the current status just an experimental component. +The main purpose of the [Notification history component](../../core/components/notification-history.component.md) is list all the notification received in the current session. They will disappear from the list after the refresh. + +![Notification history component](../../docassets/notification-history-component.png) + +## Basic Usage + +```html + +``` + +## Class members + +### Properties + +| Name | Type | Default value | Description | +| ---- | ---- | ------------- | ----------- | +| menuPositionX | `string` | "after" | Custom choice for opening the menu at the bottom. Can be `before` or `after`. | +| menuPositionY | `string` | "below" | Custom choice for opening the menu at the bottom. Can be `above` or `below`. | diff --git a/docs/core/services/notification.service.md b/docs/core/services/notification.service.md index 070995acac..5fc8204a19 100644 --- a/docs/core/services/notification.service.md +++ b/docs/core/services/notification.service.md @@ -28,22 +28,21 @@ Shows a notification message with optional feedback. - _action:_ `string` - Caption for the response button - _config:_ `number|MatSnackBarConfig` - (Optional) Time before notification disappears after being shown or MatSnackBarConfig object - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - Information/control object for the SnackBar -- **showError**(message: `string`, action: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
- Rase error message - - _message:_ `string` - The message (or resource key) to show. - - _action:_ `string` - Caption for the response button - - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - Information/control object for the SnackBar -- **showInfo**(message: `string`, action: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
- Rase info message - - _message:_ `string` - The message (or resource key) to show. - - _action:_ `string` - Caption for the response button - - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - Information/control object for the SnackBar -- **showWarning**(message: `string`, action: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
- Rase warning message - - _message:_ `string` - The message (or resource key) to show. - - _action:_ `string` - Caption for the response button - - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - Information/control object for the SnackBar - +- **showError**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+ Rase error message + - _message:_ `string` - Text message or translation key for the message. + - _action:_ `string` - (Optional) Action name + - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - +- **showInfo**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+ Rase info message + - _message:_ `string` - Text message or translation key for the message. + - _action:_ `string` - (Optional) Action name + - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - +- **showWarning**(message: `string`, action?: `string`): [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)``
+ Rase warning message + - _message:_ `string` - Text message or translation key for the message. + - _action:_ `string` - (Optional) Action name + - **Returns** [`MatSnackBarRef`](https://material.angular.io/components/snack-bar/overview)`` - ## Details diff --git a/docs/docassets/images/notification-history-component.png b/docs/docassets/images/notification-history-component.png new file mode 100644 index 0000000000..c808830990 Binary files /dev/null and b/docs/docassets/images/notification-history-component.png differ diff --git a/docs/extensions/services/extension.service.md b/docs/extensions/services/extension.service.md index 53a41f2782..9d96435cc2 100644 --- a/docs/extensions/services/extension.service.md +++ b/docs/extensions/services/extension.service.md @@ -16,7 +16,7 @@ Manages and runs basic extension functionality. - **evaluateRule**(ruleId: `string`, context?: [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts)): `boolean`
Evaluates a rule. - _ruleId:_ `string` - ID of the rule to evaluate - - _context:_ [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts) - (Optional) (optional) Custom rule execution context. + - _context:_ [`RuleContext`](../../../lib/extensions/src/lib/config/rule.extensions.ts) - (Optional) Custom rule execution context. - **Returns** `boolean` - True if the rule passed, false otherwise - **getActionById**(id: `string`): [`ActionRef`](../../../lib/extensions/src/lib/config/action.extensions.ts)
Retrieves an action using its ID value. diff --git a/docs/license-info/license-info-undefined.md b/docs/license-info/license-info-undefined.md index 8d5583ee84..a771ed9e8a 100644 --- a/docs/license-info/license-info-undefined.md +++ b/docs/license-info/license-info-undefined.md @@ -9,7 +9,7 @@ This page lists all third party libraries that ADF depends on. ## Libraries | Name | Version | License | -| -- | -- | -- | +| --- | --- | --- | | [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | | [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | | [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | diff --git a/docs/license-info/license-info-v3.0.0.md b/docs/license-info/license-info-v3.0.0.md index 5e38e0788b..82e3edea7e 100644 --- a/docs/license-info/license-info-v3.0.0.md +++ b/docs/license-info/license-info-v3.0.0.md @@ -10,7 +10,7 @@ with links to their licenses. ## Libraries | Name | Version | License | -| -- | -- | -- | +| --- | --- | --- | | [@angular/compiler](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) | | [@angular/core](https://github.com/angular/angular) | 7.0.3 | [MIT](http://www.opensource.org/licenses/MIT) | | [alfresco-components](https://github.com/Alfresco/alfresco-ng2-components) | 2.7.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | diff --git a/docs/license-info/license-info-v3.1.0.md b/docs/license-info/license-info-v3.1.0.md index bea70c46aa..b8491aa244 100644 --- a/docs/license-info/license-info-v3.1.0.md +++ b/docs/license-info/license-info-v3.1.0.md @@ -9,7 +9,7 @@ This page lists all third party libraries that ADF v3.1.0 depends on. ## Libraries | Name | Version | License | -| -- | -- | -- | +| --- | --- | --- | | [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.1.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | | [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.1.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | | [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.1.0-beta5 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | diff --git a/docs/license-info/license-info-v3.2.0.md b/docs/license-info/license-info-v3.2.0.md index 0bd168f678..339f8791e3 100644 --- a/docs/license-info/license-info-v3.2.0.md +++ b/docs/license-info/license-info-v3.2.0.md @@ -9,7 +9,7 @@ This page lists all third party libraries that ADF v3.2.0 depends on. ## Libraries | Name | Version | License | -| -- | -- | -- | +| --- | --- | --- | | [@alfresco/adf-content-services](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | | [@alfresco/adf-core](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | | [@alfresco/adf-extensions](https://github.com/Alfresco/alfresco-ng2-components) | 3.2.0-beta6 | [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0) | diff --git a/docs/process-services-cloud/components/group-cloud.component.md b/docs/process-services-cloud/components/group-cloud.component.md index 54663768e7..8a8ec1b2e1 100644 --- a/docs/process-services-cloud/components/group-cloud.component.md +++ b/docs/process-services-cloud/components/group-cloud.component.md @@ -29,8 +29,8 @@ Searches Groups. | appName | `string` | | Name of the application. If specified this shows the users who have access to the app. | | mode | `string` | | User selection mode (single/multiple). | | preSelectGroups | [`GroupModel`](../../../lib/process-services-cloud/src/lib/group/models/group.model.ts)`[]` | \[] | Array of users to be pre-selected. This pre-selects all users in multi selection mode and only the first user of the array in single selection mode. | -| searchGroupsControl | `FormControl` | new FormControl() | FormControl to search the group. | | roles | `string[]` | \[] | Role names of the groups to be listed. | +| searchGroupsControl | `FormControl` | new FormControl() | FormControl to search the group | | title | `string` | | Title of the field | ### Events diff --git a/docs/process-services-cloud/components/people-cloud.component.md b/docs/process-services-cloud/components/people-cloud.component.md index 880e4f1ffd..c3cb17eb9f 100644 --- a/docs/process-services-cloud/components/people-cloud.component.md +++ b/docs/process-services-cloud/components/people-cloud.component.md @@ -28,9 +28,9 @@ Allows one or more users to be selected (with auto-suggestion) based on the inpu | mode | `string` | | User selection mode (single/multiple). | | preSelectUsers | [`IdentityUserModel`](../../../lib/core/userinfo/models/identity-user.model.ts)`[]` | | Array of users to be pre-selected. All users in the array are pre-selected in multi selection mode, but only the first user is pre-selected in single selection mode. Mandatory properties are: id, email, username | | roles | `string[]` | | Role names of the users to be listed. | +| searchUserCtrl | `FormControl` | new FormControl() | FormControl to search the user | | title | `string` | | Placeholder translation key | -| searchUserCtrl | `FormControl` | new FormControl() | FormControl to search the users. | -| validate | `Boolean` | false | This flag enables the validation on the preSelectUsers passed as input. In case the flag is true the components call the [identity service](../../../lib/testing/src/lib/core/actions/identity/identity.service.ts) to verify the validity of the information passed as input. Otherwise, no check will be done. | +| validate | `Boolean` | false | This flag enables the validation on the preSelectUsers passed as input. In case the flag is true the components call the identity service to verify the validity of the information passed as input. Otherwise, no check will be done. | ### Events diff --git a/docs/process-services-cloud/components/task-form-cloud.component.md b/docs/process-services-cloud/components/task-form-cloud.component.md index 748b0837d1..954cdb4f47 100644 --- a/docs/process-services-cloud/components/task-form-cloud.component.md +++ b/docs/process-services-cloud/components/task-form-cloud.component.md @@ -5,18 +5,10 @@ Status: Active Last reviewed: 2019-04-17 --- -# [Task form cloud component](../../../lib/process-services-cloud/src/lib/form/components/task-form-cloud.component.ts "Defined in task-form-cloud.component.ts") +# [Task form cloud component](../../../lib/process-services-cloud/src/lib/task/task-form/components/task-form-cloud.component.ts "Defined in task-form-cloud.component.ts") Shows a [`form`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) for a task. -## Contents - -- [Basic Usage](#basic-usage) -- [Class members](#class-members) - - [Properties](#properties) - - [Events](#events) -- [See also](#see-also) - ## Basic Usage ```html @@ -33,27 +25,27 @@ Shows a [`form`](../../../lib/process-services-cloud/src/lib/form/models/form-cl | Name | Type | Default value | Description | | ---- | ---- | ------------- | ----------- | | appName | `string` | | App id to fetch corresponding form and values. | -| taskId | `string` | | Task id to fetch corresponding form and values. | +| readOnly | `boolean` | false | Toggle readonly state of the task. | +| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` button. | +| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` button. | | showRefreshButton | `boolean` | false | Toggle rendering of the `Refresh` button. | | showValidationIcon | `boolean` | true | Toggle rendering of the `Validation` icon. | -| showCancelButton | `boolean` | true | Toggle rendering of the `Cancel` outcome button. | -| showCompleteButton | `boolean` | true | Toggle rendering of the `Complete` outcome button. | -| readOnly | `boolean` | false | Toggle readOnly state of the task. | +| taskId | `string` | | Task id to fetch corresponding form and values. | ### Events | Name | Type | Description | | ---- | ---- | ----------- | -| formSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is saved. | -| formCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is submitted with the `Complete` outcome. | -| taskCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the task is completed. | -| taskClaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the task is claimed. | -| taskUnclaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the task is unclaimed. | -| cancelClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`string`>` | Emitted when the cancel button is clicked. | +| cancelClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when the cancel button is clicked. | | error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when any error occurs. | +| formCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is submitted with the `Complete` outcome. | +| formSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)`>` | Emitted when the form is saved. | +| taskClaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when the task is claimed. | +| taskCompleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when the task is completed. | +| taskUnclaimed | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when the task is unclaimed. | ## See also -- [Form component](./form-cloud.component.md) -- [Form field model](../../core/models/form-field.model.md) -- [Form cloud service](../services/form-cloud.service.md) +- [Form component](./form-cloud.component.md) +- [Form field model](../../core/models/form-field.model.md) +- [Form cloud service](../services/form-cloud.service.md) diff --git a/docs/process-services-cloud/services/apps-process-cloud.service.md b/docs/process-services-cloud/services/apps-process-cloud.service.md index 399cc0a675..60686f7f81 100644 --- a/docs/process-services-cloud/services/apps-process-cloud.service.md +++ b/docs/process-services-cloud/services/apps-process-cloud.service.md @@ -16,9 +16,12 @@ Gets details of deployed apps for the current user. - **getDeployedApplicationsByStatus**(status: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ApplicationInstanceModel`](../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts)`[]>`
Gets a list of deployed apps for this user by status. - _status:_ `string` - Required status value - - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ApplicationInstanceModel`](../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts)`[]>` - The list of deployed apps. + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`ApplicationInstanceModel`](../../../lib/process-services-cloud/src/lib/app/models/application-instance.model.ts)`[]>` - The list of deployed apps +- **hasDeployedApps**(): `boolean`
- You can override the behaviour by defining the required applications in app.config.json against the property `alfresco-deployed-apps`. The service will fetch the deployed apps only when there are no apps defined in the app.config.json + - **Returns** `boolean` - + +- **loadApps**()
## Details diff --git a/docs/process-services-cloud/services/form-cloud.service.md b/docs/process-services-cloud/services/form-cloud.service.md index 0c06cef312..459b6461ec 100644 --- a/docs/process-services-cloud/services/form-cloud.service.md +++ b/docs/process-services-cloud/services/form-cloud.service.md @@ -45,6 +45,10 @@ class MyComponent { - _appName:_ `string` - - **Returns** `string` - +- **getDropDownJsonData**(url: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`FormFieldOption`](../../../lib/core/form/components/widgets/core/form-field-option.ts)`[]>`
+ Parses JSON data to create a corresponding form. + - _url:_ `string` - String data to make the request + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`FormFieldOption`](../../../lib/core/form/components/widgets/core/form-field-option.ts)`[]>` - Array of FormFieldOption object - **getForm**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)``
Gets a form definition. - _appName:_ `string` - Name of the app @@ -74,7 +78,7 @@ class MyComponent { - **parseForm**(json: `any`, data?: [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]`, readOnly: `boolean` = `false`): [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts)
Parses JSON data to create a corresponding form. - _json:_ `any` - JSON data to create the form - - _data:_ [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` - (Optional) (Optional) Values for the form's fields + - _data:_ [`TaskVariableCloud`](../../../lib/process-services-cloud/src/lib/form/models/task-variable-cloud.model.ts)`[]` - (Optional) Values for the form's fields - _readOnly:_ `boolean` - Toggles whether or not the form should be read-only - **Returns** [`FormCloud`](../../../lib/process-services-cloud/src/lib/form/models/form-cloud.model.ts) - [Form](../../../lib/process-services/task-list/models/form.model.ts) created from the JSON specification - **saveTaskForm**(appName: `string`, taskId: `string`, formId: `string`, formValues: [`FormValues`](../../../lib/core/form/components/widgets/core/form-values.ts)): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`
diff --git a/docs/process-services-cloud/services/task-cloud.service.md b/docs/process-services-cloud/services/task-cloud.service.md index 8589f850a3..ab45210b11 100644 --- a/docs/process-services-cloud/services/task-cloud.service.md +++ b/docs/process-services-cloud/services/task-cloud.service.md @@ -46,6 +46,10 @@ Manages task cloud. - _appName:_ `string` - Name of the app - _taskId:_ `string` - ID of the task whose details you want - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>` - Task details +- **isTaskEditable**(taskDetails: [`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)): `boolean`
+ Validate if a task is editable. + - _taskDetails:_ [`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts) - task details object + - **Returns** `boolean` - Boolean value if the task is editable - **unclaimTask**(appName: `string`, taskId: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`
Un-claims a task. - _appName:_ `string` - Name of the app diff --git a/docs/release-notes/RelNote170.md b/docs/release-notes/RelNote170.md index 337110e61a..6047536e20 100644 --- a/docs/release-notes/RelNote170.md +++ b/docs/release-notes/RelNote170.md @@ -246,8 +246,8 @@ Two new methods has been added into the alfresco-js-api to support retrieve the | API | Name | HTTP method | URL | Description | | --- | ---- | ----------- | --- | ----------- | -| _ActivitiPublicRestApi.[TaskApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditJson**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditJson) | **GET** | /api/enterprise/tasks/{taskId}/audit | Retrieve audit infromation in json format | -| _ActivitiPublicRestApi.[TaskApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditPdf**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditPdf) | **GET** | /app/rest/tasks/{taskId}/audit | Retrieve the task audit infromation in pdf format | +| _ActivitiPublicRestApi.[`TaskApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditJson**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditJson) | **GET** | /api/enterprise/tasks/{taskId}/audit | Retrieve audit infromation in json format | +| _ActivitiPublicRestApi.[`TaskApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/docs/TaskApi.md)_ | [**getTaskAuditPdf**](https://github.com/Alfresco/alfresco-js-api/blob/a82ce3bbe56cb0944f8771d14193704b571adf96/src/alfresco-activiti-rest-api/docs/TaskApi.md#getTaskAuditPdf) | **GET** | /app/rest/tasks/{taskId}/audit | Retrieve the task audit infromation in pdf format | For further details about those endepoints please refer to the [official documentation](https://github.com/Alfresco/alfresco-js-api/blob/master/src/alfresco-activiti-rest-api/docs/TaskApi.md) @@ -343,7 +343,7 @@ Release Notes - Apps Development Framework - Version 1.7. - \[[ADF-819](https://issues.alfresco.com/jira/browse/ADF-819)] - Snackbar does not appear when uploading files via DnD - \[[ADF-923](https://issues.alfresco.com/jira/browse/ADF-923)] - Involved user should not be able to see 'Complete' button as active in a task. - \[[ADF-939](https://issues.alfresco.com/jira/browse/ADF-939)] - [Login] Sign in button does not stay at the bottom -- \[[ADF-943](https://issues.alfresco.com/jira/browse/ADF-943)] - APS [ContentApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is not present on index.d.ts and [SitesApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/sites.api.ts) is not complete +- \[[ADF-943](https://issues.alfresco.com/jira/browse/ADF-943)] - APS [`ContentApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is not present on index.d.ts and [`SitesApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/sites.api.ts) is not complete - \[[ADF-945](https://issues.alfresco.com/jira/browse/ADF-945)] - 'Undefined' is displayed in 'attach file' widget after restore. - \[[ADF-950](https://issues.alfresco.com/jira/browse/ADF-950)] - when the [`Form`](../../lib/process-services/task-list/models/form.model.ts) in readonly mode you can edit the date - \[[ADF-957](https://issues.alfresco.com/jira/browse/ADF-957)] - Duplicate Rest calls are made for fields where Rest end points are given diff --git a/docs/release-notes/RelNote200.md b/docs/release-notes/RelNote200.md index a82a38475d..f8187f3dc1 100644 --- a/docs/release-notes/RelNote200.md +++ b/docs/release-notes/RelNote200.md @@ -701,7 +701,7 @@ Release Notes - Apps Development Framework - Version 2.0. - \[[ADF-1710](https://issues.alfresco.com/jira/browse/ADF-1710)] - An error is logged into the console when using data widget - \[[ADF-1711](https://issues.alfresco.com/jira/browse/ADF-1711)] - The adf-task-attachment-list component displays drag-and-drop area that is not working - \[[ADF-1712](https://issues.alfresco.com/jira/browse/ADF-1712)] - The adf-task-header component displays a Requeue button for none pooled tasks -- \[[ADF-1716](https://issues.alfresco.com/jira/browse/ADF-1716)] - Process List - processDefinitionKey is not part of the [ProcessInstanceQueryRepresentation](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/activiti-rest-api/docs/ProcessInstanceQueryRepresentation.md) +- \[[ADF-1716](https://issues.alfresco.com/jira/browse/ADF-1716)] - Process List - processDefinitionKey is not part of the [`ProcessInstanceQueryRepresentation`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/activiti-rest-api/docs/ProcessInstanceQueryRepresentation.md) - \[[ADF-1718](https://issues.alfresco.com/jira/browse/ADF-1718)] - [`Pagination`](../../lib/content-services/document-list/models/document-library.model.ts) should not be displayed on Search Results page when there are no results - \[[ADF-1720](https://issues.alfresco.com/jira/browse/ADF-1720)] - Date-time picker is not working properly with other Date Display Format than default - \[[ADF-1722](https://issues.alfresco.com/jira/browse/ADF-1722)] - [object Object] appears in People control when selecting the same name @@ -738,7 +738,7 @@ Release Notes - Apps Development Framework - Version 2.0. - \[[ADF-1824](https://issues.alfresco.com/jira/browse/ADF-1824)] - Moment js security issue - \[[ADF-1825](https://issues.alfresco.com/jira/browse/ADF-1825)] - [`Form`](../../lib/process-services/task-list/models/form.model.ts) field in start task no aligned - \[[ADF-1827](https://issues.alfresco.com/jira/browse/ADF-1827)] - 'Object Object' displayed on search results page -- \[[ADF-1829](https://issues.alfresco.com/jira/browse/ADF-1829)] - [PeopleApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/people.api.ts) - getSiteMembership wrong returned type +- \[[ADF-1829](https://issues.alfresco.com/jira/browse/ADF-1829)] - [`PeopleApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/people.api.ts) - getSiteMembership wrong returned type - \[[ADF-1830](https://issues.alfresco.com/jira/browse/ADF-1830)] - Cannot access processes or reports - \[[ADF-1832](https://issues.alfresco.com/jira/browse/ADF-1832)] - [Document List] IE 11 erro on click - \[[ADF-1835](https://issues.alfresco.com/jira/browse/ADF-1835)] - The pagination on search results page is not working properly @@ -746,7 +746,7 @@ Release Notes - Apps Development Framework - Version 2.0. - \[[ADF-1839](https://issues.alfresco.com/jira/browse/ADF-1839)] - Login does not switch user preferences - \[[ADF-1856](https://issues.alfresco.com/jira/browse/ADF-1856)] - Document List - location fails for a user that has granular permissions - \[[ADF-1859](https://issues.alfresco.com/jira/browse/ADF-1859)] - The [document list component](../content-services/components/document-list.component.md) no longer exports [`ShareDataRow`](../../lib/content-services/document-list/data/share-data-row.model.ts) -- \[[ADF-1860](https://issues.alfresco.com/jira/browse/ADF-1860)] - [NodesApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/nodes.api.ts).getNodeChildren has wrong return type +- \[[ADF-1860](https://issues.alfresco.com/jira/browse/ADF-1860)] - [`NodesApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/nodes.api.ts).getNodeChildren has wrong return type - \[[ADF-1861](https://issues.alfresco.com/jira/browse/ADF-1861)] - Line breaks not displayed in "Display Text" widget in forms - \[[ADF-1862](https://issues.alfresco.com/jira/browse/ADF-1862)] - Adf toolbar should get the background color from the theme - \[[ADF-1865](https://issues.alfresco.com/jira/browse/ADF-1865)] - [Document List] "Empty View" does not wrap long text @@ -782,7 +782,7 @@ Release Notes - Apps Development Framework - Version 2.0. - \[[ADF-1951](https://issues.alfresco.com/jira/browse/ADF-1951)] - Date widget doesn't display the correct date. - \[[ADF-1956](https://issues.alfresco.com/jira/browse/ADF-1956)] - Date widget with advanced properties does not display value. - \[[ADF-1962](https://issues.alfresco.com/jira/browse/ADF-1962)] - getContentThumbnailUrl returns file data instead or URL -- \[[ADF-1963](https://issues.alfresco.com/jira/browse/ADF-1963)] - [ContentApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is missing the preview rendition API +- \[[ADF-1963](https://issues.alfresco.com/jira/browse/ADF-1963)] - [`ContentApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/api/content.api.ts) is missing the preview rendition API - \[[ADF-1964](https://issues.alfresco.com/jira/browse/ADF-1964)] - [Demo Shell] Max size filter is not switched off. - \[[ADF-1965](https://issues.alfresco.com/jira/browse/ADF-1965)] - 'Upload file' button is enabled if user does not have permission to upload a file/folder - \[[ADF-1966](https://issues.alfresco.com/jira/browse/ADF-1966)] - Wrong sort on Document List diff --git a/docs/release-notes/RelNote230.md b/docs/release-notes/RelNote230.md index 56fb9dfb24..17d148762a 100644 --- a/docs/release-notes/RelNote230.md +++ b/docs/release-notes/RelNote230.md @@ -324,7 +324,7 @@ Release Notes - Apps Development Framework - Version 2.3.0 - \[[ADF-2442](https://issues.alfresco.com/jira/browse/ADF-2442)] - [Search Service](../../lib/core/services/search.service.ts) has wrong types for the 'search' API - \[[ADF-2443](https://issues.alfresco.com/jira/browse/ADF-2443)] - Typo in the UserPreferences service - \[[ADF-2444](https://issues.alfresco.com/jira/browse/ADF-2444)] - CLONE - Incorrect Items per page values on all lists after upgrade to ADF 2.2.0 -- \[[ADF-2448](https://issues.alfresco.com/jira/browse/ADF-2448)] - Wrong type definition for [RequestPagination](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/search-rest-api/docs/RequestPagination.md) +- \[[ADF-2448](https://issues.alfresco.com/jira/browse/ADF-2448)] - Wrong type definition for [`RequestPagination`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/search-rest-api/docs/RequestPagination.md) - \[[ADF-2450](https://issues.alfresco.com/jira/browse/ADF-2450)] - Search api type definition is not defined - \[[ADF-2454](https://issues.alfresco.com/jira/browse/ADF-2454)] - Login dialog icon and header text not centered correctly - \[[ADF-2455](https://issues.alfresco.com/jira/browse/ADF-2455)] - Document List does not render thumbnails diff --git a/docs/release-notes/RelNote250.md b/docs/release-notes/RelNote250.md index d047cd68c4..87d811996e 100644 --- a/docs/release-notes/RelNote250.md +++ b/docs/release-notes/RelNote250.md @@ -338,7 +338,7 @@ Release Notes - Apps Development Framework - Version 2.5.0 ] - CLONE - Thumbs.db files are uploading with a folder upload - \[ [ADF-3289](https://issues.alfresco.com/jira/browse/ADF-3289) - ] - [AppsDefinitionApi](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/src/api/AppsDefinitionApi.ts) contains two methods with same name and different firms + ] - [`AppsDefinitionApi`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api-legacy/activiti-rest-api/src/api/AppsDefinitionApi.ts) contains two methods with same name and different firms - \[ [ADF-3292](https://issues.alfresco.com/jira/browse/ADF-3292) ] - CLONE - Filter category should be deselected when user makes a new search query @@ -374,7 +374,7 @@ Release Notes - Apps Development Framework - Version 2.5.0 ] - Refresh button is not displayed on the form - \[ [ADF-3383](https://issues.alfresco.com/jira/browse/ADF-3383) - ] - Incorrect datatype for password in [PersonBodyCreate](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/model/personBodyCreate.ts) in index.d.ts + ] - Incorrect datatype for password in [`PersonBodyCreate`](https://github.com/Alfresco/alfresco-js-api/blob/development/src/api/content-rest-api/model/personBodyCreate.ts) in index.d.ts - \[ [ADF-3386](https://issues.alfresco.com/jira/browse/ADF-3386) ] - Task Filters accordion is not expanding / collapsing diff --git a/docs/release-notes/RelNote310.md b/docs/release-notes/RelNote310.md index 301303437e..0a94d72095 100644 --- a/docs/release-notes/RelNote310.md +++ b/docs/release-notes/RelNote310.md @@ -382,13 +382,13 @@ Below is the list of JIRA issues that were closed for this release. - [ADF-3497](https://issues.alfresco.com/jira/browse/ADF-3497) - Facet intervals on search filter -- [ADF-3677](https://issues.alfresco.com/jira/browse/ADF-3677) - [SearchQueryBuilderService](../content-services/services/search-query-builder.service.md) to support highlight +- [ADF-3677](https://issues.alfresco.com/jira/browse/ADF-3677) - [`SearchQueryBuilderService`](../content-services/services/search-query-builder.service.md) to support highlight - [ADF-3735](https://issues.alfresco.com/jira/browse/ADF-3735) - SSO Login Error for [login component](../core/components/login.component.md) - [ADF-3798](https://issues.alfresco.com/jira/browse/ADF-3798) - [Demo Shell][aps2] Show Task list related to a Process -- [ADF-4003](https://issues.alfresco.com/jira/browse/ADF-4003) - Add roles filtering to [PeopleCloudComponent](../process-services-cloud/components/people-cloud.component.md) +- [ADF-4003](https://issues.alfresco.com/jira/browse/ADF-4003) - Add roles filtering to [`PeopleCloudComponent`](../process-services-cloud/components/people-cloud.component.md) - [ADF-4078](https://issues.alfresco.com/jira/browse/ADF-4078) - Fixed headers in the document list @@ -469,7 +469,7 @@ Below is the list of JIRA issues that were closed for this release. - [ADF-3934](https://issues.alfresco.com/jira/browse/ADF-3934) - [People Cloud Component](../process-services-cloud/components/people-cloud.component.md) - Remove the concept of assignee -- [ADF-3979](https://issues.alfresco.com/jira/browse/ADF-3979) - [GroupCloudComponent](../process-services-cloud/components/group-cloud.component.md) should be able to detect "preSelectGroups" input changes +- [ADF-3979](https://issues.alfresco.com/jira/browse/ADF-3979) - [`GroupCloudComponent`](../process-services-cloud/components/group-cloud.component.md) should be able to detect "preSelectGroups" input changes - [ADF-3989](https://issues.alfresco.com/jira/browse/ADF-3989) - The list of apps in 'appName' filter is duplicated after switching between saved filters @@ -495,7 +495,7 @@ Below is the list of JIRA issues that were closed for this release. - [ADF-4154](https://issues.alfresco.com/jira/browse/ADF-4154) - Unit tests failing after upgrade to ADF 3.1.0-beta3 -- [ADF-4156](https://issues.alfresco.com/jira/browse/ADF-4156) - Regression in [TaskListComponent](../process-services/components/task-list.component.md) Caused by in-place Date Formatting +- [ADF-4156](https://issues.alfresco.com/jira/browse/ADF-4156) - Regression in [`TaskListComponent`](../process-services/components/task-list.component.md) Caused by in-place Date Formatting - [ADF-4165](https://issues.alfresco.com/jira/browse/ADF-4165) - ADF 3.0 Not able to login with implicitFlow false @@ -529,7 +529,7 @@ Below is the list of JIRA issues that were closed for this release. - [ADF-4305](https://issues.alfresco.com/jira/browse/ADF-4305) - DocumentList - CardViewMode - Field values missing in the display. -- [ADF-4313](https://issues.alfresco.com/jira/browse/ADF-4313) - [Demo shell] [Form](../../lib/process-services/task-list/models/form.model.ts) field looks like an editable field in task header after task was completed +- [ADF-4313](https://issues.alfresco.com/jira/browse/ADF-4313) - [Demo shell][form](../../lib/process-services/task-list/models/form.model.ts) field looks like an editable field in task header after task was completed - [ADF-4316](https://issues.alfresco.com/jira/browse/ADF-4316) - [People component](../process-services/components/people.component.md) table is not well aligned @@ -657,7 +657,7 @@ Below is the list of JIRA issues that were closed for this release. - [ADF-4120](https://issues.alfresco.com/jira/browse/ADF-4120) - automate ADF-3989 - The list of apps in 'appName' filter is duplicated after switching between saved filters -- [ADF-4126](https://issues.alfresco.com/jira/browse/ADF-4126) - Automate ADF-4003 - Add roles filtering to [PeopleCloudComponent](../process-services-cloud/components/people-cloud.component.md) +- [ADF-4126](https://issues.alfresco.com/jira/browse/ADF-4126) - Automate ADF-4003 - Add roles filtering to [`PeopleCloudComponent`](../process-services-cloud/components/people-cloud.component.md) - [ADF-4129](https://issues.alfresco.com/jira/browse/ADF-4129) - Automate ADF-4066 - Task doesn't have an assignee when the assignee is empty from Start Task form diff --git a/docs/release-notes/RelNote320.md b/docs/release-notes/RelNote320.md index aef38c6f0f..b5a672e6a3 100644 --- a/docs/release-notes/RelNote320.md +++ b/docs/release-notes/RelNote320.md @@ -73,7 +73,7 @@ This component is responsible to show the form renderer in case the task has a f For more details refer to the: -- [TaskFormCloudComponent](../process-services-cloud/components/task-form-cloud.component). +- [`TaskFormCloudComponent`](../process-services-cloud/components/task-form-cloud.component.md). #### Form Cloud @@ -86,9 +86,9 @@ This component is responsible to render the form cloud definition attached to th ``` -In case the form has an upload widget and the alfresco content has been configured*, the attached file will be stored into the alfresco repositoty. +In case the form has an upload widget and the alfresco content has been configured\*, the attached file will be stored into the alfresco repository. -Note*: +Note\*: Don't forget to set the `providers` property to `ALL` and `ecmHost` value in the `app.config.json`. e.g. @@ -100,7 +100,7 @@ e.g. For more details refer to the: -- [FormCloudComponent](../process-services-cloud/components/form-cloud.component.md). +- [`FormCloudComponent`](../process-services-cloud/components/form-cloud.component.md). #### New permission template to app list @@ -119,13 +119,12 @@ Cloud form definition selector component is a dropdown that shows all the form p For more details refer to the: -- [FormDefinitionSelectorCloudComponent](../process-services-cloud/components/form-definition-selector-cloud.component.md). +- [`FormDefinitionSelectorCloudComponent`](../process-services-cloud/components/form-definition-selector-cloud.component.md). #### Start a standalone task with a form The start task cloud is now using the `cloud-form-definition-selector` that allows the user to attach a form to a task - ### Five more languages available Starting from ADF 3.2, five more languages are now available, together with the other ten already in the list. The new languages supported are: Danish, Finnish, Swedish, Czech, Polish. diff --git a/docs/release-notes/RelNote321.md b/docs/release-notes/RelNote321.md index 8b38551ad3..a774fa557e 100644 --- a/docs/release-notes/RelNote321.md +++ b/docs/release-notes/RelNote321.md @@ -13,14 +13,6 @@ The release can be found on GitHub at [this location](https://github.com/Alfresc See the [ADF roadmap](../roadmap.md) for details of features planned for future versions of ADF. -## Contents - -- [New package versions](#new-package-versions) -- [Goals for this release](#goals-for-this-release) - - [Fix deployment service](#fix-deployment-service) -- [Localisation](#localisation) -- [References](#references) - ## New package versions "@alfresco/adf-content-services" : "3.2.1" @@ -33,7 +25,6 @@ versions of ADF. This patch version contain a fix for a changed endpoint in Activiti 7 [Rename alfresco-deployment-service in deployment-service](https://github.com/Alfresco/alfresco-ng2-components/pull/4711/files) - ## Localisation This release includes: French, German, Italian, Spanish, Arabic, Japanese, Dutch, Norwegian (Bokmål), Russian, Danish, Finnish, Swedish, Czech, Polish, Brazilian Portuguese and Simplified Chinese versions. diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md index fd191e8235..f26ccff6c7 100644 --- a/docs/tutorials/README.md +++ b/docs/tutorials/README.md @@ -13,7 +13,7 @@ Github only: true | [**Adding a new component**](new-component.md) | Basic | In this tutorial, you will learn how to create a component using [Angular CLI](https://cli.angular.io/) within an existing application. | | [**Adding a new view**](new-view.md) | Beginner | In this tutorial you will learn how to create a new view in your application and how to access it using a defined endpoint. | | [**Using ADF Components**](using-components.md) | Basic | In this tutorial you will learn how to extend, use and configure ADF Components. | -| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. | +| [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS. | | [**Customizing the Login component**](customising-login.md) | Intermediate | In this tutorial you will learn how to customize the [Login component](../core/components/login.component.md) following the technical documentation. | | [**Working with a Data Table**](working-with-data-table.md) | Intermediate | In this tutorial you will learn how to populate a DataTable component. | | [**Working with the Nodes API Service**](working-with-nodes-api-service.md) | Intermediate | In this tutorial you will learn how to use the [`NodesApiService`](../core/services/nodes-api.service.md). | diff --git a/docs/versionIndex.md b/docs/versionIndex.md index c49df14fbe..2db1a7a896 100644 --- a/docs/versionIndex.md +++ b/docs/versionIndex.md @@ -111,7 +111,7 @@ backend services have been tested with each released version of ADF. ### Components retired | Name | Reason | Alternative | -| -- | -- | -- | +| --- | --- | --- | | Accordion component | Superseded by Angular `` | See the [Angular Expansion Panel](https://material.angular.io/components/expansion/overview#accordion) component for details. | | Accordion group component | Superseded by Angular `` | See the [Angular Expansion Panel](https://material.angular.io/components/expansion/overview#accordion) component for details. | diff --git a/e2e/content-services/directives/create-folder-directive.e2e.ts b/e2e/content-services/directives/create-folder-directive.e2e.ts index b28dc93e64..e98ecb84d8 100644 --- a/e2e/content-services/directives/create-folder-directive.e2e.ts +++ b/e2e/content-services/directives/create-folder-directive.e2e.ts @@ -15,12 +15,10 @@ * limitations under the License. */ -import { LoginPage } from '@alfresco/adf-testing'; +import { LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { CreateFolderDialog } from '../../pages/adf/dialog/createFolderDialog'; -import { NotificationPage } from '../../pages/adf/notificationPage'; import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; - import { AcsUserModel } from '../../models/ACS/acsUserModel'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { browser, Key } from 'protractor'; @@ -30,7 +28,7 @@ describe('Create folder directive', function () { const loginPage = new LoginPage(); const contentServicesPage = new ContentServicesPage(); const createFolderDialog = new CreateFolderDialog(); - const notificationPage = new NotificationPage(); + const notificationHistoryPage = new NotificationHistoryPage(); const metadataViewPage = new MetadataViewPage(); const acsUser = new AcsUserModel(); @@ -91,7 +89,7 @@ describe('Create folder directive', function () { contentServicesPage.createNewFolder(folderName); - notificationPage.checkNotifyContains('There\'s already a folder with this name. Try a different name.'); + notificationHistoryPage.checkNotifyContains('There\'s already a folder with this name. Try a different name.'); }); it('[C260157] Should be possible create a folder under a folder with the same name', () => { diff --git a/e2e/content-services/notifications-component.e2e.ts b/e2e/content-services/notifications-component.e2e.ts index ed969ce8fb..391dde571d 100644 --- a/e2e/content-services/notifications-component.e2e.ts +++ b/e2e/content-services/notifications-component.e2e.ts @@ -24,7 +24,7 @@ import { browser } from 'protractor'; describe('Notifications Component', () => { const loginPage = new LoginPage(); - const notificationPage = new NotificationPage(); + const notificationHistoryPage = new NotificationPage(); const acsUser = new AcsUserModel(); @@ -43,74 +43,74 @@ describe('Notifications Component', () => { await loginPage.loginToContentServicesUsingUserModel(acsUser); - notificationPage.goToNotificationsPage(); + notificationHistoryPage.goToNotificationsPage(); - notificationPage.enterDurationField(3000); + notificationHistoryPage.enterDurationField(3000); done(); }); afterEach( () => { browser.executeScript(`document.querySelector('button[data-automation-id="notification-custom-dismiss-button"]').click();`); - notificationPage.enterDurationField(3000); + notificationHistoryPage.enterDurationField(3000); }); it('[C279977] Should show notification when the message is not empty and button is clicked', () => { - notificationPage.enterMessageField('Notification test'); - notificationPage.clickNotificationButton(); - notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); + notificationHistoryPage.enterMessageField('Notification test'); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); }); it('[C279979] Should not show notification when the message is empty and button is clicked', () => { - notificationPage.clearMessage(); - notificationPage.clickNotificationButton(); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.clearMessage(); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.checkNotificationSnackBarIsNotDisplayed(); }); it('[C279978] Should show notification with action when the message is not empty and button is clicked', () => { - notificationPage.enterMessageField('Notification test'); - notificationPage.clickActionToggle(); - notificationPage.clickNotificationButton(); - notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); - notificationPage.clickActionButton(); - notificationPage.checkActionEvent(); - notificationPage.clickActionToggle(); + notificationHistoryPage.enterMessageField('Notification test'); + notificationHistoryPage.clickActionToggle(); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); + notificationHistoryPage.clickActionButton(); + notificationHistoryPage.checkActionEvent(); + notificationHistoryPage.clickActionToggle(); }); it('[C279981] Should show notification with action when the message is not empty and custom configuration button is clicked', () => { - notificationPage.enterMessageField('Notification test'); - notificationPage.clickNotificationButton(); - notificationPage.checkNotificationSnackBarIsDisplayed(); + notificationHistoryPage.enterMessageField('Notification test'); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.checkNotificationSnackBarIsDisplayed(); }); it('[C279987] Should show custom notification during a limited time when a duration is added', () => { - notificationPage.enterMessageField('Notification test'); - notificationPage.enterDurationField(1000); - notificationPage.clickNotificationButton(); - notificationPage.checkNotificationSnackBarIsDisplayed(); + notificationHistoryPage.enterMessageField('Notification test'); + notificationHistoryPage.enterDurationField(1000); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.checkNotificationSnackBarIsDisplayed(); browser.sleep(1500); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.checkNotificationSnackBarIsNotDisplayed(); }); it('[C280000] Should show notification with action when the message is not empty and custom button is clicked', () => { - notificationPage.enterMessageField('Notification test'); - notificationPage.clickActionToggle(); - notificationPage.clickNotificationButton(); - notificationPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); - notificationPage.clickNotificationButton(); - notificationPage.clickActionButton(); - notificationPage.checkActionEvent(); - notificationPage.clickActionToggle(); + notificationHistoryPage.enterMessageField('Notification test'); + notificationHistoryPage.clickActionToggle(); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.checkNotificationSnackBarIsDisplayedWithMessage('Notification test'); + notificationHistoryPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.clickNotificationButton(); + notificationHistoryPage.clickActionButton(); + notificationHistoryPage.checkActionEvent(); + notificationHistoryPage.clickActionToggle(); }); it('[C280001] Should meet configuration when a custom notification is set', () => { - notificationPage.enterMessageField('Notification test'); - notificationPage.enterDurationField(1000); - notificationPage.selectHorizontalPosition('Right'); - notificationPage.selectVerticalPosition('Top'); - notificationPage.selectDirection('Left to right'); - notificationPage.clickNotificationButton(); - expect(notificationPage.getConfigObject()).toBe('{"direction": "ltr", "duration": "1000", "horizontalPosition": "right", "verticalPosition": "top"}'); + notificationHistoryPage.enterMessageField('Notification test'); + notificationHistoryPage.enterDurationField(1000); + notificationHistoryPage.selectHorizontalPosition('Right'); + notificationHistoryPage.selectVerticalPosition('Top'); + notificationHistoryPage.selectDirection('Left to right'); + notificationHistoryPage.clickNotificationButton(); + expect(notificationHistoryPage.getConfigObject()).toBe('{"direction": "ltr", "duration": "1000", "horizontalPosition": "right", "verticalPosition": "top"}'); }); }); diff --git a/e2e/content-services/permissions/permissions-component.e2e.ts b/e2e/content-services/permissions/permissions-component.e2e.ts index 4afc372d20..f784af6832 100644 --- a/e2e/content-services/permissions/permissions-component.e2e.ts +++ b/e2e/content-services/permissions/permissions-component.e2e.ts @@ -16,18 +16,16 @@ */ import { PermissionsPage } from '../../pages/adf/permissionsPage'; -import { LoginPage } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import resources = require('../../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { FileModel } from '../../models/ACS/fileModel'; import { UploadActions } from '../../actions/ACS/upload.actions'; -import { StringUtil, BrowserActions } from '@alfresco/adf-testing'; +import { StringUtil, BrowserActions, LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; import { FolderModel } from '../../models/ACS/folderModel'; import { ViewerPage } from '../../pages/adf/viewerPage'; -import { NotificationPage } from '../../pages/adf/notificationPage'; import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { UploadDialog } from '../../pages/adf/dialog/uploadDialog'; @@ -44,7 +42,7 @@ describe('Permissions Component', function () { const viewerPage = new ViewerPage(); const metadataViewPage = new MetadataViewPage(); - const notificationPage = new NotificationPage(); + const notificationPage = new NotificationHistoryPage(); const uploadDialog = new UploadDialog(); let fileOwnerUser, filePermissionUser, file; const fileModel = new FileModel({ @@ -300,8 +298,12 @@ describe('Permissions Component', function () { afterEach(async (done) => { - await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id); + try { + await uploadActions.deleteFilesOrFolder(alfrescoJsApi, file.entry.id); + } catch (error) { + + } done(); }); @@ -587,7 +589,6 @@ describe('Permissions Component', function () { permissionsPage.clickPermissionInheritedButton(); notificationPage.checkNotifyContains('You are not allowed to change permissions'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); permissionsPage.clickAddPermissionButton(); diff --git a/e2e/content-services/permissions/site-permissions.e2e.ts b/e2e/content-services/permissions/site-permissions.e2e.ts index 3f8c375f20..19ced9aca8 100644 --- a/e2e/content-services/permissions/site-permissions.e2e.ts +++ b/e2e/content-services/permissions/site-permissions.e2e.ts @@ -23,10 +23,9 @@ import resources = require('../../util/resources'); import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { FileModel } from '../../models/ACS/fileModel'; import { UploadActions } from '../../actions/ACS/upload.actions'; -import { StringUtil } from '@alfresco/adf-testing'; +import { StringUtil, NotificationHistoryPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; import { ViewerPage } from '../../pages/adf/viewerPage'; -import { NotificationPage } from '../../pages/adf/notificationPage'; import CONSTANTS = require('../../util/constants'); import { MetadataViewPage } from '../../pages/adf/metadataViewPage'; import { UploadDialog } from '../../pages/adf/dialog/uploadDialog'; @@ -44,7 +43,7 @@ describe('Permissions Component', function () { const viewerPage = new ViewerPage(); const navigationBarPage = new NavigationBarPage(); const metadataViewPage = new MetadataViewPage(); - const notificationPage = new NotificationPage(); + const notificationHistoryPage = new NotificationHistoryPage(); const uploadDialog = new UploadDialog(); let folderOwnerUser, consumerUser, siteConsumerUser, contributorUser, managerUser, collaboratorUser; @@ -224,11 +223,11 @@ describe('Permissions Component', function () { contentServicesPage.metadataContent('Site' + fileModel.name); - notificationPage.checkNotifyContains('You don\'t have access to do this.'); + notificationHistoryPage.checkNotifyContains('You don\'t have access to do this.'); contentServicesPage.uploadFile(fileModel.location); - notificationPage.checkNotifyContains('You don\'t have the create permission to upload the content'); + notificationHistoryPage.checkNotifyContains('You don\'t have the create permission to upload the content'); }); @@ -254,7 +253,7 @@ describe('Permissions Component', function () { contentServicesPage.metadataContent('Site' + fileModel.name); - notificationPage.checkNotifyContains('You don\'t have access to do this.'); + notificationHistoryPage.checkNotifyContains('You don\'t have access to do this.'); contentServicesPage.uploadFile(testFileModel.location).checkContentIsDisplayed(testFileModel.name); diff --git a/e2e/content-services/share-file/share-file.e2e.ts b/e2e/content-services/share-file/share-file.e2e.ts index 39181209a7..a39e705428 100644 --- a/e2e/content-services/share-file/share-file.e2e.ts +++ b/e2e/content-services/share-file/share-file.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { LoginPage, BrowserActions, LocalStorageUtil } from '@alfresco/adf-testing'; +import { LoginPage, BrowserActions, LocalStorageUtil, NotificationHistoryPage } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { ViewerPage } from '../../pages/adf/viewerPage'; @@ -38,6 +38,7 @@ describe('Share file', () => { const shareDialog = new ShareDialog(); const navigationBarPage = new NavigationBarPage(); const viewerPage = new ViewerPage(); + const notificationHistoryPage = new NotificationHistoryPage(); const acsUser = new AcsUserModel(); const uploadActions = new UploadActions(); @@ -101,7 +102,7 @@ describe('Share file', () => { contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); - shareDialog.checkNotificationWithMessage('Link copied to the clipboard'); + notificationHistoryPage.checkNotifyContains('Link copied to the clipboard'); }); it('[C286543] Should be possible to close Share dialog', () => { @@ -179,7 +180,7 @@ describe('Share file', () => { contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); - shareDialog.checkNotificationWithMessage('Link copied to the clipboard'); + notificationHistoryPage.checkNotifyContains('Link copied to the clipboard'); const sharedLink = await shareDialog.getShareLink(); BrowserActions.getUrl(sharedLink); viewerPage.checkFileNameIsDisplayed(pngFileModel.name); @@ -190,13 +191,13 @@ describe('Share file', () => { contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); - shareDialog.checkNotificationWithMessage('Link copied to the clipboard'); + notificationHistoryPage.checkNotifyContains('Link copied to the clipboard'); const sharedLink = await shareDialog.getShareLink(); shareDialog.clickCloseButton(); contentServicesPage.clickShareButton(); shareDialog.checkDialogIsDisplayed(); shareDialog.clickShareLinkButton(); - shareDialog.checkNotificationWithMessage('Link copied to the clipboard'); + notificationHistoryPage.checkNotifyContains('Link copied to the clipboard'); const secondSharedLink = await shareDialog.getShareLink(); expect(sharedLink).toEqual(secondSharedLink); BrowserActions.getUrl(sharedLink); diff --git a/e2e/content-services/upload/user-permission.e2e.ts b/e2e/content-services/upload/user-permission.e2e.ts index 62a9f11f2f..8a9e6039e6 100644 --- a/e2e/content-services/upload/user-permission.e2e.ts +++ b/e2e/content-services/upload/user-permission.e2e.ts @@ -17,14 +17,11 @@ import { browser } from 'protractor'; -import { StringUtil } from '@alfresco/adf-testing'; - -import { LoginPage } from '@alfresco/adf-testing'; +import { StringUtil, LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { UploadDialog } from '../../pages/adf/dialog/uploadDialog'; import { UploadToggles } from '../../pages/adf/dialog/uploadToggles'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; -import { NotificationPage } from '../../pages/adf/notificationPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; import { FileModel } from '../../models/ACS/fileModel'; @@ -45,7 +42,7 @@ describe('Upload - User permission', () => { let acsUser; let acsUserTwo; const navigationBarPage = new NavigationBarPage(); - const notificationPage = new NotificationPage(); + const notificationHistoryPage = new NotificationHistoryPage(); const emptyFile = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.TXT_0B.file_name, @@ -169,7 +166,7 @@ describe('Upload - User permission', () => { contentServicesPage.uploadFile(emptyFile.location); - notificationPage.checkNotifyContains('You don\'t have the create permission to upload the content'); + notificationHistoryPage.checkNotifyContains('You don\'t have the create permission to upload the content'); }); xit('[C279916] Should not be allowed to upload a folder in folder with consumer permissions', () => { @@ -194,7 +191,7 @@ describe('Upload - User permission', () => { contentServicesPage.uploadFolder(folder.location); - notificationPage.checkNotifyContains('You don\'t have the create permission to upload the content'); + notificationHistoryPage.checkNotifyContains('You don\'t have the create permission to upload the content'); }); }); diff --git a/e2e/content-services/version/version-permissions.e2e.ts b/e2e/content-services/version/version-permissions.e2e.ts index 1fb2c7c0e2..d8d8d87f0f 100644 --- a/e2e/content-services/version/version-permissions.e2e.ts +++ b/e2e/content-services/version/version-permissions.e2e.ts @@ -21,7 +21,6 @@ import { LoginPage, BrowserActions } from '@alfresco/adf-testing'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { VersionManagePage } from '../../pages/adf/versionManagerPage'; import { UploadDialog } from '../../pages/adf/dialog/uploadDialog'; -import { NotificationPage } from '../../pages/adf/notificationPage'; import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -34,7 +33,7 @@ import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { UploadActions } from '../../actions/ACS/upload.actions'; import { NodeActions } from '../../actions/ACS/node.actions'; -import { StringUtil } from '@alfresco/adf-testing'; +import { StringUtil, NotificationHistoryPage } from '@alfresco/adf-testing'; import CONSTANTS = require('../../util/constants'); describe('Version component permissions', () => { @@ -43,7 +42,7 @@ describe('Version component permissions', () => { const versionManagePage = new VersionManagePage(); const navigationBarPage = new NavigationBarPage(); const uploadDialog = new UploadDialog(); - const notificationPage = new NotificationPage(); + const notificationHistoryPage = new NotificationHistoryPage(); const contentServices = new ContentServicesPage(); let site; @@ -198,7 +197,7 @@ describe('Version component permissions', () => { it('[C277197] Should a user with Consumer permission not be able to upload a new version for a file with different creator', () => { contentServices.versionManagerContent(differentCreatorFile.name); - notificationPage.checkNotifyContains(`You don't have access to do this`); + notificationHistoryPage.checkNotifyContains(`You don't have access to do this`); }); it('[C277201] Should a user with Consumer permission not be able to upload a new version for a locked file', () => { @@ -259,7 +258,7 @@ describe('Version component permissions', () => { it('[C277198] Should a user with Contributor permission not be able to upload a new version for a file with different creator', () => { contentServices.versionManagerContent(differentCreatorFile.name); - notificationPage.checkNotifyContains(`You don't have access to do this`); + notificationHistoryPage.checkNotifyContains(`You don't have access to do this`); }); it('[C277202] Should be disabled the option for a locked file', () => { diff --git a/e2e/core/datatable/data-table-component.e2e.ts b/e2e/core/datatable/data-table-component.e2e.ts index 3bd5b6db71..f55665236f 100644 --- a/e2e/core/datatable/data-table-component.e2e.ts +++ b/e2e/core/datatable/data-table-component.e2e.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { LoginPage } from '@alfresco/adf-testing'; +import { LoginPage, NotificationHistoryPage } from '@alfresco/adf-testing'; import { DataTablePage } from '../../pages/adf/demo-shell/dataTablePage'; import { DataTableComponentPage } from '@alfresco/adf-testing'; import { AcsUserModel } from '../../models/ACS/acsUserModel'; @@ -23,7 +23,6 @@ import { browser } from 'protractor'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; -import { NotificationPage } from '../../pages/adf/notificationPage'; import { DropActions } from '../../actions/drop.actions'; import resources = require('../../util/resources'); import { FileModel } from '../../models/ACS/fileModel'; @@ -37,7 +36,7 @@ describe('Datatable component', () => { const acsUser = new AcsUserModel(); const navigationBarPage = new NavigationBarPage(); const dataTableComponent = new DataTableComponentPage(); - const notificationPage = new NotificationPage(); + const notificationHistoryPage = new NotificationHistoryPage(); const dragAndDrop = new DropActions(); const pngFile = new FileModel({ 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, @@ -118,23 +117,23 @@ describe('Datatable component', () => { dataTablePage.mouseOverNameColumn('Name 2'); dataTablePage.dataTable.copyContentTooltipIsNotDisplayed(); dataTablePage.clickOnNameColumn('Name 2'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.checkNotifyNotContains('Name 2'); }); it('[C307046] No tooltip is displayed when hover over a column that has default value for copyContent property', () => { dataTablePage.mouseOverCreatedByColumn('Created One'); dataTablePage.dataTable.copyContentTooltipIsNotDisplayed(); dataTablePage.clickOnCreatedByColumn('Created One'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.checkNotifyNotContains('Created One'); }); it('[C307040] A column value with copyContent set to true is copied when clicking on it', () => { dataTablePage.mouseOverIdColumn('1'); expect(dataTablePage.getCopyContentTooltip()).toEqual('Click to copy'); dataTablePage.clickOnIdColumn('1'); - notificationPage.checkNotifyContains('Text copied to clipboard'); + notificationHistoryPage.checkNotifyContains('Text copied to clipboard'); dataTablePage.clickOnIdColumn('2'); - notificationPage.checkNotifyContains('Text copied to clipboard'); + notificationHistoryPage.checkNotifyContains('Text copied to clipboard'); dataTablePage.pasteClipboard(); expect(dataTablePage.getClipboardInputText()).toEqual('2'); }); @@ -150,23 +149,23 @@ describe('Datatable component', () => { copyContentDataTablePage.mouseOverNameColumn('Second'); copyContentDataTablePage.dataTable.copyContentTooltipIsNotDisplayed(); copyContentDataTablePage.clickOnNameColumn('Second'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.checkNotifyNotContains('Second'); }); it('[C307075] No tooltip is displayed when hover over a column that has default value for copyContent property', () => { copyContentDataTablePage.mouseOverCreatedByColumn('Created one'); copyContentDataTablePage.dataTable.copyContentTooltipIsNotDisplayed(); copyContentDataTablePage.clickOnCreatedByColumn('Created one'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.checkNotifyNotContains('Created One'); }); it('[C307073] A column value with copyContent set to true is copied when clicking on it', () => { copyContentDataTablePage.mouseOverIdColumn('1'); expect(copyContentDataTablePage.getCopyContentTooltip()).toEqual('Click to copy'); copyContentDataTablePage.clickOnIdColumn('1'); - notificationPage.checkNotifyContains('Text copied to clipboard'); + notificationHistoryPage.checkNotifyContains('Text copied to clipboard'); copyContentDataTablePage.clickOnIdColumn('2'); - notificationPage.checkNotifyContains('Text copied to clipboard'); + notificationHistoryPage.checkNotifyContains('Text copied to clipboard'); copyContentDataTablePage.pasteClipboard(); expect(copyContentDataTablePage.getClipboardInputText()).toEqual('2'); }); @@ -175,7 +174,7 @@ describe('Datatable component', () => { dataTablePage.mouseOverIdColumn('1'); expect(dataTablePage.getCopyContentTooltip()).toEqual('Click to copy'); dataTablePage.clickOnIdColumn('1'); - notificationPage.checkNotifyContains('Text copied to clipboard'); + notificationHistoryPage.checkNotifyContains('Text copied to clipboard'); dataTablePage.pasteClipboard(); expect(dataTablePage.getClipboardInputText()).toEqual('1'); }); @@ -185,7 +184,7 @@ describe('Datatable component', () => { copyContentDataTablePage.mouseOverJsonColumn(2); expect(copyContentDataTablePage.getCopyContentTooltip()).toEqual('Click to copy'); copyContentDataTablePage.clickOnJsonColumn(2); - notificationPage.checkNotifyContains('Text copied to clipboard'); + notificationHistoryPage.checkNotifyContains('Text copied to clipboard'); copyContentDataTablePage.pasteClipboard(); expect(copyContentDataTablePage.getClipboardInputText()).toContain(jsonValue); }); @@ -201,12 +200,11 @@ describe('Datatable component', () => { it('[C307984] Should trigger the event handling header-drop and cell-drop', () => { const dragAndDropHeader = dragAndDropDataTablePage.getDropTargetIdColumnHeader(); dragAndDrop.dropFile(dragAndDropHeader, pngFile.location); - notificationPage.checkNotifyContains('Dropped data on [ id ] header'); - notificationPage.checkNotificationSnackBarIsNotDisplayed(); + notificationHistoryPage.checkNotifyContains('Dropped data on [ id ] header'); const dragAndDropCell = dragAndDropDataTablePage.getDropTargetIdColumnCell(1); dragAndDrop.dropFile(dragAndDropCell, pngFile.location); - notificationPage.checkNotifyContains('Dropped data on [ id ] cell'); + notificationHistoryPage.checkNotifyContains('Dropped data on [ id ] cell'); }); }); }); diff --git a/e2e/core/login/login-sso/login-sso.e2e.ts b/e2e/core/login/login-sso/login-sso.e2e.ts index a7c9831da6..3c4e0dfd75 100644 --- a/e2e/core/login/login-sso/login-sso.e2e.ts +++ b/e2e/core/login/login-sso/login-sso.e2e.ts @@ -55,12 +55,17 @@ describe('Login component - SSO', () => { describe('SSO Login Error for login component', () => { - it('[C299205] Should display the login error message when the SSO identity service is wrongly configured', async () => { - await settingsPage.setProviderEcmSso(browser.params.testConfig.adf.url, + afterEach(() => { + browser.executeScript('window.sessionStorage.clear();'); + browser.executeScript('window.localStorage.clear();'); + }); + + it('[C299205] Should display the login error message when the SSO identity service is wrongly configured', () => { + settingsPage.setProviderEcmSso(browser.params.testConfig.adf.url, 'http://aps22/auth/realms/alfresco', browser.params.testConfig.adf.hostIdentity, false, true, 'alfresco'); - await loginSSOPage.clickOnSSOButton(); - await loginSSOPage.checkLoginErrorIsDisplayed(); + loginSSOPage.clickOnSSOButton(); + loginSSOPage.checkLoginErrorIsDisplayed(); expect(loginSSOPage.getLoginErrorMessage()).toContain('SSO Authentication server unreachable'); }); }); diff --git a/e2e/lite-server-proxy.js b/e2e/lite-server-proxy.js index c6abd9da6e..d5b28e43c1 100644 --- a/e2e/lite-server-proxy.js +++ b/e2e/lite-server-proxy.js @@ -7,19 +7,20 @@ let targetProxy = (PROXY_HOST_ADF || HOST); let fallback = require('connect-history-api-fallback'); module.exports = { + ghostMode : false, 'port': 4200, open: false, server: { middleware: { 1: proxy('/alfresco', { - target: targetProxy, + "target": targetProxy, changeOrigin: true, pathRewrite: { "^/alfresco/alfresco": "" } }), 2: proxy('/activiti-app', { - target: targetProxy, + "target": targetProxy, changeOrigin: true, "pathRewrite": { "^/activiti-app/activiti-app": "" diff --git a/e2e/pages/adf/demo-shell/dataTablePage.ts b/e2e/pages/adf/demo-shell/dataTablePage.ts index 8cebe52694..582918725e 100644 --- a/e2e/pages/adf/demo-shell/dataTablePage.ts +++ b/e2e/pages/adf/demo-shell/dataTablePage.ts @@ -172,7 +172,7 @@ export class DataTablePage { } clickOnJsonColumn(rowNumber) { - return this.dataTable.clickElement(this.dataTable.getCellByRowNumberAndColumnName(rowNumber - 1, this.columns.json)); + return BrowserActions.click(this.dataTable.getCellByRowNumberAndColumnName(rowNumber - 1, this.columns.json)); } clickOnNameColumn(name) { diff --git a/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts index cd3b0efd71..43bc96a5d1 100644 --- a/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/taskListDemoPage.ts @@ -164,6 +164,7 @@ export class TaskListDemoPage { } clickResetButton() { + BrowserActions.closeMenuAndDialogs(); BrowserActions.click(this.resetButton); } diff --git a/e2e/pages/adf/dialog/shareDialog.ts b/e2e/pages/adf/dialog/shareDialog.ts index b7aae51830..154a792d52 100644 --- a/e2e/pages/adf/dialog/shareDialog.ts +++ b/e2e/pages/adf/dialog/shareDialog.ts @@ -83,12 +83,6 @@ export class ShareDialog { BrowserVisibility.waitUntilElementIsPresent(this.shareToggleDisabled); } - checkNotificationWithMessage(message) { - BrowserVisibility.waitUntilElementIsPresent( - element(by.cssContainingText('simple-snack-bar', message)) - ); - } - dialogIsClosed() { BrowserVisibility.waitUntilElementIsStale(this.shareDialog); } diff --git a/e2e/pages/adf/process-services/filtersPage.ts b/e2e/pages/adf/process-services/filtersPage.ts index cc9515b8e7..7b6e5402a5 100644 --- a/e2e/pages/adf/process-services/filtersPage.ts +++ b/e2e/pages/adf/process-services/filtersPage.ts @@ -30,8 +30,7 @@ export class FiltersPage { goToFilter(filterName) { BrowserActions.closeMenuAndDialogs(); - const filter = element(by.css(`span[data-automation-id="${filterName}_filter"]`)); - BrowserActions.click(filter); + BrowserActions.clickExecuteScript(`span[data-automation-id="${filterName}_filter"]`); return this; } diff --git a/e2e/pages/adf/process-services/taskDetailsPage.ts b/e2e/pages/adf/process-services/taskDetailsPage.ts index 8f60398a42..0654b83023 100644 --- a/e2e/pages/adf/process-services/taskDetailsPage.ts +++ b/e2e/pages/adf/process-services/taskDetailsPage.ts @@ -139,6 +139,7 @@ export class TaskDetailsPage { } clickForm() { + BrowserActions.closeMenuAndDialogs(); BrowserActions.click(this.formNameField); } diff --git a/e2e/process-services/process-attachmentList-actionMenu.e2e.ts b/e2e/process-services/process-attachmentList-actionMenu.e2e.ts index b8a99b8037..eb7ce016b5 100644 --- a/e2e/process-services/process-attachmentList-actionMenu.e2e.ts +++ b/e2e/process-services/process-attachmentList-actionMenu.e2e.ts @@ -115,7 +115,7 @@ describe('Attachment list action menu for processes', () => { viewerPage.checkFileNameIsDisplayed(pngFile.name); viewerPage.clickCloseButton(); - browser.sleep(10000); + processFiltersPage.clickRunningFilterButton(); processFiltersPage.selectFromProcessList(processName.active); @@ -140,7 +140,6 @@ describe('Attachment list action menu for processes', () => { attachmentListPage.clickAttachFileButton(pngFile.location); processDetailsPage.clickCancelProcessButton(); - browser.sleep(10000); processFiltersPage.clickCompletedFilterButton(); processDetailsPage.checkProcessTitleIsDisplayed(); diff --git a/e2e/resources/activiti7/simpleapp/processes/processwithvariables-extensions.json b/e2e/resources/activiti7/simpleapp/processes/processwithvariables-extensions.json new file mode 100755 index 0000000000..e5822f72a1 --- /dev/null +++ b/e2e/resources/activiti7/simpleapp/processes/processwithvariables-extensions.json @@ -0,0 +1 @@ +{"id":"process-c5040521-f596-4748-b3c5-15c8b9868906","extensions":{"properties":{"7cf99919-ca35-41a5-a7b0-289e05d44604":{"id":"7cf99919-ca35-41a5-a7b0-289e05d44604","name":"nameString","type":"string","required":true,"value":"string"},"059e303d-07d6-4fbc-9121-557419db3ca8":{"id":"059e303d-07d6-4fbc-9121-557419db3ca8","name":"name","type":"date","required":true,"value":"date"}},"mappings":{}}} \ No newline at end of file diff --git a/e2e/resources/activiti7/simpleapp/processes/processwithvariables.bpmn20.xml b/e2e/resources/activiti7/simpleapp/processes/processwithvariables.bpmn20.xml new file mode 100755 index 0000000000..53174bb488 --- /dev/null +++ b/e2e/resources/activiti7/simpleapp/processes/processwithvariables.bpmn20.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e2e/resources/activiti7/simpleapp/processes/simpleProcess-extensions.json b/e2e/resources/activiti7/simpleapp/processes/simpleProcess-extensions.json new file mode 100755 index 0000000000..c7a381ffd4 --- /dev/null +++ b/e2e/resources/activiti7/simpleapp/processes/simpleProcess-extensions.json @@ -0,0 +1 @@ +{"id":"process-75651812-d60b-4a4c-892f-55eb095705c8","extensions":{"properties":{},"mappings":{}}} \ No newline at end of file diff --git a/e2e/resources/activiti7/simpleapp/processes/simpleProcess.bpmn20.xml b/e2e/resources/activiti7/simpleapp/processes/simpleProcess.bpmn20.xml new file mode 100755 index 0000000000..a2d8412be6 --- /dev/null +++ b/e2e/resources/activiti7/simpleapp/processes/simpleProcess.bpmn20.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/e2e/resources/activiti7/simpleapp/simpleapp.json b/e2e/resources/activiti7/simpleapp/simpleapp.json new file mode 100755 index 0000000000..c8cc18849a --- /dev/null +++ b/e2e/resources/activiti7/simpleapp/simpleapp.json @@ -0,0 +1 @@ +{"name":"simpleapp","version":"1","description":""} \ No newline at end of file diff --git a/e2e/test.config.js b/e2e/test.config.js index 23a175a11f..9963110d73 100644 --- a/e2e/test.config.js +++ b/e2e/test.config.js @@ -19,7 +19,7 @@ const HOST_SSO = process.env.URL_HOST_SSO_ADF; const HOST_IDENTITY = process.env.URL_HOST_IDENTITY; const TIMEOUT = parseInt(process.env.TIMEOUT, 10); const PROXY = process.env.PROXY_HOST_ADF; -const DEBUG = process.env.DEBUG; +const LOG = process.env.LOG; const BPM_HOST = process.env.URL_HOST_BPM_ADF || "bpm"; const OAUTH_HOST = process.env.URL_HOST_SSO_ADF || "keycloak"; const OAUTH_CLIENDID = process.env.OAUTH_CLIENDID || "activiti"; @@ -49,7 +49,7 @@ const appConfig = { } }; -if (DEBUG) { +if (LOG) { console.log('======= test.config.js hostBPM ====== '); console.log('hostBPM : ' + (HOST_BPM || PROXY || HOST)); console.log('EMAIL : ' + (EMAIL)); @@ -125,7 +125,7 @@ module.exports = { baseUrl = HOST; } - if (DEBUG) { + if (LOG) { console.log('hostSso baseUrl : ' + baseUrl); } @@ -145,7 +145,7 @@ module.exports = { baseUrl = HOST; } - if (DEBUG) { + if (LOG) { console.log('hostIdentity baseUrl : ' + baseUrl); } diff --git a/lib/cli/README.md b/lib/cli/README.md new file mode 100644 index 0000000000..1d3865eb6e --- /dev/null +++ b/lib/cli/README.md @@ -0,0 +1,24 @@ +# Alfresco ADF Cli + + +## The Goal of ADF CLI + +The ADF CLI manages, builds , doc and test your ADF Application projects. + + +## Installation +To get started follow these instructions: + + + +``sh +npm install aadf-cli -g +`` + +### License Check + +Move in the folder where you have your pacakge.json and run the command: + +```bash +adf-license +``` diff --git a/tools/doc/licenseList.js b/lib/cli/bin/doc/licenseList.js old mode 100644 new mode 100755 similarity index 67% rename from tools/doc/licenseList.js rename to lib/cli/bin/doc/licenseList.js index bd8f33573b..c656dc8f4f --- a/tools/doc/licenseList.js +++ b/lib/cli/bin/doc/licenseList.js @@ -1,20 +1,20 @@ +#!/usr/bin/env node + var path = require('path'); var fs = require('fs'); var checker = require('license-checker'); +var spdxCodes = require('spdx-license-list'); var ejs = require('ejs'); var program = require('commander'); -var spdxCodes = require('spdx-license-list'); -var startPath = path.resolve('.'); var templatePath = path.resolve(__dirname, 'templates', 'licensePage.ejs'); - const nonStandardLicenses = { "public domain": "PDDL-1.0", "apache": "Apache-2.0", "bsd": "BSD-2-Clause" -} +}; const missingRepos = { "@alfresco/adf-testing": "https://github.com/Alfresco/alfresco-ng2-components", @@ -26,37 +26,42 @@ const missingRepos = { "adf-monaco-extension": "https://github.com/eromano/aca-monaco-extension", "indexof": "https://github.com/component/indexof", "rxjs-compat": "https://github.com/ReactiveX/rxjs/tree/master/compat", -} +}; program -.usage('') -.parse(process.argv); + .usage('') + .parse(process.argv); -console.log(`Checking ${startPath}`); +var packageJson = JSON.parse(fs.readFileSync(path.resolve('./','package.json')), 'utf8'); + +if (!packageJson) { + console.error('Move in the path where you have the package.json'); + return; +} + +console.log(path.resolve('./','package.json')); checker.init({ - start: startPath, + start: './', production: true, - failOn: "GPL" -}, function(err, packages) { + failOn: 'GPL' +}, function (err, packages) { if (err) { console.log(err); } else { - //console.log(JSON.stringify(packages)); - for (var packageName in packages) { var pack = packages[packageName]; pack['licenseExp'] = pack['licenses'] - .replace(/\*/, '') - .replace(/[a-zA-Z0-9\-\.]+/g, match => { - var lowerMatch = match.toLowerCase(); + .replace(/\*/, '') + .replace(/[a-zA-Z0-9\-\.]+/g, match => { + var lowerMatch = match.toLowerCase(); - if ((lowerMatch !== 'and') && (lowerMatch !== 'or') && (lowerMatch !== 'with')) { - return licenseWithMDLinks(match); - } else { - return match; - } - }); + if ((lowerMatch !== 'and') && (lowerMatch !== 'or') && (lowerMatch !== 'with')) { + return licenseWithMDLinks(match); + } else { + return match; + } + }); if (!pack['repository']) { var lastAtSignPos = packageName.lastIndexOf('@'); @@ -68,14 +73,16 @@ checker.init({ } } - ejs.renderFile(templatePath, {packages: packages, projVersion: program.args[0]}, {}, (err, mdText) => { + ejs.renderFile(templatePath, { + packages: packages, + projVersion: packageJson.version, + projName: packageJson.description + }, {}, (err, mdText) => { if (err) { console.log(err); } else { - //console.log(mdText); - var licenseFilePath = path.resolve('.', 'docs', 'license-info', `license-info-${program.args[0]}.md`) - fs.writeFileSync(licenseFilePath, mdText); - console.log(`Wrote license list at ${licenseFilePath}`); + fs.writeFileSync(`license-info-${packageJson.version}.md`, mdText); + console.log(`Wrote license`); } }); } diff --git a/lib/cli/bin/doc/templates/licensePage.ejs b/lib/cli/bin/doc/templates/licensePage.ejs new file mode 100644 index 0000000000..17a4e74a8f --- /dev/null +++ b/lib/cli/bin/doc/templates/licensePage.ejs @@ -0,0 +1,28 @@ +--- +Title: License info, <%= projName %> <%= projVersion %> +--- + +# License information for <%= projName %> <%= projVersion %> + +This page lists all third party libraries that ADF <%= projVersion %> depends on. + +## Libraries + +| Name | Version | License | +| --- | --- | --- | +<% for (var packageName in packages) { + var lastAtSignPos = packageName.lastIndexOf('@'); + + var name = packageName.substring(0, lastAtSignPos); + var version = packageName.substring(lastAtSignPos + 1); + var pack = packages[packageName]; + var licenses = pack['licenseExp'] || 'N/A'; + var repo = pack['repository']; + var linkedName = name; + + if (repo) { + linkedName = `[${name}](${repo})` + } +-%> +| <%= linkedName %> | <%= version %> | <%= licenses %> | +<% } %> diff --git a/lib/cli/package-lock.json b/lib/cli/package-lock.json new file mode 100644 index 0000000000..b6ebc584f0 --- /dev/null +++ b/lib/cli/package-lock.json @@ -0,0 +1,402 @@ +{ + "name": "@alfresco/adf-cli", + "version": "3.2.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=" + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "license-checker": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", + "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==", + "requires": { + "chalk": "^2.4.1", + "debug": "^3.1.0", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "read-installed": "~4.0.3", + "semver": "^5.5.0", + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0", + "spdx-satisfies": "^4.0.0", + "treeify": "^1.1.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "read-installed": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", + "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=", + "requires": { + "debuglog": "^1.0.1", + "graceful-fs": "^4.1.2", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + } + }, + "read-package-json": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz", + "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==", + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "readdir-scoped-modules": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz", + "integrity": "sha1-n6+jfShr5dksuuve4DDcm19AZ0c=", + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, + "spdx-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", + "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", + "requires": { + "array-find-index": "^1.0.2", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + }, + "spdx-license-list": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-5.0.0.tgz", + "integrity": "sha512-N5u9tEFRBUzQDjMKRRt8SHxC/UaqYApPmdF4MMFnICQg3z52onNbnneuro/sWw2rd+eGu9agQOzUbD671Xia7Q==" + }, + "spdx-ranges": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.0.tgz", + "integrity": "sha512-OOWghvosfmECc9edy/A9j7GabERmn8bJWHc0J1knVytQtO5Rw7VfxK6CDqmivJhfMJqWhWWUfffNNMPYvyvyQA==" + }, + "spdx-satisfies": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz", + "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==", + "requires": { + "spdx-compare": "^1.0.0", + "spdx-expression-parse": "^3.0.0", + "spdx-ranges": "^2.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" + }, + "util-extend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", + "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/lib/cli/package.json b/lib/cli/package.json new file mode 100644 index 0000000000..d4944a1c05 --- /dev/null +++ b/lib/cli/package.json @@ -0,0 +1,25 @@ +{ + "name": "@alfresco/adf-cli", + "description": "Alfresco ADF cli and utils", + "version": "3.2.1", + "author": "Alfresco Software, Ltd.", + "bin": { + "adf-license": "./bin/doc/licenseList.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/Alfresco/alfresco-ng2-components.git" + }, + "bugs": { + "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" + }, + "dependencies": { + "spdx-license-list": "^5.0.0", + "license-checker": "^25.0.1", + "commander": "^2.15.1" + }, + "keywords": [ + "alfresco-component" + ], + "license": "Apache-2.0" +} diff --git a/lib/core/core.module.ts b/lib/core/core.module.ts index 2978a6fbef..d724a1bf14 100644 --- a/lib/core/core.module.ts +++ b/lib/core/core.module.ts @@ -41,6 +41,7 @@ import { CommentsModule } from './comments/comments.module'; import { ButtonsMenuModule } from './buttons-menu/buttons-menu.module'; import { TemplateModule } from './templates/template.module'; import { ClipboardModule } from './clipboard/clipboard.module'; +import { NotificationHistoryModule } from './notification-history/notification-history.module'; import { DirectiveModule } from './directives/directive.module'; import { DialogModule } from './dialogs/dialog.module'; @@ -87,7 +88,8 @@ import { DirectionalityConfigService } from './services/directionality-config.se ButtonsMenuModule, TemplateModule, IconModule, - SortingPickerModule + SortingPickerModule, + NotificationHistoryModule ], exports: [ AboutModule, @@ -119,7 +121,8 @@ import { DirectionalityConfigService } from './services/directionality-config.se ButtonsMenuModule, TemplateModule, SortingPickerModule, - IconModule + IconModule, + NotificationHistoryModule ] }) export class CoreModule { diff --git a/lib/core/i18n/en.json b/lib/core/i18n/en.json index e4ac621af8..91833526ce 100644 --- a/lib/core/i18n/en.json +++ b/lib/core/i18n/en.json @@ -5,6 +5,11 @@ "CLAIM": "CLAIM", "UNCLAIM": "RELEASE", "START PROCESS": "START PROCESS", + "NOTIFICATION_HISTORY":{ + "NO_MESSAGE" : "No messages", + "NOTIFICATIONS": "Notifications", + "MARK_AS_READ": "Mark all as read" + }, "FORM": { "START_FORM": { "TITLE": "Start Form" diff --git a/lib/core/index.ts b/lib/core/index.ts index 24c9893edd..7411e7597f 100644 --- a/lib/core/index.ts +++ b/lib/core/index.ts @@ -41,6 +41,7 @@ export * from './directives/index'; export * from './clipboard/index'; export * from './dialogs/index'; export * from './icon/index'; +export * from './notification-history/index'; export * from './utils/index'; export * from './interface/index'; diff --git a/lib/core/info-drawer/info-drawer.component.ts b/lib/core/info-drawer/info-drawer.component.ts index 771a9753da..ca2873fcef 100644 --- a/lib/core/info-drawer/info-drawer.component.ts +++ b/lib/core/info-drawer/info-drawer.component.ts @@ -22,7 +22,7 @@ import { MatTabChangeEvent } from '@angular/material'; template: '' }) export class InfoDrawerTabComponent { - /** The title of the tab. */ + /** The title of the tab (string or translation key). */ @Input() label: string = ''; @@ -42,7 +42,7 @@ export class InfoDrawerTabComponent { host: { 'class': 'adf-info-drawer' } }) export class InfoDrawerComponent { - /** The title of the info drawer. */ + /** The title of the info drawer (string or translation key). */ @Input() title: string|null = null; diff --git a/lib/core/models/notification.model.ts b/lib/core/models/notification.model.ts new file mode 100644 index 0000000000..973d71e9ba --- /dev/null +++ b/lib/core/models/notification.model.ts @@ -0,0 +1,21 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export interface NotificationModel { + dateTime: Date; + message: string; +} diff --git a/lib/core/models/public-api.ts b/lib/core/models/public-api.ts index c6eacdeccb..4805bf3ea1 100644 --- a/lib/core/models/public-api.ts +++ b/lib/core/models/public-api.ts @@ -26,3 +26,4 @@ export * from './redirection.model'; export * from './pagination.model'; export * from './oauth-config.model'; export * from './request-pagination.model'; +export * from './notification.model'; diff --git a/lib/core/notification-history/index.ts b/lib/core/notification-history/index.ts new file mode 100644 index 0000000000..a7e30cc675 --- /dev/null +++ b/lib/core/notification-history/index.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './public-api'; diff --git a/lib/core/notification-history/notification-history.component.html b/lib/core/notification-history/notification-history.component.html new file mode 100644 index 0000000000..00fe54a17c --- /dev/null +++ b/lib/core/notification-history/notification-history.component.html @@ -0,0 +1,33 @@ +
+ + + +
+ + +
{{ 'NOTIFICATION_HISTORY.NOTIFICATIONS' | translate }}
+
+
+ + + + + {{notification.info? notification.info: 'info'}} +

{{notification.message}}

+

{{notification.dateTime | date}}

+
+ +

{{ 'NOTIFICATION_HISTORY.NO_MESSAGE' | translate }}

+
+ + + +
+
+
+
diff --git a/lib/core/notification-history/notification-history.component.scss b/lib/core/notification-history/notification-history.component.scss new file mode 100644 index 0000000000..9db3cec3fd --- /dev/null +++ b/lib/core/notification-history/notification-history.component.scss @@ -0,0 +1,23 @@ +.adf { + + &-notification-history-menu_button.mat-button { + margin-right: 0; + border-radius: 90%; + padding: 0; + min-width: 40px; + height: 40px; + } +} + +@media only screen and (min-device-width: 480px) { + .mat-menu-panel.adf-notification-history-menu { + max-height: 450px; + min-width: 450px; + overflow: auto; + padding: 0; + } +} + +.mat-menu-panel.adf-notification-history-menu .mat-menu-content { + padding: 0; +} diff --git a/lib/core/notification-history/notification-history.component.spec.ts b/lib/core/notification-history/notification-history.component.spec.ts new file mode 100644 index 0000000000..18e3e8b534 --- /dev/null +++ b/lib/core/notification-history/notification-history.component.spec.ts @@ -0,0 +1,80 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { async, ComponentFixture, inject, TestBed } from '@angular/core/testing'; +import { NotificationService } from '../services'; +import { setupTestBed } from '../testing/setupTestBed'; +import { CoreTestingModule } from '../testing/core.testing.module'; +import { NotificationHistoryComponent } from './notification-history.component'; +import { OverlayContainer } from '@angular/cdk/overlay'; + +describe('Notification History Component', () => { + + let fixture: ComponentFixture; + let element: HTMLElement; + let notificationService: NotificationService; + let overlayContainerElement: HTMLElement; + + function openNotification() { + fixture.detectChanges(); + const button: HTMLButtonElement = element.querySelector('#adf-notification-history-open-button'); + button.click(); + fixture.detectChanges(); + } + + setupTestBed({ + imports: [CoreTestingModule] + }); + + beforeEach(async(() => { + fixture = TestBed.createComponent(NotificationHistoryComponent); + element = fixture.nativeElement; + + notificationService = TestBed.get(NotificationService); + })); + + beforeEach(inject([OverlayContainer], (oc: OverlayContainer) => { + overlayContainerElement = oc.getContainerElement(); + })); + + afterEach(() => { + fixture.destroy(); + }); + + describe('ui ', () => { + + it('should empty message be present when there are no notifications in the history', (done) => { + openNotification(); + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(overlayContainerElement.querySelector('#adf-notification-history-component-no-message')).toBeDefined(); + done(); + }); + }); + + it('should message be present and empty message not be present when there are notifications in the history', (done) => { + notificationService.showInfo('Example Message'); + openNotification(); + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(overlayContainerElement.querySelector('#adf-notification-history-component-no-message')).toBeNull(); + expect(overlayContainerElement.querySelector('#adf-notification-history-list').innerHTML).toContain('Example Message'); + done(); + }); + }); + }); +}); diff --git a/lib/core/notification-history/notification-history.component.ts b/lib/core/notification-history/notification-history.component.ts new file mode 100644 index 0000000000..120337a8ff --- /dev/null +++ b/lib/core/notification-history/notification-history.component.ts @@ -0,0 +1,78 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component, Input, ViewChild, OnDestroy } from '@angular/core'; +import { NotificationService } from '../services/notification.service'; +import { NotificationModel } from '../models/notification.model'; +import { MatMenuTrigger } from '@angular/material'; +import { takeUntil } from 'rxjs/operators'; +import { Subject } from 'rxjs'; + +@Component({ + selector: 'adf-notification-history', + styleUrls: ['notification-history.component.scss'], + templateUrl: 'notification-history.component.html' +}) +export class NotificationHistoryComponent implements OnDestroy { + + onDestroy$ = new Subject(); + + notifications: NotificationModel[] = []; + + @ViewChild(MatMenuTrigger) + trigger: MatMenuTrigger; + + /** Custom choice for opening the menu at the bottom. Can be `before` or `after`. */ + @Input() + menuPositionX: string = 'after'; + + /** Custom choice for opening the menu at the bottom. Can be `above` or `below`. */ + @Input() + menuPositionY: string = 'below'; + + constructor( + private notificationService: NotificationService) { + this.notificationService.messages + .pipe(takeUntil(this.onDestroy$)) + .subscribe((message) => { + this.notifications.push(message); + }); + } + + isEmptyNotification(): boolean { + return (!this.notifications || this.notifications.length === 0); + } + + onKeyPress(event: KeyboardEvent) { + this.closeUserModal(event); + } + + markAsRead() { + this.notifications = []; + } + + ngOnDestroy() { + this.onDestroy$.next(true); + this.onDestroy$.complete(); + } + + private closeUserModal($event: KeyboardEvent) { + if ($event.keyCode === 27) { + this.trigger.closeMenu(); + } + } +} diff --git a/lib/core/notification-history/notification-history.module.ts b/lib/core/notification-history/notification-history.module.ts new file mode 100644 index 0000000000..7ff6a537e6 --- /dev/null +++ b/lib/core/notification-history/notification-history.module.ts @@ -0,0 +1,38 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { MaterialModule } from '../material.module'; + +import { NotificationHistoryComponent } from './notification-history.component'; +import { TranslateModule } from '@ngx-translate/core'; + +@NgModule({ + imports: [ + CommonModule, + MaterialModule, + TranslateModule.forChild() + ], + declarations: [ + NotificationHistoryComponent + ], + exports: [ + NotificationHistoryComponent + ] +}) +export class NotificationHistoryModule {} diff --git a/lib/core/notification-history/public-api.ts b/lib/core/notification-history/public-api.ts new file mode 100644 index 0000000000..887fe4b1c6 --- /dev/null +++ b/lib/core/notification-history/public-api.ts @@ -0,0 +1,19 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export * from './notification-history.component'; +export * from './notification-history.module'; diff --git a/lib/core/services/notification.service.ts b/lib/core/services/notification.service.ts index 748ec3f3ad..53690fa08d 100644 --- a/lib/core/services/notification.service.ts +++ b/lib/core/services/notification.service.ts @@ -19,6 +19,8 @@ import { Injectable } from '@angular/core'; import { MatSnackBar, MatSnackBarRef, MatSnackBarConfig } from '@angular/material'; import { TranslationService } from './translation.service'; import { AppConfigService, AppConfigValues } from '../app-config/app-config.service'; +import { Subject } from 'rxjs'; +import { NotificationModel } from '../models/notification.model'; @Injectable({ providedIn: 'root' @@ -27,6 +29,8 @@ export class NotificationService { DEFAULT_DURATION_MESSAGE: number = 5000; + messages: Subject = new Subject(); + constructor(private snackBar: MatSnackBar, private translationService: TranslationService, private appConfigService: AppConfigService) { @@ -53,6 +57,8 @@ export class NotificationService { }; } + this.messages.next({ message: translatedMessage, dateTime: new Date }); + return this.snackBar.open(translatedMessage, null, config); } @@ -76,6 +82,8 @@ export class NotificationService { }; } + this.messages.next({ message: translatedMessage, dateTime: new Date }); + return this.snackBar.open(translatedMessage, action, config); } @@ -89,6 +97,8 @@ export class NotificationService { protected showMessage(message: string, panelClass: string, action?: string): MatSnackBarRef { message = this.translationService.instant(message); + this.messages.next({ message: message, dateTime: new Date }); + return this.snackBar.open(message, action, { duration: this.DEFAULT_DURATION_MESSAGE, panelClass diff --git a/lib/core/userinfo/components/user-info.component.scss b/lib/core/userinfo/components/user-info.component.scss index 5805eba518..a975720e8d 100644 --- a/lib/core/userinfo/components/user-info.component.scss +++ b/lib/core/userinfo/components/user-info.component.scss @@ -183,7 +183,6 @@ @media only screen and (min-device-width: 480px) { .mat-menu-panel.adf-userinfo-menu { max-height: 450px; - min-width: 4500px; min-width: 450px; overflow: auto; padding: 0; diff --git a/lib/process-services/people/components/people/people.component.ts b/lib/process-services/people/components/people/people.component.ts index ed70677248..ee217ae385 100644 --- a/lib/process-services/people/components/people/people.component.ts +++ b/lib/process-services/people/components/people/people.component.ts @@ -83,10 +83,12 @@ export class PeopleComponent implements OnInit, AfterViewInit { } involveUser(user: UserProcessModel) { - this.peopleProcessService.involveUserWithTask(this.taskId, user.id.toString()) - .subscribe(() => { - this.people = [...this.people, user]; - }, (error) => this.logService.error('Impossible to involve user with task')); + if (user && user.id) { + this.peopleProcessService.involveUserWithTask(this.taskId, user.id.toString()) + .subscribe(() => { + this.people = [...this.people, user]; + }, (error) => this.logService.error('Impossible to involve user with task')); + } } removeInvolvedUser(user: UserProcessModel) { diff --git a/lib/testing/src/lib/core/pages/data-table-component.page.ts b/lib/testing/src/lib/core/pages/data-table-component.page.ts index 7bb6d5697b..875415b8e2 100644 --- a/lib/testing/src/lib/core/pages/data-table-component.page.ts +++ b/lib/testing/src/lib/core/pages/data-table-component.page.ts @@ -339,13 +339,7 @@ export class DataTableComponentPage { } clickColumn(columnName, columnValue) { - const column = this.getCellElementByValue(columnName, columnValue); - this.clickElement(column); - return this; - } - - clickElement(elem) { - BrowserActions.click(elem); + BrowserActions.clickExecuteScript(`div[title="${columnName}"] div[data-automation-id="text_${columnValue}"] span`); return this; } } diff --git a/lib/testing/src/lib/core/pages/login.page.ts b/lib/testing/src/lib/core/pages/login.page.ts index ceac8f5c39..85f36ebcb3 100644 --- a/lib/testing/src/lib/core/pages/login.page.ts +++ b/lib/testing/src/lib/core/pages/login.page.ts @@ -75,17 +75,15 @@ export class LoginPage { ) ); - async goToLoginPage() { + goToLoginPage() { browser.waitForAngularEnabled(true); browser.driver.get(this.loginURL); - this.waitForElements(); - return this; + return this.waitForElements(); } waitForElements() { BrowserVisibility.waitUntilElementIsVisible(this.txtUsername); - BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); - return this; + return BrowserVisibility.waitUntilElementIsVisible(this.txtPassword); } enterUsername(username) { @@ -165,7 +163,7 @@ export class LoginPage { } async loginToAllUsingUserModel(userModel) { - this.goToLoginPage(); + await this.goToLoginPage(); await LocalStorageUtil.clearStorage(); await LocalStorageUtil.setStorageItem('providers', 'ALL'); await LocalStorageUtil.apiReset(); @@ -173,7 +171,7 @@ export class LoginPage { } async loginToProcessServicesUsingUserModel(userModel) { - this.goToLoginPage(); + await this.goToLoginPage(); await LocalStorageUtil.clearStorage(); await LocalStorageUtil.setStorageItem('providers', 'BPM'); await LocalStorageUtil.apiReset(); diff --git a/lib/testing/src/lib/core/pages/notification-history.page.ts b/lib/testing/src/lib/core/pages/notification-history.page.ts new file mode 100644 index 0000000000..ebee023d63 --- /dev/null +++ b/lib/testing/src/lib/core/pages/notification-history.page.ts @@ -0,0 +1,52 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { by, element } from 'protractor'; +import { BrowserActions } from '../utils/browser-actions'; + +export class NotificationHistoryPage { + + notificationList = element(by.css('#adf-notification-history-list')); + + clickNotificationButton() { + BrowserActions.clickExecuteScript('#adf-notification-history-open-button'); + } + + clickMarkAsRead() { + BrowserActions.click(element(by.css('#adf-notification-history-mark-as-read'))); + } + + checkNotificationIsPresent(text: string) { + expect(BrowserActions.getText(this.notificationList)).toContain(text); + } + + checkNotificationIsNotPresent(text: string) { + expect(BrowserActions.getText(this.notificationList)).not.toContain(text); + } + + checkNotifyContains(text: string) { + this.clickNotificationButton(); + this.checkNotificationIsPresent(text); + this.clickMarkAsRead(); + } + + checkNotifyNotContains(text: string) { + this.clickNotificationButton(); + this.checkNotificationIsNotPresent(text); + BrowserActions.closeMenuAndDialogs(); + } +} diff --git a/lib/testing/src/lib/core/pages/public-api.ts b/lib/testing/src/lib/core/pages/public-api.ts index 660bf348ec..301ad324f0 100644 --- a/lib/testing/src/lib/core/pages/public-api.ts +++ b/lib/testing/src/lib/core/pages/public-api.ts @@ -25,5 +25,5 @@ export * from './data-table-component.page'; export * from './pagination.page'; export * from './error.page'; export * from './login.page'; - +export * from './notification-history.page'; export * from './form/public-api'; diff --git a/lib/tsconfig.doc.json b/lib/tsconfig.doc.json new file mode 100644 index 0000000000..ff1afcf3d1 --- /dev/null +++ b/lib/tsconfig.doc.json @@ -0,0 +1,59 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "skipLibCheck": false, + "noLib": false, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noImplicitAny": false, + "noImplicitReturns": false, + "noImplicitUseStrict": false, + "noFallthroughCasesInSwitch": true, + "removeComments": true, + "declaration": true, + "outDir": "./dist", + "baseUrl" : "./", + "types": ["jasmine"], + "allowSyntheticDefaultImports": true, + "paths": { + "@alfresco/adf-process-services-cloud": ["./process-services-cloud/"], + "@alfresco/adf-testing": ["./testing/"], + "@alfresco/adf-process-services": ["./process-services/"], + "@alfresco/adf-content-services": ["./content-services/"], + "@alfresco/adf-extensions": ["./extensions/"], + "@alfresco/adf-core": ["./core/"], + "@alfresco/adf-insights": ["./analytics"] + }, + "lib": [ + "es2016", + "dom" + ], + "suppressImplicitAnyIndexErrors": true, + "noUnusedLocals": true + }, + "exclude": [ + "testing", + "*/node_modules", + "*/demo", + "config", + "*/coverage", + "node_modules", + "*/dist", + "dist" + ], + "angularCompilerOptions": { + "strictMetadataEmit": false, + "skipTemplateCodegen": true, + "preserveWhitespaces": false + }, + "typedocOptions": { + "json": "docs/docs.json", + "exclude": ["**/*.spec.ts", "node_modules"], + "ignoreCompilerErrors": true + } +} diff --git a/package-lock.json b/package-lock.json index 70100937be..ff7a3fca27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,16 +91,16 @@ } }, "@angular-devkit/build-angular": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.13.6.tgz", - "integrity": "sha512-gdP856Z5tuQ69mJla5VPKm/uR86dcrPWYW41Jyu5oIhL2GAQ4JtDEuL2+ppwQO8i8hsXGIAbulGAbrlvU5I8OA==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.13.9.tgz", + "integrity": "sha512-onh07LhdxotDFjja0KKsDWNCwgpM/ymuRr5h0e+vT4AgklP2Uioz1CpzVOgxPIKkdVdGR9QgDinVsWAmY90J8g==", "dev": true, "requires": { - "@angular-devkit/architect": "0.13.6", - "@angular-devkit/build-optimizer": "0.13.6", - "@angular-devkit/build-webpack": "0.13.6", - "@angular-devkit/core": "7.3.6", - "@ngtools/webpack": "7.3.6", + "@angular-devkit/architect": "0.13.9", + "@angular-devkit/build-optimizer": "0.13.9", + "@angular-devkit/build-webpack": "0.13.9", + "@angular-devkit/core": "7.3.9", + "@ngtools/webpack": "7.3.9", "ajv": "6.9.1", "autoprefixer": "9.4.6", "circular-dependency-plugin": "5.0.2", @@ -116,8 +116,8 @@ "loader-utils": "1.2.3", "mini-css-extract-plugin": "0.5.0", "minimatch": "3.0.4", - "node-sass": "4.11.0", - "opn": "5.4.0", + "node-sass": "4.12.0", + "open": "6.0.0", "parse5": "4.0.0", "postcss": "7.0.14", "postcss-import": "12.0.1", @@ -128,7 +128,7 @@ "semver": "5.6.0", "source-map-loader": "0.2.4", "source-map-support": "0.5.10", - "speed-measure-webpack-plugin": "1.3.0", + "speed-measure-webpack-plugin": "1.3.1", "stats-webpack-plugin": "0.7.0", "style-loader": "0.23.1", "stylus": "0.54.5", @@ -143,6 +143,29 @@ "webpack-subresource-integrity": "1.1.0-rc.6" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.9.tgz", + "integrity": "sha512-EAFtCs9dsGhpMRC45PoYsrkiExpWz9Ax15qXfzwdDRacz5DmdOVt+QpkLW1beUOwiyj/bhFyj23eaONK2RTn/w==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/core": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz", + "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, "ajv": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", @@ -176,10 +199,17 @@ "supports-color": "^2.0.0" } }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, "node-sass": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", - "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", + "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", "dev": true, "optional": true, "requires": { @@ -190,12 +220,10 @@ "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", + "lodash": "^4.17.11", "meow": "^3.7.0", "mkdirp": "^0.5.1", - "nan": "^2.10.0", + "nan": "^2.13.2", "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", @@ -240,6 +268,12 @@ "ajv-keywords": "^3.1.0" } }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -329,9 +363,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.13.6.tgz", - "integrity": "sha512-/EOO0wxw7FIKfove4Fv/aKiKgvH0kFhRT2GOe3pW0yV2y2e1dfQdo2AqdGCfJ4rSbwsfWSGTUUFITc+9jgXFZw==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.13.9.tgz", + "integrity": "sha512-GQtCntthQHSBv5l1ZY5p00JOECb/WcE1qUBo5kFjp84z0fszDkhOy52M1kcWCX4PFzJaY4DKk58hbUE/2UN0jw==", "dev": true, "requires": { "loader-utils": "1.2.3", @@ -349,16 +383,51 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.13.6.tgz", - "integrity": "sha512-lQmYrhOHeBn/r7uw+FfpJUq9puApYe72+mrIfg/UtLwSEYt58n5d156jnuMcfWnCyhYUgYqLTaOUfSM0RV7akw==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.13.9.tgz", + "integrity": "sha512-6ypu6pzNmQxzATF4rTWEhGSl5hyGQ8a/3aCZF/ux+XGc3d4hi2HW+NWlDm1UEna6ZjNtgEPlgfP4q8BKrjRmfA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.13.6", - "@angular-devkit/core": "7.3.6", + "@angular-devkit/architect": "0.13.9", + "@angular-devkit/core": "7.3.9", "rxjs": "6.3.3" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.9.tgz", + "integrity": "sha512-EAFtCs9dsGhpMRC45PoYsrkiExpWz9Ax15qXfzwdDRacz5DmdOVt+QpkLW1beUOwiyj/bhFyj23eaONK2RTn/w==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.3.9", + "rxjs": "6.3.3" + } + }, + "@angular-devkit/core": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz", + "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "rxjs": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", @@ -367,6 +436,12 @@ "requires": { "tslib": "^1.9.0" } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -1097,18 +1172,43 @@ "dev": true }, "@ngtools/webpack": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.3.6.tgz", - "integrity": "sha512-gDMHybwe8B+1BSvtwM5z4qAkUnZ9b4PTyIVWWECgTLDp2x3WhJi2rMk2X8HTkpbZ52pLPue5GL1sfqlZIOcX7Q==", + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.3.9.tgz", + "integrity": "sha512-+ROpqfCXLdQwfP+UNDLk4p959ZrocpStkdd2Iy9CeOJ8yDkityqpstTwQC3oHzzu/95BiyZ0hrHbM6AsPPIvJg==", "dev": true, "requires": { - "@angular-devkit/core": "7.3.6", + "@angular-devkit/core": "7.3.9", "enhanced-resolve": "4.1.0", "rxjs": "6.3.3", "tree-kill": "1.2.1", "webpack-sources": "1.3.0" }, "dependencies": { + "@angular-devkit/core": { + "version": "7.3.9", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.3.9.tgz", + "integrity": "sha512-SaxD+nKFW3iCBKsxNR7+66J30EexW/y7tm8m5AvUH+GwSAgIj0ZYmRUzFEPggcaLVA4WnE/YWqIXZMJW5dT7gw==", + "dev": true, + "requires": { + "ajv": "6.9.1", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "rxjs": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", @@ -1117,6 +1217,12 @@ "requires": { "tslib": "^1.9.0" } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -1814,12 +1920,11 @@ "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", "dev": true }, - "addressparser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", - "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=", - "dev": true, - "optional": true + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "dev": true }, "adf-monaco-extension": { "version": "0.0.8", @@ -1932,50 +2037,6 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "amqplib": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.3.tgz", - "integrity": "sha512-ZOdUhMxcF+u62rPI+hMtU1NBXSDFQ3eCJJrenamtdQ7YYwh7RZJHOIM1gonVbZ5PyVdYH4xqBPje9OYqk7fnqw==", - "dev": true, - "optional": true, - "requires": { - "bitsyntax": "~0.1.0", - "bluebird": "^3.5.2", - "buffer-more-ints": "~1.0.0", - "readable-stream": "1.x >=1.1.9", - "safe-buffer": "~5.1.2", - "url-parse": "~1.4.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true, - "optional": true - } - } - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -2208,12 +2269,6 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -2274,11 +2329,12 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -2317,13 +2373,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.2.tgz", - "integrity": "sha512-8c83xDLJM/dLDyXNLiR6afRRm4dPKN6KAnKqytRK3DBJul9lA+atxdQkNDkSVPdTqea5HiRq3lnnOIZ0MBpvdg==", - "dev": true, - "optional": true - }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -2407,13 +2456,45 @@ "dev": true }, "axios": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", - "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", "dev": true, "requires": { - "follow-redirects": "^1.2.3", - "is-buffer": "^1.1.5" + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + }, + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "axobject-query": { @@ -2502,25 +2583,6 @@ "babel-runtime": "^6.22.0" } }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "core-js": "^2.4.0", - "regenerator-runtime": "^0.10.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - } - } - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -2716,14 +2778,15 @@ "callsite": "1.0.0" } }, - "bfj-node4": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", - "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "bfj": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz", + "integrity": "sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ==", "dev": true, "requires": { "bluebird": "^3.5.1", "check-types": "^7.3.0", + "hoopy": "^0.1.2", "tryer": "^1.0.0" } }, @@ -2738,43 +2801,11 @@ "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==", "dev": true }, - "bitsyntax": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz", - "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==", - "dev": true, - "optional": true, - "requires": { - "buffer-more-ints": "~1.0.0", - "debug": "~2.6.9", - "safe-buffer": "~5.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - } - } - }, "bl": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", "dev": true, - "optional": true, "requires": { "readable-stream": "~2.0.5" }, @@ -2783,15 +2814,13 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true, - "optional": true + "dev": true }, "readable-stream": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, - "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -2805,8 +2834,7 @@ "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true, - "optional": true + "dev": true } } }, @@ -2907,15 +2935,6 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -3014,14 +3033,24 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-sync": { - "version": "2.26.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.3.tgz", - "integrity": "sha512-VLzpjCA4uXqfzkwqWtMM6hvPm2PNHp2RcmzBXcbi6C9WpkUhhFb8SVAr4CFrCsFxDg+oY6HalOjn8F+egyvhag==", + "brotli-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-0.1.0.tgz", + "integrity": "sha512-5ny7BNvpe2TSmdafF1T9dnFYp3AIrJ8qJt29K0DQJzORlK38LBim/CmlY26JtreV6SWmXza7Oa+9m61SzvxR0Q==", "dev": true, "requires": { - "browser-sync-client": "^2.26.2", - "browser-sync-ui": "^2.26.2", + "duplexer": "^0.1.1", + "iltorb": "^2.4.3" + } + }, + "browser-sync": { + "version": "2.26.5", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.26.5.tgz", + "integrity": "sha512-zVa6MmadAFgl5Uk53Yy5cw5tGTO7xSGAWK3Yx70GJ1t5jK+r6B4q3xq+1XbYfLt1SbeFg7WoNWneNhMT4B9jFw==", + "dev": true, + "requires": { + "browser-sync-client": "^2.26.4", + "browser-sync-ui": "^2.26.4", "bs-recipes": "1.3.4", "bs-snippet-injector": "^2.0.1", "chokidar": "^2.0.4", @@ -3036,7 +3065,7 @@ "http-proxy": "1.15.2", "immutable": "^3", "localtunnel": "1.9.1", - "micromatch": "2.3.11", + "micromatch": "^3.1.10", "opn": "5.3.0", "portscanner": "2.1.1", "qs": "6.2.3", @@ -3052,126 +3081,18 @@ "yargs": "6.4.0" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", "dev": true }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" - } - }, - "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - } - }, "eventemitter3": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", "dev": true }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", @@ -3193,39 +3114,6 @@ "requires-port": "1.x.x" } }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, "jsonfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", @@ -3235,42 +3123,6 @@ "graceful-fs": "^4.1.6" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "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" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", @@ -3286,61 +3138,6 @@ "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", "dev": true }, - "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", - "dev": true, - "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" - } - }, - "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", - "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", - "to-array": "0.1.4" - } - }, - "socket.io-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", - "dev": true - } - } - }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", @@ -3381,9 +3178,9 @@ } }, "browser-sync-client": { - "version": "2.26.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.2.tgz", - "integrity": "sha512-FEuVJD41fI24HJ30XOT2RyF5WcnEtdJhhTqeyDlnMk/8Ox9MZw109rvk9pdfRWye4soZLe+xcAo9tHSMxvgAdw==", + "version": "2.26.4", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.26.4.tgz", + "integrity": "sha512-mQiDp5/tf79VezDS5j/EExU4Ze6f5DQYuL0Z7VdJgBbNLTHDfkYGi2R620qc6HkY9XZA0m4/UwihT7J42RBIJA==", "dev": true, "requires": { "etag": "1.8.1", @@ -3410,9 +3207,9 @@ } }, "browser-sync-ui": { - "version": "2.26.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.2.tgz", - "integrity": "sha512-LF7GMWo8ELOE0eAlxuRCfnGQT1ZxKP9flCfGgZdXFc6BwmoqaJHlYe7MmVvykKkXjolRXTz8ztXAKGVqNwJ3EQ==", + "version": "2.26.4", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.26.4.tgz", + "integrity": "sha512-u20P3EsZoM8Pt+puoi3BU3KlbQAH1lAcV+/O4saF26qokrBqIDotmGonfWwoRbUmdxZkM9MBmA0K39ZTG1h4sA==", "dev": true, "requires": { "async-each-series": "0.1.1", @@ -3571,43 +3368,12 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, - "buffer-more-ints": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", - "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", - "dev": true - }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, - "buildmail": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-4.0.1.tgz", - "integrity": "sha1-h393OLeHKYccmhBeO4N9K+EaenI=", - "dev": true, - "optional": true, - "requires": { - "addressparser": "1.0.1", - "libbase64": "0.1.0", - "libmime": "3.0.0", - "libqp": "1.1.0", - "nodemailer-fetch": "1.6.0", - "nodemailer-shared": "1.1.0", - "punycode": "1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - } - } - }, "builtin-modules": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.0.0.tgz", @@ -3627,69 +3393,90 @@ "dev": true }, "bundlesize": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.15.3.tgz", - "integrity": "sha512-CqLtaDKQFZVh9l53Py67lJOLOT//aNrmF9xT1v5cS080bbqyhOdTX5+LuoVI8LOKa351fUikGcxsQDYWQXfizg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.17.2.tgz", + "integrity": "sha512-cJAZ6wvs6IHQCnUn9kTme4GL+ahoICjcS0QPcGTj61Hl4bCc8wKkkVLUote4k/1yxa0+kUIrIo9wyNJ+XIciEw==", "dev": true, "requires": { - "axios": "^0.16.2", - "bytes": "^3.0.0", + "axios": "^0.18.0", + "brotli-size": "0.1.0", + "bytes": "^3.1.0", "ci-env": "^1.4.0", - "commander": "^2.11.0", + "commander": "^2.20.0", "github-build": "^1.2.0", - "glob": "^7.1.2", + "glob": "^7.1.4", "gzip-size": "^4.0.0", - "opencollective": "^1.0.3", "prettycli": "^1.4.3", - "read-pkg-up": "^2.0.0" + "read-pkg-up": "^3.0.0" }, "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" } }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "pify": "^2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "read-pkg": "^3.0.0" } }, "strip-bom": { @@ -3955,18 +3742,18 @@ "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "ci-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.7.0.tgz", - "integrity": "sha512-ifHfV5JmACoTnoPxwjKjUUAekL1UCKZ9EU27GaaSkLVopkV3H1w0eYIpY+aAiX31SVEtTrZFMS94EFETSj0vIA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.8.0.tgz", + "integrity": "sha512-OKShe5VZpuvVfJhiadgix/+lnOVJIcNLdLOrUwbllNfvHPAQzJxuNjefH3xfw3yHxAV8CDbLqXT9C4ygDtg8ow==", "dev": true }, "ci-info": { @@ -3991,12 +3778,6 @@ "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", "dev": true }, - "circular-json": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", - "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", - "dev": true - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -4224,15 +4005,6 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true, - "requires": { - "lodash": "^4.5.0" - } - }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", @@ -4280,25 +4052,33 @@ "dev": true }, "compressible": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.16.tgz", - "integrity": "sha512-JQfEOdnI7dASwCuSPWIeVYwc/zMsu/+tRhoUvEfXz2gxOA2DNjmG5vhtFdBlhWPPGo+RdT9S3tgc/uH5qgDiiA==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", "dev": true, "requires": { - "mime-db": ">= 1.38.0 < 2" + "mime-db": ">= 1.40.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + } } }, "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.14", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", "vary": "~1.1.2" }, @@ -4696,16 +4476,6 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.x.x" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -5072,25 +4842,6 @@ "assert-plus": "^1.0.0" } }, - "data-uri-to-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.0.tgz", - "integrity": "sha512-YbKCNLPPP4inc0E5If4OaalBc7gpaM2MRv77Pv2VThVComLKfbGYtJcdDCViDyp1Wd4SebhHLz94vp91zbK6bw==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "^8.0.7" - }, - "dependencies": { - "@types/node": { - "version": "8.10.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.44.tgz", - "integrity": "sha512-HY3SK7egERHGUfY8p6ztXIEQWcIPHouYhCGcLAPQin7gE2G/fALFz+epnMwcxKUS6aKqTVoAFdi+t1llQd3xcw==", - "dev": true, - "optional": true - } - } - }, "date-fns": { "version": "1.30.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", @@ -5098,9 +4849,9 @@ "dev": true }, "date-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", - "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", "dev": true }, "date-now": { @@ -5155,6 +4906,15 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -5271,27 +5031,6 @@ } } }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "dev": true, - "optional": true, - "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true, - "optional": true - } - } - }, "del": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", @@ -5383,6 +5122,12 @@ "repeating": "^2.0.0" } }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", @@ -5530,13 +5275,6 @@ "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==", "dev": true }, - "double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=", - "dev": true, - "optional": true - }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -5710,9 +5448,9 @@ } }, "engine.io": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", - "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -5720,7 +5458,6 @@ "cookie": "0.3.1", "debug": "~3.1.0", "engine.io-parser": "~2.1.0", - "uws": "~9.14.0", "ws": "~3.3.1" }, "dependencies": { @@ -5742,9 +5479,9 @@ } }, "engine.io-client": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", - "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", + "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", "dev": true, "requires": { "component-emitter": "1.2.1", @@ -5755,7 +5492,7 @@ "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "~3.3.1", + "ws": "~6.1.0", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" }, @@ -5774,6 +5511,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } } } }, @@ -5938,36 +5684,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "dev": true, - "optional": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -6116,34 +5832,6 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "^0.2.3", - "array-unique": "^0.2.1", - "braces": "^0.1.2" - }, - "dependencies": { - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "^0.1.0" - } - } - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -6194,29 +5882,11 @@ } } }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true, - "requires": { - "is-number": "^0.1.1", - "repeat-string": "^0.2.2" - }, - "dependencies": { - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } - } + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true }, "expand-tilde": { "version": "2.0.2", @@ -6543,19 +6213,6 @@ } } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", @@ -6806,6 +6463,12 @@ "null-check": "^1.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-extra": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", @@ -7374,9 +7037,9 @@ } }, "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -7385,53 +7048,6 @@ "rimraf": "2" } }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "dev": true, - "optional": true, - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true, - "optional": true - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "dev": true, - "optional": true - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -7474,26 +7090,6 @@ "globule": "^1.0.0" } }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "optional": true, - "requires": { - "is-property": "^1.0.2" - } - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "optional": true, - "requires": { - "is-property": "^1.0.0" - } - }, "genfun": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", @@ -7530,45 +7126,6 @@ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, - "get-uri": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", - "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", - "dev": true, - "optional": true, - "requires": { - "data-uri-to-buffer": "2", - "debug": "4", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "readable-stream": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", - "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", - "dev": true, - "optional": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -7628,6 +7185,12 @@ } } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true + }, "github-slugger": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.1.tgz", @@ -7650,42 +7213,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -7953,9 +7480,9 @@ "dev": true }, "handlebars": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz", - "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -8108,36 +7635,12 @@ "minimalistic-assert": "^1.0.1" } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - } - }, "highlight.js": { "version": "9.15.6", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.6.tgz", "integrity": "sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ==", "dev": true }, - "hipchat-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz", - "integrity": "sha1-ttJJdVQ3wZEII2d5nTupoPI7Ix4=", - "dev": true, - "optional": true, - "requires": { - "lodash": "^4.0.0", - "request": "^2.0.0" - } - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -8149,12 +7652,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -8164,6 +7661,12 @@ "parse-passwd": "^1.0.0" } }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -8311,22 +7814,6 @@ "sshpk": "^1.7.0" } }, - "httpntlm": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", - "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", - "dev": true, - "requires": { - "httpreq": ">=0.4.22", - "underscore": "~1.7.0" - } - }, - "httpreq": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", - "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", - "dev": true - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", @@ -8554,9 +8041,9 @@ } }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, "iferr": { @@ -8580,6 +8067,27 @@ "minimatch": "^3.0.4" } }, + "iltorb": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-2.4.3.tgz", + "integrity": "sha512-cr/kC07Cf9sW3TWH7yUxV2QkNjby4LMCsXGmxPCQs5x//QzTpF3GLPNY7L66G+DkNGaTRCgY+vYZ+dyAcuDOnQ==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "nan": "^2.13.2", + "npmlog": "^4.1.2", + "prebuild-install": "^5.3.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + } + } + }, "image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -8730,13 +8238,6 @@ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, - "inflection": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", - "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", - "dev": true, - "optional": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -9027,21 +8528,6 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -9103,27 +8589,6 @@ "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true, - "optional": true - }, - "is-my-json-valid": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz", - "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==", - "dev": true, - "optional": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -9213,30 +8678,12 @@ "isobject": "^3.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -9724,9 +9171,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", - "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -9820,9 +9267,9 @@ "dev": true }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", "dev": true }, "json5": { @@ -9854,13 +9301,6 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true, - "optional": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -9886,40 +9326,46 @@ } }, "karma": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/karma/-/karma-2.0.5.tgz", - "integrity": "sha512-rECezBeY7mjzGUWhFlB7CvPHgkHJLXyUmWg+6vHCEsdWNUTnmiS6jRrIMcJEWgU2DUGZzGWG0bTRVky8fsDTOA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.1.0.tgz", + "integrity": "sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw==", "dev": true, "requires": { "bluebird": "^3.3.0", "body-parser": "^1.16.1", + "braces": "^2.3.2", "chokidar": "^2.0.3", "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", + "flatted": "^2.0.0", "glob": "^7.1.1", "graceful-fs": "^4.1.2", "http-proxy": "^1.13.0", "isbinaryfile": "^3.0.0", - "lodash": "^4.17.4", - "log4js": "^2.5.3", - "mime": "^1.3.4", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", "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": "2.0.4", + "socket.io": "2.1.1", "source-map": "^0.6.1", "tmp": "0.0.33", - "useragent": "2.2.1" + "useragent": "2.3.0" }, "dependencies": { + "mime": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10181,37 +9627,6 @@ "type-check": "~0.3.2" } }, - "libbase64": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", - "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY=", - "dev": true - }, - "libmime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/libmime/-/libmime-3.0.0.tgz", - "integrity": "sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY=", - "dev": true, - "requires": { - "iconv-lite": "0.4.15", - "libbase64": "0.1.0", - "libqp": "1.1.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true - } - } - }, - "libqp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", - "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=", - "dev": true - }, "license-checker": { "version": "25.0.1", "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", @@ -10502,15 +9917,15 @@ } }, "lite-server": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/lite-server/-/lite-server-2.4.0.tgz", - "integrity": "sha512-Vo06tHpXrqm37i6T7tVdq5PSbrFmvQRw64+dlFXdh1tltv6KCvpE+xzXz2+x6KWJ8ja+GgwSy4P13GUWyhaDHQ==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/lite-server/-/lite-server-2.5.3.tgz", + "integrity": "sha512-D+CfLgGn/WVlGKKrZaGnBDIpXqm5lFXLt2tw0aCQNxMIbXD7VlYiud2bxe3oQDAIwfVPEBHIF6RdZVml2cBcLA==", "dev": true, "requires": { - "browser-sync": "^2.24.4", + "browser-sync": "^2.26.5", "connect-history-api-fallback": "^1.2.0", "connect-logger": "0.0.1", - "lodash": "^4.11.1", + "lodash": "^4.17.11", "minimist": "1.2.0" } }, @@ -10885,246 +10300,33 @@ } }, "log4js": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-2.11.0.tgz", - "integrity": "sha512-z1XdwyGFg8/WGkOyF6DPJjivCWNLKrklGdViywdYnSKOvgtEBo2UyEMZS5sD2mZrQlU3TvO8wDWLc8mzE1ncBQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.3.1.tgz", + "integrity": "sha512-nPGS7w7kBnzNm1j8JycFxwLCbIMae8tHCo0cCdx/khB20Tcod8SZThYEB9E0c27ObcTGA1mlPowaf3hantQ/FA==", "dev": true, "requires": { - "amqplib": "^0.5.2", - "axios": "^0.15.3", - "circular-json": "^0.5.4", - "date-format": "^1.2.0", - "debug": "^3.1.0", - "hipchat-notifier": "^1.1.0", - "loggly": "^1.1.0", - "mailgun-js": "^0.18.0", - "nodemailer": "^2.5.0", - "redis": "^2.7.1", - "semver": "^5.5.0", - "slack-node": "~0.2.0", - "streamroller": "0.7.0" + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.2", + "streamroller": "^1.0.5" }, "dependencies": { - "axios": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", - "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, - "optional": true, "requires": { - "follow-redirects": "1.0.0" + "ms": "^2.1.1" } - }, - "follow-redirects": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", - "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - } - } - }, - "loggly": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/loggly/-/loggly-1.1.1.tgz", - "integrity": "sha1-Cg/B0/o6XsRP3HuJe+uipGlc6+4=", - "dev": true, - "optional": true, - "requires": { - "json-stringify-safe": "5.0.x", - "request": "2.75.x", - "timespan": "2.3.x" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true, - "optional": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "optional": true, - "requires": { - "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" - } - }, - "form-data": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", - "integrity": "sha1-bwrrrcxdoWwT4ezBETfYX5uIOyU=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.11" - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "optional": true, - "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true, - "optional": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", - "dev": true, - "optional": true - }, - "request": { - "version": "2.75.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz", - "integrity": "sha1-0rgmiihtoT6qXQGt9dGMyQ9lfZM=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "bl": "~1.1.2", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.0.0", - "har-validator": "~2.0.6", - "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", - "node-uuid": "~1.4.7", - "oauth-sign": "~0.8.1", - "qs": "~6.2.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "optional": true, - "requires": { - "punycode": "^1.4.1" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true, - "optional": true } } }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.2.tgz", + "integrity": "sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==", "dev": true }, "longest-streak": { @@ -11177,54 +10379,6 @@ "sourcemap-codec": "^1.4.4" } }, - "mailcomposer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mailcomposer/-/mailcomposer-4.0.1.tgz", - "integrity": "sha1-DhxEsqB890DuF9wUm6AJ8Zyt/rQ=", - "dev": true, - "optional": true, - "requires": { - "buildmail": "4.0.1", - "libmime": "3.0.0" - } - }, - "mailgun-js": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/mailgun-js/-/mailgun-js-0.18.1.tgz", - "integrity": "sha512-lvuMP14u24HS2uBsJEnzSyPMxzU2b99tQsIx1o6QNjqxjk8b3WvR+vq5oG1mjqz/IBYo+5gF+uSoDS0RkMVHmg==", - "dev": true, - "optional": true, - "requires": { - "async": "~2.6.0", - "debug": "~3.1.0", - "form-data": "~2.3.0", - "inflection": "~1.12.0", - "is-stream": "^1.1.0", - "path-proxy": "~1.0.0", - "promisify-call": "^2.0.2", - "proxy-agent": "~3.0.0", - "tsscmp": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - } - } - }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -11393,28 +10547,29 @@ "dev": true }, "markdownlint": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.11.0.tgz", - "integrity": "sha512-wE5WdKD6zW2DQaPQ5TFBTXh5j76DnWd/IFffnDQgHmi6Y61DJXBDfLftZ/suJHuv6cwPjM6gKw2GaRLJMOR+Mg==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.14.2.tgz", + "integrity": "sha512-Lzw5u46jcIQW0RX8nfz6mOjg3VwoTi7KTubk+G7LgJMybV98h3tyVaMpsNRm3UomBosNOUKVe3XOjJs6WS6DdQ==", "dev": true, "requires": { "markdown-it": "8.4.2" } }, "markdownlint-cli": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.12.0.tgz", - "integrity": "sha512-qufCBqpR+uRj9jY+Q4IrrBFf1Z5rISzn/aN6M4MQaci309B5xdoUye2AEoqkfddmFVpgH+s0q9FMdOFw7SDWrA==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.16.0.tgz", + "integrity": "sha512-BmtWhDvbsnbgYirYOiSOxP8THhkCjp28+xVfTyj3D1JsOlj0Txf3IA9wlT5GHCYaR6QfDlWq4pz/rh+bfOw2Vg==", "dev": true, "requires": { "commander": "~2.9.0", "deep-extend": "~0.5.1", "get-stdin": "~5.0.1", - "glob": "~7.0.3", - "js-yaml": "~3.11.0", + "glob": "~7.1.2", + "js-yaml": "^3.13.1", "lodash.differencewith": "~4.5.0", "lodash.flatten": "~4.4.0", - "markdownlint": "~0.11.0", + "markdownlint": "~0.14.1", + "minimatch": "~3.0.4", "rc": "~1.2.7" }, "dependencies": { @@ -11432,30 +10587,6 @@ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", "dev": true - }, - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "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" - } - }, - "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } } } }, @@ -11474,12 +10605,6 @@ "escape-string-regexp": "^1.0.4" } }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, "mathml-tag-names": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.0.tgz", @@ -11684,6 +10809,12 @@ "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "mini-css-extract-plugin": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", @@ -11947,6 +11078,12 @@ "to-regex": "^3.0.1" } }, + "napi-build-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", + "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==", + "dev": true + }, "nconf": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", @@ -12012,13 +11149,6 @@ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", "dev": true }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true, - "optional": true - }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -12252,21 +11382,20 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-abi": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.8.0.tgz", + "integrity": "sha512-1/aa2clS0pue0HjckL62CsbhWWU35HARvBDXcJtYKbYR7LnIutmpxmXbuDMV9kEviD2lP/wACOgWmmwljghHyQ==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, "node-ensure": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" }, - "node-fetch": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", - "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, "node-fetch-npm": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", @@ -12512,96 +11641,10 @@ "find-parent-dir": "^0.3.0" } }, - "nodemailer": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-2.7.2.tgz", - "integrity": "sha1-8kLmSa7q45tsftdA73sGHEBNMPk=", - "dev": true, - "optional": true, - "requires": { - "libmime": "3.0.0", - "mailcomposer": "4.0.1", - "nodemailer-direct-transport": "3.3.2", - "nodemailer-shared": "1.1.0", - "nodemailer-smtp-pool": "2.8.2", - "nodemailer-smtp-transport": "2.7.2", - "socks": "1.1.9" - }, - "dependencies": { - "smart-buffer": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=", - "dev": true, - "optional": true - }, - "socks": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz", - "integrity": "sha1-Yo1+TQSRJDVEWsC25Fk3bLPm1pE=", - "dev": true, - "optional": true, - "requires": { - "ip": "^1.1.2", - "smart-buffer": "^1.0.4" - } - } - } - }, - "nodemailer-direct-transport": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz", - "integrity": "sha1-6W+vuQNYVglH5WkBfZfmBzilCoY=", - "dev": true, - "optional": true, - "requires": { - "nodemailer-shared": "1.1.0", - "smtp-connection": "2.12.0" - } - }, - "nodemailer-fetch": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", - "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=", - "dev": true - }, - "nodemailer-shared": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", - "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", - "dev": true, - "requires": { - "nodemailer-fetch": "1.6.0" - } - }, - "nodemailer-smtp-pool": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz", - "integrity": "sha1-LrlNbPhXgLG0clzoU7nL1ejajHI=", - "dev": true, - "optional": true, - "requires": { - "nodemailer-shared": "1.1.0", - "nodemailer-wellknown": "0.1.10", - "smtp-connection": "2.12.0" - } - }, - "nodemailer-smtp-transport": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz", - "integrity": "sha1-A9ccdjFPFKx9vHvwM6am0W1n+3c=", - "dev": true, - "optional": true, - "requires": { - "nodemailer-shared": "1.1.0", - "nodemailer-wellknown": "0.1.10", - "smtp-connection": "2.12.0" - } - }, - "nodemailer-wellknown": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", - "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U=", + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", "dev": true }, "nopt": { @@ -12914,27 +11957,6 @@ "isobject": "^3.0.0" } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -12991,132 +12013,13 @@ } } }, - "opencollective": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", - "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", + "open": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.0.0.tgz", + "integrity": "sha512-/yb5mVZBz7mHLySMiSj2DcLtMBbFPJk5JBKEkHVZFxZAPzeg3L026O0T+lbdz1B2nyDnkClRSwRQJdeVUIF7zw==", "dev": true, "requires": { - "babel-polyfill": "6.23.0", - "chalk": "1.1.3", - "inquirer": "3.0.6", - "minimist": "1.2.0", - "node-fetch": "1.6.3", - "opn": "4.0.2" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "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" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, - "inquirer": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", - "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", - "dev": true, - "requires": { - "ansi-escapes": "^1.1.0", - "chalk": "^1.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.1", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx": "^4.1.0", - "string-width": "^2.0.0", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "is-wsl": "^1.1.0" } }, "opencollective-postinstall": { @@ -13278,37 +12181,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "pac-proxy-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz", - "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==", - "dev": true, - "optional": true, - "requires": { - "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": "^4.0.1" - } - }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "dev": true, - "optional": true, - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", @@ -13501,35 +12373,6 @@ "is-hexadecimal": "^1.0.0" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -13650,25 +12493,6 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "path-proxy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz", - "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=", - "dev": true, - "optional": true, - "requires": { - "inflection": "~1.3.0" - }, - "dependencies": { - "inflection": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz", - "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=", - "dev": true, - "optional": true - } - } - }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -14112,6 +12936,30 @@ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, + "prebuild-install": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.0.tgz", + "integrity": "sha512-aaLVANlj4HgZweKttFNUVNRxDukytuIuxeK2boIMHjagNJCiVKWFsKF4tCE3ql3GbrD2tExPQ7/pwtEJcHNZeg==", + "dev": true, + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.2.7", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -14124,12 +12972,6 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, "pretty-bytes": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", @@ -14216,16 +13058,6 @@ "retry": "^0.10.0" } }, - "promisify-call": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz", - "integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=", - "dev": true, - "optional": true, - "requires": { - "with-callback": "^1.0.2" - } - }, "property-expr": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-1.5.1.tgz", @@ -14374,6 +13206,12 @@ } } }, + "protractor-browser-logs": { + "version": "1.0.423", + "resolved": "https://registry.npmjs.org/protractor-browser-logs/-/protractor-browser-logs-1.0.423.tgz", + "integrity": "sha512-SlB56Zs1VjXu4onlkADSypelphHBzuRVzgIuTtEr55I6HyZ2O+3qWGO9swqMBK5LNb+8P2sdSbeSQgGqO8Pnkw==", + "dev": true + }, "protractor-html-reporter-2": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/protractor-html-reporter-2/-/protractor-html-reporter-2-1.0.4.tgz", @@ -14595,30 +13433,6 @@ "ipaddr.js": "1.8.0" } }, - "proxy-agent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz", - "integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==", - "dev": true, - "optional": true, - "requires": { - "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": "^3.0.0", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - } - }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", - "dev": true, - "optional": true - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -14707,9 +13521,9 @@ "dev": true }, "querystringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", - "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, "quick-lru": { @@ -14718,25 +13532,6 @@ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", "dev": true }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -14970,32 +13765,6 @@ "strip-indent": "^1.0.1" } }, - "redis": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz", - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==", - "dev": true, - "optional": true, - "requires": { - "double-ended-queue": "^2.1.0-0", - "redis-commands": "^1.2.0", - "redis-parser": "^2.6.0" - } - }, - "redis-commands": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz", - "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==", - "dev": true, - "optional": true - }, - "redis-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=", - "dev": true, - "optional": true - }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -15012,15 +13781,6 @@ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", "dev": true }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -15281,19 +14041,6 @@ } } }, - "requestretry": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.13.0.tgz", - "integrity": "sha512-Lmh9qMvnQXADGAQxsXHP4rbgO6pffCfuR8XUBdP9aitJcLQJxhp7YZK4xAVYXnPJ5E52mwrfiKQtKonPL8xsmg==", - "dev": true, - "optional": true, - "requires": { - "extend": "^3.0.0", - "lodash": "^4.15.0", - "request": "^2.74.0", - "when": "^3.7.7" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15433,6 +14180,12 @@ "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", "dev": true }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -15986,9 +14739,9 @@ } }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", + "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", "dev": true }, "serve-index": { @@ -16167,6 +14920,23 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "simple-git": { "version": "1.113.0", "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.113.0.tgz", @@ -16187,16 +14957,6 @@ } } }, - "slack-node": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/slack-node/-/slack-node-0.2.0.tgz", - "integrity": "sha1-3kuN3aqLeT9h29KTgQT9q/N9+jA=", - "dev": true, - "optional": true, - "requires": { - "requestretry": "^1.2.2" - } - }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -16234,16 +14994,6 @@ "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==", "dev": true }, - "smtp-connection": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", - "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", - "dev": true, - "requires": { - "httpntlm": "1.6.1", - "nodemailer-shared": "1.1.0" - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -16366,43 +15116,92 @@ } } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "optional": true, - "requires": { - "hoek": "2.x.x" - } - }, "socket.io": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", - "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", "dev": true, "requires": { - "debug": "~2.6.6", - "engine.io": "~3.1.0", + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.0.4", - "socket.io-parser": "~3.1.1" + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" } }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + } } } }, @@ -16413,30 +15212,31 @@ "dev": true }, "socket.io-client": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", - "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "~2.6.4", - "engine.io-client": "~3.1.0", + "debug": "~3.1.0", + "engine.io-client": "~3.3.1", + "has-binary2": "~1.0.2", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "~3.1.1", + "socket.io-parser": "~3.3.0", "to-array": "0.1.4" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -16451,14 +15251,13 @@ } }, "socket.io-parser": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", - "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", "dev": true, "requires": { "component-emitter": "1.2.1", "debug": "~3.1.0", - "has-binary2": "~1.0.2", "isarray": "2.0.1" }, "dependencies": { @@ -16730,9 +15529,9 @@ } }, "readable-stream": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", - "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -16749,9 +15548,9 @@ "dev": true }, "speed-measure-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-b9Yd0TrzceMVYSbuamM1sFsGM1oVfyFTM22gOoyLhymNvBVApuYpkdFOgYkKJpN/KhTpcCYcTGHg7X+FJ33Vvw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", "dev": true, "requires": { "chalk": "^2.0.1" @@ -16904,15 +15703,29 @@ } }, "streamroller": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", - "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.5.tgz", + "integrity": "sha512-iGVaMcyF5PcUY0cPbW3xFQUXnr9O4RZXNBBjhuLZgrjLO4XCLLGfx4T2sGqygSeylUjwgWRsnNbT9aV0Zb8AYw==", "dev": true, "requires": { - "date-format": "^1.2.0", - "debug": "^3.1.0", - "mkdirp": "^0.5.1", - "readable-stream": "^2.3.0" + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, "string-argv": { @@ -16974,13 +15787,6 @@ "is-regexp": "^1.0.0" } }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", - "dev": true, - "optional": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -17538,16 +16344,55 @@ "dev": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", "dev": true, "requires": { "block-stream": "*", - "fstream": "^1.0.2", + "fstream": "^1.0.12", "inherits": "2" } }, + "tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "dev": true, + "requires": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "temp": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz", @@ -17734,9 +16579,9 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pify": { @@ -17850,13 +16695,6 @@ "xtend": "~4.0.1" } }, - "thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=", - "dev": true, - "optional": true - }, "thunky": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", @@ -17884,13 +16722,6 @@ "setimmediate": "^1.0.4" } }, - "timespan": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", - "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", - "dev": true, - "optional": true - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -17912,6 +16743,12 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -18183,13 +17020,6 @@ } } }, - "tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true, - "optional": true - }, "tsutils": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.9.1.tgz", @@ -18349,12 +17179,6 @@ "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - }, "unherit": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz", @@ -18658,12 +17482,12 @@ "dev": true }, "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "dev": true, "requires": { - "querystringify": "^2.0.0", + "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, @@ -18698,21 +17522,13 @@ "dev": true }, "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { - "lru-cache": "2.2.x", + "lru-cache": "4.1.x", "tmp": "0.0.x" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } } }, "util": { @@ -18747,13 +17563,6 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, - "uws": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", - "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", - "dev": true, - "optional": true - }, "v8-compile-cache": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", @@ -18954,39 +17763,49 @@ } }, "webpack-bundle-analyzer": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", - "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz", + "integrity": "sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==", "dev": true, "requires": { - "acorn": "^5.3.0", - "bfj-node4": "^5.2.0", - "chalk": "^2.3.0", - "commander": "^2.13.0", - "ejs": "^2.5.7", - "express": "^4.16.2", - "filesize": "^3.5.11", - "gzip-size": "^4.1.0", - "lodash": "^4.17.4", + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.10", "mkdirp": "^0.5.1", - "opener": "^1.4.3", - "ws": "^4.0.0" + "opener": "^1.5.1", + "ws": "^6.0.0" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" + "async-limiter": "~1.0.0" } } } @@ -19285,9 +18104,9 @@ }, "dependencies": { "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", "dev": true } } @@ -19463,9 +18282,9 @@ } }, "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", + "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", "dev": true }, "os-locale": { @@ -19498,9 +18317,9 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pump": { @@ -19685,6 +18504,12 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -19742,13 +18567,6 @@ "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", "dev": true }, - "with-callback": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz", - "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=", - "dev": true, - "optional": true - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -19756,9 +18574,9 @@ "dev": true }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" diff --git a/package.json b/package.json index a93943a20c..6950a45d68 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "00": "echo -------------------------------------------- DOC -----------------------------------------------", "00s": "", "markdownlint": "markdownlint ./docs", - "docbuild": "node node_modules/typedoc/bin/typedoc --tsconfig lib/tsconfig.json && node tools/doc/buildYamlSourceInfo.js docs/docs.json && node ./tools/doc/docProcessor.js", + "docbuild": "node node_modules/typedoc/bin/typedoc --tsconfig lib/tsconfig.doc.json && node tools/doc/buildYamlSourceInfo.js docs/docs.json && node ./tools/doc/docProcessor.js", "license-checker": "license-checker --production --failOn 'GPL' > licenses.txt", "01": "echo -------------------------------------------- Build Lib -----------------------------------------------", "01s": "", @@ -128,13 +128,13 @@ "@types/jasminewd2": "~2.0.2", "@types/node": "6.0.90", "ajv-cli": "^3.0.0", - "bundlesize": "^0.15.3", + "bundlesize": "^0.17.2", "chalk": "^2.3.2", "codelyzer": "5.0.0", - "dotenv": "6.2.0", "commander": "^2.15.1", "concurrently": "^3.5.1", "cspell": "^3.1.3", + "dotenv": "6.2.0", "ejs": "^2.6.1", "extract-text-webpack-plugin": "^4.0.0-beta.0", "fs-extra": "^4.0.2", @@ -147,8 +147,8 @@ "jasmine-reporters": "^2.3.2", "jasmine-spec-reporter": "~4.2.1", "jasmine2-protractor-utils": "1.1.3", - "js-yaml": "^3.12.0", - "karma": "~2.0.0", + "js-yaml": "^3.13.1", + "karma": "^4.1.0", "karma-chrome-launcher": "~2.2.0", "karma-cli": "~1.0.1", "karma-coverage": "^1.1.2", @@ -160,9 +160,9 @@ "karma-remap-istanbul": "0.6.0", "karma-systemjs": "0.16.0", "license-checker": "^25.0.1", - "lite-server": "^2.4.0", "lint-staged": "^8.1.7", - "markdownlint-cli": "^0.12.0", + "lite-server": "^2.4.0", + "markdownlint-cli": "^0.16.0", "mdast-util-compact": "^1.0.1", "mdast-util-heading-range": "^2.1.0", "mdast-util-toc": "^2.0.1", @@ -172,6 +172,7 @@ "ng-packagr": "4.7.1", "node-sass": "4.9.2", "protractor": "^5.4.0", + "protractor-browser-logs": "^1.0.423", "protractor-html-reporter-2": "^1.0.4", "protractor-retry": "^1.2.0", "raw-loader": "0.5.1", diff --git a/protractor.conf.ts b/protractor.conf.ts index 63a22c62cf..74edc951cc 100644 --- a/protractor.conf.ts +++ b/protractor.conf.ts @@ -33,9 +33,10 @@ let MAXINSTANCES = process.env.MAXINSTANCES || 1; let TIMEOUT = parseInt(process.env.TIMEOUT, 10); let SAVE_SCREENSHOT = (process.env.SAVE_SCREENSHOT == 'true'); let LIST_SPECS = process.env.LIST_SPECS || []; +let LOG = process.env.LOG ? true : false; let arraySpecs = []; -if (process.env.DEBUG) { +if (LOG) { console.log('======= PROTRACTOR CONFIGURATION ====== '); console.log('SAVE_SCREENSHOT : ' + SAVE_SCREENSHOT); console.log('BROWSER_RUN : ' + BROWSER_RUN); @@ -83,7 +84,7 @@ let buildNumber = () => { return process.env.TRAVIS_BUILD_NUMBER; }; -let saveScreenshots = async function (alfrescoJsApi, retryCount) { +let uploadScreenshot = async function (alfrescoJsApi, retryCount) { let files = fs.readdirSync(path.join(__dirname, './e2e-output/screenshots')); if (files && files.length > 0) { @@ -132,7 +133,7 @@ let saveScreenshots = async function (alfrescoJsApi, retryCount) { } }; -let saveReport = async function (filenameReport, alfrescoJsApi) { +let uploadReport = async function (alfrescoJsApi, filenameReport) { let pathFile = path.join(__dirname, './e2e-output/junit-report/html', filenameReport + '.html'); let reportFile = fs.createReadStream(pathFile); @@ -176,6 +177,72 @@ let saveReport = async function (filenameReport, alfrescoJsApi) { } }; +let browserLogErrorPrint = function () { + if (process.env.LOG) { + var browserLogs = require('protractor-browser-logs'), + logs = browserLogs(browser); + + global.logs = logs; + + beforeEach(function () { + logs.reset(); + + // You can put here all expected generic expectations. + logs.ignore('favicon.ico'); + logs.ignore('favicon.ico'); + logs.ignore('favicon-96x96.png'); + logs.ignore(logs.or(logs.INFO, logs.DEBUG)); + }); + + afterEach(async () => { + let url = await browser.getCurrentUrl(); + + return logs.verify(); + }); + } +}; + +let saveReport = async function (alfrescoJsApi, retryCount) { + let filenameReport = `ProtractorTestReport-${FOLDER}-${retryCount}`; + + let output = ''; + let savePath = `${projectRoot}/e2e-output/junit-report/`; + let temporaryHtmlPath = savePath + 'html/temporaryHtml/'; + let lastFileName = ''; + + let files = fs.readdirSync(savePath); + + if (files && files.length > 0) { + for (const fileName of files) { + const testConfigReport = { + reportTitle: 'Protractor Test Execution Report', + outputPath: temporaryHtmlPath, + outputFilename: Math.random().toString(36).substr(2, 5) + filenameReport, + }; + + let filePath = `${projectRoot}/e2e-output/junit-report/` + fileName; + + new htmlReporter().from(filePath, testConfigReport); + lastFileName = testConfigReport.outputFilename; + } + } + + let lastHtmlFile = temporaryHtmlPath + lastFileName + '.html'; + + if (!(fs.lstatSync(lastHtmlFile).isDirectory())) { + output = output + fs.readFileSync(lastHtmlFile); + } + + let fileName = savePath + 'html/' + filenameReport + '.html'; + + fs.writeFileSync(fileName, output, 'utf8'); + + await uploadReport(alfrescoJsApi, filenameReport); + + rimraf(`${projectRoot}/e2e-output/screenshots/`, function () { + console.log('done delete screenshot'); + }); +}; exports.config = { allScriptsTimeout: TIMEOUT, @@ -184,6 +251,11 @@ exports.config = { useAllAngular2AppRoots: true, capabilities: { + + loggingPrefs: { + browser: 'ALL' // "OFF", "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER", "FINEST", "ALL". + }, + browserName: 'chrome', shardTestFiles: true, @@ -219,7 +291,7 @@ exports.config = { jasmineNodeOpts: { showColors: true, - defaultTimeoutInterval: 30000, + defaultTimeoutInterval: 120000, print: function () { } }, @@ -241,11 +313,21 @@ exports.config = { screenshotPath: `${projectRoot}/e2e-output/screenshots/` }], + postTest(results) { + browser.manage().logs() + .get('browser').then(function (browserLog) { + console.log('log: ' + + require('util').inspect(browserLog)); + }); + retry.onCleanUp(results); + }, + onCleanUp(results) { retry.onCleanUp(results); }, onPrepare() { + browserLogErrorPrint(); retry.onPrepare(); @@ -281,6 +363,7 @@ exports.config = { }); jasmine.getEnv().addReporter(junitReporter); + return browser.driver.executeScript(disableCSSAnimation); function disableCSSAnimation() { @@ -301,78 +384,48 @@ exports.config = { }, beforeLaunch: function () { + if (SAVE_SCREENSHOT) { + let reportsFolder = `${projectRoot}/e2e-output/junit-report/`; - let reportsFolder = `${projectRoot}/e2e-output/junit-report/`; - - fs.exists(reportsFolder, function (exists, error) { - if (exists) { - rimraf(reportsFolder, function (err) { - }); - } - - if (error) { - console.error('[ERROR] fs', error); - } - }); + fs.exists(reportsFolder, function (exists, error) { + if (exists) { + rimraf(reportsFolder, function (err) { + }); + } + if (error) { + console.error('[ERROR] fs', error); + } + }); + } }, afterLaunch: async function () { - if (SAVE_SCREENSHOT) { + let retryCount = 1; if (argv.retry) { retryCount = ++argv.retry; } - let filenameReport = `ProtractorTestReport-${FOLDER}-${retryCount}`; - - let output = ''; - let savePath = `${projectRoot}/e2e-output/junit-report/`; - let temporaryHtmlPath = savePath + 'html/temporaryHtml/'; - let lastFileName = ''; - - let files = fs.readdirSync(savePath); - - if (files && files.length > 0) { - for (const fileName of files) { - const testConfigReport = { - reportTitle: 'Protractor Test Execution Report', - outputPath: temporaryHtmlPath, - outputFilename: Math.random().toString(36).substr(2, 5) + filenameReport, - }; - - let filePath = `${projectRoot}/e2e-output/junit-report/` + fileName; - - new htmlReporter().from(filePath, testConfigReport); - lastFileName = testConfigReport.outputFilename; - } - } - - let lastHtmlFile = temporaryHtmlPath + lastFileName + '.html'; - - if (!(fs.lstatSync(lastHtmlFile).isDirectory())) { - output = output + fs.readFileSync(lastHtmlFile); - } - - let fileName = savePath + 'html/' + filenameReport + '.html'; - - fs.writeFileSync(fileName, output, 'utf8'); - let alfrescoJsApi = new AlfrescoApi({ provider: 'ECM', hostEcm: TestConfig.adf.url }); + alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); - await saveScreenshots(alfrescoJsApi, retryCount); - - await saveReport(filenameReport, alfrescoJsApi); - - rimraf(`${projectRoot}/e2e-output/screenshots/`, function () { - console.log('done delete screenshot'); - }); + try { + await uploadScreenshot(alfrescoJsApi, retryCount); + } catch (error) { + console.error('Error saving screenshot', error); + } + try { + await saveReport(alfrescoJsApi, retryCount); + } catch (error) { + console.error('Error saving Report', error); + } } return retry.afterLaunch(4); diff --git a/scripts/npm-move-tag.sh b/scripts/npm-move-tag.sh index d9871f6ddf..0e476fd40f 100644 --- a/scripts/npm-move-tag.sh +++ b/scripts/npm-move-tag.sh @@ -2,7 +2,9 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -eval projects=( "@alfresco/adf-core" +eval projects=( + "@alfresco/adf-cli" + "@alfresco/adf-core" "@alfresco/adf-content-services" "@alfresco/adf-insights" "@alfresco/adf-process-services" diff --git a/scripts/npm-publish.sh b/scripts/npm-publish.sh index 27add99ef4..6b9f244e48 100755 --- a/scripts/npm-publish.sh +++ b/scripts/npm-publish.sh @@ -17,6 +17,7 @@ eval JSAPI_VERSION="" eval EXEC_BUILD=true eval projects=( + "cli" "core" "insights" "testing" diff --git a/scripts/test-e2e-lib.sh b/scripts/test-e2e-lib.sh index 9b6f9dfba9..f8bca06bea 100755 --- a/scripts/test-e2e-lib.sh +++ b/scripts/test-e2e-lib.sh @@ -30,16 +30,21 @@ show_help() { echo "-host_bpm URL of the Back end to test" echo "-host_identity URL of the identity service backend to test" echo "-host_sso the entire path including the name of the realm" - echo "-save save the error screenshot in the remote env" + echo "-save save the error screenshot and report in the remote env" echo "-timeout or --timeout override the timeout foe the wait utils" echo "-l --lint enable lint" echo "-m --maxInstances max instances parallel for tests" + echo "-log or --log print all the browser log" echo "-disable-control-flow disable control flow" echo "-db or --debug run the debugger" echo "-vjsapi install different version from npm of JS-API defined in the package.json" echo "-h or --help" } +set_log(){ + export LOG=true +} + set_username(){ USERNAME=$1 export USERNAME_ADF=$USERNAME @@ -101,6 +106,7 @@ set_timeout(){ } set_save_screenshot(){ + mkdir -p ./e2e-output/junit-report export SAVE_SCREENSHOT=true } @@ -174,6 +180,7 @@ while [[ $1 == -* ]]; do -proxy|--proxy) set_proxy $2; shift 2;; -s|--seleniumServer) set_selenium $2; shift 2;; -host|--host) set_host $2; shift 2;; + -log|--log) set_log; shift ;; -host_bpm|--host_bpm) set_host_bpm $2; shift 2;; -host_sso|--host_sso) set_host_sso $2; shift 2;; -host_identity|--host_identity) set_host_identity $2; shift 2;; diff --git a/scripts/travis/e2e/content-services-e2e.sh b/scripts/travis/e2e/content-services-e2e.sh index 7d9ea5edc3..9e04695896 100755 --- a/scripts/travis/e2e/content-services-e2e.sh +++ b/scripts/travis/e2e/content-services-e2e.sh @@ -11,9 +11,9 @@ CONTEXT_ENV="content-services" AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")"; -RUN_CHECK=$(echo node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1) -RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b || exit 1) -if [[ $AFFECTED_LIBS =~ "$CONTEXT_ENV$" || $TRAVIS_PULL_REQUEST == "false" ]]; +node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 +RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -m 3 || exit 1) +if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "$CONTEXT_ENV" || $TRAVIS_PULL_REQUEST == "false" ]]; then $RUN_CHECK $RUN_E2E --folder $CONTEXT_ENV diff --git a/scripts/travis/e2e/core-e2e.sh b/scripts/travis/e2e/core-e2e.sh index 8215044b57..6b83320ed4 100755 --- a/scripts/travis/e2e/core-e2e.sh +++ b/scripts/travis/e2e/core-e2e.sh @@ -11,15 +11,12 @@ CONTEXT_ENV="core" AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")"; -RUN_CHECK_PS=$(echo node ./scripts/check-env/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 ) -RUN_CHECK_CS=$(echo node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 ) -RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" -save --use-dist -b ) +node ./scripts/check-env/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 +node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 +RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -m 3 ) - -if [[ $AFFECTED_LIBS =~ "$CONTEXT_ENV$" || $TRAVIS_PULL_REQUEST == "false" ]]; +if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "$CONTEXT_ENV" || $TRAVIS_PULL_REQUEST == "false" ]]; then - $RUN_CHECK_PS - $RUN_CHECK_CS $RUN_E2E --folder $CONTEXT_ENV else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; then @@ -28,8 +25,6 @@ else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; if [[ $LIST_SPECS != "" ]]; then echo "Run $CONTEXT_ENV e2e based on the sha $HEAD_SHA_BRANCH with the specs: "$LIST_SPECS - $RUN_CHECK_PS - $RUN_CHECK_CS $RUN_E2E --specs "$LIST_SPECS" fi fi diff --git a/scripts/travis/e2e/insights-e2e.sh b/scripts/travis/e2e/insights-e2e.sh index fce77198f2..6b302285c4 100755 --- a/scripts/travis/e2e/insights-e2e.sh +++ b/scripts/travis/e2e/insights-e2e.sh @@ -7,7 +7,7 @@ cd $DIR/../../../ ./scripts/git-util/check-branch-updated.sh -b $TRAVIS_BRANCH || exit 1; AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; -if [[ $AFFECTED_LIBS =~ "process-services-cloud$" || $TRAVIS_PULL_REQUEST == "false" ]]; +if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "insight" || $TRAVIS_PULL_REQUEST == "false" ]]; then node ./scripts/check-env/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1; ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --folder insights --use-dist || exit 1; diff --git a/scripts/travis/e2e/process-services-cloud-e2e.sh b/scripts/travis/e2e/process-services-cloud-e2e.sh index e36506552e..436fcd0158 100755 --- a/scripts/travis/e2e/process-services-cloud-e2e.sh +++ b/scripts/travis/e2e/process-services-cloud-e2e.sh @@ -11,21 +11,20 @@ CONTEXT_ENV="process-services-cloud" AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")"; -RUN_CHECK=$(echo node ./scripts/check-env/check-activiti-env.js --host "$E2E_HOST_BPM" --oauth "$E2E_HOST_SSO" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" --client 'activiti' || exit 1 ) RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST_BPM" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" -host_sso "$E2E_HOST_SSO" -host_bpm "$E2E_HOST_BPM" -host_identity "$E2E_HOST_IDENTITY" -identity_admin_email "$E2E_ADMIN_EMAIL_IDENTITY" -identity_admin_password "$E2E_ADMIN_PASSWORD_IDENTITY" --use-dist ) -if [[ $AFFECTED_LIBS =~ "$CONTEXT_ENV$" || $TRAVIS_PULL_REQUEST == "false" ]]; +if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "$CONTEXT_ENV" || $TRAVIS_PULL_REQUEST == "false" ]]; then - $RUN_CHECK + node ./scripts/check-env/check-activiti-env.js --host "$E2E_HOST_BPM" --oauth "$E2E_HOST_SSO" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" --client 'activiti' || exit 1 $RUN_E2E --folder $CONTEXT_ENV else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; then HEAD_SHA_BRANCH="$(git merge-base origin/$TRAVIS_BRANCH HEAD)" LIST_SPECS="$(git diff --name-only $HEAD_SHA_BRANCH HEAD | grep "^e2e/$CONTEXT_ENV" | paste -sd , -)" + node ./scripts/check-env/check-activiti-env.js --host "$E2E_HOST_BPM" --oauth "$E2E_HOST_SSO" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" --client 'activiti' || exit 1 if [[ $LIST_SPECS != "" ]]; then echo "Run $CONTEXT_ENV e2e based on the sha $HEAD_SHA_BRANCH with the specs: "$LIST_SPECS - $RUN_CHECK $RUN_E2E --specs "$LIST_SPECS" fi fi diff --git a/scripts/travis/e2e/process-services-e2e.sh b/scripts/travis/e2e/process-services-e2e.sh index be2c3c8a83..819962ef9e 100755 --- a/scripts/travis/e2e/process-services-e2e.sh +++ b/scripts/travis/e2e/process-services-e2e.sh @@ -11,12 +11,11 @@ CONTEXT_ENV="process-services" AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV/")"; -RUN_CHECK=$(echo node ./scripts/check-env/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 ) -RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -m 2 ) +node ./scripts/check-env/check-ps-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 +RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -m 3 ) -if [[ $AFFECTED_LIBS =~ "$CONTEXT_ENV$" || $TRAVIS_PULL_REQUEST == "false" ]]; +if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "$CONTEXT_ENV" || $TRAVIS_PULL_REQUEST == "false" ]]; then - $RUN_CHECK $RUN_E2E --folder $CONTEXT_ENV else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; then @@ -25,7 +24,6 @@ else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; if [[ $LIST_SPECS != "" ]]; then echo "Run $CONTEXT_ENV e2e based on the sha $HEAD_SHA_BRANCH with the specs: "$LIST_SPECS - $RUN_CHECK $RUN_E2E --specs "$LIST_SPECS" fi fi diff --git a/scripts/travis/e2e/search-e2e.sh b/scripts/travis/e2e/search-e2e.sh index 438b41031c..4840574104 100755 --- a/scripts/travis/e2e/search-e2e.sh +++ b/scripts/travis/e2e/search-e2e.sh @@ -11,12 +11,11 @@ CONTEXT_ENV="search" AFFECTED_LIBS="$(./scripts/affected-libs.sh -gnu -b $TRAVIS_BRANCH)"; AFFECTED_E2E="$(./scripts/git-util/affected-folder.sh -b $TRAVIS_BRANCH -f "e2e/$CONTEXT_ENV")"; -RUN_CHECK=$(echo node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 ) -RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -save -b ) +node ./scripts/check-env/check-cs-env.js --host "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" || exit 1 +RUN_E2E=$(echo ./scripts/test-e2e-lib.sh -host http://localhost:4200 -proxy "$E2E_HOST" -u "$E2E_USERNAME" -p "$E2E_PASSWORD" -e "$E2E_EMAIL" --use-dist -b -m 3 ) -if [[ $AFFECTED_LIBS =~ "content-services$" || $TRAVIS_PULL_REQUEST == "false" ]]; +if [[ $AFFECTED_LIBS =~ "testing" || $AFFECTED_LIBS =~ "content-services" || $TRAVIS_PULL_REQUEST == "false" ]]; then - $RUN_CHECK $RUN_E2E --folder $CONTEXT_ENV else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; then @@ -25,7 +24,6 @@ else if [[ $AFFECTED_E2E = "e2e/$CONTEXT_ENV" ]]; if [[ $LIST_SPECS != "" ]]; then echo "Run $CONTEXT_ENV e2e based on the sha $HEAD_SHA_BRANCH with the specs: "$LIST_SPECS - $RUN_CHECK $RUN_E2E --specs "$LIST_SPECS" fi fi diff --git a/scripts/update-version.sh b/scripts/update-version.sh index e09cf71742..efcf393ee3 100755 --- a/scripts/update-version.sh +++ b/scripts/update-version.sh @@ -8,7 +8,8 @@ eval AUTO=false eval TOTAL_BUILD=true; eval SEMANTIC="minor"; -eval projects=( "core" +eval projects=( "cli" + "core" "content-services" "process-services" "process-services-cloud" diff --git a/tools/doc/buildYamlSourceInfo.js b/tools/doc/buildYamlSourceInfo.js index 1becacdba2..da927b8771 100644 --- a/tools/doc/buildYamlSourceInfo.js +++ b/tools/doc/buildYamlSourceInfo.js @@ -2,7 +2,6 @@ var fs = require("fs"); var path = require("path"); var ejs = require("ejs"); - var templateFolder = path.resolve("tools", "doc", "yamlTemplates"); var outputFolder = path.resolve("docs", "sourceinfo"); @@ -30,9 +29,9 @@ var template = ejs.compile( searchItemsRecursively(docData); - function searchItemsRecursively(item) { if (interestedIn(item.kind)) { + processItem(item); } else if (item.children) { item.children.forEach(child => { @@ -41,14 +40,17 @@ function searchItemsRecursively(item) { } } - function interestedIn(itemKind) { return (itemKind === 128) || (itemKind === 256) || (itemKind === 4194304); } function processItem(item) { - //console.log(`Generating ${item.name}`); var docText = template(item); - fs.writeFileSync(path.resolve(outputFolder, item.name + ".yml"), docText); -} \ No newline at end of file + + if( item.name === 'Widget'){ + console.log('item ' + JSON.stringify(item.name )); + } + + fs.writeFileSync(path.resolve(outputFolder, item.name + ".yml"), docText); +} diff --git a/tools/doc/docProcessor.js b/tools/doc/docProcessor.js index 414532d7ab..d4a2599d3e 100644 --- a/tools/doc/docProcessor.js +++ b/tools/doc/docProcessor.js @@ -6,14 +6,9 @@ var lodash = require("lodash"); var jsyaml = require("js-yaml"); var remark = require("remark"); -var parse = require("remark-parse"); -var stringify = require("remark-stringify"); var frontMatter = require("remark-frontmatter"); var mdCompact = require("mdast-util-compact"); -//var tdoc = require("typedoc"); - -var ngHelpers = require("./ngHelpers"); var si = require("./SourceInfoClasses"); // "Aggregate" data collected over the whole file set. @@ -24,15 +19,6 @@ var configFileName = "doctool.config.json"; var defaultFolder = path.resolve("docs"); var sourceInfoFolder = path.resolve("docs", "sourceinfo"); -var libFolders = [ - "core", "content-services", "process-services", - "insights", "process-services-cloud", "extensions" -]; - -var excludePatterns = [ - "**/*.spec.ts" -]; - function updatePhase(mdCache, aggData) { var errorMessages; @@ -142,63 +128,6 @@ function initMdCache(filenames) { return mdCache; } -/* -function getSourceInfo(infoFolder) { - var sourceInfo = {}; - - var yamlFiles = fs.readdirSync(infoFolder); - - yamlFiles.forEach(file => { - var yamlText = fs.readFileSync(path.resolve(infoFolder, file), "utf8"); - var yaml = jsyaml.safeLoad(yamlText); - sou - }); -} - -/* -function initSourceInfo(aggData, mdCache) { - - var app = new tdoc.Application({ - exclude: excludePatterns, - ignoreCompilerErrors: true, - experimentalDecorators: true, - tsconfig: "tsconfig.json" - }); - - let sources = app.expandInputFiles(libFolders.map(folder => { - return path.resolve("lib", folder); - })); - - aggData.projData = app.convert(sources); - - - aggData.classInfo = {}; - - var mdFiles = Object.keys(mdCache); - - mdFiles.forEach(mdFile => { - - var className = ngHelpers.ngNameToClassName(path.basename(mdFile, ".md"), aggData.config.typeNameExceptions); - var classRef = aggData.projData.findReflectionByName(className); - - - var className = ngHelpers.ngNameToClassName(path.basename(mdFile, ".md"), aggData.config.typeNameExceptions); - var yamlText = fs.readFileSync(path.resolve(sourceInfoFolder, className + ".yml"), "utf8"); - var yaml = jsyaml.safeLoad(yamlText); - - if (yaml) { - aggData.classInfo[className] = new si.ComponentInfo(yaml); - } - - if (classRef) { - aggData.classInfo[className] = new si.ComponentInfo(classRef); - } - - - }); -} -*/ - function initClassInfo(aggData) { var yamlFilenames = fs.readdirSync(path.resolve(sourceInfoFolder)); @@ -278,21 +207,9 @@ files = files.filter(filename => var mdCache = initMdCache(files); console.log("Loading source data..."); -//initSourceInfo(aggData, mdCache); initClassInfo(aggData); -/* -console.log("Initialising..."); -initPhase(aggData); - -console.log("Analysing Markdown files..."); -readPhase(mdCache, aggData); - -console.log("Computing aggregate data..."); -aggPhase(aggData); -*/ - console.log("Updating Markdown files..."); updatePhase(mdCache, aggData); diff --git a/tools/doc/mdNav.ts b/tools/doc/mdNav.ts index e9a1c875bc..2ac4bf7eae 100644 --- a/tools/doc/mdNav.ts +++ b/tools/doc/mdNav.ts @@ -1,6 +1,6 @@ export class MDNav { - + constructor(public root: any, public pos: number = 0) {} find(test: (element: any) => boolean = () => true, index: number = 0): MDNav { @@ -25,7 +25,6 @@ export class MDNav { return new MDNav(this.root, this.root.children.length); } - findAll(test: (element: any) => boolean = () => true, index: number = 0): MDNav[] { if (!this.root || !this.root.children) { return []; @@ -89,7 +88,7 @@ export class MDNav { return h.type === "link" && test(h); }, index); } - + list(test: (element: any) => boolean = () => true, index: number = 0): MDNav { return this.find((h) => { return h.type === "list" && test(h); @@ -165,7 +164,7 @@ export class MDNav { (this.pos >= this.root.children.length); } - + get childNav(): MDNav { return new MDNav(this.item); } @@ -181,7 +180,7 @@ export class MDNav { get textValue() : string { - if (this.item) { + if (this.item) { if (this.item["value"]) { return this.item.value; } else if ( @@ -197,4 +196,4 @@ export class MDNav { return ""; } } -} \ No newline at end of file +} diff --git a/tools/doc/mqDefs.js b/tools/doc/mqDefs.js index b2a27c58aa..69f1481f0a 100644 --- a/tools/doc/mqDefs.js +++ b/tools/doc/mqDefs.js @@ -1,8 +1,11 @@ "use strict"; var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); + } return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } diff --git a/tools/doc/reviewChecker.ts b/tools/doc/reviewChecker.ts index 97ab21eec4..0eabace33c 100644 --- a/tools/doc/reviewChecker.ts +++ b/tools/doc/reviewChecker.ts @@ -33,14 +33,6 @@ let libFolders = ["core", "content-services", "extensions", "insights", "process libsearch(srcData, path.resolve(libFolder)); -/* -let keys = Object.keys(srcData); - -for (let i = 0; i < keys.length; i++) { - console.log(keys[i]); -} -*/ - const authToken = process.env.graphAuthToken; const client = new GraphQLClient('https://api.github.com/graphql', { @@ -147,20 +139,6 @@ function getDocFilePaths(folderPath) { libFolders.forEach(element => { let libPath = path.resolve(folderPath, element); addItemsRecursively(libPath, result); - let items = fs.readdirSync(libPath); - -/* - - files = files.filter(filename => - (path.extname(filename) === ".md") && - (filename !== "README.md") && - (filename.match(angFilePattern)) - ); - - files.forEach(element => { - result.push(path.join(libPath, element)); - }); - */ }); diff --git a/tools/doc/templates/component.ejs b/tools/doc/templates/component.ejs index ab63c186ab..59caf80422 100644 --- a/tools/doc/templates/component.ejs +++ b/tools/doc/templates/component.ejs @@ -2,7 +2,7 @@ ### Properties | Name | Type | Default value | Description | -| -- | -- | -- | -- | +| --- | --- | --- | --- | <% properties.forEach(function(prop) { -%> <% if (prop.isInput) { -%> | <%= prop.name %> | <% if (prop.type) { %>`<%- prop.type %>`<% } %> | <%- prop.defaultValue %> | <%- prop.docText %> | @@ -14,10 +14,10 @@ ### Events | Name | Type | Description | -| -- | -- | -- | +| --- | --- | --- | <% properties.forEach(function(prop) { -%> <% if (prop.isOutput) { -%> | <%= prop.name %> | `<%- prop.type %>` | <%- prop.docText %> | <% } -%> <% }) -%> -<% } %> \ No newline at end of file +<% } %> diff --git a/tools/doc/templates/directive.ejs b/tools/doc/templates/directive.ejs index eddb510277..5cb2d8cd9c 100644 --- a/tools/doc/templates/directive.ejs +++ b/tools/doc/templates/directive.ejs @@ -2,7 +2,7 @@ ### Properties | Name | Type | Default value | Description | -| -- | -- | -- | -- | +| --- | --- | --- | --- | <% properties.forEach(function(prop) { -%> <% if (prop.isInput) { -%> | <%= prop.name %> | `<%- prop.type %>` | <%- prop.defaultValue %> | <%- prop.docText %> | @@ -14,10 +14,10 @@ ### Events | Name | Type | Description | -| -- | -- | -- | +| --- | --- | --- | <% properties.forEach(function(prop) { -%> <% if (prop.isOutput) { -%> | <%= prop.name %> | `<%- prop.type %>` | <%- prop.docText %> | <% } -%> <% }) -%> -<% } %> \ No newline at end of file +<% } %> diff --git a/tools/doc/templates/gqIndex.ejs b/tools/doc/templates/gqIndex.ejs index ef3d45557b..d99df7f21e 100644 --- a/tools/doc/templates/gqIndex.ejs +++ b/tools/doc/templates/gqIndex.ejs @@ -3,8 +3,10 @@ return fullPath.substring(fullPath.indexOf('docs') + 5).replace('\\', '/') } - function relSrcPath(fullPath) { - return '../' + fullPath.substring(fullPath.indexOf('lib')).replace('\\', '/') + function relSrcPath(document) { + if(document && document.heading && document.heading.link && document.heading.link.url){ + return '../' + document.heading.link.url.substring(document.heading.link.url.indexOf('lib')).replace('\\', '/') + } } function renderSection(sectionName) { @@ -15,14 +17,14 @@ ### <%= sectionName %> | Name | Description | Source link | -| -- | -- | --| +| --- | --- | --| <% } sectionDocs.forEach(document => { -%> | [<%= document['title'] %>](<%= relDocPath(document['id']) %>) -%> <% if (document['status'] && document['status'] !== 'Active') { -%> ![<%= document['status'] %>](docassets/images/<%= document['status'] %>Icon.png) <% } -%> -| <%= document['paragraph']['plaintext'] %> | [Source](<%= relSrcPath(document['heading']['link']['url']) %>) | +| <%= document['paragraph']['plaintext'] %> | [Source](<%= relSrcPath(document) %>) | <% }); } -%> diff --git a/tools/doc/templates/licensePage.ejs b/tools/doc/templates/licensePage.ejs index dcefea96cf..3466d4a9e6 100644 --- a/tools/doc/templates/licensePage.ejs +++ b/tools/doc/templates/licensePage.ejs @@ -9,7 +9,7 @@ This page lists all third party libraries that ADF <%= projVersion %> depends on ## Libraries | Name | Version | License | -| -- | -- | -- | +| --- | --- | --- | <% for (var packageName in packages) { var lastAtSignPos = packageName.lastIndexOf('@'); @@ -25,4 +25,4 @@ This page lists all third party libraries that ADF <%= projVersion %> depends on } -%> | <%= linkedName %> | <%= version %> | <%= licenses %> | -<% } %> \ No newline at end of file +<% } %> diff --git a/tools/doc/templates/tutIndex.ejs b/tools/doc/templates/tutIndex.ejs index fbce18bb0b..9b9a0086ad 100644 --- a/tools/doc/templates/tutIndex.ejs +++ b/tools/doc/templates/tutIndex.ejs @@ -1,5 +1,5 @@ | Name | Level | Abstract | -| -- | -- | -- | +| --- | --- | --- | <% tuts.forEach(function(tut) { -%> | [**<%= tut.title %>**](<%= tut.link %>) | <%= tut.level %> | <%= tut.briefDesc %> | -<% }) %> \ No newline at end of file +<% }) %> diff --git a/tools/doc/tools/fileChecker.ts b/tools/doc/tools/fileChecker.ts index be922b1c8e..c4a6231f94 100644 --- a/tools/doc/tools/fileChecker.ts +++ b/tools/doc/tools/fileChecker.ts @@ -7,7 +7,6 @@ import * as lev from "fast-levenshtein"; import * as ngHelpers from "../ngHelpers"; - const imageFolderPath = path.resolve('docs', 'docassets', 'images'); // Using this value for the edit distance between Markdown image URLs @@ -15,8 +14,6 @@ const imageFolderPath = path.resolve('docs', 'docassets', 'images'); // folder in the path. Keeping it low avoids crazy suggestions. const maxImagePathLevDistance = 7; - - export function processDocs(mdCache, aggData, errorMessages) { var pathnames = Object.keys(mdCache); @@ -40,7 +37,7 @@ export function processDocs(mdCache, aggData, errorMessages) { } } else { let linkElems = selectAll('link', tree); - + linkElems.forEach(linkElem => { let normUrl = normaliseLinkPath(pathname, linkElem.url); multiSetAdd(linkRefs, normUrl, pathname); @@ -138,4 +135,4 @@ function multiSetAdd(container: {}, key: string, value: string) { } else { container[key] = [ value ]; } -} \ No newline at end of file +} diff --git a/tools/doc/tools/gqIndex.js b/tools/doc/tools/gqIndex.js index 5907c48d98..569cafacb0 100644 --- a/tools/doc/tools/gqIndex.js +++ b/tools/doc/tools/gqIndex.js @@ -13,7 +13,7 @@ var libNamesList = [ 'insights', 'process-services', 'process-services-cloud' ]; var query = "\n query libIndex($libName: String) {\n documents(idFilter: $libName) {\n title: metadata(key: \"Title\")\n status: metadata(key: \"Status\")\n id\n classType: folder(depth: 2)\n heading {\n link {\n url\n }\n }\n paragraph {\n plaintext\n }\n }\n }\n"; -function processDocs(mdCache, aggData, _errorMessages) { +function processDocs(mdCache, aggData) { var docset = new MQ.Docset(mdCache); var templateFilePath = path.resolve(__dirname, '..', 'templates', 'gqIndex.ejs'); var templateSource = fs.readFileSync(templateFilePath, 'utf8'); diff --git a/tools/doc/tools/gqIndex.ts b/tools/doc/tools/gqIndex.ts index 219fc0b6e8..60ea660d7a 100644 --- a/tools/doc/tools/gqIndex.ts +++ b/tools/doc/tools/gqIndex.ts @@ -37,7 +37,7 @@ let query = ` `; -export function processDocs(mdCache, aggData, _errorMessages) { +export function processDocs(mdCache, aggData) { let docset: MQ.Docset = new MQ.Docset(mdCache); let templateFilePath = path.resolve(__dirname, '..', 'templates', 'gqIndex.ejs'); @@ -77,7 +77,7 @@ export function processDocs(mdCache, aggData, _errorMessages) { }); }); - + } diff --git a/tools/doc/tools/index.js b/tools/doc/tools/index.js index 5e59c40d3a..c8657a4f8d 100644 --- a/tools/doc/tools/index.js +++ b/tools/doc/tools/index.js @@ -2,7 +2,6 @@ var fs = require("fs"); var path = require("path"); var remark = require("remark"); -var stringify = require("remark-stringify"); var frontMatter = require("remark-frontmatter"); var zone = require("mdast-zone"); var yaml = require("js-yaml"); @@ -14,10 +13,7 @@ var mdNav = require("../mdNav"); module.exports = { "processDocs": processDocs -} - -var angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(dialog)|(directive)|(model)|(pipe)|(service)|(widget))\.ts/; -var searchFolderOmitRegex = /(config)|(mock)|(i18n)|(assets)|(styles)/; +}; var docsFolderPath = path.resolve("docs"); var rootFolder = "lib"; @@ -26,8 +22,6 @@ var indexMdFilePath = path.resolve(docsFolderPath, "README.md"); var guideFolderName = "user-guide"; var guideSummaryFileName = path.resolve(docsFolderPath, guideFolderName, "summary.json"); -var maxBriefDescLength = 180; - var adfLibNames = [ "core", "content-services", "insights", "process-services", "process-services-cloud", "extensions" @@ -35,14 +29,12 @@ var adfLibNames = [ var statusIcons; - -function processDocs(mdCache, aggData, _errorMessages) { +function processDocs(mdCache, aggData) { initPhase(aggData); readPhase(mdCache, aggData); aggPhase(aggData); } - function initPhase(aggData) { statusIcons = aggData.config["statusIcons"] || {}; aggData.stoplist = makeStoplist(aggData.config); @@ -53,7 +45,6 @@ function initPhase(aggData) { searchLibraryRecursive(aggData.srcData, path.resolve(rootFolder)); } - function readPhase(mdCache, aggData) { var pathnames = Object.keys(mdCache); @@ -62,7 +53,6 @@ function readPhase(mdCache, aggData) { }); } - function getFileData(tree, pathname, aggData) { var itemName = path.basename(pathname, ".md"); @@ -162,8 +152,6 @@ function aggPhase(aggData) { subIndexText = remark().use(frontMatter, ["yaml"]).data("settings", {paddedTable: false}).stringify(subIndexTree); fs.writeFileSync(subIndexFilePath, subIndexText); - - //fs.writeFileSync(indexMdFilePath, remark().stringify(indexFileTree)); } @@ -190,7 +178,6 @@ function rejectItemViaStoplist(stoplist, itemName) { return false; } - function prepareIndexSections(aggData) { var srcNames = Object.keys(aggData.srcData); var sections = initEmptySections(); diff --git a/tools/doc/tools/linkFixer.js b/tools/doc/tools/linkFixer.js index 78269333be..34d6230a57 100644 --- a/tools/doc/tools/linkFixer.js +++ b/tools/doc/tools/linkFixer.js @@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); var path = require("path"); var fs = require("fs"); var unist_util_select_1 = require("unist-util-select"); -var angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(dialog)|(directive)|(interface)|(model)|(pipe)|(service)|(widget))/; var suffixesNotToCheck = /\.ts/; function processDocs(mdCache, aggData, errorMessages) { var pathnames = Object.keys(mdCache); @@ -11,12 +10,6 @@ function processDocs(mdCache, aggData, errorMessages) { var imageFolderPath = path.resolve(aggData['rootFolder'], 'docs', 'docassets', 'images'); var imageSet = new LinkSet(getImagePaths(imageFolderPath)); pathnames.forEach(function (pathname) { - var fileBaseName = path.basename(pathname, '.md'); - /* - if (!fileBaseName.match(angFilenameRegex)) { - return; - } - */ var tree = mdCache[pathname].mdOutTree; fixUrls(tree, pathname, linkSet, 'link'); fixUrls(tree, pathname, imageSet, 'image'); diff --git a/tools/doc/tools/linkFixer.ts b/tools/doc/tools/linkFixer.ts index 4d3ca1bf37..d1b52ff9bd 100644 --- a/tools/doc/tools/linkFixer.ts +++ b/tools/doc/tools/linkFixer.ts @@ -4,29 +4,20 @@ import * as fs from 'fs'; import { selectAll } from 'unist-util-select'; import { MDAST } from 'mdast'; - -const angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(dialog)|(directive)|(interface)|(model)|(pipe)|(service)|(widget))/; const suffixesNotToCheck = /\.ts/; export function processDocs(mdCache, aggData, errorMessages) { var pathnames = Object.keys(mdCache); let linkSet = new LinkSet(pathnames); - + let imageFolderPath = path.resolve(aggData['rootFolder'], 'docs', 'docassets', 'images'); let imageSet = new LinkSet(getImagePaths(imageFolderPath)); pathnames.forEach(pathname => { - let fileBaseName = path.basename(pathname, '.md'); - - /* - if (!fileBaseName.match(angFilenameRegex)) { - return; - } - */ let tree = mdCache[pathname].mdOutTree; - + fixUrls(tree, pathname, linkSet, 'link'); fixUrls(tree, pathname, imageSet, 'image'); }); @@ -54,7 +45,7 @@ function fixUrls(tree: MDAST.Root, docFilePath: string, linkSet: LinkSet, select (origFullUrlPath !== '') && !fs.existsSync(origFullUrlPath) ) { - let newUrl = linkSet.update(origFullUrlPath) || origFullUrlPath; + let newUrl = linkSet.update(origFullUrlPath) || origFullUrlPath; linkElem.url = path.relative(path.dirname(docFilePath), newUrl).replace(/\\/g,'/') + anchor; errors.push(`Bad link: ${origFullUrlPath}\nReplacing with ${linkElem.url}`); } /*else { @@ -93,14 +84,14 @@ class LinkSet { urls.forEach(url => { let fileName = path.basename(url); - + if (this.links.has(fileName)) { let item = this.links.get(fileName); item.push(url); } else { this.links.set(fileName, [url]); } - }); + }); } update(oldUrl: string): string { diff --git a/tools/doc/tools/reducer.ts b/tools/doc/tools/reducer.ts index e646e92b39..227c1154fb 100644 --- a/tools/doc/tools/reducer.ts +++ b/tools/doc/tools/reducer.ts @@ -1,8 +1,5 @@ -import * as path from "path"; -import * as fs from "fs"; - import { select, selectAll } from "unist-util-select"; export function processDocs(mdCache, aggData, errorMessages) { -} \ No newline at end of file +} diff --git a/tools/doc/tools/seealso.js b/tools/doc/tools/seealso.js index 47d998370a..d1ee7960b3 100644 --- a/tools/doc/tools/seealso.js +++ b/tools/doc/tools/seealso.js @@ -1,5 +1,4 @@ var path = require("path"); -var getSection = require("mdast-util-heading-range"); var unist = require("../unistHelpers"); @@ -21,7 +20,7 @@ function initPhase(aggData) { function readPhase(tree, pathname, aggData) { var saHeadingOffset = findSeeAlsoSection(tree); - + var saNode = []; if (saHeadingOffset !== -1) { @@ -39,7 +38,7 @@ function readPhase(tree, pathname, aggData) { for (var i = 0; i < list.children.length; i++) { var itemLink = getItemLinkInfo(list.children[i]); - + if (itemLink) { saNode.push(itemLink); } @@ -112,7 +111,7 @@ function tidyName(name) { function makeEmptySAList() { var result = []; - + } @@ -130,7 +129,7 @@ function tidyGraph(graph) { var currNodeName = nodeNames[n]; var currNodeArcs = graph[currNodeName]; - + for (var a = 0; a < currNodeArcs.length; a++) { var linkedNode = graph[currNodeArcs[a]]; var resultNode = result[currNodeArcs[a]]; @@ -139,7 +138,7 @@ function tidyGraph(graph) { console.log(`Warning: item '${currNodeArcs[a]}' (in See Also section of '${currNodeName}') has no corresponding file`); } else if (linkedNode.indexOf(currNodeName) === -1) { linkedNode.push(currNodeName); - resultNode.push(currNodeName); + resultNode.push(currNodeName); } } } diff --git a/tools/doc/tools/sourceLinker.js b/tools/doc/tools/sourceLinker.js index 708483aebc..975b729538 100644 --- a/tools/doc/tools/sourceLinker.js +++ b/tools/doc/tools/sourceLinker.js @@ -4,7 +4,7 @@ var path = require("path"); var unist_util_select_1 = require("unist-util-select"); var ngHelpers = require("../ngHelpers"); var angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(dialog)|(directive)|(interface)|(model)|(pipe)|(service)|(widget))/; -function processDocs(mdCache, aggData, errorMessages) { +function processDocs(mdCache, aggData) { var pathnames = Object.keys(mdCache); pathnames.forEach(function (pathname) { var fileBaseName = path.basename(pathname, '.md'); @@ -18,7 +18,7 @@ function processDocs(mdCache, aggData, errorMessages) { var titleHeading = unist_util_select_1.select('heading[depth=1]:first-of-type', tree); var relDocPath = pathname.substring(pathname.indexOf('docs')); var srcUrl = fixRelSrcUrl(relDocPath, sourcePath); - if (titleHeading.children[0].type === "text") { + if (titleHeading && titleHeading.children[0] && titleHeading.children[0].type === "text") { var titleText = titleHeading.children[0]; titleHeading.children[0] = { type: 'link', @@ -27,9 +27,9 @@ function processDocs(mdCache, aggData, errorMessages) { children: [titleText] }; } - else if ((titleHeading.children[0].type === "link") && sourcePath) { + else if ((titleHeading && titleHeading.children[0].type === "link") && sourcePath) { var linkElem = titleHeading.children[0]; - linkElem.url = srcUrl, //`../../${sourcePath}`; + linkElem.url = srcUrl, linkElem.title = "Defined in " + path.basename(sourcePath); } }); diff --git a/tools/doc/tools/sourceLinker.ts b/tools/doc/tools/sourceLinker.ts index 4db2d32757..fd20072203 100644 --- a/tools/doc/tools/sourceLinker.ts +++ b/tools/doc/tools/sourceLinker.ts @@ -4,11 +4,9 @@ import { select } from "unist-util-select"; import * as ngHelpers from "../ngHelpers"; - const angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(dialog)|(directive)|(interface)|(model)|(pipe)|(service)|(widget))/; - -export function processDocs(mdCache, aggData, errorMessages) { +export function processDocs(mdCache, aggData) { var pathnames = Object.keys(mdCache); pathnames.forEach(pathname => { @@ -26,7 +24,7 @@ export function processDocs(mdCache, aggData, errorMessages) { let relDocPath = pathname.substring(pathname.indexOf('docs')); let srcUrl = fixRelSrcUrl(relDocPath, sourcePath); - if (titleHeading.children[0].type === "text") { + if (titleHeading && titleHeading.children[0] && titleHeading.children[0].type === "text") { let titleText = titleHeading.children[0]; titleHeading.children[0] = { type: 'link', @@ -34,7 +32,7 @@ export function processDocs(mdCache, aggData, errorMessages) { title: `Defined in ${path.basename(sourcePath)}`, children: [titleText] } - } else if ((titleHeading.children[0].type === "link") && sourcePath) { + } else if ((titleHeading && titleHeading.children[0].type === "link") && sourcePath) { let linkElem = titleHeading.children[0]; linkElem.url = srcUrl, //`../../${sourcePath}`; linkElem.title = `Defined in ${path.basename(sourcePath)}`; @@ -52,4 +50,4 @@ function fixRelSrcUrl(docPath: string, srcPath: string) { } return dotPathPart + srcPath; -} \ No newline at end of file +} diff --git a/tools/doc/tools/tsInfo.ts b/tools/doc/tools/tsInfo.ts index 9835287ea4..d2bb613537 100644 --- a/tools/doc/tools/tsInfo.ts +++ b/tools/doc/tools/tsInfo.ts @@ -3,15 +3,9 @@ import * as path from "path"; import * as replaceSection from "mdast-util-heading-range"; import * as remark from "remark"; -// import * as stringify from "remark-stringify"; -// import * as frontMatter from "remark-frontmatter"; import * as ejs from "ejs"; -import { - Application, - } from "typedoc"; - import { MDNav } from "../mdNav"; import { ngNameToClassName } from "../ngHelpers"; @@ -19,21 +13,12 @@ import { ComponentInfo } from "../SourceInfoClasses" - -let libFolders = ["core", "content-services", "process-services", "insights", "process-services-cloud"]; let templateFolder = path.resolve("tools", "doc", "templates"); -let excludePatterns = [ - "**/*.spec.ts" -]; - - let nameExceptions; export function processDocs(mdCache, aggData, _errorMessages) { - //initPhase(aggData); - nameExceptions = aggData.config.typeNameExceptions; let pathnames = Object.keys(mdCache); @@ -61,39 +46,7 @@ function showErrors(filename, errorMessages) { } -/* -function initPhase(aggData) { - nameExceptions = aggData.config.typeNameExceptions; - - let app = new Application({ - exclude: excludePatterns, - ignoreCompilerErrors: true, - experimentalDecorators: true, - tsconfig: "tsconfig.json" - }); - - let sources = app.expandInputFiles(libFolders.map(folder => { - return path.resolve("lib", folder); - })); - - aggData.projData = app.convert(sources); -} -*/ - - - function updateFile(tree, pathname, aggData, errorMessages) { - /* - let compName = angNameToClassName(path.basename(pathname, ".md")); - let classRef = aggData.projData.findReflectionByName(compName); - - if (!classRef) { - // A doc file with no corresponding class (eg, Document Library Model). - return false; - } - - let compData = new ComponentInfo(classRef); - */ let className = ngNameToClassName(path.basename(pathname, ".md"), nameExceptions); let classTypeMatch = className.match(/component|directive|service/i); @@ -135,39 +88,6 @@ function updateFile(tree, pathname, aggData, errorMessages) { return true; } -/* -function initialCap(str: string) { - return str[0].toUpperCase() + str.substr(1); -} - - -function angNameToClassName(rawName: string) { - if (nameExceptions[rawName]) - return nameExceptions[rawName]; - - var name = rawName.replace(/\]|\(|\)/g, ''); - - var fileNameSections = name.split('.'); - var compNameSections = fileNameSections[0].split('-'); - - var outCompName = ''; - - for (var i = 0; i < compNameSections.length; i++) { - outCompName = outCompName + initialCap(compNameSections[i]); - } - - var itemTypeIndicator = ''; - - if (fileNameSections.length > 1) { - itemTypeIndicator = initialCap(fileNameSections[1]); - } - - var finalName = outCompName + itemTypeIndicator; - - return finalName; -} -*/ - function getPropDocsFromMD(tree, sectionHeading, docsColumn) { let result = {} @@ -259,10 +179,6 @@ function getMethodDocsFromMD(tree) { methItem = methListItems .listItem(l=>true, i); } - /* - let newRoot = unist.makeRoot([methList.item]); - console.log(remark().use(frontMatter, {type: 'yaml', fence: '---'}).data("settings", {paddedTable: false, gfm: false}).stringify(tree)); - */ return result; } diff --git a/tools/doc/tools/tutorialIndex.ts b/tools/doc/tools/tutorialIndex.ts index b3c93b846e..b961e615e8 100644 --- a/tools/doc/tools/tutorialIndex.ts +++ b/tools/doc/tools/tutorialIndex.ts @@ -3,7 +3,6 @@ import * as path from "path"; import * as replaceSection from "mdast-util-heading-range"; import * as remark from "remark"; -import * as stringify from "remark-stringify"; import * as frontMatter from "remark-frontmatter"; import * as yaml from "js-yaml"; import * as ejs from "ejs"; @@ -15,12 +14,12 @@ const templateFolder = path.resolve("tools", "doc", "templates"); const userGuideFolder = path.resolve("docs", "user-guide"); -export function processDocs(tree, pathname, aggData, errorMessages) { - aggPhase(aggData); +export function processDocs() { + aggPhase(); } -function aggPhase(aggData) { +function aggPhase() { let indexDocData = getIndexDocData(); let templateName = path.resolve(templateFolder, "tutIndex.ejs"); @@ -118,7 +117,7 @@ function getFirstParagraph(tree) { if (s < tree.children.length) { return tree.children[s]; - + } else { return null; } @@ -131,8 +130,8 @@ function getFirstHeading(tree) { if (s < tree.children.length) { return tree.children[s]; - + } else { return null; } -} \ No newline at end of file +} diff --git a/tools/doc/tools/typeLinker.js b/tools/doc/tools/typeLinker.js index 2e78e159d8..a7c62f64b6 100644 --- a/tools/doc/tools/typeLinker.js +++ b/tools/doc/tools/typeLinker.js @@ -1,5 +1,5 @@ "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); +exports.__esModule = true; var path = require("path"); var unist = require("../unistHelpers"); var ngHelpers = require("../ngHelpers"); @@ -8,15 +8,13 @@ var includedNodeTypes = [ "table", "tableRow", "tableCell", "emphasis", "strong", "link", "text" ]; -var docFolder = path.resolve("docs"); -var adfLibNames = ["core", "content-services", "insights", "process-services", "process-services-cloud", "extensions"]; var externalNameLinks; var linkOverrides; -function processDocs(mdCache, aggData, errorMessages) { +function processDocs(mdCache, aggData) { initPhase(aggData, mdCache); var pathnames = Object.keys(mdCache); pathnames.forEach(function (pathname) { - updateFile(mdCache[pathname].mdOutTree, pathname, aggData, errorMessages); + updateFile(mdCache[pathname].mdOutTree, pathname, aggData); }); } exports.processDocs = processDocs; @@ -28,21 +26,6 @@ function initPhase(aggData, mdCache) { }); aggData.docFiles = {}; aggData.nameLookup = new SplitNameLookup(); - /* - adfLibNames.forEach(libName => { - let libFolderPath = path.resolve(docFolder, libName); - - let files = fs.readdirSync(libFolderPath); - - files.forEach(file => { - if (path.extname(file) === ".md") { - let relPath = libFolderPath.substr(libFolderPath.indexOf("docs") + 5).replace(/\\/, "/") + "/" + file; - let compName = path.basename(file, ".md"); - aggData.docFiles[compName] = relPath; - } - }); - }); - */ var docFilePaths = Object.keys(mdCache); docFilePaths.forEach(function (docFilePath) { var relPath = docFilePath.substring(docFilePath.indexOf('docs') + 5).replace(/\\/g, "/"); @@ -55,9 +38,8 @@ function initPhase(aggData, mdCache) { aggData.nameLookup.addName(currClassName); } }); - //console.log(JSON.stringify(aggData.nameLookup)); } -function updateFile(tree, pathname, aggData, _errorMessages) { +function updateFile(tree, pathname, aggData) { traverseMDTree(tree); return true; function traverseMDTree(node) { @@ -65,7 +47,7 @@ function updateFile(tree, pathname, aggData, _errorMessages) { return; } if (node.type === "link") { - if (node.children && ((node.children[0].type === "inlineCode") || + if (node.children[0] && ((node.children[0].type === "inlineCode") || (node.children[0].type === "text"))) { var link = resolveTypeLink(aggData, pathname, node.children[0].value); if (link) { @@ -84,15 +66,10 @@ function updateFile(tree, pathname, aggData, _errorMessages) { } var _a; }); - } /*else if (node.children) { - node.children.forEach(child => { - traverseMDTree(child); - }); } - */ } } -var SplitNameNode = /** @class */ (function () { +var SplitNameNode = (function () { function SplitNameNode(key, value) { if (key === void 0) { key = ""; } if (value === void 0) { value = ""; } @@ -105,21 +82,21 @@ var SplitNameNode = /** @class */ (function () { }; return SplitNameNode; }()); -var SplitNameMatchElement = /** @class */ (function () { +var SplitNameMatchElement = (function () { function SplitNameMatchElement(node, textPos) { this.node = node; this.textPos = textPos; } return SplitNameMatchElement; }()); -var SplitNameMatchResult = /** @class */ (function () { +var SplitNameMatchResult = (function () { function SplitNameMatchResult(value, startPos) { this.value = value; this.startPos = startPos; } return SplitNameMatchResult; }()); -var SplitNameMatcher = /** @class */ (function () { +var SplitNameMatcher = (function () { function SplitNameMatcher(root) { this.root = root; this.reset(); @@ -165,7 +142,7 @@ var SplitNameMatcher = /** @class */ (function () { }; return SplitNameMatcher; }()); -var SplitNameLookup = /** @class */ (function () { +var SplitNameLookup = (function () { function SplitNameLookup() { this.root = new SplitNameNode(); } @@ -188,7 +165,7 @@ var SplitNameLookup = /** @class */ (function () { }; return SplitNameLookup; }()); -var WordScanner = /** @class */ (function () { +var WordScanner = (function () { function WordScanner(text) { this.text = text; this.separators = " \n\r\t.;:<>[]&|"; @@ -237,10 +214,10 @@ function handleLinksInBodyText(aggData, docFilePath, text, wrapInlineCode) { var link = resolveTypeLink(aggData, docFilePath, word); var matchStart = void 0; if (!link) { - var match_1 = matcher.nextWord(word.toLowerCase(), scanner.index); - if (match_1 && match_1[0]) { - link = resolveTypeLink(aggData, docFilePath, match_1[0].value); - matchStart = match_1[0].startPos; + var match = matcher.nextWord(word.toLowerCase(), scanner.index); + if (match && match[0]) { + link = resolveTypeLink(aggData, docFilePath, match[0].value); + matchStart = match[0].startPos; } } else { @@ -339,14 +316,6 @@ function cleanTypeName(text) { return text.replace(/\[\]$/, ""); } } -/* -function isLinkable(kind: ReflectionKind) { - return (kind === ReflectionKind.Class) || - (kind === ReflectionKind.Interface) || - (kind === ReflectionKind.Enum) || - (kind === ReflectionKind.TypeAlias); -} -*/ function convertNodeToTypeLink(node, text, url, title) { if (title === void 0) { title = null; } var linkDisplayText = unist.makeInlineCode(text); diff --git a/tools/doc/tools/typeLinker.ts b/tools/doc/tools/typeLinker.ts index 209f452468..a4ba1a67be 100644 --- a/tools/doc/tools/typeLinker.ts +++ b/tools/doc/tools/typeLinker.ts @@ -1,13 +1,7 @@ import * as path from "path"; -import * as fs from "fs"; - -import * as remark from "remark"; -import * as stringify from "remark-stringify"; -import * as frontMatter from "remark-frontmatter"; import * as unist from "../unistHelpers"; import * as ngHelpers from "../ngHelpers"; -import { match } from "minimatch"; const includedNodeTypes = [ @@ -16,23 +10,19 @@ const includedNodeTypes = [ "link", "text" ]; -const docFolder = path.resolve("docs"); -const adfLibNames = ["core", "content-services", "insights", "process-services", "process-services-cloud", "extensions"]; - let externalNameLinks; let linkOverrides; -export function processDocs(mdCache, aggData, errorMessages) { +export function processDocs(mdCache, aggData) { initPhase(aggData, mdCache); var pathnames = Object.keys(mdCache); pathnames.forEach(pathname => { - updateFile(mdCache[pathname].mdOutTree, pathname, aggData, errorMessages); + updateFile(mdCache[pathname].mdOutTree, pathname, aggData); }); } - function initPhase(aggData, mdCache) { externalNameLinks = aggData.config.externalNameLinks; @@ -44,22 +34,6 @@ function initPhase(aggData, mdCache) { aggData.docFiles = {}; aggData.nameLookup = new SplitNameLookup(); - /* - adfLibNames.forEach(libName => { - let libFolderPath = path.resolve(docFolder, libName); - - let files = fs.readdirSync(libFolderPath); - - files.forEach(file => { - if (path.extname(file) === ".md") { - let relPath = libFolderPath.substr(libFolderPath.indexOf("docs") + 5).replace(/\\/, "/") + "/" + file; - let compName = path.basename(file, ".md"); - aggData.docFiles[compName] = relPath; - } - }); - }); - */ - let docFilePaths = Object.keys(mdCache); docFilePaths.forEach(docFilePath => { @@ -75,13 +49,9 @@ function initPhase(aggData, mdCache) { aggData.nameLookup.addName(currClassName); } }); - //console.log(JSON.stringify(aggData.nameLookup)); } - - - -function updateFile(tree, pathname, aggData, _errorMessages) { +function updateFile(tree, pathname, aggData) { traverseMDTree(tree); return true; @@ -92,7 +62,7 @@ function updateFile(tree, pathname, aggData, _errorMessages) { } if (node.type === "link") { - if (node.children && ( + if (node.children[0] && ( (node.children[0].type === "inlineCode") || (node.children[0].type === "text") )) { @@ -102,7 +72,7 @@ function updateFile(tree, pathname, aggData, _errorMessages) { convertNodeToTypeLink(node, node.children[0].value, link); } } - } else if ((node.children) && (node.type !== "heading")) { //((node.type === "paragraph") || (node.type === "tableCell")) { + } else if ((node.children) && (node.type !== "heading")) { node.children.forEach((child, index) => { if ((child.type === "text") || (child.type === "inlineCode")) { let newNodes = handleLinksInBodyText(aggData, pathname, child.value, child.type === 'inlineCode'); @@ -111,12 +81,7 @@ function updateFile(tree, pathname, aggData, _errorMessages) { traverseMDTree(child); } }); - } /*else if (node.children) { - node.children.forEach(child => { - traverseMDTree(child); - }); } - */ } } @@ -226,7 +191,6 @@ class SplitNameLookup { } } - class WordScanner { separators: string; index: number; @@ -273,7 +237,6 @@ class WordScanner { } } - function handleLinksInBodyText(aggData, docFilePath: string, text: string, wrapInlineCode: boolean = false): Node[] { let result = []; let currTextStart = 0; @@ -347,12 +310,8 @@ function resolveTypeLink(aggData, docFilePath, text): string { return ""; } - /* - let ref: Reflection = aggData.projData.findReflectionByName(possTypeName); -*/ let classInfo = aggData.classInfo[possTypeName]; - //if (ref && isLinkable(ref.kind)) { if (linkOverrides[possTypeName.toLowerCase()]) { return ''; } else if (externalNameLinks[possTypeName]) { @@ -361,12 +320,9 @@ function resolveTypeLink(aggData, docFilePath, text): string { let kebabName = ngHelpers.kebabifyClassName(possTypeName); let possDocFile = aggData.docFiles[kebabName]; - //let url = "../../" + classInfo.sourcePath; - let url = fixRelSrcUrl(docFilePath, classInfo.sourcePath); if (possDocFile) { - //url = "../" + possDocFile; url = fixRelDocUrl(docFilePath, possDocFile); } @@ -410,15 +366,6 @@ function cleanTypeName(text) { } } -/* -function isLinkable(kind: ReflectionKind) { - return (kind === ReflectionKind.Class) || - (kind === ReflectionKind.Interface) || - (kind === ReflectionKind.Enum) || - (kind === ReflectionKind.TypeAlias); -} -*/ - function convertNodeToTypeLink(node, text, url, title = null) { let linkDisplayText = unist.makeInlineCode(text); node.type = "link"; diff --git a/tools/doc/tools/versionIndex.js b/tools/doc/tools/versionIndex.js index 83c02d7cf7..9bc716b236 100644 --- a/tools/doc/tools/versionIndex.js +++ b/tools/doc/tools/versionIndex.js @@ -15,14 +15,12 @@ var ngHelpers = require("../ngHelpers"); module.exports = { "processDocs": processDocs -} +}; -var angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(directive)|(model)|(pipe)|(service)|(widget))\.ts/; var docsFolderPath = path.resolve("docs"); var histFilePath = path.resolve(docsFolderPath, "versionIndex.md"); -var histSectionName = "history"; var initialVersion = "v2.0.0"; var templateFolder = path.resolve("tools", "doc", "templates"); @@ -55,11 +53,11 @@ function getFileData(tree, pathname, aggData) { if (!compName.match(angNameRegex)) return; - + if (compName.match(/boilerplate/)) return; - - if (tree.children[0].type == "yaml") { + + if (tree && tree.children[0] && tree.children[0].type == "yaml") { var metadata = yaml.load(tree.children[0].value); var version = metadata["Added"]; @@ -83,7 +81,7 @@ function aggPhase(aggData) { var keys = Object.keys(aggData.versions); keys.sort((a, b) => { - if (a > b) + if (a > b) return -1; else if (b > a) return 1; diff --git a/tools/schematics/adf/package-lock.json b/tools/schematics/adf/package-lock.json index d693f5875b..fdefa99103 100644 --- a/tools/schematics/adf/package-lock.json +++ b/tools/schematics/adf/package-lock.json @@ -9,10 +9,10 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.5.9.tgz", "integrity": "sha512-SH2/tvs9IGzfDDaUZ1uqLlNPTzaidPWdcT3AA3lYi4hS6ZU8zF1kGw+8Xa9CZR/3JhjMAxmNoqtIcTzt2WmlqQ==", "requires": { - "ajv": "6.4.0", - "chokidar": "1.7.0", - "rxjs": "6.0.0", - "source-map": "0.5.7" + "ajv": "~6.4.0", + "chokidar": "^1.7.0", + "rxjs": "^6.0.0-beta.3", + "source-map": "^0.5.6" } }, "@angular-devkit/schematics": { @@ -21,8 +21,8 @@ "integrity": "sha512-4DSjQUFthXqoDlZ5+ml2UvxlP29fv08FeVRbkKgofNSqC3N4QiCn/8I2PksGzcdHAXTiBGmBcgXwGbDb5zTkqA==", "requires": { "@angular-devkit/core": "0.5.9", - "@ngtools/json-schema": "1.1.0", - "rxjs": "6.0.0" + "@ngtools/json-schema": "^1.1.0", + "rxjs": "^6.0.0-beta.3" } }, "@ngtools/json-schema": { @@ -45,10 +45,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "requires": { - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^3.0.2" } }, "anymatch": { @@ -56,8 +56,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "arr-diff": { @@ -65,7 +65,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -98,7 +98,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -107,9 +107,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "chokidar": { @@ -117,14 +117,14 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "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" } }, "concat-map": { @@ -152,7 +152,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -160,7 +160,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "extglob": { @@ -168,7 +168,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "fast-deep-equal": { @@ -191,11 +191,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "for-in": { @@ -208,7 +208,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "fs.realpath": { @@ -221,12 +221,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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-base": { @@ -234,8 +234,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -243,7 +243,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "graceful-fs": { @@ -256,8 +256,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -270,7 +270,7 @@ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -288,7 +288,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -306,7 +306,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-number": { @@ -314,7 +314,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-posix-bracket": { @@ -345,9 +345,9 @@ "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", "integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=", "requires": { - "exit": "0.1.2", - "glob": "7.1.2", - "jasmine-core": "2.99.1" + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.99.0" } }, "jasmine-core": { @@ -365,7 +365,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "micromatch": { @@ -373,19 +373,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "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" } }, "minimatch": { @@ -393,7 +393,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "normalize-path": { @@ -401,7 +401,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "object.omit": { @@ -409,8 +409,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "once": { @@ -418,7 +418,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "parse-glob": { @@ -426,10 +426,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "path-is-absolute": { @@ -457,8 +457,8 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -466,7 +466,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -474,7 +474,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -484,7 +484,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -494,13 +494,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "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" } }, "readdirp": { @@ -508,10 +508,10 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.6", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "regex-cache": { @@ -519,7 +519,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "remove-trailing-separator": { @@ -542,7 +542,7 @@ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", "requires": { - "tslib": "1.9.0" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -565,7 +565,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "tslib": { @@ -583,7 +583,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", "requires": { - "punycode": "2.1.0" + "punycode": "^2.1.0" } }, "util-deprecate": {