Browse Source

Merge remote-tracking branch 'abpframework/dev' into docs

pull/3768/head
liangshiwei 7 years ago
parent
commit
e4cbba5054
  1. 18
      abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json
  2. 2
      docs/en/CLI.md
  3. 2
      docs/en/Tutorials/Part-1.md
  4. 54
      docs/en/Tutorials/Part-2.md
  5. BIN
      docs/en/Tutorials/images/bookstore-angular-file-tree.png
  6. 22
      docs/en/UI/Angular/Confirmation-Service.md
  7. 1
      docs/en/UI/Angular/Toaster-Service.md
  8. 22
      docs/en/UI/Common/Utils/Linked-List.md
  9. 2
      docs/zh-Hans/CLI.md
  10. 159
      docs/zh-Hans/UI/Angular/Confirmation-Service.md
  11. 2
      docs/zh-Hans/UI/Angular/Permission-Management.md
  12. 155
      docs/zh-Hans/UI/Angular/Toaster-Service.md
  13. BIN
      docs/zh-Hans/UI/Angular/images/confirmation.png
  14. BIN
      docs/zh-Hans/UI/Angular/images/toast.png
  15. 23
      docs/zh-Hans/docs-nav.json
  16. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs
  17. 11
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  18. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs
  19. 9
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs
  20. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormGroupItem.cs
  21. 15
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs
  22. 2
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs
  23. 5
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/FileSystem/Documents/FileSystemDocumentSource.cs
  24. 144
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentSource.cs
  25. 1
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/en.json
  26. 3
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json
  27. 1
      modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hant.json
  28. 66
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  29. 72
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  30. 50
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js
  31. 15
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/DocumentNotFoundComponent/DocumentNotFoundPageModel.cs
  32. 26
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/DocumentNotFoundComponent/DocumentNotFoundViewComponent.cs
  33. 28
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/Default.cshtml
  34. 13
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/ErrorPageModel.cs
  35. 14
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/ErrorViewComponent.cs
  36. 20
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/error.js
  37. 28
      npm/ng-packs/package.json
  38. 26
      npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.html
  39. 19
      npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts
  40. 2
      npm/ng-packs/scripts/install-new-dependencies.ts
  41. 391
      npm/ng-packs/yarn.lock

18
abp_io/AbpIoLocalization/AbpIoLocalization/Admin/Localization/Resources/en.json

@ -13,6 +13,8 @@
"Permission:Edit": "Edit", "Permission:Edit": "Edit",
"Permission:Delete": "Delete", "Permission:Delete": "Delete",
"Permission:Create": "Create", "Permission:Create": "Create",
"Permission:Accounting": "Accounting",
"Permission:Accounting:Quotation": "Quotation",
"Menu:Organizations": "Organizations", "Menu:Organizations": "Organizations",
"Menu:Accounting": "Accounting", "Menu:Accounting": "Accounting",
"Menu:Packages": "Packages", "Menu:Packages": "Packages",
@ -94,13 +96,15 @@
"UsernameOrEmail": "Username or email", "UsernameOrEmail": "Username or email",
"UsernameOrEmailPlaceholder": "Username or email...", "UsernameOrEmailPlaceholder": "Username or email...",
"Member": "Member", "Member": "Member",
"QuotationPurchasedOrderNo": "Quotation Purchased Order No", "PurchaseOrderNo": "Purchase order no",
"QuotationTime": "Quotation Time", "QuotationDate": "Quotation date",
"CompanyName": "Company Name", "CompanyName": "Company name",
"CompanyAddress": "Company Address", "CompanyAddress": "Company address",
"Price": "Price", "Price": "Price",
"ExtraText": "Extra Text", "DiscountText": "Discount text",
"ExtraAmount": "Extra Amount", "DiscountQuantity": "Discount quantity",
"DownloadQuotation": "Download Quotation" "DiscountPrice": "Discount price",
"Quotation": "Quotation",
"Generate": "Generate"
} }
} }

2
docs/en/CLI.md

@ -135,6 +135,8 @@ abp update [options]
* `--include-previews` or `-p`: Includes preview, beta and rc packages while checking the latest versions. * `--include-previews` or `-p`: Includes preview, beta and rc packages while checking the latest versions.
* `--npm`: Only updates NPM packages. * `--npm`: Only updates NPM packages.
* `--nuget`: Only updates NuGet packages. * `--nuget`: Only updates NuGet packages.
* `--solution-path` or `-sp`: Specify the solution path. Use the current directory by default
* `--solution-name` or `-sn`: Specify the solution name. Search `*.sln` files in the directory by default.
### switch-to-preview ### switch-to-preview

2
docs/en/Tutorials/Part-1.md

@ -874,8 +874,6 @@ We'll see **book-list works!** text on the books page:
Run the following command in the terminal to create a new state, named `BooksState`: Run the following command in the terminal to create a new state, named `BooksState`:
![Initial book list page](./images/bookstore-generate-state-books.png)
```bash ```bash
npx @ngxs/cli --name books --directory src/app/books npx @ngxs/cli --name books --directory src/app/books
``` ```

54
docs/en/Tutorials/Part-2.md

@ -525,7 +525,7 @@ export class BooksState {
* We imported `CreateUpdateBook` action and defined the `save` method that will listen to a `CreateUpdateBook` action to create a book. * We imported `CreateUpdateBook` action and defined the `save` method that will listen to a `CreateUpdateBook` action to create a book.
When the `SaveBook` action dispatched, the save method is being executed. It calls `create` method of the `BookService`. When the `SaveBook` action dispatched, the save method is being executed. It calls `createByInput` method of the `BookService`.
#### Add a modal to BookListComponent #### Add a modal to BookListComponent
@ -885,32 +885,6 @@ Now, you can open your browser to see the changes:
#### Saving the book #### Saving the book
Open `book-list.component.html` in `app\books\book-list` folder and add the following `abp-button` to save the new book.
```html
<ng-template #abpFooter>
<button type="button" class="btn btn-secondary" #abpClose>
{%{{{ 'AbpAccount::Close' | abpLocalization }}}%}
</button>
<!--added save button-->
<button class="btn btn-primary" (click)="save()" [disabled]="form.invalid">
<i class="fa fa-check mr-1"></i>
{%{{{ 'AbpAccount::Save' | abpLocalization }}}%}
</button>
</ng-template>
```
Find the `<form [formGroup]="form">` tag and replace below content:
```html
<form [formGroup]="form" (ngSubmit)="save()"> <!-- added the ngSubmit -->
```
* We added the `(ngSubmit)="save()"` to `<form>` element to save a new book by pressing the enter.
* We added `abp-button` to the bottom area of the modal to save a new book.
Open `book-list.component.ts` file in `app\books\book-list` folder and replace the content as below: Open `book-list.component.ts` file in `app\books\book-list` folder and replace the content as below:
```js ```js
@ -993,6 +967,32 @@ export class BookListComponent implements OnInit {
* We imported `CreateUpdateBook`. * We imported `CreateUpdateBook`.
* We added `save` method * We added `save` method
Open `book-list.component.html` in `app\books\book-list` folder and add the following `abp-button` to save the new book.
```html
<ng-template #abpFooter>
<button type="button" class="btn btn-secondary" #abpClose>
{%{{{ 'AbpAccount::Close' | abpLocalization }}}%}
</button>
<!--added save button-->
<button class="btn btn-primary" (click)="save()" [disabled]="form.invalid">
<i class="fa fa-check mr-1"></i>
{%{{{ 'AbpAccount::Save' | abpLocalization }}}%}
</button>
</ng-template>
```
Find the `<form [formGroup]="form">` tag and replace below content:
```html
<form [formGroup]="form" (ngSubmit)="save()"> <!-- added the ngSubmit -->
```
* We added the `(ngSubmit)="save()"` to `<form>` element to save a new book by pressing the enter.
* We added `abp-button` to the bottom area of the modal to save a new book.
The final modal UI looks like below: The final modal UI looks like below:
![Save button to the modal](./images/bookstore-new-book-form-v2.png) ![Save button to the modal](./images/bookstore-new-book-form-v2.png)

BIN
docs/en/Tutorials/images/bookstore-angular-file-tree.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 91 KiB

22
docs/en/UI/Angular/Confirmation-Service.md

@ -94,6 +94,28 @@ With the options above, the confirmation popup looks like this:
![confirmation](./images/confirmation.png) ![confirmation](./images/confirmation.png)
You are able to pass in an HTML string as title, message, or button texts. Here is an example:
```js
const options: Partial<Confirmation.Options> = {
yesText: '<i class="fa fa-trash mr-1"></i>Yes, delete it',
};
this.confirmation.warn(
`
<strong>Role Demo</strong> will be <strong>deleted</strong>
<br>
Do you confirm that?
`,
'<span class="my-custom-title">Are you sure?</span>',
options,
);
```
Since the values are HTML now, localization should be handled manually. Check out the [LocalizationService](./Localization#using-the-localization-service) to see how you can accomplish that.
> Please note that all strings will be sanitized by Angular and not every HTML string will work. Only values that are considered as "safe" by Angular will be displayed.
### How to Remove a Confirmation Popup ### How to Remove a Confirmation Popup
The open confirmation popup can be removed manually via the `clear` method: The open confirmation popup can be removed manually via the `clear` method:

1
docs/en/UI/Angular/Toaster-Service.md

@ -150,6 +150,7 @@ clear(): void
Removes all open toasts. Removes all open toasts.
## See Also ## See Also
- [Confirmation Popup](./Confirmation-Service.md) - [Confirmation Popup](./Confirmation-Service.md)
## What's Next? ## What's Next?

22
docs/en/UI/Common/Utils/Linked-List.md

@ -1270,7 +1270,7 @@ find(predicate: ListIteratorFn<T>): ListNode<T> | undefined
Finds the first node from the list that matches the given predicate: Finds the first node from the list that matches the given predicate:
```js ```js
list.addTailMany(['a', 'b', 'b', 'c']); list.addManyTail(['a', 'b', 'b', 'c']);
// "a" <-> "b" <-> "b" <-> "c" // "a" <-> "b" <-> "b" <-> "c"
@ -1294,7 +1294,7 @@ findIndex(predicate: ListIteratorFn<T>): number
Finds the position of the first node from the list that matches the given predicate: Finds the position of the first node from the list that matches the given predicate:
```js ```js
list.addTailMany(['a', 'b', 'b', 'c']); list.addManyTail(['a', 'b', 'b', 'c']);
// "a" <-> "b" <-> "b" <-> "c" // "a" <-> "b" <-> "b" <-> "c"
@ -1322,7 +1322,7 @@ get(position: number): ListNode<T> | undefined
Finds and returns the node with specific position in the list: Finds and returns the node with specific position in the list:
```js ```js
list.addTailMany(['a', 'b', 'c']); list.addManyTail(['a', 'b', 'c']);
// "a" <-> "b" <-> "c" // "a" <-> "b" <-> "c"
@ -1346,7 +1346,7 @@ indexOf(value: T, compareFn?: ListComparisonFn<T>): number
Finds the position of the first node from the list that has the given value: Finds the position of the first node from the list that has the given value:
```js ```js
list.addTailMany(['a', 'b', 'b', 'c']); list.addManyTail(['a', 'b', 'b', 'c']);
// "a" <-> "b" <-> "b" <-> "c" // "a" <-> "b" <-> "b" <-> "c"
@ -1368,7 +1368,7 @@ i3 === -1
You may pass a custom compare function to detect the searched value: You may pass a custom compare function to detect the searched value:
```js ```js
list.addTailMany([{ x: 1 }, { x: 0 }, { x: 2 }, { x: 0 }, { x: 3 }]); list.addManyTail([{ x: 1 }, { x: 0 }, { x: 2 }, { x: 0 }, { x: 3 }]);
// {"x":1} <-> {"x":0} <-> {"x":2} <-> {"x":0} <-> {"x":3} // {"x":1} <-> {"x":0} <-> {"x":2} <-> {"x":0} <-> {"x":3}
@ -1408,7 +1408,7 @@ forEach(iteratorFn: ListIteratorFn<T>): void
Runs a function on all nodes in a linked list from head to tail: Runs a function on all nodes in a linked list from head to tail:
```js ```js
list.addTailMany(['a', 'b', 'c']); list.addManyTail(['a', 'b', 'c']);
// "a" <-> "b" <-> "c" // "a" <-> "b" <-> "c"
@ -1425,7 +1425,7 @@ list.forEach((node, index) => console.log(node.value + index));
A linked list is iterable. In other words, you may use methods like `for...of` on it. A linked list is iterable. In other words, you may use methods like `for...of` on it.
```js ```js
list.addTailMany(['a', 'b', 'c']); list.addManyTail(['a', 'b', 'c']);
// "a" <-> "b" <-> "c" // "a" <-> "b" <-> "c"
@ -1449,7 +1449,7 @@ toArray(): T[]
Converts a linked list to an array of values: Converts a linked list to an array of values:
```js ```js
list.addTailMany(['a', 'b', 'c']); list.addManyTail(['a', 'b', 'c']);
// "a" <-> "b" <-> "c" // "a" <-> "b" <-> "c"
@ -1471,7 +1471,7 @@ toNodeArray(): ListNode<T>[]
Converts a linked list to an array of nodes: Converts a linked list to an array of nodes:
```js ```js
list.addTailMany(['a', 'b', 'c']); list.addManyTail(['a', 'b', 'c']);
// "a" <-> "b" <-> "c" // "a" <-> "b" <-> "c"
@ -1495,7 +1495,7 @@ toString(mapperFn: ListMapperFn<T> = JSON.stringify): string
Converts a linked list to a string representation of nodes and their relations: Converts a linked list to a string representation of nodes and their relations:
```js ```js
list.addTailMany(['a', 2, 'c', { k: 4, v: 'd' }]); list.addManyTail(['a', 2, 'c', { k: 4, v: 'd' }]);
// "a" <-> 2 <-> "c" <-> {"k":4,"v":"d"} // "a" <-> 2 <-> "c" <-> {"k":4,"v":"d"}
@ -1562,7 +1562,7 @@ export class ListNode<T = any> {
- `previous` refers to the previous node in the list. - `previous` refers to the previous node in the list.
```js ```js
list.addTailMany([ 0, 1, 2 ]); list.addManyTail([ 0, 1, 2 ]);
console.log( console.log(
list.head.value, // 0 list.head.value, // 0

2
docs/zh-Hans/CLI.md

@ -135,6 +135,8 @@ abp update [options]
* `--include-previews` 或 `-p`: 将预览版, 测试版本 和 rc 包 同时更新到最新版本. * `--include-previews` 或 `-p`: 将预览版, 测试版本 和 rc 包 同时更新到最新版本.
* `--npm`: 仅更新NPM包 * `--npm`: 仅更新NPM包
* `--nuget`: 仅更新的NuGet包 * `--nuget`: 仅更新的NuGet包
* `--solution-path` 或 `-sp`: 指定解决方案路径/目录. 默认使用当前目录
* `--solution-name` 或 `-sn`: 指定解决方案名称. 默认在目录中搜索`*.sln`文件.
### 切换到每晚构建(预览)包 ### 切换到每晚构建(预览)包

159
docs/zh-Hans/UI/Angular/Confirmation-Service.md

@ -0,0 +1,159 @@
# 确认弹层
你可以使用@abp/ng.theme.shared包中提供 `ConfirmationService` 放置在你项目的级别来显示确认弹层
## 入门
你不必在模块或组件级别提供 `ConfirmationService`,它已经在**根**级别提供,你可以在你的组件,指令或服务直接注入并使用它.
```js
import { ConfirmationService } from '@abp/ng.theme.shared';
@Component({
/* class metadata here */
})
class DemoComponent {
constructor(private confirmation: ConfirmationService) {}
}
```
## 用法
你可以使用 `ConfirmationService` 的 `success`, `warn`, `error` 和 `info` 方法显示一个确认弹层.
### 如何显示一个确认弹层
```js
const confirmationStatus$ = this.confirmation.success('Message', 'Title');
```
- `ConfirmationService` 方法接收三个参数,分别是 `message`, `title`, 和 `options`.
- `success`, `warn`, `error`, 和 `info` 方法返回一个[RxJS Subject](https://rxjs-dev.firebaseapp.com/guide/subject)监听确认弹层关闭事件. 事件值类型是 [`Confirmation.Status`](https://github.com/abpframework/abp/blob/master/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts#L24)枚举.
### 如何监听关闭事件
你可以订阅确认弹层关闭事件,例:
```js
import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';
constructor(private confirmation: ConfirmationService) {}
this.confirmation
.warn('::WillBeDeleted', { key: '::AreYouSure', defaultValue: 'Are you sure?' })
.subscribe((status: Confirmation.Status) => {
// your code here
});
```
- `message` 和 `title` 参数接收字符串,本地化Key或本地化对象. 参阅[本地化文档](./Localization.md)
- `Confirmation.Status` 是一个枚举,具有三个属性;
- `Confirmation.Status.confirm` 是一个关闭事件值,当通过确认按钮关闭弹出窗口时触发此事件.
- `Confirmation.Status.reject` 是一个关闭事件值,当通过“取消”按钮关闭弹出窗口时触发此事件.
- `Confirmation.Status.dismiss` 是一个关闭事件值,当通过按Escape键关闭弹出窗口时触发此事件.
如果你对确认状态不感兴趣,则不必订阅返回的observable:
```js
this.confirmation.error('You are not authorized.', 'Error');
```
### 如何显示具有给定选项的确认弹层
选项可以作为第三个参数传递给`success`, `warn`, `error`, 和 `info` 方法:
```js
const options: Partial<Confirmation.Options> = {
hideCancelBtn: false,
hideYesBtn: false,
cancelText: 'Close',
yesText: 'Confirm',
messageLocalizationParams: ['Demo'],
titleLocalizationParams: [],
};
this.confirmation.warn(
'AbpIdentity::RoleDeletionConfirmationMessage',
'Are you sure?',
options,
);
```
- `hideCancelBtn` 选项为 `true` 时隐藏取消按钮. 默认值为 `false`.
- `hideYesBtn` 选项为 `true` 时隐藏确认按钮. 默认值为 `false`.
- `cancelText` 是取消按钮的文本,可以传递本地化键或本地化对象. 默认值是 `AbpUi::Cancel`.
- `yesText` 是确定按钮的文本,可以传递本地化键或本地化对象. 默认值是 `AbpUi::Yes`.
- `messageLocalizationParams`是用于消息本地化的插值参数.
- `titleLocalizationParams` 是标题本地化的插值参数.
With the options above, the confirmation popup looks like this:
![confirmation](./images/confirmation.png)
### 如何删除一个确认弹层
打开的确认弹出窗口可以通过 `clear` 方法手动删除:
```js
this.confirmation.clear();
```
## API
### success
```js
success(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Confirmation.Options>,
): Observable<Confirmation.Status>
```
> 请参见[`Config.LocalizationParam`类型](https://github.com/abpframework/abp/blob/master/npm/ng-packs/packages/core/src/lib/models/config.ts#L46)和[Confirmation名称空间](https://github.com/abpframework/abp/blob/master/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts)
### warn
```js
warn(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Confirmation.Options>,
): Observable<Confirmation.Status>
```
### error
```js
error(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Confirmation.Options>,
): Observable<Confirmation.Status>
```
### info
```js
info(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Confirmation.Options>,
): Observable<Confirmation.Status>
```
### clear
```js
clear(
status: Confirmation.Status = Confirmation.Status.dismiss
): void
```
- `status` 参数是确认关闭事件的值.
## 下一步是什么?
- [Toast Overlay](./Toaster-Service.md)

2
docs/zh-Hans/UI/Angular/Permission-Management.md

@ -76,4 +76,4 @@ const routes: Routes = [
## 下一步是什么? ## 下一步是什么?
* [Config State](./Config-State.md) * [确认弹层](./Confirmation-Service.md)

155
docs/zh-Hans/UI/Angular/Toaster-Service.md

@ -0,0 +1,155 @@
# Toast Overlay
你可以通常将@abp/ng.theme.shared包提供的 `ToasterService` 放置在你项目的根级别下以覆盖显示消息.
## 入门
你不必在模块或组件级别提供 `ToasterService`,它已经在**根**级别提供,你可以在你的组件,指令或服务直接注入并使用它.
```js
import { ToasterService } from '@abp/ng.theme.shared';
@Component({
/* class metadata here */
})
class DemoComponent {
constructor(private toaster: ToasterService) {}
}
```
## 用法
你可以使用 `ToasterService` 的 `success`, `warn`, `error` 和 `info` 方法显示一个overlay.
### 如何显示一个Toast Overlay
```js
this.toast.success('Message', 'Title');
```
- `ToasterService` 方法接收三个参数,分别是 `message`, `title`, 和 `options`.
- `success`, `warn`, `error`, 和 `info` 方法返回一个已打开的 toast overlay Id. 可以使用此id删除toast.
### 如何显示具有给定选项的Toast Overlay
选项可以作为第三个参数传递给`success`, `warn`, `error`, 和 `info` 方法:
```js
import { Toaster, ToasterService } from '@abp/ng.theme.shared';
//...
constructor(private toaster: ToasterService) {}
//...
const options: Partial<Toaster.ToastOptions> = {
life: 10000,
sticky: false,
closable: true,
tapToDismiss: true,
messageLocalizationParams: ['Demo', '1'],
titleLocalizationParams: []
};
this.toaster.error('AbpUi::EntityNotFoundErrorMessage', 'AbpUi::Error', options);
```
- `life` 选项是关闭的时间毫秒数. 默认值是 `5000`.
- `sticky` 选项为 `true` 时忽略 `life` 选项,将toast overlay留在屏幕上. 默认值是 `false`.
- `closable` 选项为 `true` 时在toast overlay上显示关闭图标. 默认值是 `true`.
- `tapToDismiss` 选项为 `true` 允许通过单击关闭toast overlay. 默认值是 `false`.
- `yesText` 是确定按钮的文本,可以传递本地化键或本地化对象. 默认值是 `AbpUi::Yes`.
- `messageLocalizationParams` 是用于消息本地化的插值参数.
- `titleLocalizationParams` 是标题本地化的插值参数.
使用上面的选项,toast overlay看起来像这样:
![toast](./images/toast.png)
### 如何删除 Toast Overlay
已打开的toast overlay可以通过手动调用 `remove` 方法传递指定的 toast `id`删除.
```js
const toastId = this.toast.success('Message', 'Title')
this.toast.remove(toastId);
```
### 如何删除所有的Toasts
可以手动调用 `clear` 方法删除所有的已打开的toasts.
```js
this.toast.clear();
```
## API
### success
```js
success(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Toaster.ToastOptions>,
): number
```
- `Config` 命令空间可以从 `@abp/ng.core` 导入.
- `Toaster` 命令空间可以从 `@abp/ng.theme.shared` 导入.
> 请参见[`Config.LocalizationParam`类型](https://github.com/abpframework/abp/blob/master/npm/ng-packs/packages/core/src/lib/models/config.ts#L46)和[`Toaster` namespace](https://github.com/abpframework/abp/blob/master/npm/ng-packs/packages/theme-shared/src/lib/models/toaster.ts)
### warn
```js
warn(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Toaster.ToastOptions>,
): number
```
### error
```js
error(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Toaster.ToastOptions>,
): number
```
### info
```js
info(
message: Config.LocalizationParam,
title: Config.LocalizationParam,
options?: Partial<Toaster.ToastOptions>,
): number
```
### remove
```js
remove(id: number): void
```
按给定的id移除打开的toast.
### clear
```js
clear(): void
```
删除所有打开的toasts.
## 另请参阅
- [Confirmation Popup](./Confirmation-Service.md)
## 确认弹层?
- [Config State](./Config-State.md)

BIN
docs/zh-Hans/UI/Angular/images/confirmation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
docs/zh-Hans/UI/Angular/images/toast.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

23
docs/zh-Hans/docs-nav.json

@ -218,8 +218,11 @@
}, },
{ {
"text": "领域驱动设计", "text": "领域驱动设计",
"path": "Domain-Driven-Design.md",
"items": [ "items": [
{
"text": "概述",
"path": "Domain-Driven-Design.md"
},
{ {
"text": "领域层", "text": "领域层",
"items": [ "items": [
@ -324,6 +327,14 @@
"text": "权限管理", "text": "权限管理",
"path": "UI/Angular/Permission-Management.md" "path": "UI/Angular/Permission-Management.md"
}, },
{
"text": "确认弹层",
"path": "UI/Angular/Confirmation-Service.md"
},
{
"text": "Toast Overlay",
"path": "UI/Angular/Toaster-Service.md"
},
{ {
"text": "配置状态", "text": "配置状态",
"path": "UI/Angular/Config-State.md" "path": "UI/Angular/Config-State.md"
@ -372,8 +383,11 @@
}, },
{ {
"text": "数据访问", "text": "数据访问",
"path":"Data-Access.md",
"items": [ "items": [
{
"text": "概述",
"path": "Data-Access.md"
},
{ {
"text": "连接字符串", "text": "连接字符串",
"path": "Connection-Strings.md" "path": "Connection-Strings.md"
@ -457,8 +471,11 @@
}, },
{ {
"text": "启动模板", "text": "启动模板",
"path": "Startup-Templates/Index.md",
"items": [ "items": [
{
"text": "概述",
"path": "Startup-Templates/Index.md"
},
{ {
"text": "应用程序", "text": "应用程序",
"path": "Startup-Templates/Application.md" "path": "Startup-Templates/Application.md"

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpDynamicformTagHelperService.cs

@ -43,6 +43,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
await ProcessFieldsAsync(context, output); await ProcessFieldsAsync(context, output);
RemoveFormGroupItemsNotInModel(context, output, list);
SetContent(context, output, list, childContent); SetContent(context, output, list, childContent);
SetFormAttributes(context, output); SetFormAttributes(context, output);
@ -143,6 +145,14 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
} }
} }
protected virtual void RemoveFormGroupItemsNotInModel(TagHelperContext context, TagHelperOutput output, List<FormGroupItem> items)
{
var models = GetModels(context, output);
items.RemoveAll(x => models.All(m => !m.Name.Equals(x.PropertyName, StringComparison.InvariantCultureIgnoreCase)));
}
protected virtual async Task ProcessSelectGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model) protected virtual async Task ProcessSelectGroupAsync(TagHelperContext context, TagHelperOutput output, ModelExpression model)
{ {
var abpSelectTagHelper = GetSelectGroupTagHelper(context, output, model); var abpSelectTagHelper = GetSelectGroupTagHelper(context, output, model);
@ -152,7 +162,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
protected virtual AbpTagHelper GetSelectGroupTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model) protected virtual AbpTagHelper GetSelectGroupTagHelper(TagHelperContext context, TagHelperOutput output, ModelExpression model)
{ {
return IsRadioGroup(model.ModelExplorer) ? return IsRadioGroup(model.ModelExplorer) ?
GetAbpRadioInputTagHelper(model) : GetAbpRadioInputTagHelper(model) :
GetSelectTagHelper(model); GetSelectTagHelper(model);
} }

11
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs

@ -58,7 +58,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
protected virtual async Task<(string, bool)> GetFormInputGroupAsHtmlAsync(TagHelperContext context, TagHelperOutput output) protected virtual async Task<(string, bool)> GetFormInputGroupAsHtmlAsync(TagHelperContext context, TagHelperOutput output)
{ {
var (inputTag, isCheckBox) = await GetInputTagHelperOutputAsync(context, output); var (inputTag, isCheckBox) = await GetInputTagHelperOutputAsync(context, output);
var inputHtml = inputTag.Render(_encoder); var inputHtml = inputTag.Render(_encoder);
var label = await GetLabelAsHtmlAsync(context, output, inputTag, isCheckBox); var label = await GetLabelAsHtmlAsync(context, output, inputTag, isCheckBox);
var info = GetInfoAsHtml(context, output, inputTag, isCheckBox); var info = GetInfoAsHtml(context, output, inputTag, isCheckBox);
@ -161,7 +161,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
protected virtual void AddDisabledAttribute(TagHelperOutput inputTagHelperOutput) protected virtual void AddDisabledAttribute(TagHelperOutput inputTagHelperOutput)
{ {
if (inputTagHelperOutput.Attributes.ContainsName("disabled") == false && if (inputTagHelperOutput.Attributes.ContainsName("disabled") == false &&
(TagHelper.IsDisabled || TagHelper.AspFor.ModelExplorer.GetAttribute<DisabledInput>() != null)) (TagHelper.IsDisabled || TagHelper.AspFor.ModelExplorer.GetAttribute<DisabledInput>() != null))
{ {
inputTagHelperOutput.Attributes.Add("disabled", ""); inputTagHelperOutput.Attributes.Add("disabled", "");
@ -170,7 +170,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
protected virtual void AddReadOnlyAttribute(TagHelperOutput inputTagHelperOutput) protected virtual void AddReadOnlyAttribute(TagHelperOutput inputTagHelperOutput)
{ {
if (inputTagHelperOutput.Attributes.ContainsName("readonly") == false && if (inputTagHelperOutput.Attributes.ContainsName("readonly") == false &&
(TagHelper.IsReadonly != false || TagHelper.AspFor.ModelExplorer.GetAttribute<ReadOnlyInput>() != null)) (TagHelper.IsReadonly != false || TagHelper.AspFor.ModelExplorer.GetAttribute<ReadOnlyInput>() != null))
{ {
inputTagHelperOutput.Attributes.Add("readonly", ""); inputTagHelperOutput.Attributes.Add("readonly", "");
@ -400,9 +400,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
list.Add(new FormGroupItem list.Add(new FormGroupItem
{ {
HtmlContent = html, HtmlContent = html,
Order = order Order = order,
PropertyName = propertyName
}); });
} }
} }
} }
} }

5
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpRadioInputTagHelperService.cs

@ -167,9 +167,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
list.Add(new FormGroupItem list.Add(new FormGroupItem
{ {
HtmlContent = html, HtmlContent = html,
Order = order Order = order,
PropertyName = propertyName
}); });
} }
} }
} }
} }

9
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpSelectTagHelperService.cs

@ -125,7 +125,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
return await GetLabelAsHtmlUsingTagHelperAsync(context, output) + GetRequiredSymbol(context, output); return await GetLabelAsHtmlUsingTagHelperAsync(context, output) + GetRequiredSymbol(context, output);
} }
protected virtual string GetRequiredSymbol(TagHelperContext context, TagHelperOutput output) protected virtual string GetRequiredSymbol(TagHelperContext context, TagHelperOutput output)
{ {
if (!TagHelper.DisplayRequiredSymbol) if (!TagHelper.DisplayRequiredSymbol)
@ -221,7 +221,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
} }
protected virtual List<SelectListItem> GetSelectItemsFromAttribute( protected virtual List<SelectListItem> GetSelectItemsFromAttribute(
SelectItems selectItemsAttribute, SelectItems selectItemsAttribute,
ModelExplorer explorer) ModelExplorer explorer)
{ {
var selectItems = selectItemsAttribute.GetItems(explorer)?.ToList(); var selectItems = selectItemsAttribute.GetItems(explorer)?.ToList();
@ -329,9 +329,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
list.Add(new FormGroupItem list.Add(new FormGroupItem
{ {
HtmlContent = html, HtmlContent = html,
Order = order Order = order,
PropertyName = propertyName
}); });
} }
} }
} }
} }

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/FormGroupItem.cs

@ -5,5 +5,7 @@
public string HtmlContent { get; set; } public string HtmlContent { get; set; }
public int Order { get; set; } public int Order { get; set; }
public string PropertyName { get; set; }
} }
} }

15
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs

@ -57,7 +57,11 @@ namespace Volo.Abp.Cli.Commands
.Options .Options
.GetOrNull(Options.IncludePreviews.Short, Options.IncludePreviews.Long) != null; .GetOrNull(Options.IncludePreviews.Short, Options.IncludePreviews.Long) != null;
var solution = Directory.GetFiles(directory, "*.sln", SearchOption.AllDirectories).FirstOrDefault(); var solution = commandLineArgs.Options.GetOrNull(Options.SolutionName.Short, Options.SolutionName.Long);
if (solution.IsNullOrWhiteSpace())
{
solution = Directory.GetFiles(directory, "*.sln", SearchOption.AllDirectories).FirstOrDefault();
}
if (solution != null) if (solution != null)
{ {
@ -101,11 +105,14 @@ namespace Volo.Abp.Cli.Commands
sb.AppendLine("-p|--include-previews (if supported by the template)"); sb.AppendLine("-p|--include-previews (if supported by the template)");
sb.AppendLine("--npm (Only updates NPM packages)"); sb.AppendLine("--npm (Only updates NPM packages)");
sb.AppendLine("--nuget (Only updates Nuget packages)"); sb.AppendLine("--nuget (Only updates Nuget packages)");
sb.AppendLine("-sp|--solution-path (Specify the solution path)");
sb.AppendLine("-sn|--solution-name (Specify the solution name)");
sb.AppendLine(""); sb.AppendLine("");
sb.AppendLine("Some examples:"); sb.AppendLine("Some examples:");
sb.AppendLine(""); sb.AppendLine("");
sb.AppendLine(" abp update"); sb.AppendLine(" abp update");
sb.AppendLine(" abp update -p"); sb.AppendLine(" abp update -p");
sb.AppendLine(" abp update -sp \"D:\\projects\\\" -sn Acme.BookStore");
sb.AppendLine(""); sb.AppendLine("");
sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI");
@ -125,6 +132,12 @@ namespace Volo.Abp.Cli.Commands
public const string Long = "solution-path"; public const string Long = "solution-path";
} }
public static class SolutionName
{
public const string Short = "sn";
public const string Long = "solution-name";
}
public static class IncludePreviews public static class IncludePreviews
{ {
public const string Short = "p"; public const string Short = "p";

2
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs

@ -7,8 +7,6 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Nest;
using Newtonsoft.Json;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Docs.Caching; using Volo.Docs.Caching;

5
modules/docs/src/Volo.Docs.Domain/Volo/Docs/FileSystem/Documents/FileSystemDocumentSource.cs

@ -87,6 +87,11 @@ namespace Volo.Docs.FileSystem.Documents
{ {
throw new SecurityException("Can not get a resource file out of the project folder!"); throw new SecurityException("Can not get a resource file out of the project folder!");
} }
if (!File.Exists(path))
{
throw new DocumentNotFoundException(path);
}
} }
} }
} }

144
modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentSource.cs

@ -48,68 +48,155 @@ namespace Volo.Docs.GitHub.Documents
fileName = documentName.Substring(documentName.LastIndexOf('/') + 1); fileName = documentName.Substring(documentName.LastIndexOf('/') + 1);
} }
var fileCommits = await GetFileCommitsAsync(project, version, project.GetGitHubInnerUrl(languageCode, documentName)); var content = await DownloadWebContentAsStringAsync(rawDocumentUrl, token, userAgent);
var commits = await GetGitHubCommitsOrNull(project, documentName, languageCode, version);
var documentCreationTime = fileCommits.LastOrDefault()?.Commit.Author.Date.DateTime ?? DateTime.MinValue;
var documentCreationTime = GetFirstCommitDate(commits);
var lastSignificantUpdateTime = !isNavigationDocument && !isParameterDocument && version == project.LatestVersionBranchName ? var lastUpdateTime = GetLastCommitDate(commits);
await GetLastSignificantUpdateTime( var lastSignificantUpdateTime = await GetLastKnownSignificantUpdateTime(project, documentName, languageCode, version, lastKnownSignificantUpdateTime, isNavigationDocument, isParameterDocument, commits, documentCreationTime);
fileCommits,
project,
project.GetGitHubInnerUrl(languageCode, documentName),
lastKnownSignificantUpdateTime,
documentCreationTime
) ?? lastKnownSignificantUpdateTime
: null;
var document = new Document(GuidGenerator.Create(), var document = new Document
(
GuidGenerator.Create(),
project.Id, project.Id,
documentName, documentName,
version, version,
languageCode, languageCode,
fileName, fileName,
await DownloadWebContentAsStringAsync(rawDocumentUrl, token, userAgent), content,
project.Format, project.Format,
editLink, editLink,
rootUrl, rootUrl,
rawRootUrl, rawRootUrl,
localDirectory, localDirectory,
documentCreationTime, documentCreationTime,
fileCommits.FirstOrDefault()?.Commit.Author.Date.DateTime ?? DateTime.MinValue, lastUpdateTime,
DateTime.Now, DateTime.Now,
lastSignificantUpdateTime); lastSignificantUpdateTime
);
if (isNavigationDocument || isParameterDocument)
{
return document;
}
var authors = GetAuthors(commits);
foreach (var author in authors)
{
document.AddContributor(author.Login, author.HtmlUrl, author.AvatarUrl);
}
var authors = fileCommits return document;
}
private async Task<DateTime?> GetLastKnownSignificantUpdateTime(
Project project,
string documentName,
string languageCode,
string version,
DateTime? lastKnownSignificantUpdateTime,
bool isNavigationDocument,
bool isParameterDocument,
IReadOnlyList<GitHubCommit> commits,
DateTime documentCreationTime)
{
return !isNavigationDocument && !isParameterDocument && version == project.LatestVersionBranchName
? await GetLastSignificantUpdateTime(
commits,
project,
project.GetGitHubInnerUrl(languageCode, documentName),
lastKnownSignificantUpdateTime,
documentCreationTime
) ?? lastKnownSignificantUpdateTime
: null;
}
private static List<Author> GetAuthors(IReadOnlyList<GitHubCommit> commits)
{
if (commits == null || !commits.Any())
{
return new List<Author>();
}
return commits
.Where(x => x.Author != null) .Where(x => x.Author != null)
.Select(x => x.Author) .Select(x => x.Author)
.GroupBy(x => x.Id) .GroupBy(x => x.Id)
.OrderByDescending(x => x.Count()) .OrderByDescending(x => x.Count())
.Select(x => x.FirstOrDefault()).ToList(); .Select(x => x.FirstOrDefault())
.ToList();
}
private static DateTime GetLastCommitDate(IReadOnlyList<GitHubCommit> commits)
{
return GetCommitDate(commits, false);
}
if (!isNavigationDocument && !isParameterDocument) private static DateTime GetFirstCommitDate(IReadOnlyList<GitHubCommit> commits)
{
return GetCommitDate(commits, true);
}
private static DateTime GetCommitDate(IReadOnlyList<GitHubCommit> commits, bool isFirstCommit)
{
if (commits == null)
{ {
foreach (var author in authors) return DateTime.MinValue;
{
document.AddContributor(author.Login, author.HtmlUrl, author.AvatarUrl);
}
} }
return document; var gitHubCommit = isFirstCommit ?
commits.LastOrDefault() : //first commit
commits.FirstOrDefault(); //last commit
if (gitHubCommit == null)
{
return DateTime.MinValue;
}
if (gitHubCommit.Commit == null)
{
return DateTime.MinValue;
}
if (gitHubCommit.Commit.Author == null)
{
return DateTime.MinValue;
}
return gitHubCommit.Commit.Author.Date.DateTime;
}
private async Task<IReadOnlyList<GitHubCommit>> GetGitHubCommitsOrNull(Project project, string documentName, string languageCode, string version)
{
/*
* Getting file commits usually throws "Resource temporarily unavailable" or "Network is unreachable"
* This is a trival information and running this inside try-catch is safer.
*/
try
{
return await GetFileCommitsAsync(project, version, project.GetGitHubInnerUrl(languageCode, documentName));
}
catch (Exception e)
{
Logger.LogError(e.ToString());
return null;
}
} }
private async Task<DateTime?> GetLastSignificantUpdateTime( private async Task<DateTime?> GetLastSignificantUpdateTime(
IReadOnlyList<GitHubCommit> fileCommits, IReadOnlyList<GitHubCommit> commits,
Project project, Project project,
string fileName, string fileName,
DateTime? lastKnownSignificantUpdateTime, DateTime? lastKnownSignificantUpdateTime,
DateTime documentCreationTime) DateTime documentCreationTime)
{ {
if (!fileCommits.Any()) if (commits == null || !commits.Any())
{ {
return null; return null;
} }
var fileCommitsAfterCreation = fileCommits.Take(fileCommits.Count - 1); var fileCommitsAfterCreation = commits.Take(commits.Count - 1);
var commitsToEvaluate = (lastKnownSignificantUpdateTime != null var commitsToEvaluate = (lastKnownSignificantUpdateTime != null
? fileCommitsAfterCreation.Where(c => c.Commit.Author.Date.DateTime > lastKnownSignificantUpdateTime) ? fileCommitsAfterCreation.Where(c => c.Commit.Author.Date.DateTime > lastKnownSignificantUpdateTime)
@ -117,7 +204,6 @@ namespace Volo.Docs.GitHub.Documents
foreach (var gitHubCommit in commitsToEvaluate) foreach (var gitHubCommit in commitsToEvaluate)
{ {
var fullCommit = await _githubRepositoryManager.GetSingleCommitsAsync( var fullCommit = await _githubRepositoryManager.GetSingleCommitsAsync(
GetOwnerNameFromUrl(project.GetGitHubUrl()), GetOwnerNameFromUrl(project.GetGitHubUrl()),
GetRepositoryNameFromUrl(project.GetGitHubUrl()), GetRepositoryNameFromUrl(project.GetGitHubUrl()),

1
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/en.json

@ -16,6 +16,7 @@
"Projects": "Project(s)", "Projects": "Project(s)",
"NoProjectWarning": "There are no projects yet!", "NoProjectWarning": "There are no projects yet!",
"DocumentNotFound": "Oops, the requested document was not found!", "DocumentNotFound": "Oops, the requested document was not found!",
"ProjectNotFound": "Oops, the requested project was not found!",
"NavigationDocumentNotFound": "This version does not have a navigation document!", "NavigationDocumentNotFound": "This version does not have a navigation document!",
"DocumentNotFoundInSelectedLanguage": "Document in the language you wanted is not found. Document in the default language is shown.", "DocumentNotFoundInSelectedLanguage": "Document in the language you wanted is not found. Document in the default language is shown.",
"FilterTopics": "Filter topics", "FilterTopics": "Filter topics",

3
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hans.json

@ -1,6 +1,6 @@
{ {
"culture": "zh-Hans", "culture": "zh-Hans",
"texts": { "texts": {
"Documents": "文档", "Documents": "文档",
"BackToWebsite": "返回主网站", "BackToWebsite": "返回主网站",
"Contributors": "贡献者", "Contributors": "贡献者",
@ -14,6 +14,7 @@
"Projects": "项目", "Projects": "项目",
"NoProjectWarning": "还没有项目!", "NoProjectWarning": "还没有项目!",
"DocumentNotFound": "找不到请求的文档!", "DocumentNotFound": "找不到请求的文档!",
"ProjectNotFound": "找不到请求的项目!",
"NavigationDocumentNotFound": "这个版本没有导航文件!", "NavigationDocumentNotFound": "这个版本没有导航文件!",
"DocumentNotFoundInSelectedLanguage": "本文档不适用于所选语言, 将以默认语言显示文档.", "DocumentNotFoundInSelectedLanguage": "本文档不适用于所选语言, 将以默认语言显示文档.",
"FilterTopics": "过滤主题", "FilterTopics": "过滤主题",

1
modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/zh-Hant.json

@ -14,6 +14,7 @@
"Projects": "專案", "Projects": "專案",
"NoProjectWarning": "沒有專案!", "NoProjectWarning": "沒有專案!",
"DocumentNotFound": "找不到要求的文件!", "DocumentNotFound": "找不到要求的文件!",
"ProjectNotFound": "找不到請求的項目!",
"NavigationDocumentNotFound": "這個版本沒有導覽文件!", "NavigationDocumentNotFound": "這個版本沒有導覽文件!",
"DocumentNotFoundInSelectedLanguage": "本文件不適用於所選語系,將以預設語系顯示.", "DocumentNotFoundInSelectedLanguage": "本文件不適用於所選語系,將以預設語系顯示.",
"FilterTopics": "過濾主題", "FilterTopics": "過濾主題",

66
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml

@ -5,12 +5,12 @@
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Clipboard @using Volo.Abp.AspNetCore.Mvc.UI.Packages.Clipboard
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.MalihuCustomScrollbar @using Volo.Abp.AspNetCore.Mvc.UI.Packages.MalihuCustomScrollbar
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Popper @using Volo.Abp.AspNetCore.Mvc.UI.Packages.Popper
@using Volo.Docs.Pages.Documents.Shared.DocumentNotFoundComponent
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Prismjs @using Volo.Abp.AspNetCore.Mvc.UI.Packages.Prismjs
@using Volo.Abp.AspNetCore.Mvc.UI.Theming @using Volo.Abp.AspNetCore.Mvc.UI.Theming
@using Volo.Docs @using Volo.Docs
@using Volo.Docs.Localization @using Volo.Docs.Localization
@using Volo.Docs.Pages.Documents.Project @using Volo.Docs.Pages.Documents.Project
@using Volo.Docs.Pages.Documents.Shared.ErrorComponent
@inject IThemeManager ThemeManager @inject IThemeManager ThemeManager
@inject IPageLayout PageLayout @inject IPageLayout PageLayout
@inject IHtmlLocalizer<DocsResource> L @inject IHtmlLocalizer<DocsResource> L
@ -39,9 +39,10 @@
<abp-script src="/Pages/Documents/Project/bootstrap-toc.js" /> <abp-script src="/Pages/Documents/Project/bootstrap-toc.js" />
<abp-script src="/Pages/Documents/Shared/Scripts/vs.js" /> <abp-script src="/Pages/Documents/Shared/Scripts/vs.js" />
<abp-script src="/Pages/Documents/Project/index.js" /> <abp-script src="/Pages/Documents/Project/index.js" />
<abp-script src="/Pages/Documents/Shared/ErrorComponent/error.js" />
</abp-script-bundle> </abp-script-bundle>
} }
@if (Model.DocumentFound) @if (Model.LoadSuccess)
{ {
<div class="docs-page" data-spy="scroll" data-target="#docs-sticky-index"> <div class="docs-page" data-spy="scroll" data-target="#docs-sticky-index">
<div class="row justify-content-end"> <div class="row justify-content-end">
@ -152,11 +153,11 @@
<label class="input-group-text"><i class="fa fa-filter"></i></label> <label class="input-group-text"><i class="fa fa-filter"></i></label>
</div> </div>
<input class="form-control" <input class="form-control"
id="filter" id="filter"
type="search" type="search"
data-search-url="@Model." data-search-url="@Model."
placeholder="@L["FilterTopics"].Value" placeholder="@L["FilterTopics"].Value"
aria-label="Filter"> aria-label="Filter">
</div> </div>
</div> </div>
@ -171,11 +172,11 @@
<label class="input-group-text"><i class="fa fa-search"></i></label> <label class="input-group-text"><i class="fa fa-search"></i></label>
</div> </div>
<input class="form-control" <input class="form-control"
id="fullsearch" id="fullsearch"
type="search" type="search"
data-fullsearch-url="/search/@Model.LanguageCode/@Model.ProjectName/@Model.Version/" data-fullsearch-url="/search/@Model.LanguageCode/@Model.ProjectName/@Model.Version/"
placeholder="@L["FullSearch"].Value" placeholder="@L["FullSearch"].Value"
aria-label="Filter"> aria-label="Filter">
</div> </div>
</div> </div>
@ -225,8 +226,8 @@
@if (!string.IsNullOrEmpty(Model.Document.EditLink)) @if (!string.IsNullOrEmpty(Model.Document.EditLink))
{ {
<a href="@Model.Document.EditLink" target="_blank"> <a href="@Model.Document.EditLink" target="_blank">
<i class="fa fa-edit"></i> <i class="fa fa-edit"></i>
@(L["Edit"]) @(L["Edit"])
<span class="for-desktop">(@L["LastEditTime"]: @Model.Document.LastUpdatedTime.ToShortDateString())</span> <span class="for-desktop">(@L["LastEditTime"]: @Model.Document.LastUpdatedTime.ToShortDateString())</span>
</a> </a>
} }
@ -348,14 +349,31 @@
} }
else else
{ {
@(await Component.InvokeAsync<DocumentNotFoundViewComponent>(new if (!Model.ProjectFound)
{ {
model = new DocumentNotFoundPageModel @(await Component.InvokeAsync<ErrorViewComponent>(new
{
model = new ErrorPageModel
{
RedirectUrl = Model.DocumentsUrlPrefix,
ErrorCode = "404",
ErrorMessage = L.GetString("ProjectNotFound")
}
}))
}
if (!Model.DocumentFound)
{
@(await Component.InvokeAsync<ErrorViewComponent>(new
{ {
ProjectName = Model.ProjectName, model = new ErrorPageModel
DocumentName = Model.DocumentName, {
LanguageCode = Model.LanguageCode, RedirectUrl = Model.DocumentsUrlPrefix + Model.LanguageCode + "/" + Model.ProjectName + "/"
Version = Model.Version, + (Model.LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Model.Version),
} ErrorCode = "404",
})) ErrorMessage = L.GetString("DocumentNotFound"),
} AutoRedirect = !Model.DocumentName.IsNullOrWhiteSpace()
}
}))
}
}

72
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -7,13 +7,11 @@ using System.Threading.Tasks;
using System.Web; using System.Web;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.Localization;
using Volo.Docs.Documents; using Volo.Docs.Documents;
using Volo.Docs.HtmlConverting; using Volo.Docs.HtmlConverting;
using Volo.Docs.Models; using Volo.Docs.Models;
@ -37,6 +35,10 @@ namespace Volo.Docs.Pages.Documents.Project
public bool DocumentFound { get; set; } = true; public bool DocumentFound { get; set; } = true;
public bool ProjectFound { get; set; } = true;
public bool LoadSuccess => DocumentFound && ProjectFound;
public string DefaultLanguageCode { get; set; } public string DefaultLanguageCode { get; set; }
public ProjectDto Project { get; set; } public ProjectDto Project { get; set; }
@ -120,7 +122,8 @@ namespace Volo.Docs.Pages.Documents.Project
catch (EntityNotFoundException e) catch (EntityNotFoundException e)
{ {
Logger.LogWarning(e.Message); Logger.LogWarning(e.Message);
return NotFound(); ProjectFound = false;
return Page();
} }
if (ShowProjectsCombobox) if (ShowProjectsCombobox)
@ -344,43 +347,13 @@ namespace Volo.Docs.Pages.Documents.Project
try try
{ {
if (DocumentName.IsNullOrWhiteSpace()) Document = await GetSpecificDocumentOrDefaultAsync(LanguageCode);
{
Document = await _documentAppService.GetDefaultAsync(
new GetDefaultDocumentInput
{
ProjectId = Project.Id,
LanguageCode = LanguageCode,
Version = Version
}
);
}
else
{
Document = await _documentAppService.GetAsync(
new GetDocumentInput
{
ProjectId = Project.Id,
Name = DocumentNameWithExtension,
LanguageCode = LanguageCode,
Version = Version
}
);
}
} }
catch (DocumentNotFoundException) catch (DocumentNotFoundException)
{ {
if (LanguageCode != DefaultLanguageCode) if (LanguageCode != DefaultLanguageCode)
{ {
Document = await _documentAppService.GetAsync( Document = await GetSpecificDocumentOrDefaultAsync(DefaultLanguageCode);
new GetDocumentInput
{
ProjectId = Project.Id,
Name = DocumentNameWithExtension,
LanguageCode = DefaultLanguageCode,
Version = Version
}
);
DocumentLanguageIsDifferent = true; DocumentLanguageIsDifferent = true;
} }
@ -542,6 +515,33 @@ namespace Volo.Docs.Pages.Documents.Project
} }
private async Task<DocumentWithDetailsDto> GetSpecificDocumentOrDefaultAsync(string languageCode)
{
if (DocumentName.IsNullOrWhiteSpace())
{
return await _documentAppService.GetDefaultAsync(
new GetDefaultDocumentInput
{
ProjectId = Project.Id,
LanguageCode = languageCode,
Version = Version
}
);
}
else
{
return await _documentAppService.GetAsync(
new GetDocumentInput
{
ProjectId = Project.Id,
Name = DocumentNameWithExtension,
LanguageCode = languageCode,
Version = Version
}
);
}
}
public async Task SetDocumentPreferencesAsync() public async Task SetDocumentPreferencesAsync()
{ {
var projectParameters = await _documentAppService.GetParametersAsync( var projectParameters = await _documentAppService.GetParametersAsync(

50
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/index.js

@ -203,31 +203,31 @@
'YandexBot', 'YandexBot',
'msnbot', 'msnbot',
'Rambler', 'Rambler',
'Yahoo', 'Yahoo',
'AbachoBOT', 'AbachoBOT',
'accoona', 'accoona',
'AcoiRobot', 'AcoiRobot',
'ASPSeek', 'ASPSeek',
'CrocCrawler', 'CrocCrawler',
'Dumbot', 'Dumbot',
'FAST-WebCrawler', 'FAST-WebCrawler',
'GeonaBot', 'GeonaBot',
'Gigabot', 'Gigabot',
'Lycos', 'Lycos',
'MSRBOT', 'MSRBOT',
'Scooter', 'Scooter',
'AltaVista', 'AltaVista',
'IDBot', 'IDBot',
'eStyle', 'eStyle',
'Scrubby', 'Scrubby',
'Slurp', 'Slurp',
'DuckDuckBot', 'DuckDuckBot',
'Baiduspider', 'Baiduspider',
'VoilaBot', 'VoilaBot',
'ExaLead', 'ExaLead',
'Search Dog', 'Search Dog',
'MSN Bot' , 'MSN Bot',
'BingBot' 'BingBot'
]; ];
var agent = navigator.userAgent; var agent = navigator.userAgent;
@ -276,9 +276,8 @@
if (queryStrings.length <= 0) { if (queryStrings.length <= 0) {
returnList.push(key + "=" + $(this).val()); returnList.push(key + "=" + $(this).val());
} } else {
else {
for (var k = 0; k < queryStrings.length; k++) { for (var k = 0; k < queryStrings.length; k++) {
returnList.push(key + "=" + $(this).val() + "&" + queryStrings[k]); returnList.push(key + "=" + $(this).val() + "&" + queryStrings[k]);
} }
@ -291,12 +290,12 @@
var queryStrings = getQueryStringsFromComboboxes(0); var queryStrings = getQueryStringsFromComboboxes(0);
for (var i = 0; i < queryStrings.length; i++) { for (var i = 0; i < queryStrings.length; i++) {
html += "<a href=\"" + currentUrl + "?" + queryStrings[i] +"\">" + queryStrings[i]+"</a> " html += "<a href=\"" + currentUrl + "?" + queryStrings[i] + "\">" + queryStrings[i] + "</a> "
} }
$("#crawler_link").html(html); $("#crawler_link").html(html);
}; };
initNavigationFilter("sidebar-scroll"); initNavigationFilter("sidebar-scroll");
initAnchorTags(".docs-page .docs-body"); initAnchorTags(".docs-page .docs-body");
@ -309,5 +308,4 @@
}); });
})(jQuery); })(jQuery);

15
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/DocumentNotFoundComponent/DocumentNotFoundPageModel.cs

@ -1,15 +0,0 @@
namespace Volo.Docs.Pages.Documents.Shared.DocumentNotFoundComponent
{
public class DocumentNotFoundPageModel
{
public string ProjectName { get; set; }
public string LanguageCode { get; set; }
public string Version { get; set; }
public string DocumentName { get; set; }
public string DocumentsUrlPrefix { get; set; }
}
}

26
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/DocumentNotFoundComponent/DocumentNotFoundViewComponent.cs

@ -1,26 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
namespace Volo.Docs.Pages.Documents.Shared.DocumentNotFoundComponent
{
public class DocumentNotFoundViewComponent : AbpViewComponent
{
private readonly DocsUiOptions _options;
public DocumentNotFoundViewComponent(IOptions<DocsUiOptions> options)
{
_options = options.Value;
}
public IViewComponentResult Invoke(DocumentNotFoundPageModel model, string defaultErrorMessageKey)
{
model.DocumentsUrlPrefix = _options.RoutePrefix;
return View("~/Pages/Documents/Shared/DocumentNotFoundComponent/Default.cshtml", model);
}
}
}

28
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/DocumentNotFoundComponent/Default.cshtml → modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/Default.cshtml

@ -1,17 +1,19 @@
@using Volo.Docs.Pages.Documents.Shared.DocumentNotFoundComponent @model Volo.Docs.Pages.Documents.Shared.ErrorComponent.ErrorPageModel
@model DocumentNotFoundPageModel
@{ @{
} }
<div class="row position-relative vh-100" style="background: #e8e8e8;"> <div class="row position-relative vh-100" style="background: #e8e8e8;">
<div class="center"> <div class="center" id="DocumentErrorContainer">
<span class="notfound-404">404</span> <span class="notfound-@Model.ErrorCode">@Model.ErrorCode</span>
<h1> <h1>
<strong>"@Model.DocumentName"</strong> not found in <strong>@Model.ProjectName</strong> documents, with <strong>@Model.Version</strong> version and <strong>@Model.LanguageCode</strong> language. @Model.ErrorMessage
</h1> </h1>
<br /> <br/>
<a href="@(Model.DocumentsUrlPrefix + Model.LanguageCode + "/" +Model.ProjectName + "/" + Model.Version)" class="btn btn-primary px-4"> @if (Model.AutoRedirect)
Go Back {
</a> <a href="@(Model.RedirectUrl)" class="btn btn-primary px-4" id="ErrorRedirect">
Go Back <span id="ErrorRedirectSeconds">(3)</span>
</a>
}
</div> </div>
</div> </div>
@ -20,7 +22,7 @@
h1 { h1 {
font-size: 1.75em; font-size: 1.75em;
line-height: 1.75; line-height: 1.75;
color: #777; color: #777;
font-weight: normal; font-weight: normal;
} }
@ -37,7 +39,7 @@
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
text-align: center; text-align: center;
} }
.notfound-404 { .notfound-404 {
font-size: 300px; font-size: 300px;
font-weight: 700; font-weight: 700;
@ -49,5 +51,5 @@
margin-bottom: -150px; margin-bottom: -150px;
z-index: -1; z-index: -1;
position: relative; position: relative;
} }
</style> </style>

13
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/ErrorPageModel.cs

@ -0,0 +1,13 @@
namespace Volo.Docs.Pages.Documents.Shared.ErrorComponent
{
public class ErrorPageModel
{
public string ErrorMessage { get; set; }
public string ErrorCode { get; set; }
public string RedirectUrl { get; set; }
public bool AutoRedirect { get; set; } = true;
}
}

14
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/ErrorViewComponent.cs

@ -0,0 +1,14 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
namespace Volo.Docs.Pages.Documents.Shared.ErrorComponent
{
public class ErrorViewComponent : AbpViewComponent
{
public IViewComponentResult Invoke(ErrorPageModel model)
{
return View("~/Pages/Documents/Shared/ErrorComponent/Default.cshtml", model);
}
}
}

20
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/ErrorComponent/error.js

@ -0,0 +1,20 @@
(function ($) {
$(function () {
var errorPageRedirect = function () {
var second = 3;
var close = setInterval(() => {
$("#ErrorRedirectSeconds").text(`(${--second})`);
if (second === 0) {
clearInterval(close);
$("#ErrorRedirect")[0].click();
}
}, 1000);
}
if (document.getElementById("ErrorRedirect")) {
errorPageRedirect();
}
});
})(jQuery);

28
npm/ng-packs/package.json

@ -22,19 +22,19 @@
"generate:changelog": "conventional-changelog -p angular -i CHANGELOG.md -s" "generate:changelog": "conventional-changelog -p angular -i CHANGELOG.md -s"
}, },
"devDependencies": { "devDependencies": {
"@abp/ng.account": "^2.6.1", "@abp/ng.account": "~2.6.2",
"@abp/ng.account.config": "^2.6.1", "@abp/ng.account.config": "~2.6.2",
"@abp/ng.core": "^2.6.1", "@abp/ng.core": "^2.6.2",
"@abp/ng.feature-management": "^2.6.1", "@abp/ng.feature-management": "^2.6.2",
"@abp/ng.identity": "^2.6.1", "@abp/ng.identity": "~2.6.2",
"@abp/ng.identity.config": "^2.6.1", "@abp/ng.identity.config": "~2.6.2",
"@abp/ng.permission-management": "^2.6.1", "@abp/ng.permission-management": "^2.6.2",
"@abp/ng.setting-management": "^2.6.1", "@abp/ng.setting-management": "~2.6.2",
"@abp/ng.setting-management.config": "^2.6.1", "@abp/ng.setting-management.config": "~2.6.2",
"@abp/ng.tenant-management": "^2.6.1", "@abp/ng.tenant-management": "~2.6.2",
"@abp/ng.tenant-management.config": "^2.6.1", "@abp/ng.tenant-management.config": "~2.6.2",
"@abp/ng.theme.basic": "^2.6.1", "@abp/ng.theme.basic": "~2.6.2",
"@abp/ng.theme.shared": "^2.6.1", "@abp/ng.theme.shared": "^2.6.2",
"@abp/utils": "^2.6.0", "@abp/utils": "^2.6.0",
"@angular-builders/jest": "^8.2.0", "@angular-builders/jest": "^8.2.0",
"@angular-devkit/build-angular": "~0.803.21", "@angular-devkit/build-angular": "~0.803.21",
@ -76,7 +76,7 @@
"just-compare": "^1.3.0", "just-compare": "^1.3.0",
"lerna": "^3.19.0", "lerna": "^3.19.0",
"ng-packagr": "^5.7.1", "ng-packagr": "^5.7.1",
"ngxs-reset-plugin": "^1.2.0", "ngxs-reset-plugin": "^1.3.0",
"ngxs-schematic": "^1.1.9", "ngxs-schematic": "^1.1.9",
"prettier": "^1.18.2", "prettier": "^1.18.2",
"protractor": "~5.4.0", "protractor": "~5.4.0",

26
npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.html

@ -5,30 +5,32 @@
<i class="fa icon" [ngClass]="iconClass"></i> <i class="fa icon" [ngClass]="iconClass"></i>
</div> </div>
<div class="content"> <div class="content">
<h1 class="title" *ngIf="data.title"> <h1
{{ data.title | abpLocalization: data.options?.titleLocalizationParams }} class="title"
</h1> *ngIf="data.title"
<p class="message" *ngIf="data.message"> [innerHTML]="data.title | abpLocalization: data.options?.titleLocalizationParams"
{{ data.message | abpLocalization: data.options?.messageLocalizationParams }} ></h1>
</p> <p
class="message"
*ngIf="data.message"
[innerHTML]="data.message | abpLocalization: data.options?.messageLocalizationParams"
></p>
</div> </div>
<div class="footer"> <div class="footer">
<button <button
id="cancel" id="cancel"
class="confirmation-button confirmation-button--reject" class="confirmation-button confirmation-button--reject"
[innerHTML]="data.options?.cancelText || 'AbpUi::Cancel'"
*ngIf="!data?.options?.hideCancelBtn" *ngIf="!data?.options?.hideCancelBtn"
(click)="close(reject)" (click)="close(reject)"
> ></button>
{{ data.options?.cancelText || 'AbpUi::Cancel' | abpLocalization }}
</button>
<button <button
id="confirm" id="confirm"
class="confirmation-button confirmation-button--approve" class="confirmation-button confirmation-button--approve"
[innerHTML]="data.options?.yesText || 'AbpUi::Yes'"
*ngIf="!data?.options?.hideYesBtn" *ngIf="!data?.options?.hideYesBtn"
(click)="close(confirm)" (click)="close(confirm)"
> ></button>
{{ data.options?.yesText || 'AbpUi::Yes' | abpLocalization }}
</button>
</div> </div>
</div> </div>
</div> </div>

19
npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts

@ -43,6 +43,25 @@ describe('ConfirmationService', () => {
expect(selectConfirmationContent('.message')).toBe('MESSAGE'); expect(selectConfirmationContent('.message')).toBe('MESSAGE');
})); }));
test('should display HTML string in title, message, and buttons', fakeAsync(() => {
service.show(
'<span class="custom-message">MESSAGE<span>',
'<span class="custom-title">TITLE<span>',
'neutral',
{
cancelText: '<span class="custom-cancel">CANCEL</span>',
yesText: '<span class="custom-yes">YES</span>',
},
);
tick();
expect(selectConfirmationContent('.custom-title')).toBe('TITLE');
expect(selectConfirmationContent('.custom-message')).toBe('MESSAGE');
expect(selectConfirmationContent('.custom-cancel')).toBe('CANCEL');
expect(selectConfirmationContent('.custom-yes')).toBe('YES');
}));
test.each` test.each`
type | selector | icon type | selector | icon
${'info'} | ${'.info'} | ${'.fa-info-circle'} ${'info'} | ${'.info'} | ${'.fa-info-circle'}

2
npm/ng-packs/scripts/install-new-dependencies.ts

@ -17,7 +17,7 @@ const updateAndInstall = async () => {
...packageJson.devDependencies, ...packageJson.devDependencies,
...dependencies, ...dependencies,
...peerDependencies, ...peerDependencies,
[name]: `^${version}`, [name]: `~${version}`,
}; };
packageJson.devDependencies = Object.keys(packageJson.devDependencies) packageJson.devDependencies = Object.keys(packageJson.devDependencies)

391
npm/ng-packs/yarn.lock

@ -2,26 +2,26 @@
# yarn lockfile v1 # yarn lockfile v1
"@abp/ng.account.config@^2.6.1": "@abp/ng.account.config@^2.6.2", "@abp/ng.account.config@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.account.config/-/ng.account.config-2.6.1.tgz#7df105f84d68e3266cec486d3fd15abc8beeaa4f" resolved "https://registry.yarnpkg.com/@abp/ng.account.config/-/ng.account.config-2.6.2.tgz#1a3e935b7144525c62f5d08adcd06d2ee12f7c9e"
integrity sha512-zN4DzB0XujdoqE3h8K1Rgd7TVuM+LlFwXcsb8DCorHiY91c+hKDd97jSaLB5nemFOiaZZgfT0/9FYafbftbpUw== integrity sha512-dC0/H1dkeQqYbu/dNISQA7NLpdOughhZSxT/7zjq6cBP8gYDceW0wYT5Rh0qIAkYWh2jO4BMXIFqzlH31Jg/XA==
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.account@^2.6.1": "@abp/ng.account@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-2.6.1.tgz#aba9c461ab178de22a66aa36ec9ba48d6641d5f4" resolved "https://registry.yarnpkg.com/@abp/ng.account/-/ng.account-2.6.2.tgz#aac921c49bcd8cdec506bd27d2546193416ea187"
integrity sha512-GQWGF8Bhcy98rzug10sdyKjmp+UIp8WVqG/urWa8gYukbRtZZIvQVnaJIJXDyE8qHVOU3SBybjasOKIKe3qLsQ== integrity sha512-s3gLSqNdCW6D+DvuML+aGFT8braCfSXUbxvJ1WRCovd2Ec0jNxPBKj84zgYPYEb3smD294DcXxNx36jtJK+1OA==
dependencies: dependencies:
"@abp/ng.account.config" "^2.6.1" "@abp/ng.account.config" "^2.6.2"
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.core@^2.6.1": "@abp/ng.core@^2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-2.6.1.tgz#7a788e414403b3872eda3b90d7ee0f30d4e86f98" resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-2.6.2.tgz#d0e4f6666a9a207fc7425001449bea2cdfe93522"
integrity sha512-8CQJotkaqaDtqxDBitH+bX1ANlvv7PkwiBINrN/H4CyxZqx6oVxKhFqJ6nlDKijnogGTYMIhegHPrpVZh4O6pg== integrity sha512-e7c82d9VF20d4JFUkyzT5iTqGKnkq5FBHdv6IW6lsVyuz2Zf/p4wNtKATRr2ntM7qNIjIQebtGNFyxxX4nmL+w==
dependencies: dependencies:
"@abp/utils" "^2.6.0" "@abp/utils" "^2.6.0"
"@angular/localize" "~9.1.0" "@angular/localize" "~9.1.0"
@ -35,86 +35,86 @@
ts-toolbelt "^6.3.6" ts-toolbelt "^6.3.6"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.feature-management@^2.6.1": "@abp/ng.feature-management@^2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-2.6.1.tgz#e81c9e55360533f8356b165e8548f3cf7e9ecab0" resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-2.6.2.tgz#da09b07ebe81f09ccf338a7c10c384920375567a"
integrity sha512-t8ugSLiAt/2fLo4OVnEMbk6jST/RZ+b6KysMnajKcxK/TAQG/Mj3FC9K52FdnjJg9s+MoJowR05YebAHhEnXig== integrity sha512-JdHuAZk9j9AR1iKU02Xoux40ULOccm+68q7/4L2G1cBET6yTAE8Ua9RPPX9HadmCG0cR8awl3d+5JPwyL3OjFA==
dependencies: dependencies:
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.identity.config@^2.6.1": "@abp/ng.identity.config@^2.6.2", "@abp/ng.identity.config@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.identity.config/-/ng.identity.config-2.6.1.tgz#cbf56d00a3633268b11fc125fcc711637b86770b" resolved "https://registry.yarnpkg.com/@abp/ng.identity.config/-/ng.identity.config-2.6.2.tgz#79384ae4b11e53e8bf9dda25d3400def05c5beb8"
integrity sha512-7dyEhjutbN2Zw7W1fKcldaZppmrP08kmKQAR6XHJhijcCJPsasVJ3F0babrG8SdRnZqoZVZ/5X21IfDuShc2/g== integrity sha512-jCqt2ZWEkRA9foJjHwRJtw5JNy03OVge9dUj0eAJ7Vo13IrKAT1kCNlD7cRM9xJ42Ga2utEqqz9FCJHgR2IxbQ==
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.identity@^2.6.1": "@abp/ng.identity@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-2.6.1.tgz#a67c5c3daae08ba8582494c869d384acbeb086f3" resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-2.6.2.tgz#14f83305415d27b67d01405e582978682cfd7f22"
integrity sha512-PsWjjxd29es8tHA8Zkb54HX9zj91Pv9fkWR5HQsUmv3mcBv0QyGEnCC/g6PJEQXNxpxdgG/aWxwrjDh59d8pAg== integrity sha512-wzR/QFoSSRhIxfH91QsTSCc0rBsFfsg8aiP5xPheNx3/lZygCnMogH3blRgLiNIoyxuG00MTfp+e9lFIBfDnbQ==
dependencies: dependencies:
"@abp/ng.identity.config" "^2.6.1" "@abp/ng.identity.config" "^2.6.2"
"@abp/ng.permission-management" "^2.6.1" "@abp/ng.permission-management" "^2.6.2"
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.permission-management@^2.6.1": "@abp/ng.permission-management@^2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-2.6.1.tgz#b2ea11ea2c3c3b9671def5164cf4879ce9adbcdd" resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-2.6.2.tgz#ba7902256acf3e1ff49552983e4d292f670f9ad8"
integrity sha512-Rm65jyxZQ/9qhze2mT8RuIfe8VA932ydeqivfykax5QPw7c6edHaRgvgdghufKSt5fS8twB2mNHzD6o3lsEXzA== integrity sha512-6NW5BF+5ZFQI8oLEQWCiJS5iF2v3gHLvohrbN84RsPNTc+ZRDte6MbIOGq2CWxM8qXwisLBiR/RWC4ssgfPqEA==
dependencies: dependencies:
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.setting-management.config@^2.6.1": "@abp/ng.setting-management.config@^2.6.2", "@abp/ng.setting-management.config@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.setting-management.config/-/ng.setting-management.config-2.6.1.tgz#85a015399628f560c6759fb48994fd2b9613e073" resolved "https://registry.yarnpkg.com/@abp/ng.setting-management.config/-/ng.setting-management.config-2.6.2.tgz#43e9e4399d65efc1aee6e314469c303ce22145e9"
integrity sha512-Jl3uE78G42mJhJ1c94En/dHnR8YOgVu93Z8NwvcW2L58TSmtogcS+7/+pG9fgnqnYovIeoMSYQfSRqYrKtJliw== integrity sha512-3F0vq5nvBTat2q7S0iBfdEsyPuZHJuL3+9z4Voq4Q9rA2T2VIAUMp9aBsfI2s2ycwGbsb7kCOWTKo/2by1b4AA==
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.setting-management@^2.6.1": "@abp/ng.setting-management@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-2.6.1.tgz#2a266de071a5a9c32230fbf8696057430ba6d2bc" resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-2.6.2.tgz#f49d361ed8412380fdf2173f28b890115748a52b"
integrity sha512-K+qg6JlX0FT6LDEAB4QsBrnT/Rsla2K8NFKdT3FkwfJtSbysqehTIUoO6m7hfuQzLOUd3XVDSOpaJ+Tqz7k1Bw== integrity sha512-0VdGa+t8lEZRsUdKL1EHoZei+ZCDMTu4n3UvXvD0OzRJyYPUjHRrMSSOYifuN4gPatluIe0E2I+tO3lQ3/2tjw==
dependencies: dependencies:
"@abp/ng.setting-management.config" "^2.6.1" "@abp/ng.setting-management.config" "^2.6.2"
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.tenant-management.config@^2.6.1": "@abp/ng.tenant-management.config@^2.6.2", "@abp/ng.tenant-management.config@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management.config/-/ng.tenant-management.config-2.6.1.tgz#3f484df5d59e210851785ec5394f45d0e7e25d73" resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management.config/-/ng.tenant-management.config-2.6.2.tgz#9a9365ad59bdd2053d7bd33fb623ce633de40b24"
integrity sha512-HG8YrQu8TJU4TxoImCPpFIajquiD7OGICcYTXpWl9K6NdvRyv/GaOZDcE0j6O7zGOpSpCHg4mhSgKEQ+pUSZnw== integrity sha512-iZ49Els+J9lbRKTSeNU/KIJuJS7Le3dAk1pdqLg/g5iw7e6uTEih1qeDvJdcXpSKfAZJrOd/KKDjFHIzVrveuA==
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.tenant-management@^2.6.1": "@abp/ng.tenant-management@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-2.6.1.tgz#7bb60383c05f3de76b99a4274c0f9019d5cca9f5" resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-2.6.2.tgz#6be284fe6691946e2e6766e34ae958d7d2ec5e3a"
integrity sha512-TM6HUS9drqxG7KaLrM6+9kYNnDmX5f/tlk4ReepvU3OzisCC87PQeVAhmrUn0DKy/RTIKKIl3ORzlxN0yyIgLg== integrity sha512-BGARok01Eqn1kEltOwjwIpMJ8LD0jtYfbSbnO8V9TRg7f4ZEqFmfXudOIluDIwHjSEkNXk+Cs0/iV53lyi5+lg==
dependencies: dependencies:
"@abp/ng.feature-management" "^2.6.1" "@abp/ng.feature-management" "^2.6.2"
"@abp/ng.tenant-management.config" "^2.6.1" "@abp/ng.tenant-management.config" "^2.6.2"
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.theme.basic@^2.6.1": "@abp/ng.theme.basic@~2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-2.6.1.tgz#9156bb47536d2a5191542b2d410d4297eaa3004d" resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-2.6.2.tgz#4b0414411e164885b8c467b04d635a0a3c81bd01"
integrity sha512-LWA4ZmhNvVwFQDmvy8JG1+qOUO/7ECM5Atb04AMzoZ1OOXJjL1D0ut3KG1xp6S8FxZ5CVFSVsMj4/cxL1mZh/A== integrity sha512-qgA4hh7ipIWY88JOqjChjoJgFB0csqXbwdb/pabrsFoHYuiFVT3cqvHq6jMfKQHEPBJSEnl6/GUIm+26DQ5eDw==
dependencies: dependencies:
"@abp/ng.theme.shared" "^2.6.1" "@abp/ng.theme.shared" "^2.6.2"
tslib "^1.9.0" tslib "^1.9.0"
"@abp/ng.theme.shared@^2.6.1": "@abp/ng.theme.shared@^2.6.2":
version "2.6.1" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-2.6.1.tgz#34b0738623221e26b32b8491ea4dc99bb9f875e8" resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-2.6.2.tgz#9d70b7aab010af4cd5a451c9c2d162d73ec5f9cc"
integrity sha512-V8xwqIjwhDp3szIeGDUK16gVaV2XPQUkPOFdhEN9fzTl0yuLoBByYjPuTI3Slb3C220pwcZsc5l+8rCsnKMUDA== integrity sha512-e3QVsPpmbPGmTpQY9J1RgmWer7Tx7mrsOtxjFvbJGqKVF1UUtU5Kc3VyGPb3JsjQtT+890/9qmAf/YSj3cNPIA==
dependencies: dependencies:
"@abp/ng.core" "^2.6.1" "@abp/ng.core" "^2.6.2"
"@fortawesome/fontawesome-free" "^5.12.1" "@fortawesome/fontawesome-free" "^5.12.1"
"@ng-bootstrap/ng-bootstrap" "^5.3.0" "@ng-bootstrap/ng-bootstrap" "^5.3.0"
"@ngx-validate/core" "^0.0.7" "@ngx-validate/core" "^0.0.7"
@ -123,9 +123,9 @@
tslib "^1.9.0" tslib "^1.9.0"
"@abp/utils@^2.6.0": "@abp/utils@^2.6.0":
version "2.6.0" version "2.6.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.6.0.tgz#ca174b19f74594a0ae8d64f56b032f07b9168ed1" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-2.6.2.tgz#dba9e7c0aa1531fae6c5ff22fcbdfb4d98c576e3"
integrity sha512-ABQUgFHbv8ktGR+tKx/1s+5a9JHuBwUVAy/Hn8OjbEDoSK73UHoapfFSShF/x12dWDKLcpvErmeiASiXb+soCw== integrity sha512-MqExfPA4FRYORsskVG7kbkAwzs9z4XaMaZ75XkoahD+FyZtm1e0miEEoDvwrdye9jgL/FrWeShWNE49GY7PvpA==
dependencies: dependencies:
just-compare "^1.3.0" just-compare "^1.3.0"
@ -356,9 +356,9 @@
integrity sha512-7EhN9JJbAJcH2xCa+rIOmekjiEuB0qwPdHuD5qn/wwMfRzMZo+Db4hHbR9KHrLH6H82PTwYKye/LLpDaZqoHOA== integrity sha512-7EhN9JJbAJcH2xCa+rIOmekjiEuB0qwPdHuD5qn/wwMfRzMZo+Db4hHbR9KHrLH6H82PTwYKye/LLpDaZqoHOA==
"@angular/localize@~9.1.0": "@angular/localize@~9.1.0":
version "9.1.1" version "9.1.3"
resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.1.tgz#267d7cecb288b3019482744330da0ef9e049c85d" resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-9.1.3.tgz#d03d9cb1b4fe10dabaf806062d23ee1b7774945d"
integrity sha512-5mYdSL7IwqFXWRgBXj9c5vHT15AQy2kjD40fJJsmUx4WUFr+uf0Ss9ADCfL2FjCHpATrjYKpiyJs1mAF60USPQ== integrity sha512-aV7AFgvEWm6aaEjS45EPJ1U4i2DOVR6DswUu9CsYkRfy/gSOxWE95SyrhLdg2hB64Bu4mcXxiV1So2BUI7NzBA==
dependencies: dependencies:
"@babel/core" "7.8.3" "@babel/core" "7.8.3"
glob "7.1.2" glob "7.1.2"
@ -2101,9 +2101,9 @@
glob-to-regexp "^0.3.0" glob-to-regexp "^0.3.0"
"@ng-bootstrap/ng-bootstrap@^5.3.0": "@ng-bootstrap/ng-bootstrap@^5.3.0":
version "5.3.0" version "5.3.1"
resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-5.3.0.tgz#4d624dd70a93f99c38bc35b1d3e00afc490155fc" resolved "https://registry.yarnpkg.com/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-5.3.1.tgz#4cf2929583e9572475d1d0f3c905b05885a086bb"
integrity sha512-oNg1sgT+XXxwSBX9oF4AeCHrq+Nm1CvukfVT/NPuYiuNAoTeVOdXc5bJHTLd+cCwoZ1OPZN/yZT+1BcW1KCksQ== integrity sha512-xlhBJb4oNcOQk04h5sQcq9P1E97sGB1HjqBCqgL0+S2w2uvLWME9F9SuH7wU4S1+eYe7WG9SKFpq+R4BjG2kMw==
dependencies: dependencies:
tslib "^1.9.0" tslib "^1.9.0"
@ -2183,12 +2183,12 @@
dependencies: dependencies:
"@octokit/types" "^2.0.0" "@octokit/types" "^2.0.0"
"@octokit/endpoint@^6.0.0": "@octokit/endpoint@^6.0.1":
version "6.0.0" version "6.0.1"
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.0.tgz#4c7acd79ab72df78732a7d63b09be53ec5a2230b" resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7"
integrity sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A== integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A==
dependencies: dependencies:
"@octokit/types" "^2.0.0" "@octokit/types" "^2.11.1"
is-plain-object "^3.0.0" is-plain-object "^3.0.0"
universal-user-agent "^5.0.0" universal-user-agent "^5.0.0"
@ -2236,13 +2236,13 @@
once "^1.4.0" once "^1.4.0"
"@octokit/request@^5.2.0": "@octokit/request@^5.2.0":
version "5.4.0" version "5.4.2"
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.0.tgz#52382c830f0cf3295b5a03e308872ac0f5ccba9b" resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee"
integrity sha512-uAJO6GI8z8VHBqtY7VTL9iFy1Y+UTp5ShpI97tY5z0qBfYKE9rZCRsCm23VmF00x+IoNJ7a0nuVITs/+wS9/mg== integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw==
dependencies: dependencies:
"@octokit/endpoint" "^6.0.0" "@octokit/endpoint" "^6.0.1"
"@octokit/request-error" "^2.0.0" "@octokit/request-error" "^2.0.0"
"@octokit/types" "^2.8.2" "@octokit/types" "^2.11.1"
deprecation "^2.0.0" deprecation "^2.0.0"
is-plain-object "^3.0.0" is-plain-object "^3.0.0"
node-fetch "^2.3.0" node-fetch "^2.3.0"
@ -2271,10 +2271,10 @@
once "^1.4.0" once "^1.4.0"
universal-user-agent "^4.0.0" universal-user-agent "^4.0.0"
"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.8.2": "@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1":
version "2.9.0" version "2.12.1"
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.9.0.tgz#b3b69cddab629dd31a559ffb25c9f471301d7538" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.12.1.tgz#4a26b4a85ec121043d3b0745b5798f9d8fd968ca"
integrity sha512-IzptUpoDsFlXF+AOys+KnfItIVY3EK+eH9Akv+lJYELnMSGkJnIcClt6Cm0QRR4ecsUTsmFJWn10iFgJ9BQqIQ== integrity sha512-LRLR1tjbcCfAmUElvTmMvLEzstpx6Xt/aQVTg2xvd+kHA2Ekp1eWl5t+gU7bcwjXHYEAzh4hH4WH+kS3vh+wRw==
dependencies: dependencies:
"@types/node" ">= 8" "@types/node" ">= 8"
@ -2429,9 +2429,9 @@
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/node@*", "@types/node@>= 8": "@types/node@*", "@types/node@>= 8":
version "13.11.1" version "13.13.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.1.tgz#49a2a83df9d26daacead30d0ccc8762b128d53c7" resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c"
integrity sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g== integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==
"@types/node@^8.0.31": "@types/node@^8.0.31":
version "8.10.60" version "8.10.60"
@ -2789,9 +2789,9 @@ ajv@6.9.1:
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5:
version "6.12.0" version "6.12.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
dependencies: dependencies:
fast-deep-equal "^3.1.1" fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0" fast-json-stable-stringify "^2.0.0"
@ -3154,9 +3154,9 @@ babel-jest@^24.9.0:
slash "^2.0.0" slash "^2.0.0"
babel-plugin-dynamic-import-node@^2.3.0: babel-plugin-dynamic-import-node@^2.3.0:
version "2.3.0" version "2.3.3"
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
dependencies: dependencies:
object.assign "^4.1.0" object.assign "^4.1.0"
@ -3437,12 +3437,12 @@ browserslist@4.10.0:
pkg-up "^3.1.0" pkg-up "^3.1.0"
browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.3, browserslist@^4.8.5, browserslist@^4.9.1: browserslist@^4.0.0, browserslist@^4.11.1, browserslist@^4.6.3, browserslist@^4.8.5, browserslist@^4.9.1:
version "4.11.1" version "4.12.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d"
integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==
dependencies: dependencies:
caniuse-lite "^1.0.30001038" caniuse-lite "^1.0.30001043"
electron-to-chromium "^1.3.390" electron-to-chromium "^1.3.413"
node-releases "^1.1.53" node-releases "^1.1.53"
pkg-up "^2.0.0" pkg-up "^2.0.0"
@ -3677,10 +3677,10 @@ caniuse-lite@1.0.30001035:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e"
integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==
caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001038, caniuse-lite@^1.0.30001039: caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001039, caniuse-lite@^1.0.30001043:
version "1.0.30001042" version "1.0.30001048"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001042.tgz#c91ec21ec2d270bd76dbc2ce261260c292b8c93c" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e"
integrity sha512-igMQ4dlqnf4tWv0xjaaE02op9AJ2oQzXKjWf4EuAHFN694Uo9/EfPVIPJcmn2WkU9RqozCxx5e2KPcVClHDbDw== integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==
canonical-path@1.0.0: canonical-path@1.0.0:
version "1.0.0" version "1.0.0"
@ -3768,9 +3768,9 @@ chokidar@2.0.4:
fsevents "^1.2.2" fsevents "^1.2.2"
"chokidar@>=2.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.0.2: "chokidar@>=2.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.0.2:
version "3.3.1" version "3.4.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8"
integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==
dependencies: dependencies:
anymatch "~3.1.1" anymatch "~3.1.1"
braces "~3.0.2" braces "~3.0.2"
@ -3778,7 +3778,7 @@ chokidar@2.0.4:
is-binary-path "~2.1.0" is-binary-path "~2.1.0"
is-glob "~4.0.1" is-glob "~4.0.1"
normalize-path "~3.0.0" normalize-path "~3.0.0"
readdirp "~3.3.0" readdirp "~3.4.0"
optionalDependencies: optionalDependencies:
fsevents "~2.1.2" fsevents "~2.1.2"
@ -5023,10 +5023,10 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.390: electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413:
version "1.3.407" version "1.3.418"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.407.tgz#361dbfc92a3d1b0b097b77221256271967e04c0e" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.418.tgz#840021191f466b803a873e154113620c9f53cec6"
integrity sha512-ayDQgkwCLHq0AVmsU10t2H/8X9lq3nb1CRV9rWYsc2nTTbFMvh4Aaau48Ao0iW/L+Q8Y9bgbJ5iHyPse7DGMJw== integrity sha512-i2QrQtHes5fK/F9QGG5XacM5WKEuR322fxTYF9e8O9Gu0mc0WmjjwGpV8c7Htso6Zf2Di18lc3SIPxmMeRFBug==
elliptic@^6.0.0: elliptic@^6.0.0:
version "6.5.2" version "6.5.2"
@ -5104,9 +5104,9 @@ env-paths@^2.2.0:
integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==
envinfo@^7.3.1: envinfo@^7.3.1:
version "7.5.0" version "7.5.1"
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236"
integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==
err-code@^1.0.0: err-code@^1.0.0:
version "1.1.2" version "1.1.2"
@ -5503,9 +5503,9 @@ figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
figlet@^1.2.3: figlet@^1.2.3:
version "1.3.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.3.0.tgz#c49e3d92907ba13bebadc7124f76ba71f1f32ef0" resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.4.0.tgz#21c5878b3752a932ebdb8be400e2d10bbcddfd60"
integrity sha512-f7A8aOJAfyehLJ7lQ6rEA8WJw7kOk3lfWRi5piSjkzbK5YkI5sqO8eiLHz1ehO+DM0QYB85i8VfA6XIGUbU1dg== integrity sha512-CxxIjEKHlqGosgXaIA+sikGDdV6KZOOlzPJnYuPgQlOSHZP5h9WIghYI30fyXnwEVeSH7Hedy72gC6zJrFC+SQ==
figures@^2.0.0: figures@^2.0.0:
version "2.0.0" version "2.0.0"
@ -5744,9 +5744,9 @@ fsevents@^1.2.2, fsevents@^1.2.7:
nan "^2.12.1" nan "^2.12.1"
fsevents@~2.1.2: fsevents@~2.1.2:
version "2.1.2" version "2.1.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
function-bind@^1.1.1: function-bind@^1.1.1:
version "1.1.1" version "1.1.1"
@ -6861,11 +6861,6 @@ is-plain-object@^3.0.0:
dependencies: dependencies:
isobject "^4.0.0" isobject "^4.0.0"
is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
is-reference@^1.1.2: is-reference@^1.1.2:
version "1.1.4" version "1.1.4"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427"
@ -7612,9 +7607,9 @@ jsrsasign@^8.0.12:
integrity sha512-6UKHqnNs5lYROn03wf1BTw7DQx5tW616DTigjbo0JHV97D3HzIqYmPVCBSNsfEfQOrfpFqmPZJvaC3cMNOT0Yw== integrity sha512-6UKHqnNs5lYROn03wf1BTw7DQx5tW616DTigjbo0JHV97D3HzIqYmPVCBSNsfEfQOrfpFqmPZJvaC3cMNOT0Yw==
jszip@^3.1.3: jszip@^3.1.3:
version "3.3.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.3.0.tgz#29d72c21a54990fa885b11fc843db320640d5271" resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.4.0.tgz#1a69421fa5f0bb9bc222a46bca88182fba075350"
integrity sha512-EJ9k766htB1ZWnsV5ZMDkKLgA+201r/ouFF8R2OigVjVdcm2rurcBrrdXaeqBJbqnUVMko512PYmlncBKE1Huw== integrity sha512-gZAOYuPl4EhPTXT0GjhI3o+ZAz3su6EhLrKUoAivcKqyqC7laS5JEv4XWZND9BgcDcF83vI85yGbDmDR6UhrIg==
dependencies: dependencies:
lie "~3.3.0" lie "~3.3.0"
pako "~1.0.2" pako "~1.0.2"
@ -8052,9 +8047,9 @@ make-dir@^2.0.0, make-dir@^2.1.0:
semver "^5.6.0" semver "^5.6.0"
make-dir@^3.0.0: make-dir@^3.0.0:
version "3.0.2" version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
dependencies: dependencies:
semver "^6.0.0" semver "^6.0.0"
@ -8265,17 +8260,17 @@ miller-rabin@^4.0.0:
bn.js "^4.0.0" bn.js "^4.0.0"
brorand "^1.0.1" brorand "^1.0.1"
mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": mime-db@1.44.0, "mime-db@>= 1.43.0 < 2":
version "1.43.0" version "1.44.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.26" version "2.1.27"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
dependencies: dependencies:
mime-db "1.43.0" mime-db "1.44.0"
mime@1.6.0, mime@^1.4.1: mime@1.6.0, mime@^1.4.1:
version "1.6.0" version "1.6.0"
@ -8347,11 +8342,6 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
minimist@~0.0.1:
version "0.0.10"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
version "2.9.0" version "2.9.0"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
@ -8490,9 +8480,9 @@ mz@^2.5.0:
thenify-all "^1.0.0" thenify-all "^1.0.0"
nan@^2.12.1: nan@^2.12.1:
version "2.14.0" version "2.14.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==
nanomatch@^1.2.9: nanomatch@^1.2.9:
version "1.2.13" version "1.2.13"
@ -8559,7 +8549,7 @@ ng-packagr@^5.7.1:
terser "^4.1.2" terser "^4.1.2"
update-notifier "^3.0.0" update-notifier "^3.0.0"
ngxs-reset-plugin@^1.2.0: ngxs-reset-plugin@^1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/ngxs-reset-plugin/-/ngxs-reset-plugin-1.3.0.tgz#370b89190e729de94f0116b99ff65389582a7626" resolved "https://registry.yarnpkg.com/ngxs-reset-plugin/-/ngxs-reset-plugin-1.3.0.tgz#370b89190e729de94f0116b99ff65389582a7626"
integrity sha512-gxAUuka1ewSs04M+cFaUu5NVMSWW9EHw0mZAxXbtagtbPyEwSRjgFvobb4nNyWVVBPsdAuBIfPCfkztZ6Dtj3w== integrity sha512-gxAUuka1ewSs04M+cFaUu5NVMSWW9EHw0mZAxXbtagtbPyEwSRjgFvobb4nNyWVVBPsdAuBIfPCfkztZ6Dtj3w==
@ -9006,14 +8996,6 @@ opn@^5.5.0:
dependencies: dependencies:
is-wsl "^1.1.0" is-wsl "^1.1.0"
optimist@~0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
dependencies:
minimist "~0.0.1"
wordwrap "~0.0.2"
optionator@^0.8.1: optionator@^0.8.1:
version "0.8.3" version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
@ -9451,7 +9433,7 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
picomatch@^2.0.4, picomatch@^2.0.7: picomatch@^2.0.4, picomatch@^2.2.1:
version "2.2.2" version "2.2.2"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
@ -9709,9 +9691,9 @@ protoduck@^5.0.1:
genfun "^5.0.0" genfun "^5.0.0"
protractor@~5.4.0: protractor@~5.4.0:
version "5.4.3" version "5.4.4"
resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.3.tgz#35f050741e404a45868618ea648745d89af31683" resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.4.4.tgz#b241466aaf83b76bc2c58df67deb9a5cdfc61529"
integrity sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA== integrity sha512-BaL4vePgu3Vfa/whvTUAlgaCAId4uNSGxIFSCXMgj7LMYENPWLp85h5RBi9pdpX/bWQ8SF6flP7afmi2TC4eHw==
dependencies: dependencies:
"@types/q" "^0.0.32" "@types/q" "^0.0.32"
"@types/selenium-webdriver" "^3.0.0" "@types/selenium-webdriver" "^3.0.0"
@ -9721,13 +9703,13 @@ protractor@~5.4.0:
glob "^7.0.3" glob "^7.0.3"
jasmine "2.8.0" jasmine "2.8.0"
jasminewd2 "^2.1.0" jasminewd2 "^2.1.0"
optimist "~0.6.0"
q "1.4.1" q "1.4.1"
saucelabs "^1.5.0" saucelabs "^1.5.0"
selenium-webdriver "3.6.0" selenium-webdriver "3.6.0"
source-map-support "~0.4.0" source-map-support "~0.4.0"
webdriver-js-extender "2.1.0" webdriver-js-extender "2.1.0"
webdriver-manager "^12.0.6" webdriver-manager "^12.0.6"
yargs "^12.0.5"
proxy-addr@~2.0.5: proxy-addr@~2.0.5:
version "2.0.6" version "2.0.6"
@ -10048,12 +10030,12 @@ readdirp@^2.0.0, readdirp@^2.2.1:
micromatch "^3.1.10" micromatch "^3.1.10"
readable-stream "^2.0.2" readable-stream "^2.0.2"
readdirp@~3.3.0: readdirp@~3.4.0:
version "3.3.0" version "3.4.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
dependencies: dependencies:
picomatch "^2.0.7" picomatch "^2.2.1"
realpath-native@^1.1.0: realpath-native@^1.1.0:
version "1.1.0" version "1.1.0"
@ -10320,9 +10302,9 @@ resolve@1.1.7, resolve@~1.1.6:
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
resolve@1.x, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: resolve@1.x, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2:
version "1.15.1" version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
dependencies: dependencies:
path-parse "^1.0.6" path-parse "^1.0.6"
@ -10457,11 +10439,9 @@ rsvp@^4.8.4:
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
run-async@^2.2.0: run-async@^2.2.0:
version "2.4.0" version "2.4.1"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
dependencies:
is-promise "^2.1.0"
run-queue@^1.0.0, run-queue@^1.0.3: run-queue@^1.0.0, run-queue@^1.0.3:
version "1.0.3" version "1.0.3"
@ -10547,9 +10527,9 @@ sass@1.22.9:
chokidar ">=2.0.0 <4.0.0" chokidar ">=2.0.0 <4.0.0"
sass@^1.17.3: sass@^1.17.3:
version "1.26.3" version "1.26.5"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.3.tgz#412df54486143b76b5a65cdf7569e86f44659f46" resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.5.tgz#2d7aecfbbabfa298567c8f06615b6e24d2d68099"
integrity sha512-5NMHI1+YFYw4sN3yfKjpLuV9B5l7MqQ6FlkTcC4FT+oHbBRUZoSjHrrt/mE0nFXJyY2kQtU9ou9HxvFVjLFuuw== integrity sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q==
dependencies: dependencies:
chokidar ">=2.0.0 <4.0.0" chokidar ">=2.0.0 <4.0.0"
@ -10587,9 +10567,9 @@ schema-utils@^1.0.0:
ajv-keywords "^3.1.0" ajv-keywords "^3.1.0"
schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.6.1: schema-utils@^2.0.0, schema-utils@^2.0.1, schema-utils@^2.6.1:
version "2.6.5" version "2.6.6"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c"
integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA==
dependencies: dependencies:
ajv "^6.12.0" ajv "^6.12.0"
ajv-keywords "^3.4.1" ajv-keywords "^3.4.1"
@ -10952,9 +10932,9 @@ source-map-support@0.5.13:
source-map "^0.6.0" source-map "^0.6.0"
source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12: source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.12:
version "0.5.16" version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
dependencies: dependencies:
buffer-from "^1.0.0" buffer-from "^1.0.0"
source-map "^0.6.0" source-map "^0.6.0"
@ -11014,9 +10994,9 @@ spdx-correct@^3.0.0:
spdx-license-ids "^3.0.0" spdx-license-ids "^3.0.0"
spdx-exceptions@^2.1.0: spdx-exceptions@^2.1.0:
version "2.2.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
spdx-expression-parse@^3.0.0: spdx-expression-parse@^3.0.0:
version "3.0.0" version "3.0.0"
@ -11529,9 +11509,9 @@ terser@4.6.3:
source-map-support "~0.5.12" source-map-support "~0.5.12"
terser@^4.1.2: terser@^4.1.2:
version "4.6.11" version "4.6.12"
resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.11.tgz#12ff99fdd62a26de2a82f508515407eb6ccd8a9f" resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.12.tgz#44b98aef8703fdb09a3491bf79b43faffc5b4fee"
integrity sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA== integrity sha512-fnIwuaKjFPANG6MAixC/k1TDtnl1YlPLUlLVIxxGZUn1gfUx2+l3/zGNB72wya+lgsb50QBi2tUV75RiODwnww==
dependencies: dependencies:
commander "^2.20.0" commander "^2.20.0"
source-map "~0.6.1" source-map "~0.6.1"
@ -11740,9 +11720,9 @@ ts-node@~7.0.0:
yn "^2.0.0" yn "^2.0.0"
ts-toolbelt@^6.3.6: ts-toolbelt@^6.3.6:
version "6.4.2" version "6.5.1"
resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.4.2.tgz#97df4fc577eccccfbe8929d82ab364d86ea99548" resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.5.1.tgz#1316b8c6522797c0bee289ca5deaa159af846231"
integrity sha512-B27axztBC+3K4D1cuaRO3ygMcyR54LRpQxlt1zNIS9RnqDwrlDoVlIIazDqWxLuRaFzGWNvDLkjDgs3eeLEVig== integrity sha512-zjnZ/vy1eUA0li3H0JXecl0R3jiP42snpLimsrppt9V3LLbM4NM4jMgjXQ4S67hvehq+r9CxpX4Wj6RnFRzReA==
tsickle@^0.37.0: tsickle@^0.37.0:
version "0.37.1" version "0.37.1"
@ -11848,9 +11828,9 @@ typescript@^3.3.3333, typescript@^3.5.2:
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
uglify-js@^3.1.4: uglify-js@^3.1.4:
version "3.9.0" version "3.9.1"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.0.tgz#037163a936992050ed5d14f5d5c4014126019661" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539"
integrity sha512-j5wNQBWaql8gr06dOUrfaohHlscboQZ9B8sNsoK5o4sBjm7Ht9dxSbrMXyktQpA16Acaij8AcoozteaPYZON0g== integrity sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==
dependencies: dependencies:
commander "~2.20.3" commander "~2.20.3"
@ -12399,11 +12379,6 @@ wordwrap@^1.0.0:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
worker-farm@^1.7.0: worker-farm@^1.7.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
@ -12600,14 +12575,14 @@ yargs-parser@^15.0.1:
decamelize "^1.2.0" decamelize "^1.2.0"
yargs-parser@^18.1.0, yargs-parser@^18.1.1: yargs-parser@^18.1.0, yargs-parser@^18.1.1:
version "18.1.2" version "18.1.3"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
dependencies: dependencies:
camelcase "^5.0.0" camelcase "^5.0.0"
decamelize "^1.2.0" decamelize "^1.2.0"
yargs@12.0.5: yargs@12.0.5, yargs@^12.0.5:
version "12.0.5" version "12.0.5"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==

Loading…
Cancel
Save