From 882e4e44dbb1fe35cc7a2e264b035fdd3b63f126 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 14 Sep 2020 16:52:44 +0300 Subject: [PATCH 001/117] feat: generate permission-management proxies #5182 --- .../dev-app/src/environments/environment.ts | 4 + .../actions/permission-management.actions.ts | 3 +- .../permission-management.component.ts | 3 +- .../src/lib/models/permission-management.ts | 15 + .../src/lib/proxy/generate-proxy.json | 4210 +++++++++++++++++ .../lib/proxy/permission-management/index.ts | 2 + .../lib/proxy/permission-management/models.ts | 34 + .../permissions.service.ts | 29 + .../lib/states/permission-management.state.ts | 13 +- .../permission-management/src/public-api.ts | 1 + 10 files changed, 4308 insertions(+), 6 deletions(-) create mode 100644 npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json create mode 100644 npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts create mode 100644 npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts create mode 100644 npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts diff --git a/npm/ng-packs/apps/dev-app/src/environments/environment.ts b/npm/ng-packs/apps/dev-app/src/environments/environment.ts index f16ba9b898..c6e1db6985 100644 --- a/npm/ng-packs/apps/dev-app/src/environments/environment.ts +++ b/npm/ng-packs/apps/dev-app/src/environments/environment.ts @@ -26,5 +26,9 @@ export const environment = { url: 'https://localhost:44305', rootNamespace: 'Volo.Abp', }, + AbpPermissionManagement: { + url: 'https://localhost:44305', + rootNamespace: 'Volo.Abp', + }, }, } as Config.Environment; diff --git a/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts b/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts index c242d614dd..83bbdee818 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts @@ -1,4 +1,5 @@ import { PermissionManagement } from '../models/permission-management'; +import { UpdatePermissionsDto } from '../proxy/permission-management/models'; export class GetPermissions { static readonly type = '[PermissionManagement] Get Permissions'; @@ -7,5 +8,5 @@ export class GetPermissions { export class UpdatePermissions { static readonly type = '[PermissionManagement] Update Permissions'; - constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {} + constructor(public payload: PermissionManagement.GrantedProvider & UpdatePermissionsDto) {} } diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts index 8d034de1d5..190542322d 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts @@ -6,6 +6,7 @@ import { Observable, of } from 'rxjs'; import { finalize, map, pluck, switchMap, take, tap } from 'rxjs/operators'; import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions'; import { PermissionManagement } from '../models/permission-management'; +import { UpdatePermissionDto } from '../proxy/permission-management/models'; import { PermissionManagementState } from '../states/permission-management.state'; type PermissionWithStyle = PermissionManagement.Permission & { @@ -213,7 +214,7 @@ export class PermissionManagementComponent this.store.selectSnapshot(PermissionManagementState.getPermissionGroups), ); - const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions + const changedPermissions: UpdatePermissionDto[] = this.permissions .filter(per => unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === per.isGranted diff --git a/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts b/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts index b1fe25dd44..831fc30523 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts @@ -5,22 +5,34 @@ export namespace PermissionManagement { permissionRes: Response; } + /** + * @deprecated To be deleted in v4.0. + */ export interface Response { entityDisplayName: string; groups: Group[]; } + /** + * @deprecated To be deleted in v4.0. + */ export interface Group { name: string; displayName: string; permissions: Permission[]; } + /** + * @deprecated To be deleted in v4.0. + */ export interface MinimumPermission { name: string; isGranted: boolean; } + /** + * @deprecated To be deleted in v4.0. + */ export interface Permission extends MinimumPermission { displayName: string; parentName: string; @@ -33,6 +45,9 @@ export namespace PermissionManagement { providerKey: string; } + /** + * @deprecated To be deleted in v4.0. + */ export interface UpdateRequest { permissions: MinimumPermission[]; } diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json b/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json new file mode 100644 index 0000000000..383b68929e --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json @@ -0,0 +1,4210 @@ +{ + "generated": [ + "permissionManagement" + ], + "modules": { + "identity": { + "rootPath": "identity", + "remoteServiceName": "AbpIdentity", + "controllers": { + "Volo.Abp.Identity.IdentityRoleController": { + "controllerName": "IdentityRole", + "type": "Volo.Abp.Identity.IdentityRoleController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityRoleAppService" + } + ], + "actions": { + "GetAllListAsync": { + "uniqueName": "GetAllListAsync", + "name": "GetAllListAsync", + "httpMethod": "GET", + "url": "api/identity/roles/all", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", + "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + }, + "Volo.Abp.Identity.IdentityUserController": { + "controllerName": "IdentityUser", + "type": "Volo.Abp.Identity.IdentityUserController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/users", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.GetIdentityUsersInput", + "typeSimple": "Volo.Abp.Identity.GetIdentityUsersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/users", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "GetRolesAsyncById": { + "uniqueName": "GetRolesAsyncById", + "name": "GetRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/{id}/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetAssignableRolesAsync": { + "uniqueName": "GetAssignableRolesAsync", + "name": "GetAssignableRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/assignable-roles", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "UpdateRolesAsyncByIdAndInput": { + "uniqueName": "UpdateRolesAsyncByIdAndInput", + "name": "UpdateRolesAsync", + "httpMethod": "PUT", + "url": "api/identity/users/{id}/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateRolesDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "FindByUsernameAsyncByUsername": { + "uniqueName": "FindByUsernameAsyncByUsername", + "name": "FindByUsernameAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-username/{userName}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "username", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "username", + "name": "username", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "FindByEmailAsyncByEmail": { + "uniqueName": "FindByEmailAsyncByEmail", + "name": "FindByEmailAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-email/{email}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "email", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "email", + "name": "email", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + } + } + }, + "Volo.Abp.Identity.IdentityUserLookupController": { + "controllerName": "IdentityUserLookup", + "type": "Volo.Abp.Identity.IdentityUserLookupController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserLookupAppService" + } + ], + "actions": { + "FindByIdAsyncById": { + "uniqueName": "FindByIdAsyncById", + "name": "FindByIdAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" + } + }, + "FindByUserNameAsyncByUserName": { + "uniqueName": "FindByUserNameAsyncByUserName", + "name": "FindByUserNameAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/by-username/{userName}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "userName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "userName", + "name": "userName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" + } + }, + "SearchAsyncByInput": { + "uniqueName": "SearchAsyncByInput", + "name": "SearchAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/search", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupSearchInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupSearchInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupSearchInputDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetCountAsyncByInput": { + "uniqueName": "GetCountAsyncByInput", + "name": "GetCountAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/count", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupCountInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupCountInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupCountInputDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Int64", + "typeSimple": "number" + } + } + } + }, + "Volo.Abp.Identity.ProfileController": { + "controllerName": "Profile", + "type": "Volo.Abp.Identity.ProfileController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IProfileAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/my-profile", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" + } + }, + "UpdateAsyncByInput": { + "uniqueName": "UpdateAsyncByInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/my-profile", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UpdateProfileDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" + } + }, + "ChangePasswordAsyncByInput": { + "uniqueName": "ChangePasswordAsyncByInput", + "name": "ChangePasswordAsync", + "httpMethod": "POST", + "url": "api/identity/my-profile/change-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.ChangePasswordInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "featureManagement": { + "rootPath": "featureManagement", + "remoteServiceName": "AbpFeatureManagement", + "controllers": { + "Volo.Abp.FeatureManagement.FeaturesController": { + "controllerName": "Features", + "type": "Volo.Abp.FeatureManagement.FeaturesController", + "interfaces": [ + { + "type": "Volo.Abp.FeatureManagement.IFeatureAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/feature-management/features", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.FeatureManagement.GetFeatureListResultDto", + "typeSimple": "Volo.Abp.FeatureManagement.GetFeatureListResultDto" + } + }, + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/feature-management/features", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.FeatureManagement.UpdateFeaturesDto, Volo.Abp.FeatureManagement.Application.Contracts", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "abp": { + "rootPath": "abp", + "remoteServiceName": "abp", + "controllers": { + "Pages.Abp.MultiTenancy.AbpTenantController": { + "controllerName": "AbpTenant", + "type": "Pages.Abp.MultiTenancy.AbpTenantController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.IAbpTenantAppService" + } + ], + "actions": { + "FindTenantByNameAsyncByName": { + "uniqueName": "FindTenantByNameAsyncByName", + "name": "FindTenantByNameAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-name/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + }, + "FindTenantByIdAsyncById": { + "uniqueName": "FindTenantByIdAsyncById", + "name": "FindTenantByIdAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-id/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { + "controllerName": "AbpApplicationConfiguration", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/abp/application-configuration", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { + "controllerName": "AbpApiDefinition", + "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", + "interfaces": [], + "actions": { + "GetByModel": { + "uniqueName": "GetByModel", + "name": "Get", + "httpMethod": "GET", + "url": "api/abp/api-definition", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "model", + "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "model", + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "model" + } + ], + "returnValue": { + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" + } + } + } + } + } + }, + "account": { + "rootPath": "account", + "remoteServiceName": "AbpAccount", + "controllers": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController", + "interfaces": [], + "actions": { + "LoginByLogin": { + "uniqueName": "LoginByLogin", + "name": "Login", + "httpMethod": "POST", + "url": "api/account/login", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + }, + "Logout": { + "uniqueName": "Logout", + "name": "Logout", + "httpMethod": "GET", + "url": "api/account/logout", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "CheckPasswordByLogin": { + "uniqueName": "CheckPasswordByLogin", + "name": "CheckPassword", + "httpMethod": "POST", + "url": "api/account/checkPassword", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + } + } + }, + "Volo.Abp.Account.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.AccountController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IAccountAppService" + } + ], + "actions": { + "RegisterAsyncByInput": { + "uniqueName": "RegisterAsyncByInput", + "name": "RegisterAsync", + "httpMethod": "POST", + "url": "api/account/register", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "SendPasswordResetCodeAsyncByInput": { + "uniqueName": "SendPasswordResetCodeAsyncByInput", + "name": "SendPasswordResetCodeAsync", + "httpMethod": "POST", + "url": "api/account/send-password-reset-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "ResetPasswordAsyncByInput": { + "uniqueName": "ResetPasswordAsyncByInput", + "name": "ResetPasswordAsync", + "httpMethod": "POST", + "url": "api/account/reset-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "multi-tenancy": { + "rootPath": "multi-tenancy", + "remoteServiceName": "AbpTenantManagement", + "controllers": { + "Volo.Abp.TenantManagement.TenantController": { + "controllerName": "Tenant", + "type": "Volo.Abp.TenantManagement.TenantController", + "interfaces": [ + { + "type": "Volo.Abp.TenantManagement.ITenantAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.GetTenantsInput, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.GetTenantsInput", + "typeSimple": "Volo.Abp.TenantManagement.GetTenantsInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/multi-tenancy/tenants", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantCreateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantUpdateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "GetDefaultConnectionStringAsyncById": { + "uniqueName": "GetDefaultConnectionStringAsyncById", + "name": "GetDefaultConnectionStringAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.String", + "typeSimple": "string" + } + }, + "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString": { + "uniqueName": "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString", + "name": "UpdateDefaultConnectionStringAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "defaultConnectionString", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "defaultConnectionString", + "name": "defaultConnectionString", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "DeleteDefaultConnectionStringAsyncById": { + "uniqueName": "DeleteDefaultConnectionStringAsyncById", + "name": "DeleteDefaultConnectionStringAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "permissionManagement": { + "rootPath": "permissionManagement", + "remoteServiceName": "AbpPermissionManagement", + "controllers": { + "Volo.Abp.PermissionManagement.PermissionsController": { + "controllerName": "Permissions", + "type": "Volo.Abp.PermissionManagement.PermissionsController", + "interfaces": [ + { + "type": "Volo.Abp.PermissionManagement.IPermissionAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/permission-management/permissions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.PermissionManagement.GetPermissionListResultDto", + "typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto" + } + }, + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/permission-management/permissions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.PermissionManagement.UpdatePermissionsDto, Volo.Abp.PermissionManagement.Application.Contracts", + "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + } + }, + "types": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserNameOrEmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "RememberMe", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Result", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType" + }, + { + "name": "Description", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "Success", + "InvalidUserNameOrPassword", + "NotAllowed", + "LockedOut", + "RequiresTwoFactor" + ], + "enumValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "genericArguments": null, + "properties": null + }, + "Volo.Abp.Account.RegisterDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AppName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "TwoFactorEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnd", + "type": "System.DateTimeOffset?", + "typeSimple": "string?" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "IsDeleted", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DeleterId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "DeletionTime", + "type": "System.DateTime?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "LastModificationTime", + "type": "System.DateTime?", + "typeSimple": "string?" + }, + { + "name": "LastModifierId", + "type": "System.Guid?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "CreationTime", + "type": "System.DateTime", + "typeSimple": "string" + }, + { + "name": "CreatorId", + "type": "System.Guid?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleEntityDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TKey" + ], + "properties": [ + { + "name": "Id", + "type": "TKey", + "typeSimple": "TKey" + } + ] + }, + "Volo.Abp.ObjectExtending.ExtensibleObject": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ExtraProperties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.Account.SendPasswordResetCodeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AppName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ReturnUrl", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ReturnUrlHash", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Account.ResetPasswordDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserId", + "type": "System.Guid", + "typeSimple": "string" + }, + { + "name": "ResetToken", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Success", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.ListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Items", + "type": "[T]", + "typeSimple": "[T]" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsDefault", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsStatic", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsPublic", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Sorting", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.LimitedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Application.Dtos.LimitedResultRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DefaultMaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "MaxMaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultDto": { + "baseType": "Volo.Abp.Application.Dtos.ListResultDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "TotalCount", + "type": "System.Int64", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleCreateDto": { + "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsDefault", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsPublic", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleUpdateDto": { + "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.GetIdentityUsersInput": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserCreateDto": { + "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TwoFactorEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "RoleNames", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.Identity.IdentityUserUpdateDto": { + "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserUpdateRolesDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RoleNames", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.Users.UserData": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "type": "System.Guid", + "typeSimple": "string" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.UserLookupSearchInputDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.UserLookupCountInputDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.ProfileDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsExternal", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "HasPassword", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.UpdateProfileDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.ChangePasswordInput": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CurrentPassword", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "NewPassword", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.PermissionManagement.GetPermissionListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "EntityDisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Groups", + "type": "[Volo.Abp.PermissionManagement.PermissionGroupDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGroupDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.PermissionGroupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Permissions", + "type": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.PermissionGrantInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ParentName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsGranted", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "AllowedProviders", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "GrantedProviders", + "type": "[Volo.Abp.PermissionManagement.ProviderInfoDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.ProviderInfoDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.ProviderInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ProviderName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ProviderKey", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.PermissionManagement.UpdatePermissionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Permissions", + "type": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.UpdatePermissionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsGranted", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.TenantManagement.TenantDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.GetTenantsInput": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantCreateDto": { + "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "AdminEmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AdminPassword", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantUpdateDto": { + "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.FeatureManagement.GetFeatureListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Groups", + "type": "[Volo.Abp.FeatureManagement.FeatureGroupDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.FeatureGroupDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureGroupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Features", + "type": "[Volo.Abp.FeatureManagement.FeatureDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.FeatureDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Provider", + "type": "Volo.Abp.FeatureManagement.FeatureProviderDto", + "typeSimple": "Volo.Abp.FeatureManagement.FeatureProviderDto" + }, + { + "name": "Description", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ValueType", + "type": "Volo.Abp.Validation.StringValues.IStringValueType", + "typeSimple": "Volo.Abp.Validation.StringValues.IStringValueType" + }, + { + "name": "Depth", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "ParentName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureProviderDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Key", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Validation.StringValues.IStringValueType": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Item", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "Properties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + }, + { + "name": "Validator", + "type": "Volo.Abp.Validation.StringValues.IValueValidator", + "typeSimple": "Volo.Abp.Validation.StringValues.IValueValidator" + } + ] + }, + "Volo.Abp.Validation.StringValues.IValueValidator": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Item", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "Properties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.FeatureManagement.UpdateFeaturesDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Features", + "type": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.UpdateFeatureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Localization", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto" + }, + { + "name": "Auth", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto" + }, + { + "name": "Setting", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto" + }, + { + "name": "CurrentUser", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto" + }, + { + "name": "Features", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto" + }, + { + "name": "MultiTenancy", + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto" + }, + { + "name": "CurrentTenant", + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto" + }, + { + "name": "Timing", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto" + }, + { + "name": "Clock", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto" + }, + { + "name": "ObjectExtensions", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:{System.String:System.String}}", + "typeSimple": "{string:{string:string}}" + }, + { + "name": "Languages", + "type": "[Volo.Abp.Localization.LanguageInfo]", + "typeSimple": "[Volo.Abp.Localization.LanguageInfo]" + }, + { + "name": "CurrentCulture", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto" + }, + { + "name": "DefaultResourceName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "LanguagesMap", + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}" + }, + { + "name": "LanguageFilesMap", + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}" + } + ] + }, + "Volo.Abp.Localization.LanguageInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "UiCultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "FlagIcon", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EnglishName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ThreeLetterIsoLanguageName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TwoLetterIsoLanguageName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsRightToLeft", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "CultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "NativeName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateTimeFormat", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CalendarAlgorithmType", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateTimeFormatLong", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ShortDatePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "FullDateTimePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateSeparator", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ShortTimePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "LongTimePattern", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.NameValue": { + "baseType": "Volo.Abp.NameValue", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.NameValue": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "T", + "typeSimple": "T" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Policies", + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}" + }, + { + "name": "GrantedPolicies", + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:System.String}", + "typeSimple": "{string:string}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAuthenticated", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "Id", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "SurName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailVerified", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberVerified", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "Roles", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:System.String}", + "typeSimple": "{string:string}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZone", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Iana", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone" + }, + { + "name": "Windows", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneId", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Kind", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}" + }, + { + "name": "Enums", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Entities", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Properties", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto" + }, + { + "name": "Api", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto" + }, + { + "name": "Ui", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto" + }, + { + "name": "Attributes", + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Resource", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnGet", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto" + }, + { + "name": "OnCreate", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto" + }, + { + "name": "OnUpdate", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnTable", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto" + }, + { + "name": "OnCreateForm", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto" + }, + { + "name": "OnEditForm", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Config", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Fields", + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]" + }, + { + "name": "LocalizationResource", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "type": "{System.String:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}" + }, + { + "name": "Types", + "type": "{System.String:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ModuleApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RootPath", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "RemoteServiceName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Controllers", + "type": "{System.String:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ControllerName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Interfaces", + "type": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]" + }, + { + "name": "Actions", + "type": "{System.String:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.ActionApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UniqueName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "HttpMethod", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Url", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "SupportedVersions", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "ParametersOnMethod", + "type": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]" + }, + { + "name": "Parameters", + "type": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]" + }, + { + "name": "ReturnValue", + "type": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel" + } + ] + }, + "Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeAsString", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsOptional", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.Http.Modeling.ParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "NameOnMethod", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsOptional", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "ConstraintTypes", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "BindingSourceId", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DescriptorName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.TypeApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "BaseType", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsEnum", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "EnumNames", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "EnumValues", + "type": "[System.Object]", + "typeSimple": "[object]" + }, + { + "name": "GenericArguments", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "Properties", + "type": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]" + } + ] + }, + "Volo.Abp.Http.Modeling.PropertyApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + } + ] + } + } +} \ No newline at end of file diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts b/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts new file mode 100644 index 0000000000..0a3fde0f0f --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts @@ -0,0 +1,2 @@ +export * from './models'; +export * from './permissions.service'; diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts b/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts new file mode 100644 index 0000000000..c366b2c315 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts @@ -0,0 +1,34 @@ + +export interface GetPermissionListResultDto { + entityDisplayName: string; + groups: PermissionGroupDto[]; +} + +export interface PermissionGrantInfoDto { + name: string; + displayName: string; + parentName: string; + isGranted: boolean; + allowedProviders: string[]; + grantedProviders: ProviderInfoDto[]; +} + +export interface PermissionGroupDto { + name: string; + displayName: string; + permissions: PermissionGrantInfoDto[]; +} + +export interface ProviderInfoDto { + providerName: string; + providerKey: string; +} + +export interface UpdatePermissionDto { + name: string; + isGranted: boolean; +} + +export interface UpdatePermissionsDto { + permissions: UpdatePermissionDto[]; +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts b/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts new file mode 100644 index 0000000000..45ac0b40e1 --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts @@ -0,0 +1,29 @@ +import type { GetPermissionListResultDto, UpdatePermissionsDto } from './models'; +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class PermissionsService { + apiName = 'AbpPermissionManagement'; + + get = (providerName: string, providerKey: string) => + this.restService.request({ + method: 'GET', + url: '/api/permission-management/permissions', + params: { providerName, providerKey }, + }, + { apiName: this.apiName }); + + update = (providerName: string, providerKey: string, input: UpdatePermissionsDto) => + this.restService.request({ + method: 'PUT', + url: '/api/permission-management/permissions', + params: { providerName, providerKey }, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts b/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts index 17999e61e8..f0f3ebe636 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts @@ -4,6 +4,7 @@ import { PermissionManagement } from '../models/permission-management'; import { PermissionManagementService } from '../services/permission-management.service'; import { tap } from 'rxjs/operators'; import { Injectable } from '@angular/core'; +import { PermissionsService } from '../proxy/permission-management/permissions.service'; @State({ name: 'PermissionManagementState', @@ -21,14 +22,16 @@ export class PermissionManagementState { return permissionRes.entityDisplayName; } - constructor(private permissionManagementService: PermissionManagementService) {} + constructor(private service: PermissionsService) {} @Action(GetPermissions) permissionManagementGet( { patchState }: StateContext, - { payload }: GetPermissions, + { + payload: { providerKey, providerName } = {} as PermissionManagement.GrantedProvider, + }: GetPermissions, ) { - return this.permissionManagementService.getPermissions(payload).pipe( + return this.service.get(providerName, providerKey).pipe( tap(permissionResponse => patchState({ permissionRes: permissionResponse, @@ -39,6 +42,8 @@ export class PermissionManagementState { @Action(UpdatePermissions) permissionManagementUpdate(_, { payload }: UpdatePermissions) { - return this.permissionManagementService.updatePermissions(payload); + return this.service.update(payload.providerName, payload.providerKey, { + permissions: payload.permissions, + }); } } diff --git a/npm/ng-packs/packages/permission-management/src/public-api.ts b/npm/ng-packs/packages/permission-management/src/public-api.ts index c9a8445ebd..a24bb83101 100644 --- a/npm/ng-packs/packages/permission-management/src/public-api.ts +++ b/npm/ng-packs/packages/permission-management/src/public-api.ts @@ -9,3 +9,4 @@ export * from './lib/enums/components'; export * from './lib/models'; export * from './lib/services'; export * from './lib/states'; +export * from './lib/proxy/permission-management'; From dba3f21cfc9d7cff87f8ab0ac0953e9b9dcc3de8 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 14 Sep 2020 17:45:09 +0300 Subject: [PATCH 002/117] feat: generate identity proxies #5182 --- .../dev-app/src/environments/environment.ts | 8 + .../src/lib/actions/identity.actions.ts | 21 +- .../lib/components/roles/roles.component.ts | 12 +- .../lib/components/users/users.component.ts | 24 +- .../identity/src/lib/models/identity.ts | 34 +- .../src/lib/proxy/generate-proxy.json | 4210 +++++++++++++++++ .../proxy/identity/identity-role.service.ts | 58 + .../identity/identity-user-lookup.service.ts | 44 + .../proxy/identity/identity-user.service.ts | 87 + .../identity/src/lib/proxy/identity/index.ts | 5 + .../identity/src/lib/proxy/identity/models.ts | 96 + .../src/lib/proxy/identity/profile.service.ts | 35 + .../identity/src/lib/proxy/users/index.ts | 1 + .../identity/src/lib/proxy/users/models.ts | 12 + .../identity/src/lib/states/identity.state.ts | 39 +- .../packages/identity/src/public-api.ts | 2 + 16 files changed, 4644 insertions(+), 44 deletions(-) create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/generate-proxy.json create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-role.service.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user-lookup.service.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/identity/index.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/identity/profile.service.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/users/index.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/proxy/users/models.ts diff --git a/npm/ng-packs/apps/dev-app/src/environments/environment.ts b/npm/ng-packs/apps/dev-app/src/environments/environment.ts index c6e1db6985..d92df082a5 100644 --- a/npm/ng-packs/apps/dev-app/src/environments/environment.ts +++ b/npm/ng-packs/apps/dev-app/src/environments/environment.ts @@ -30,5 +30,13 @@ export const environment = { url: 'https://localhost:44305', rootNamespace: 'Volo.Abp', }, + AbpTenantManagement: { + url: 'https://localhost:44305', + rootNamespace: 'Volo.Abp', + }, + AbpIdentity: { + url: 'https://localhost:44305', + rootNamespace: 'Volo.Abp', + }, }, } as Config.Environment; diff --git a/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts b/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts index 3c24b58136..5b470b080e 100644 --- a/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts +++ b/npm/ng-packs/packages/identity/src/lib/actions/identity.actions.ts @@ -1,9 +1,16 @@ import { Identity } from '../models/identity'; -import { ABP } from '@abp/ng.core'; +import { ABP, PagedAndSortedResultRequestDto } from '@abp/ng.core'; +import { + GetIdentityUsersInput, + IdentityRoleCreateDto, + IdentityRoleUpdateDto, + IdentityUserCreateDto, + IdentityUserUpdateDto, +} from '../proxy/identity/models'; export class GetRoles { static readonly type = '[Identity] Get Roles'; - constructor(public payload?: ABP.PageQueryParams) {} + constructor(public payload?: PagedAndSortedResultRequestDto) {} } export class GetRoleById { @@ -18,17 +25,17 @@ export class DeleteRole { export class CreateRole { static readonly type = '[Identity] Create Role'; - constructor(public payload: Identity.RoleSaveRequest) {} + constructor(public payload: IdentityRoleCreateDto) {} } export class UpdateRole { static readonly type = '[Identity] Update Role'; - constructor(public payload: Identity.RoleItem) {} + constructor(public payload: IdentityRoleUpdateDto & { id: string }) {} } export class GetUsers { static readonly type = '[Identity] Get Users'; - constructor(public payload?: ABP.PageQueryParams) {} + constructor(public payload?: GetIdentityUsersInput) {} } export class GetUserById { @@ -43,12 +50,12 @@ export class DeleteUser { export class CreateUser { static readonly type = '[Identity] Create User'; - constructor(public payload: Identity.UserSaveRequest) {} + constructor(public payload: IdentityUserCreateDto) {} } export class UpdateUser { static readonly type = '[Identity] Update User'; - constructor(public payload: Identity.UserSaveRequest & { id: string }) {} + constructor(public payload: IdentityUserUpdateDto & { id: string }) {} } export class GetUserRoles { diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts index 73a9a64dfb..8df9762b97 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts +++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts @@ -1,4 +1,4 @@ -import { ListService } from '@abp/ng.core'; +import { ListService, PagedAndSortedResultRequestDto } from '@abp/ng.core'; import { ePermissionManagementComponents } from '@abp/ng.permission-management'; import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared'; import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; @@ -13,7 +13,7 @@ import { GetRoles, UpdateRole, } from '../../actions/identity.actions'; -import { Identity } from '../../models/identity'; +import { IdentityRoleDto } from '../../proxy/identity/models'; import { IdentityState } from '../../states/identity.state'; @Component({ @@ -23,14 +23,14 @@ import { IdentityState } from '../../states/identity.state'; }) export class RolesComponent implements OnInit { @Select(IdentityState.getRoles) - data$: Observable; + data$: Observable; @Select(IdentityState.getRolesTotalCount) totalCount$: Observable; form: FormGroup; - selected: Identity.RoleItem; + selected: IdentityRoleDto; isModalVisible: boolean; @@ -50,7 +50,7 @@ export class RolesComponent implements OnInit { }; constructor( - public readonly list: ListService, + public readonly list: ListService, private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store, @@ -77,7 +77,7 @@ export class RolesComponent implements OnInit { } add() { - this.selected = {} as Identity.RoleItem; + this.selected = {} as IdentityRoleDto; this.openModal(); } diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts index 73da8ad38d..aaea54e4db 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts @@ -23,6 +23,13 @@ import { UpdateUser, } from '../../actions/identity.actions'; import { Identity } from '../../models/identity'; +import { IdentityRoleService } from '../../proxy/identity/identity-role.service'; +import { IdentityUserService } from '../../proxy/identity/identity-user.service'; +import { + GetIdentityUsersInput, + IdentityRoleDto, + IdentityUserDto, +} from '../../proxy/identity/models'; import { IdentityService } from '../../services/identity.service'; import { IdentityState } from '../../states/identity.state'; @@ -33,7 +40,7 @@ import { IdentityState } from '../../states/identity.state'; }) export class UsersComponent implements OnInit { @Select(IdentityState.getUsers) - data$: Observable; + data$: Observable; @Select(IdentityState.getUsersTotalCount) totalCount$: Observable; @@ -43,11 +50,11 @@ export class UsersComponent implements OnInit { form: FormGroup; - selected: Identity.UserItem; + selected: IdentityUserDto; - selectedUserRoles: Identity.RoleItem[]; + selectedUserRoles: IdentityRoleDto[]; - roles: Identity.RoleItem[]; + roles: IdentityRoleDto[]; visiblePermissions = false; @@ -70,11 +77,12 @@ export class UsersComponent implements OnInit { } constructor( - public readonly list: ListService, + public readonly list: ListService, private confirmationService: ConfirmationService, private fb: FormBuilder, private store: Store, private identityService: IdentityService, + private identityUserService: IdentityUserService, ) {} ngOnInit() { @@ -82,7 +90,7 @@ export class UsersComponent implements OnInit { } buildForm() { - this.identityService.getUserAssingableRoles().subscribe(({ items }) => { + this.identityUserService.getAssignableRoles().subscribe(({ items }) => { this.roles = items; this.form = this.fb.group({ userName: [this.selected.userName || '', [Validators.required, Validators.maxLength(256)]], @@ -125,8 +133,8 @@ export class UsersComponent implements OnInit { } add() { - this.selected = {} as Identity.UserItem; - this.selectedUserRoles = [] as Identity.RoleItem[]; + this.selected = {} as IdentityUserDto; + this.selectedUserRoles = [] as IdentityRoleDto[]; this.openModal(); } diff --git a/npm/ng-packs/packages/identity/src/lib/models/identity.ts b/npm/ng-packs/packages/identity/src/lib/models/identity.ts index b296eda95f..b4c527b0e7 100644 --- a/npm/ng-packs/packages/identity/src/lib/models/identity.ts +++ b/npm/ng-packs/packages/identity/src/lib/models/identity.ts @@ -1,30 +1,46 @@ -import { ABP } from '@abp/ng.core'; +import { ABP, PagedResultDto } from '@abp/ng.core'; +import { IdentityRoleDto, IdentityUserDto } from '../proxy/identity/models'; export namespace Identity { export interface State { - roles: RoleResponse; - users: UserResponse; - selectedRole: RoleItem; - selectedUser: UserItem; - selectedUserRoles: RoleItem[]; + roles: PagedResultDto; + users: PagedResultDto; + selectedRole: IdentityRoleDto; + selectedUser: IdentityUserDto; + selectedUserRoles: IdentityRoleDto[]; } + /** + * @deprecated To be deleted in v4.0. + */ export type RoleResponse = ABP.PagedResponse; + /** + * @deprecated To be deleted in v4.0. + */ export interface RoleSaveRequest { name: string; isDefault: boolean; isPublic: boolean; } + /** + * @deprecated To be deleted in v4.0. + */ export interface RoleItem extends RoleSaveRequest { isStatic: boolean; concurrencyStamp: string; id: string; } + /** + * @deprecated To be deleted in v4.0. + */ export type UserResponse = ABP.PagedResponse; + /** + * @deprecated To be deleted in v4.0. + */ export interface UserItem extends User { tenantId: string; emailConfirmed: boolean; @@ -34,6 +50,9 @@ export namespace Identity { id: string; } + /** + * @deprecated To be deleted in v4.0. + */ export interface User { userName: string; name: string; @@ -44,6 +63,9 @@ export namespace Identity { lockoutEnabled: true; } + /** + * @deprecated To be deleted in v4.0. + */ export interface UserSaveRequest extends User { password: string; roleNames: string[]; diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/generate-proxy.json b/npm/ng-packs/packages/identity/src/lib/proxy/generate-proxy.json new file mode 100644 index 0000000000..22d15ae64c --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/generate-proxy.json @@ -0,0 +1,4210 @@ +{ + "generated": [ + "identity" + ], + "modules": { + "identity": { + "rootPath": "identity", + "remoteServiceName": "AbpIdentity", + "controllers": { + "Volo.Abp.Identity.IdentityRoleController": { + "controllerName": "IdentityRole", + "type": "Volo.Abp.Identity.IdentityRoleController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityRoleAppService" + } + ], + "actions": { + "GetAllListAsync": { + "uniqueName": "GetAllListAsync", + "name": "GetAllListAsync", + "httpMethod": "GET", + "url": "api/identity/roles/all", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", + "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + }, + "Volo.Abp.Identity.IdentityUserController": { + "controllerName": "IdentityUser", + "type": "Volo.Abp.Identity.IdentityUserController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/users", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.GetIdentityUsersInput", + "typeSimple": "Volo.Abp.Identity.GetIdentityUsersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/users", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "GetRolesAsyncById": { + "uniqueName": "GetRolesAsyncById", + "name": "GetRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/{id}/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetAssignableRolesAsync": { + "uniqueName": "GetAssignableRolesAsync", + "name": "GetAssignableRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/assignable-roles", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "UpdateRolesAsyncByIdAndInput": { + "uniqueName": "UpdateRolesAsyncByIdAndInput", + "name": "UpdateRolesAsync", + "httpMethod": "PUT", + "url": "api/identity/users/{id}/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateRolesDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "FindByUsernameAsyncByUsername": { + "uniqueName": "FindByUsernameAsyncByUsername", + "name": "FindByUsernameAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-username/{userName}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "username", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "username", + "name": "username", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "FindByEmailAsyncByEmail": { + "uniqueName": "FindByEmailAsyncByEmail", + "name": "FindByEmailAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-email/{email}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "email", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "email", + "name": "email", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + } + } + }, + "Volo.Abp.Identity.IdentityUserLookupController": { + "controllerName": "IdentityUserLookup", + "type": "Volo.Abp.Identity.IdentityUserLookupController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserLookupAppService" + } + ], + "actions": { + "FindByIdAsyncById": { + "uniqueName": "FindByIdAsyncById", + "name": "FindByIdAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" + } + }, + "FindByUserNameAsyncByUserName": { + "uniqueName": "FindByUserNameAsyncByUserName", + "name": "FindByUserNameAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/by-username/{userName}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "userName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "userName", + "name": "userName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" + } + }, + "SearchAsyncByInput": { + "uniqueName": "SearchAsyncByInput", + "name": "SearchAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/search", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupSearchInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupSearchInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupSearchInputDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetCountAsyncByInput": { + "uniqueName": "GetCountAsyncByInput", + "name": "GetCountAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/count", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupCountInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupCountInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupCountInputDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Int64", + "typeSimple": "number" + } + } + } + }, + "Volo.Abp.Identity.ProfileController": { + "controllerName": "Profile", + "type": "Volo.Abp.Identity.ProfileController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IProfileAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/my-profile", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" + } + }, + "UpdateAsyncByInput": { + "uniqueName": "UpdateAsyncByInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/my-profile", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UpdateProfileDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" + } + }, + "ChangePasswordAsyncByInput": { + "uniqueName": "ChangePasswordAsyncByInput", + "name": "ChangePasswordAsync", + "httpMethod": "POST", + "url": "api/identity/my-profile/change-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.ChangePasswordInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "featureManagement": { + "rootPath": "featureManagement", + "remoteServiceName": "AbpFeatureManagement", + "controllers": { + "Volo.Abp.FeatureManagement.FeaturesController": { + "controllerName": "Features", + "type": "Volo.Abp.FeatureManagement.FeaturesController", + "interfaces": [ + { + "type": "Volo.Abp.FeatureManagement.IFeatureAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/feature-management/features", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.FeatureManagement.GetFeatureListResultDto", + "typeSimple": "Volo.Abp.FeatureManagement.GetFeatureListResultDto" + } + }, + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/feature-management/features", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.FeatureManagement.UpdateFeaturesDto, Volo.Abp.FeatureManagement.Application.Contracts", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "abp": { + "rootPath": "abp", + "remoteServiceName": "abp", + "controllers": { + "Pages.Abp.MultiTenancy.AbpTenantController": { + "controllerName": "AbpTenant", + "type": "Pages.Abp.MultiTenancy.AbpTenantController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.IAbpTenantAppService" + } + ], + "actions": { + "FindTenantByNameAsyncByName": { + "uniqueName": "FindTenantByNameAsyncByName", + "name": "FindTenantByNameAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-name/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + }, + "FindTenantByIdAsyncById": { + "uniqueName": "FindTenantByIdAsyncById", + "name": "FindTenantByIdAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-id/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { + "controllerName": "AbpApplicationConfiguration", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/abp/application-configuration", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { + "controllerName": "AbpApiDefinition", + "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", + "interfaces": [], + "actions": { + "GetByModel": { + "uniqueName": "GetByModel", + "name": "Get", + "httpMethod": "GET", + "url": "api/abp/api-definition", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "model", + "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "model", + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "model" + } + ], + "returnValue": { + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" + } + } + } + } + } + }, + "account": { + "rootPath": "account", + "remoteServiceName": "AbpAccount", + "controllers": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController", + "interfaces": [], + "actions": { + "LoginByLogin": { + "uniqueName": "LoginByLogin", + "name": "Login", + "httpMethod": "POST", + "url": "api/account/login", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + }, + "Logout": { + "uniqueName": "Logout", + "name": "Logout", + "httpMethod": "GET", + "url": "api/account/logout", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "CheckPasswordByLogin": { + "uniqueName": "CheckPasswordByLogin", + "name": "CheckPassword", + "httpMethod": "POST", + "url": "api/account/checkPassword", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + } + } + }, + "Volo.Abp.Account.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.AccountController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IAccountAppService" + } + ], + "actions": { + "RegisterAsyncByInput": { + "uniqueName": "RegisterAsyncByInput", + "name": "RegisterAsync", + "httpMethod": "POST", + "url": "api/account/register", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "SendPasswordResetCodeAsyncByInput": { + "uniqueName": "SendPasswordResetCodeAsyncByInput", + "name": "SendPasswordResetCodeAsync", + "httpMethod": "POST", + "url": "api/account/send-password-reset-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "ResetPasswordAsyncByInput": { + "uniqueName": "ResetPasswordAsyncByInput", + "name": "ResetPasswordAsync", + "httpMethod": "POST", + "url": "api/account/reset-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "multi-tenancy": { + "rootPath": "multi-tenancy", + "remoteServiceName": "AbpTenantManagement", + "controllers": { + "Volo.Abp.TenantManagement.TenantController": { + "controllerName": "Tenant", + "type": "Volo.Abp.TenantManagement.TenantController", + "interfaces": [ + { + "type": "Volo.Abp.TenantManagement.ITenantAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.GetTenantsInput, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.GetTenantsInput", + "typeSimple": "Volo.Abp.TenantManagement.GetTenantsInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/multi-tenancy/tenants", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantCreateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantUpdateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "GetDefaultConnectionStringAsyncById": { + "uniqueName": "GetDefaultConnectionStringAsyncById", + "name": "GetDefaultConnectionStringAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.String", + "typeSimple": "string" + } + }, + "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString": { + "uniqueName": "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString", + "name": "UpdateDefaultConnectionStringAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "defaultConnectionString", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "defaultConnectionString", + "name": "defaultConnectionString", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "DeleteDefaultConnectionStringAsyncById": { + "uniqueName": "DeleteDefaultConnectionStringAsyncById", + "name": "DeleteDefaultConnectionStringAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "permissionManagement": { + "rootPath": "permissionManagement", + "remoteServiceName": "AbpPermissionManagement", + "controllers": { + "Volo.Abp.PermissionManagement.PermissionsController": { + "controllerName": "Permissions", + "type": "Volo.Abp.PermissionManagement.PermissionsController", + "interfaces": [ + { + "type": "Volo.Abp.PermissionManagement.IPermissionAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/permission-management/permissions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.PermissionManagement.GetPermissionListResultDto", + "typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto" + } + }, + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/permission-management/permissions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.PermissionManagement.UpdatePermissionsDto, Volo.Abp.PermissionManagement.Application.Contracts", + "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + } + }, + "types": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserNameOrEmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "RememberMe", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Result", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType" + }, + { + "name": "Description", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "Success", + "InvalidUserNameOrPassword", + "NotAllowed", + "LockedOut", + "RequiresTwoFactor" + ], + "enumValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "genericArguments": null, + "properties": null + }, + "Volo.Abp.Account.RegisterDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AppName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "TwoFactorEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnd", + "type": "System.DateTimeOffset?", + "typeSimple": "string?" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "IsDeleted", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DeleterId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "DeletionTime", + "type": "System.DateTime?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "LastModificationTime", + "type": "System.DateTime?", + "typeSimple": "string?" + }, + { + "name": "LastModifierId", + "type": "System.Guid?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "CreationTime", + "type": "System.DateTime", + "typeSimple": "string" + }, + { + "name": "CreatorId", + "type": "System.Guid?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleEntityDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TKey" + ], + "properties": [ + { + "name": "Id", + "type": "TKey", + "typeSimple": "TKey" + } + ] + }, + "Volo.Abp.ObjectExtending.ExtensibleObject": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ExtraProperties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.Account.SendPasswordResetCodeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AppName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ReturnUrl", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ReturnUrlHash", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Account.ResetPasswordDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserId", + "type": "System.Guid", + "typeSimple": "string" + }, + { + "name": "ResetToken", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Success", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.ListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Items", + "type": "[T]", + "typeSimple": "[T]" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsDefault", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsStatic", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsPublic", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Sorting", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.LimitedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Application.Dtos.LimitedResultRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DefaultMaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "MaxMaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultDto": { + "baseType": "Volo.Abp.Application.Dtos.ListResultDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "TotalCount", + "type": "System.Int64", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleCreateDto": { + "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsDefault", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsPublic", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleUpdateDto": { + "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.GetIdentityUsersInput": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserCreateDto": { + "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TwoFactorEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "RoleNames", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.Identity.IdentityUserUpdateDto": { + "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserUpdateRolesDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RoleNames", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.Users.UserData": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "type": "System.Guid", + "typeSimple": "string" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.UserLookupSearchInputDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.UserLookupCountInputDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.ProfileDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsExternal", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "HasPassword", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.UpdateProfileDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.ChangePasswordInput": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CurrentPassword", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "NewPassword", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.PermissionManagement.GetPermissionListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "EntityDisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Groups", + "type": "[Volo.Abp.PermissionManagement.PermissionGroupDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGroupDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.PermissionGroupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Permissions", + "type": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.PermissionGrantInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ParentName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsGranted", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "AllowedProviders", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "GrantedProviders", + "type": "[Volo.Abp.PermissionManagement.ProviderInfoDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.ProviderInfoDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.ProviderInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ProviderName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ProviderKey", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.PermissionManagement.UpdatePermissionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Permissions", + "type": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.UpdatePermissionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsGranted", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.TenantManagement.TenantDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.GetTenantsInput": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantCreateDto": { + "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "AdminEmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AdminPassword", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantUpdateDto": { + "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.FeatureManagement.GetFeatureListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Groups", + "type": "[Volo.Abp.FeatureManagement.FeatureGroupDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.FeatureGroupDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureGroupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Features", + "type": "[Volo.Abp.FeatureManagement.FeatureDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.FeatureDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Provider", + "type": "Volo.Abp.FeatureManagement.FeatureProviderDto", + "typeSimple": "Volo.Abp.FeatureManagement.FeatureProviderDto" + }, + { + "name": "Description", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ValueType", + "type": "Volo.Abp.Validation.StringValues.IStringValueType", + "typeSimple": "Volo.Abp.Validation.StringValues.IStringValueType" + }, + { + "name": "Depth", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "ParentName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureProviderDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Key", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Validation.StringValues.IStringValueType": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Item", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "Properties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + }, + { + "name": "Validator", + "type": "Volo.Abp.Validation.StringValues.IValueValidator", + "typeSimple": "Volo.Abp.Validation.StringValues.IValueValidator" + } + ] + }, + "Volo.Abp.Validation.StringValues.IValueValidator": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Item", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "Properties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.FeatureManagement.UpdateFeaturesDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Features", + "type": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.UpdateFeatureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Localization", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto" + }, + { + "name": "Auth", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto" + }, + { + "name": "Setting", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto" + }, + { + "name": "CurrentUser", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto" + }, + { + "name": "Features", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto" + }, + { + "name": "MultiTenancy", + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto" + }, + { + "name": "CurrentTenant", + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto" + }, + { + "name": "Timing", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto" + }, + { + "name": "Clock", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto" + }, + { + "name": "ObjectExtensions", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:{System.String:System.String}}", + "typeSimple": "{string:{string:string}}" + }, + { + "name": "Languages", + "type": "[Volo.Abp.Localization.LanguageInfo]", + "typeSimple": "[Volo.Abp.Localization.LanguageInfo]" + }, + { + "name": "CurrentCulture", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto" + }, + { + "name": "DefaultResourceName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "LanguagesMap", + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}" + }, + { + "name": "LanguageFilesMap", + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}" + } + ] + }, + "Volo.Abp.Localization.LanguageInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "UiCultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "FlagIcon", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EnglishName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ThreeLetterIsoLanguageName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TwoLetterIsoLanguageName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsRightToLeft", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "CultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "NativeName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateTimeFormat", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CalendarAlgorithmType", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateTimeFormatLong", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ShortDatePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "FullDateTimePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateSeparator", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ShortTimePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "LongTimePattern", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.NameValue": { + "baseType": "Volo.Abp.NameValue", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.NameValue": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "T", + "typeSimple": "T" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Policies", + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}" + }, + { + "name": "GrantedPolicies", + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:System.String}", + "typeSimple": "{string:string}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAuthenticated", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "Id", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "SurName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailVerified", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberVerified", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "Roles", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:System.String}", + "typeSimple": "{string:string}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZone", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Iana", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone" + }, + { + "name": "Windows", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneId", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Kind", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}" + }, + { + "name": "Enums", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Entities", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Properties", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto" + }, + { + "name": "Api", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto" + }, + { + "name": "Ui", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto" + }, + { + "name": "Attributes", + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Resource", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnGet", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto" + }, + { + "name": "OnCreate", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto" + }, + { + "name": "OnUpdate", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnTable", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto" + }, + { + "name": "OnCreateForm", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto" + }, + { + "name": "OnEditForm", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Config", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Fields", + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]" + }, + { + "name": "LocalizationResource", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "type": "{System.String:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}" + }, + { + "name": "Types", + "type": "{System.String:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ModuleApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RootPath", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "RemoteServiceName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Controllers", + "type": "{System.String:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ControllerName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Interfaces", + "type": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]" + }, + { + "name": "Actions", + "type": "{System.String:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.ActionApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UniqueName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "HttpMethod", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Url", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "SupportedVersions", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "ParametersOnMethod", + "type": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]" + }, + { + "name": "Parameters", + "type": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]" + }, + { + "name": "ReturnValue", + "type": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel" + } + ] + }, + "Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeAsString", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsOptional", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.Http.Modeling.ParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "NameOnMethod", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsOptional", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "ConstraintTypes", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "BindingSourceId", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DescriptorName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.TypeApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "BaseType", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsEnum", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "EnumNames", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "EnumValues", + "type": "[System.Object]", + "typeSimple": "[object]" + }, + { + "name": "GenericArguments", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "Properties", + "type": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]" + } + ] + }, + "Volo.Abp.Http.Modeling.PropertyApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + } + ] + } + } +} \ No newline at end of file diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-role.service.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-role.service.ts new file mode 100644 index 0000000000..5fd029c43d --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-role.service.ts @@ -0,0 +1,58 @@ +import type { ListResultDto, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core'; +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { IdentityRoleCreateDto, IdentityRoleDto, IdentityRoleUpdateDto } from './models'; + +@Injectable({ + providedIn: 'root', +}) +export class IdentityRoleService { + apiName = 'AbpIdentity'; + + create = (input: IdentityRoleCreateDto) => + this.restService.request({ + method: 'POST', + url: '/api/identity/roles', + body: input, + }, + { apiName: this.apiName }); + + delete = (id: string) => + this.restService.request({ + method: 'DELETE', + url: `/api/identity/roles/${id}`, + }, + { apiName: this.apiName }); + + get = (id: string) => + this.restService.request({ + method: 'GET', + url: `/api/identity/roles/${id}`, + }, + { apiName: this.apiName }); + + getAllList = () => + this.restService.request>({ + method: 'GET', + url: '/api/identity/roles/all', + }, + { apiName: this.apiName }); + + getList = (input: PagedAndSortedResultRequestDto) => + this.restService.request>({ + method: 'GET', + url: '/api/identity/roles', + params: { sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, + }, + { apiName: this.apiName }); + + update = (id: string, input: IdentityRoleUpdateDto) => + this.restService.request({ + method: 'PUT', + url: `/api/identity/roles/${id}`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user-lookup.service.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user-lookup.service.ts new file mode 100644 index 0000000000..af4583aa28 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user-lookup.service.ts @@ -0,0 +1,44 @@ +import type { UserLookupCountInputDto, UserLookupSearchInputDto } from './models'; +import { RestService } from '@abp/ng.core'; +import type { ListResultDto } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; +import type { UserData } from '../users/models'; + +@Injectable({ + providedIn: 'root', +}) +export class IdentityUserLookupService { + apiName = 'AbpIdentity'; + + findById = (id: string) => + this.restService.request({ + method: 'GET', + url: `/api/identity/users/lookup/${id}`, + }, + { apiName: this.apiName }); + + findByUserName = (userName: string) => + this.restService.request({ + method: 'GET', + url: `/api/identity/users/lookup/by-username/${userName}`, + }, + { apiName: this.apiName }); + + getCount = (input: UserLookupCountInputDto) => + this.restService.request({ + method: 'GET', + url: '/api/identity/users/lookup/count', + params: { filter: input.filter }, + }, + { apiName: this.apiName }); + + search = (input: UserLookupSearchInputDto) => + this.restService.request>({ + method: 'GET', + url: '/api/identity/users/lookup/search', + params: { filter: input.filter, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts new file mode 100644 index 0000000000..1a0ac89e9f --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts @@ -0,0 +1,87 @@ +import type { GetIdentityUsersInput, IdentityRoleDto, IdentityUserCreateDto, IdentityUserDto, IdentityUserUpdateDto, IdentityUserUpdateRolesDto } from './models'; +import { RestService } from '@abp/ng.core'; +import type { ListResultDto, PagedResultDto } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class IdentityUserService { + apiName = 'AbpIdentity'; + + create = (input: IdentityUserCreateDto) => + this.restService.request({ + method: 'POST', + url: '/api/identity/users', + body: input, + }, + { apiName: this.apiName }); + + delete = (id: string) => + this.restService.request({ + method: 'DELETE', + url: `/api/identity/users/${id}`, + }, + { apiName: this.apiName }); + + findByEmail = (email: string) => + this.restService.request({ + method: 'GET', + url: `/api/identity/users/by-email/${email}`, + }, + { apiName: this.apiName }); + + findByUsername = (username: string) => + this.restService.request({ + method: 'GET', + url: '/api/identity/users/by-username/{userName}', + }, + { apiName: this.apiName }); + + get = (id: string) => + this.restService.request({ + method: 'GET', + url: `/api/identity/users/${id}`, + }, + { apiName: this.apiName }); + + getAssignableRoles = () => + this.restService.request>({ + method: 'GET', + url: '/api/identity/users/assignable-roles', + }, + { apiName: this.apiName }); + + getList = (input: GetIdentityUsersInput) => + this.restService.request>({ + method: 'GET', + url: '/api/identity/users', + params: { filter: input.filter, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, + }, + { apiName: this.apiName }); + + getRoles = (id: string) => + this.restService.request>({ + method: 'GET', + url: `/api/identity/users/${id}/roles`, + }, + { apiName: this.apiName }); + + update = (id: string, input: IdentityUserUpdateDto) => + this.restService.request({ + method: 'PUT', + url: `/api/identity/users/${id}`, + body: input, + }, + { apiName: this.apiName }); + + updateRoles = (id: string, input: IdentityUserUpdateRolesDto) => + this.restService.request({ + method: 'PUT', + url: `/api/identity/users/${id}/roles`, + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/index.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/index.ts new file mode 100644 index 0000000000..df2fed0c35 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/index.ts @@ -0,0 +1,5 @@ +export * from './identity-role.service'; +export * from './identity-user-lookup.service'; +export * from './identity-user.service'; +export * from './models'; +export * from './profile.service'; diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts new file mode 100644 index 0000000000..5736b9c3c9 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts @@ -0,0 +1,96 @@ +import type { ExtensibleEntityDto, ExtensibleFullAuditedEntityDto, ExtensibleObject, PagedAndSortedResultRequestDto } from '@abp/ng.core'; + +export interface ChangePasswordInput { + currentPassword: string; + newPassword: string; +} + +export interface GetIdentityUsersInput extends PagedAndSortedResultRequestDto { + filter: string; +} + +export interface IdentityRoleCreateDto extends IdentityRoleCreateOrUpdateDtoBase { +} + +export interface IdentityRoleCreateOrUpdateDtoBase extends ExtensibleObject { + name: string; + isDefault: boolean; + isPublic: boolean; +} + +export interface IdentityRoleDto extends ExtensibleEntityDto { + name: string; + isDefault: boolean; + isStatic: boolean; + isPublic: boolean; + concurrencyStamp: string; +} + +export interface IdentityRoleUpdateDto extends IdentityRoleCreateOrUpdateDtoBase { + concurrencyStamp: string; +} + +export interface IdentityUserCreateDto extends IdentityUserCreateOrUpdateDtoBase { + password: string; +} + +export interface IdentityUserCreateOrUpdateDtoBase extends ExtensibleObject { + userName: string; + name: string; + surname: string; + email: string; + phoneNumber: string; + twoFactorEnabled: boolean; + lockoutEnabled: boolean; + roleNames: string[]; +} + +export interface IdentityUserDto extends ExtensibleFullAuditedEntityDto { + tenantId?: string; + userName: string; + name: string; + surname: string; + email: string; + emailConfirmed: boolean; + phoneNumber: string; + phoneNumberConfirmed: boolean; + twoFactorEnabled: boolean; + lockoutEnabled: boolean; + lockoutEnd?: string; + concurrencyStamp: string; +} + +export interface IdentityUserUpdateDto extends IdentityUserCreateOrUpdateDtoBase { + password: string; + concurrencyStamp: string; +} + +export interface IdentityUserUpdateRolesDto { + roleNames: string[]; +} + +export interface ProfileDto extends ExtensibleObject { + userName: string; + email: string; + name: string; + surname: string; + phoneNumber: string; + isExternal: boolean; + hasPassword: boolean; +} + +export interface UpdateProfileDto extends ExtensibleObject { + userName: string; + email: string; + name: string; + surname: string; + phoneNumber: string; +} + +export interface UserLookupCountInputDto { + filter: string; +} + +export interface UserLookupSearchInputDto extends PagedAndSortedResultRequestDto { + filter: string; +} diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/profile.service.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/profile.service.ts new file mode 100644 index 0000000000..4b8460d03b --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/profile.service.ts @@ -0,0 +1,35 @@ +import type { ChangePasswordInput, ProfileDto, UpdateProfileDto } from './models'; +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class ProfileService { + apiName = 'AbpIdentity'; + + changePassword = (input: ChangePasswordInput) => + this.restService.request({ + method: 'POST', + url: '/api/identity/my-profile/change-password', + body: input, + }, + { apiName: this.apiName }); + + get = () => + this.restService.request({ + method: 'GET', + url: '/api/identity/my-profile', + }, + { apiName: this.apiName }); + + update = (input: UpdateProfileDto) => + this.restService.request({ + method: 'PUT', + url: '/api/identity/my-profile', + body: input, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/users/index.ts b/npm/ng-packs/packages/identity/src/lib/proxy/users/index.ts new file mode 100644 index 0000000000..e9644dae47 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/users/index.ts @@ -0,0 +1 @@ +export * from './models'; diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/users/models.ts b/npm/ng-packs/packages/identity/src/lib/proxy/users/models.ts new file mode 100644 index 0000000000..5201620e29 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/proxy/users/models.ts @@ -0,0 +1,12 @@ + +export interface UserData { + id: string; + tenantId?: string; + userName: string; + name: string; + surname: string; + email: string; + emailConfirmed: boolean; + phoneNumber: string; + phoneNumberConfirmed: boolean; +} diff --git a/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts b/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts index 0b1fd24c9c..565315bfb6 100644 --- a/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts +++ b/npm/ng-packs/packages/identity/src/lib/states/identity.state.ts @@ -1,5 +1,6 @@ +import { Injectable } from '@angular/core'; import { Action, Selector, State, StateContext } from '@ngxs/store'; -import { switchMap, tap, pluck } from 'rxjs/operators'; +import { pluck, tap } from 'rxjs/operators'; import { CreateRole, CreateUser, @@ -8,14 +9,15 @@ import { GetRoleById, GetRoles, GetUserById, + GetUserRoles, GetUsers, UpdateRole, UpdateUser, - GetUserRoles, } from '../actions/identity.actions'; import { Identity } from '../models/identity'; -import { IdentityService } from '../services/identity.service'; -import { Injectable } from '@angular/core'; +import { IdentityRoleService } from '../proxy/identity/identity-role.service'; +import { IdentityUserService } from '../proxy/identity/identity-user.service'; +import { IdentityUserDto } from '../proxy/identity/models'; @State({ name: 'IdentityState', @@ -34,7 +36,7 @@ export class IdentityState { } @Selector() - static getUsers({ users }: Identity.State): Identity.UserItem[] { + static getUsers({ users }: Identity.State): IdentityUserDto[] { return users.items || []; } @@ -43,11 +45,14 @@ export class IdentityState { return users.totalCount || 0; } - constructor(private identityService: IdentityService) {} + constructor( + private identityUserService: IdentityUserService, + private identityRoleService: IdentityRoleService, + ) {} @Action(GetRoles) getRoles({ patchState }: StateContext, { payload }: GetRoles) { - return this.identityService.getRoles(payload).pipe( + return this.identityRoleService.getList(payload).pipe( tap(roles => patchState({ roles, @@ -58,7 +63,7 @@ export class IdentityState { @Action(GetRoleById) getRole({ patchState }: StateContext, { payload }: GetRoleById) { - return this.identityService.getRoleById(payload).pipe( + return this.identityRoleService.get(payload).pipe( tap(selectedRole => patchState({ selectedRole, @@ -69,22 +74,22 @@ export class IdentityState { @Action(DeleteRole) deleteRole(_, { payload }: GetRoleById) { - return this.identityService.deleteRole(payload); + return this.identityRoleService.delete(payload); } @Action(CreateRole) addRole(_, { payload }: CreateRole) { - return this.identityService.createRole(payload); + return this.identityRoleService.create(payload); } @Action(UpdateRole) updateRole({ getState }: StateContext, { payload }: UpdateRole) { - return this.identityService.updateRole({ ...getState().selectedRole, ...payload }); + return this.identityRoleService.update(payload.id, { ...getState().selectedRole, ...payload }); } @Action(GetUsers) getUsers({ patchState }: StateContext, { payload }: GetUsers) { - return this.identityService.getUsers(payload).pipe( + return this.identityUserService.getList(payload).pipe( tap(users => patchState({ users, @@ -95,7 +100,7 @@ export class IdentityState { @Action(GetUserById) getUser({ patchState }: StateContext, { payload }: GetUserById) { - return this.identityService.getUserById(payload).pipe( + return this.identityUserService.get(payload).pipe( tap(selectedUser => patchState({ selectedUser, @@ -106,22 +111,22 @@ export class IdentityState { @Action(DeleteUser) deleteUser(_, { payload }: GetUserById) { - return this.identityService.deleteUser(payload); + return this.identityUserService.delete(payload); } @Action(CreateUser) addUser(_, { payload }: CreateUser) { - return this.identityService.createUser(payload); + return this.identityUserService.create(payload); } @Action(UpdateUser) updateUser({ getState }: StateContext, { payload }: UpdateUser) { - return this.identityService.updateUser({ ...getState().selectedUser, ...payload }); + return this.identityUserService.update(payload.id, { ...getState().selectedUser, ...payload }); } @Action(GetUserRoles) getUserRoles({ patchState }: StateContext, { payload }: GetUserRoles) { - return this.identityService.getUserRoles(payload).pipe( + return this.identityUserService.getRoles(payload).pipe( pluck('items'), tap(selectedUserRoles => patchState({ diff --git a/npm/ng-packs/packages/identity/src/public-api.ts b/npm/ng-packs/packages/identity/src/public-api.ts index fd26c8a649..4b192bd857 100644 --- a/npm/ng-packs/packages/identity/src/public-api.ts +++ b/npm/ng-packs/packages/identity/src/public-api.ts @@ -9,3 +9,5 @@ export * from './lib/components'; export * from './lib/models/identity'; export * from './lib/services'; export * from './lib/states/identity.state'; +export * from './lib/proxy/identity'; +export * from './lib/proxy/users'; From ed5b6963c642f1dde8ee9e8b395715754b0577ad Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 14 Sep 2020 18:00:17 +0300 Subject: [PATCH 003/117] fix: tslint errors --- .../src/lib/proxy/identity/identity-user.service.ts | 8 +++++++- .../packages/identity/src/lib/proxy/identity/models.ts | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts index 1a0ac89e9f..ea54c420e5 100644 --- a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts @@ -1,4 +1,10 @@ -import type { GetIdentityUsersInput, IdentityRoleDto, IdentityUserCreateDto, IdentityUserDto, IdentityUserUpdateDto, IdentityUserUpdateRolesDto } from './models'; +import type { + GetIdentityUsersInput, + IdentityRoleDto, + IdentityUserCreateDto, + IdentityUserDto, + IdentityUserUpdateDto, + IdentityUserUpdateRolesDto } from './models'; import { RestService } from '@abp/ng.core'; import type { ListResultDto, PagedResultDto } from '@abp/ng.core'; import { Injectable } from '@angular/core'; diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts index 5736b9c3c9..daaecf3e8d 100644 --- a/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/models.ts @@ -9,6 +9,7 @@ export interface GetIdentityUsersInput extends PagedAndSortedResultRequestDto { filter: string; } +// tslint:disable-next-line: no-empty-interface export interface IdentityRoleCreateDto extends IdentityRoleCreateOrUpdateDtoBase { } From 4953f6e08cce4e103982fb9bc0e00bcc3cad45f6 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Mon, 14 Sep 2020 18:13:43 +0300 Subject: [PATCH 004/117] fix: lint error --- .../src/lib/proxy/identity/identity-user.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts index ea54c420e5..fe69946ff1 100644 --- a/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts +++ b/npm/ng-packs/packages/identity/src/lib/proxy/identity/identity-user.service.ts @@ -1,9 +1,9 @@ -import type { +import type { GetIdentityUsersInput, IdentityRoleDto, - IdentityUserCreateDto, - IdentityUserDto, - IdentityUserUpdateDto, + IdentityUserCreateDto, + IdentityUserDto, + IdentityUserUpdateDto, IdentityUserUpdateRolesDto } from './models'; import { RestService } from '@abp/ng.core'; import type { ListResultDto, PagedResultDto } from '@abp/ng.core'; From a2735a4aa2975dd59b04ad2a7b956cf5339be53c Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 15 Sep 2020 13:50:15 +0300 Subject: [PATCH 005/117] feat: generate tenant-management proxies #5182 --- .../src/lib/proxy/generate-proxy.json | 4210 +++++++++++++++++ .../src/lib/proxy/tenant-management/index.ts | 2 + .../src/lib/proxy/tenant-management/models.ts | 22 + .../proxy/tenant-management/tenant.service.ts | 73 + .../tenant-management/src/public-api.ts | 1 + 5 files changed, 4308 insertions(+) create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/index.ts create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json b/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json new file mode 100644 index 0000000000..4e01a8374b --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json @@ -0,0 +1,4210 @@ +{ + "generated": [ + "multi-tenancy" + ], + "modules": { + "featureManagement": { + "rootPath": "featureManagement", + "remoteServiceName": "AbpFeatureManagement", + "controllers": { + "Volo.Abp.FeatureManagement.FeaturesController": { + "controllerName": "Features", + "type": "Volo.Abp.FeatureManagement.FeaturesController", + "interfaces": [ + { + "type": "Volo.Abp.FeatureManagement.IFeatureAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/feature-management/features", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.FeatureManagement.GetFeatureListResultDto", + "typeSimple": "Volo.Abp.FeatureManagement.GetFeatureListResultDto" + } + }, + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/feature-management/features", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.FeatureManagement.UpdateFeaturesDto, Volo.Abp.FeatureManagement.Application.Contracts", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "multi-tenancy": { + "rootPath": "multi-tenancy", + "remoteServiceName": "AbpTenantManagement", + "controllers": { + "Volo.Abp.TenantManagement.TenantController": { + "controllerName": "Tenant", + "type": "Volo.Abp.TenantManagement.TenantController", + "interfaces": [ + { + "type": "Volo.Abp.TenantManagement.ITenantAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.GetTenantsInput, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.GetTenantsInput", + "typeSimple": "Volo.Abp.TenantManagement.GetTenantsInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/multi-tenancy/tenants", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantCreateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantUpdateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "GetDefaultConnectionStringAsyncById": { + "uniqueName": "GetDefaultConnectionStringAsyncById", + "name": "GetDefaultConnectionStringAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.String", + "typeSimple": "string" + } + }, + "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString": { + "uniqueName": "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString", + "name": "UpdateDefaultConnectionStringAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "defaultConnectionString", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "defaultConnectionString", + "name": "defaultConnectionString", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "DeleteDefaultConnectionStringAsyncById": { + "uniqueName": "DeleteDefaultConnectionStringAsyncById", + "name": "DeleteDefaultConnectionStringAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "identity": { + "rootPath": "identity", + "remoteServiceName": "AbpIdentity", + "controllers": { + "Volo.Abp.Identity.IdentityRoleController": { + "controllerName": "IdentityRole", + "type": "Volo.Abp.Identity.IdentityRoleController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityRoleAppService" + } + ], + "actions": { + "GetAllListAsync": { + "uniqueName": "GetAllListAsync", + "name": "GetAllListAsync", + "httpMethod": "GET", + "url": "api/identity/roles/all", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", + "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + }, + "Volo.Abp.Identity.IdentityUserController": { + "controllerName": "IdentityUser", + "type": "Volo.Abp.Identity.IdentityUserController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserAppService" + } + ], + "actions": { + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/users", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.GetIdentityUsersInput", + "typeSimple": "Volo.Abp.Identity.GetIdentityUsersInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/users", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/users/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "GetRolesAsyncById": { + "uniqueName": "GetRolesAsyncById", + "name": "GetRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/{id}/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetAssignableRolesAsync": { + "uniqueName": "GetAssignableRolesAsync", + "name": "GetAssignableRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/assignable-roles", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "UpdateRolesAsyncByIdAndInput": { + "uniqueName": "UpdateRolesAsyncByIdAndInput", + "name": "UpdateRolesAsync", + "httpMethod": "PUT", + "url": "api/identity/users/{id}/roles", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateRolesDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "FindByUsernameAsyncByUsername": { + "uniqueName": "FindByUsernameAsyncByUsername", + "name": "FindByUsernameAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-username/{userName}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "username", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "username", + "name": "username", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "FindByEmailAsyncByEmail": { + "uniqueName": "FindByEmailAsyncByEmail", + "name": "FindByEmailAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-email/{email}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "email", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "email", + "name": "email", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + } + } + }, + "Volo.Abp.Identity.IdentityUserLookupController": { + "controllerName": "IdentityUserLookup", + "type": "Volo.Abp.Identity.IdentityUserLookupController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserLookupAppService" + } + ], + "actions": { + "FindByIdAsyncById": { + "uniqueName": "FindByIdAsyncById", + "name": "FindByIdAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" + } + }, + "FindByUserNameAsyncByUserName": { + "uniqueName": "FindByUserNameAsyncByUserName", + "name": "FindByUserNameAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/by-username/{userName}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "userName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "userName", + "name": "userName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" + } + }, + "SearchAsyncByInput": { + "uniqueName": "SearchAsyncByInput", + "name": "SearchAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/search", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupSearchInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupSearchInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupSearchInputDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetCountAsyncByInput": { + "uniqueName": "GetCountAsyncByInput", + "name": "GetCountAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/count", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupCountInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupCountInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupCountInputDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + } + ], + "returnValue": { + "type": "System.Int64", + "typeSimple": "number" + } + } + } + }, + "Volo.Abp.Identity.ProfileController": { + "controllerName": "Profile", + "type": "Volo.Abp.Identity.ProfileController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IProfileAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/my-profile", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" + } + }, + "UpdateAsyncByInput": { + "uniqueName": "UpdateAsyncByInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/my-profile", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.UpdateProfileDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" + } + }, + "ChangePasswordAsyncByInput": { + "uniqueName": "ChangePasswordAsyncByInput", + "name": "ChangePasswordAsync", + "httpMethod": "POST", + "url": "api/identity/my-profile/change-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Identity.ChangePasswordInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "account": { + "rootPath": "account", + "remoteServiceName": "AbpAccount", + "controllers": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController", + "interfaces": [], + "actions": { + "LoginByLogin": { + "uniqueName": "LoginByLogin", + "name": "Login", + "httpMethod": "POST", + "url": "api/account/login", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + }, + "Logout": { + "uniqueName": "Logout", + "name": "Logout", + "httpMethod": "GET", + "url": "api/account/logout", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "CheckPasswordByLogin": { + "uniqueName": "CheckPasswordByLogin", + "name": "CheckPassword", + "httpMethod": "POST", + "url": "api/account/checkPassword", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + } + } + }, + "Volo.Abp.Account.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.AccountController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IAccountAppService" + } + ], + "actions": { + "RegisterAsyncByInput": { + "uniqueName": "RegisterAsyncByInput", + "name": "RegisterAsync", + "httpMethod": "POST", + "url": "api/account/register", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + } + }, + "SendPasswordResetCodeAsyncByInput": { + "uniqueName": "SendPasswordResetCodeAsyncByInput", + "name": "SendPasswordResetCodeAsync", + "httpMethod": "POST", + "url": "api/account/send-password-reset-code", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + }, + "ResetPasswordAsyncByInput": { + "uniqueName": "ResetPasswordAsyncByInput", + "name": "ResetPasswordAsync", + "httpMethod": "POST", + "url": "api/account/reset-password", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + }, + "abp": { + "rootPath": "abp", + "remoteServiceName": "abp", + "controllers": { + "Pages.Abp.MultiTenancy.AbpTenantController": { + "controllerName": "AbpTenant", + "type": "Pages.Abp.MultiTenancy.AbpTenantController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.IAbpTenantAppService" + } + ], + "actions": { + "FindTenantByNameAsyncByName": { + "uniqueName": "FindTenantByNameAsyncByName", + "name": "FindTenantByNameAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-name/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + }, + "FindTenantByIdAsyncById": { + "uniqueName": "FindTenantByIdAsyncById", + "name": "FindTenantByIdAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-id/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { + "controllerName": "AbpApplicationConfiguration", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/abp/application-configuration", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { + "controllerName": "AbpApiDefinition", + "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", + "interfaces": [], + "actions": { + "GetByModel": { + "uniqueName": "GetByModel", + "name": "Get", + "httpMethod": "GET", + "url": "api/abp/api-definition", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "model", + "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "model", + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "model" + } + ], + "returnValue": { + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" + } + } + } + } + } + }, + "permissionManagement": { + "rootPath": "permissionManagement", + "remoteServiceName": "AbpPermissionManagement", + "controllers": { + "Volo.Abp.PermissionManagement.PermissionsController": { + "controllerName": "Permissions", + "type": "Volo.Abp.PermissionManagement.PermissionsController", + "interfaces": [ + { + "type": "Volo.Abp.PermissionManagement.IPermissionAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/permission-management/permissions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.PermissionManagement.GetPermissionListResultDto", + "typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto" + } + }, + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/permission-management/permissions", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.PermissionManagement.UpdatePermissionsDto, Volo.Abp.PermissionManagement.Application.Contracts", + "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", + "descriptorName": "" + } + ], + "returnValue": { + "type": "System.Void", + "typeSimple": "System.Void" + } + } + } + } + } + } + }, + "types": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserNameOrEmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "RememberMe", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Result", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType" + }, + { + "name": "Description", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "Success", + "InvalidUserNameOrPassword", + "NotAllowed", + "LockedOut", + "RequiresTwoFactor" + ], + "enumValues": [ + 1, + 2, + 3, + 4, + 5 + ], + "genericArguments": null, + "properties": null + }, + "Volo.Abp.Account.RegisterDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AppName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "TwoFactorEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnd", + "type": "System.DateTimeOffset?", + "typeSimple": "string?" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "IsDeleted", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DeleterId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "DeletionTime", + "type": "System.DateTime?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "LastModificationTime", + "type": "System.DateTime?", + "typeSimple": "string?" + }, + { + "name": "LastModifierId", + "type": "System.Guid?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TPrimaryKey" + ], + "properties": [ + { + "name": "CreationTime", + "type": "System.DateTime", + "typeSimple": "string" + }, + { + "name": "CreatorId", + "type": "System.Guid?", + "typeSimple": "string?" + } + ] + }, + "Volo.Abp.Application.Dtos.ExtensibleEntityDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "TKey" + ], + "properties": [ + { + "name": "Id", + "type": "TKey", + "typeSimple": "TKey" + } + ] + }, + "Volo.Abp.ObjectExtending.ExtensibleObject": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ExtraProperties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.Account.SendPasswordResetCodeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AppName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ReturnUrl", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ReturnUrlHash", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Account.ResetPasswordDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserId", + "type": "System.Guid", + "typeSimple": "string" + }, + { + "name": "ResetToken", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Success", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.ListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Items", + "type": "[T]", + "typeSimple": "[T]" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsDefault", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsStatic", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsPublic", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Sorting", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultRequestDto": { + "baseType": "Volo.Abp.Application.Dtos.LimitedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Application.Dtos.LimitedResultRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DefaultMaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "MaxMaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Application.Dtos.PagedResultDto": { + "baseType": "Volo.Abp.Application.Dtos.ListResultDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "TotalCount", + "type": "System.Int64", + "typeSimple": "number" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleCreateDto": { + "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsDefault", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "IsPublic", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.IdentityRoleUpdateDto": { + "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.GetIdentityUsersInput": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserCreateDto": { + "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TwoFactorEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "LockoutEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "RoleNames", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.Identity.IdentityUserUpdateDto": { + "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Password", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ConcurrencyStamp", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.IdentityUserUpdateRolesDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RoleNames", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.Users.UserData": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "type": "System.Guid", + "typeSimple": "string" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberConfirmed", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.UserLookupSearchInputDto": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.UserLookupCountInputDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.ProfileDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsExternal", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "HasPassword", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Identity.UpdateProfileDto": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Surname", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Identity.ChangePasswordInput": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CurrentPassword", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "NewPassword", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.PermissionManagement.GetPermissionListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "EntityDisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Groups", + "type": "[Volo.Abp.PermissionManagement.PermissionGroupDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGroupDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.PermissionGroupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Permissions", + "type": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.PermissionGrantInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ParentName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsGranted", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "AllowedProviders", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "GrantedProviders", + "type": "[Volo.Abp.PermissionManagement.ProviderInfoDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.ProviderInfoDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.ProviderInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ProviderName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ProviderKey", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.PermissionManagement.UpdatePermissionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Permissions", + "type": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]", + "typeSimple": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]" + } + ] + }, + "Volo.Abp.PermissionManagement.UpdatePermissionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsGranted", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.TenantManagement.TenantDto": { + "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.GetTenantsInput": { + "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Filter", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantCreateDto": { + "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "AdminEmailAddress", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "AdminPassword", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase": { + "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.TenantManagement.TenantUpdateDto": { + "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.FeatureManagement.GetFeatureListResultDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Groups", + "type": "[Volo.Abp.FeatureManagement.FeatureGroupDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.FeatureGroupDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureGroupDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Features", + "type": "[Volo.Abp.FeatureManagement.FeatureDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.FeatureDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Provider", + "type": "Volo.Abp.FeatureManagement.FeatureProviderDto", + "typeSimple": "Volo.Abp.FeatureManagement.FeatureProviderDto" + }, + { + "name": "Description", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ValueType", + "type": "Volo.Abp.Validation.StringValues.IStringValueType", + "typeSimple": "Volo.Abp.Validation.StringValues.IStringValueType" + }, + { + "name": "Depth", + "type": "System.Int32", + "typeSimple": "number" + }, + { + "name": "ParentName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.FeatureManagement.FeatureProviderDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Key", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Validation.StringValues.IStringValueType": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Item", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "Properties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + }, + { + "name": "Validator", + "type": "Volo.Abp.Validation.StringValues.IValueValidator", + "typeSimple": "Volo.Abp.Validation.StringValues.IValueValidator" + } + ] + }, + "Volo.Abp.Validation.StringValues.IValueValidator": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Item", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "Properties", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.FeatureManagement.UpdateFeaturesDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Features", + "type": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]", + "typeSimple": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]" + } + ] + }, + "Volo.Abp.FeatureManagement.UpdateFeatureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Localization", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto" + }, + { + "name": "Auth", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto" + }, + { + "name": "Setting", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto" + }, + { + "name": "CurrentUser", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto" + }, + { + "name": "Features", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto" + }, + { + "name": "MultiTenancy", + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto" + }, + { + "name": "CurrentTenant", + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto" + }, + { + "name": "Timing", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto" + }, + { + "name": "Clock", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto" + }, + { + "name": "ObjectExtensions", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:{System.String:System.String}}", + "typeSimple": "{string:{string:string}}" + }, + { + "name": "Languages", + "type": "[Volo.Abp.Localization.LanguageInfo]", + "typeSimple": "[Volo.Abp.Localization.LanguageInfo]" + }, + { + "name": "CurrentCulture", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto" + }, + { + "name": "DefaultResourceName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "LanguagesMap", + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}" + }, + { + "name": "LanguageFilesMap", + "type": "{System.String:[Volo.Abp.NameValue]}", + "typeSimple": "{string:[Volo.Abp.NameValue]}" + } + ] + }, + "Volo.Abp.Localization.LanguageInfo": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "UiCultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "FlagIcon", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "DisplayName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EnglishName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ThreeLetterIsoLanguageName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TwoLetterIsoLanguageName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsRightToLeft", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "CultureName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "NativeName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateTimeFormat", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "CalendarAlgorithmType", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateTimeFormatLong", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ShortDatePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "FullDateTimePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DateSeparator", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "ShortTimePattern", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "LongTimePattern", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.NameValue": { + "baseType": "Volo.Abp.NameValue", + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [] + }, + "Volo.Abp.NameValue": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": [ + "T" + ], + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "T", + "typeSimple": "T" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Policies", + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}" + }, + { + "name": "GrantedPolicies", + "type": "{System.String:System.Boolean}", + "typeSimple": "{string:boolean}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:System.String}", + "typeSimple": "{string:string}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAuthenticated", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "Id", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "TenantId", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "UserName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "SurName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Email", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "EmailVerified", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "PhoneNumber", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "PhoneNumberVerified", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "Roles", + "type": "[System.String]", + "typeSimple": "[string]" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Values", + "type": "{System.String:System.String}", + "typeSimple": "{string:string}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsEnabled", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Id", + "type": "System.Guid?", + "typeSimple": "string?" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZone", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Iana", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone" + }, + { + "name": "Windows", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TimeZoneId", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Kind", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}" + }, + { + "name": "Enums", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Entities", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Properties", + "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}", + "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DisplayName", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto" + }, + { + "name": "Api", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto" + }, + { + "name": "Ui", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto" + }, + { + "name": "Attributes", + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]" + }, + { + "name": "Configuration", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Resource", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnGet", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto" + }, + { + "name": "OnCreate", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto" + }, + { + "name": "OnUpdate", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsAvailable", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "OnTable", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto" + }, + { + "name": "OnCreateForm", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto" + }, + { + "name": "OnEditForm", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IsVisible", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Config", + "type": "{System.String:System.Object}", + "typeSimple": "{string:object}" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Fields", + "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]", + "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]" + }, + { + "name": "LocalizationResource", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Value", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean" + } + ] + }, + "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Modules", + "type": "{System.String:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}" + }, + { + "name": "Types", + "type": "{System.String:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ModuleApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "RootPath", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "RemoteServiceName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Controllers", + "type": "{System.String:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "ControllerName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Interfaces", + "type": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]" + }, + { + "name": "Actions", + "type": "{System.String:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}", + "typeSimple": "{string:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}" + } + ] + }, + "Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.ActionApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "UniqueName", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "HttpMethod", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Url", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "SupportedVersions", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "ParametersOnMethod", + "type": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]" + }, + { + "name": "Parameters", + "type": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]" + }, + { + "name": "ReturnValue", + "type": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel" + } + ] + }, + "Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeAsString", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsOptional", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + } + ] + }, + "Volo.Abp.Http.Modeling.ParameterApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "NameOnMethod", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsOptional", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "DefaultValue", + "type": "System.Object", + "typeSimple": "object" + }, + { + "name": "ConstraintTypes", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "BindingSourceId", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "DescriptorName", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + } + ] + }, + "Volo.Abp.Http.Modeling.TypeApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "BaseType", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "IsEnum", + "type": "System.Boolean", + "typeSimple": "boolean" + }, + { + "name": "EnumNames", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "EnumValues", + "type": "[System.Object]", + "typeSimple": "[object]" + }, + { + "name": "GenericArguments", + "type": "[System.String]", + "typeSimple": "[string]" + }, + { + "name": "Properties", + "type": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]", + "typeSimple": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]" + } + ] + }, + "Volo.Abp.Http.Modeling.PropertyApiDescriptionModel": { + "baseType": null, + "isEnum": false, + "enumNames": null, + "enumValues": null, + "genericArguments": null, + "properties": [ + { + "name": "Name", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "Type", + "type": "System.String", + "typeSimple": "string" + }, + { + "name": "TypeSimple", + "type": "System.String", + "typeSimple": "string" + } + ] + } + } +} \ No newline at end of file diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/index.ts new file mode 100644 index 0000000000..12a257602f --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/index.ts @@ -0,0 +1,2 @@ +export * from './models'; +export * from './tenant.service'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts new file mode 100644 index 0000000000..c084037c5b --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts @@ -0,0 +1,22 @@ +import type { ExtensibleEntityDto, ExtensibleObject, PagedAndSortedResultRequestDto } from '@abp/ng.core'; + +export interface GetTenantsInput extends PagedAndSortedResultRequestDto { + filter: string; +} + +export interface TenantCreateDto extends TenantCreateOrUpdateDtoBase { + adminEmailAddress: string; + adminPassword: string; +} + +export interface TenantCreateOrUpdateDtoBase extends ExtensibleObject { + name: string; +} + +export interface TenantDto extends ExtensibleEntityDto { + name: string; +} + +// tslint:disable-next-line: no-empty-interface +export interface TenantUpdateDto extends TenantCreateOrUpdateDtoBase { +} diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts new file mode 100644 index 0000000000..f17bce8619 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts @@ -0,0 +1,73 @@ +import type { PagedResultDto } from '@abp/ng.core'; +import type { GetTenantsInput, TenantCreateDto, TenantDto, TenantUpdateDto } from './models'; +import { RestService } from '@abp/ng.core'; +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class TenantService { + apiName = 'AbpTenantManagement'; + + create = (input: TenantCreateDto) => + this.restService.request({ + method: 'POST', + url: '/api/multi-tenancy/tenants', + body: input, + }, + { apiName: this.apiName }); + + delete = (id: string) => + this.restService.request({ + method: 'DELETE', + url: `/api/multi-tenancy/tenants/${id}`, + }, + { apiName: this.apiName }); + + deleteDefaultConnectionString = (id: string) => + this.restService.request({ + method: 'DELETE', + url: `/api/multi-tenancy/tenants/${id}/default-connection-string`, + }, + { apiName: this.apiName }); + + get = (id: string) => + this.restService.request({ + method: 'GET', + url: `/api/multi-tenancy/tenants/${id}`, + }, + { apiName: this.apiName }); + + getDefaultConnectionString = (id: string) => + this.restService.request({ + method: 'GET', + url: `/api/multi-tenancy/tenants/${id}/default-connection-string`, + }, + { apiName: this.apiName }); + + getList = (input: GetTenantsInput) => + this.restService.request>({ + method: 'GET', + url: '/api/multi-tenancy/tenants', + params: { filter: input.filter, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, + }, + { apiName: this.apiName }); + + update = (id: string, input: TenantUpdateDto) => + this.restService.request({ + method: 'PUT', + url: `/api/multi-tenancy/tenants/${id}`, + body: input, + }, + { apiName: this.apiName }); + + updateDefaultConnectionString = (id: string, defaultConnectionString: string) => + this.restService.request({ + method: 'PUT', + url: `/api/multi-tenancy/tenants/${id}/default-connection-string`, + params: { defaultConnectionString }, + }, + { apiName: this.apiName }); + + constructor(private restService: RestService) {} +} diff --git a/npm/ng-packs/packages/tenant-management/src/public-api.ts b/npm/ng-packs/packages/tenant-management/src/public-api.ts index 3fc7cf90d5..7bfa4b14de 100644 --- a/npm/ng-packs/packages/tenant-management/src/public-api.ts +++ b/npm/ng-packs/packages/tenant-management/src/public-api.ts @@ -5,3 +5,4 @@ export * from './lib/enums'; export * from './lib/models'; export * from './lib/services'; export * from './lib/states'; +export * from './lib/proxy/tenant-management'; From bea353278d30b897b445b350782c943c0cd5a60e Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 15 Sep 2020 13:51:24 +0300 Subject: [PATCH 006/117] refactor: remove module name case manipulation --- .../schematics/src/commands/api/index.ts | 4 +- .../src/commands/proxy-add/index.ts | 3 +- .../src/commands/proxy-remove/index.ts | 3 +- npm/ng-packs/packages/schematics/yarn.lock | 3961 ----------------- npm/ng-packs/scripts/build-schematics.ts | 5 - 5 files changed, 4 insertions(+), 3972 deletions(-) delete mode 100644 npm/ng-packs/packages/schematics/yarn.lock diff --git a/npm/ng-packs/packages/schematics/src/commands/api/index.ts b/npm/ng-packs/packages/schematics/src/commands/api/index.ts index 5254f816b6..f8954beb16 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/api/index.ts @@ -1,4 +1,4 @@ -import { normalize, strings } from '@angular-devkit/core'; +import { normalize } from '@angular-devkit/core'; import { applyTemplates, branchAndMerge, @@ -33,7 +33,7 @@ import * as cases from '../../utils/text'; export default function(schema: GenerateProxySchema) { const params = removeDefaultPlaceholders(schema); - const moduleName = strings.camelize(params.module || 'app'); + const moduleName = params.module || 'app'; return chain([ async (tree: Tree, _context: SchematicContext) => { diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts index 3177bedeaa..a8387045f9 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/index.ts @@ -1,4 +1,3 @@ -import { strings } from '@angular-devkit/core'; import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { @@ -17,7 +16,7 @@ import { export default function(schema: GenerateProxySchema) { const params = removeDefaultPlaceholders(schema); - const moduleName = strings.camelize(params.module || 'app'); + const moduleName = params.module || 'app'; return chain([ async (host: Tree, _context: SchematicContext) => { diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts index 59004bff11..abc6d72c81 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/index.ts @@ -1,4 +1,3 @@ -import { strings } from '@angular-devkit/core'; import { chain, SchematicContext, Tree } from '@angular-devkit/schematics'; import { GenerateProxySchema } from '../../models'; import { @@ -16,7 +15,7 @@ import { export default function(schema: GenerateProxySchema) { const params = removeDefaultPlaceholders(schema); - const moduleName = strings.camelize(params.module || 'app'); + const moduleName = params.module || 'app'; return async (host: Tree, _context: SchematicContext) => { const target = await resolveProject(host, params.target!); diff --git a/npm/ng-packs/packages/schematics/yarn.lock b/npm/ng-packs/packages/schematics/yarn.lock deleted file mode 100644 index 09febd13dd..0000000000 --- a/npm/ng-packs/packages/schematics/yarn.lock +++ /dev/null @@ -1,3961 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@angular-devkit/core@10.0.7", "@angular-devkit/core@~10.0.3": - version "10.0.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-10.0.7.tgz#f88c1fe316e83049703c658ec82b2d1f811b1e36" - integrity sha512-pXaZgsQ8LHpRx4QGAUYDE8GwBQLAtoqPh6oUCwRJwBExm5rl13OGPTBWewHiq0ysV/SnFXvOjxwAaHQvC1AgZw== - dependencies: - ajv "6.12.3" - fast-json-stable-stringify "2.1.0" - magic-string "0.25.7" - rxjs "6.5.5" - source-map "0.7.3" - -"@angular-devkit/schematics@10.0.7", "@angular-devkit/schematics@~10.0.3": - version "10.0.7" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-10.0.7.tgz#460272c3fa4a4838d2da65a0e3f512c557d486f1" - integrity sha512-eyyYPgpjtr3h7WbnNbkDubJ/p+8TgKU6abWd+NmBfTvyeHrpVFUYZabNRcdXwUDSVzfTQKdmLynIkESj/KROrg== - dependencies: - "@angular-devkit/core" "10.0.7" - ora "4.0.4" - rxjs "6.5.5" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.4.tgz#4301dfdfafa01eeb97f1896c5501a3f0655d4229" - integrity sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.4" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.0" - "@babel/types" "^7.11.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.11.0", "@babel/generator@^7.11.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" - integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== - dependencies: - "@babel/types" "^7.11.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" - -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" - integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/template@^7.10.4", "@babel/template@^7.3.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" - integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.0" - "@babel/types" "^7.11.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" - integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.3.0.tgz#ed04063efb280c88ba87388b6f16427c0a85c856" - integrity sha512-/5Pn6sJev0nPUcAdpJHMVIsA8sKizL2ZkcKPE5+dJrCccks7tcM7c9wbgHudBJbxXLoTbqsHkG1Dofoem4F09w== - dependencies: - "@jest/types" "^26.3.0" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.3.0" - jest-util "^26.3.0" - slash "^3.0.0" - -"@jest/core@^26.4.1": - version "26.4.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.4.1.tgz#04af2e4d985e035e13ef94d61d302a8458f587e9" - integrity sha512-EFziH1tJC5N8xb8OjUcQgyWdezJh6+zBX5p+9S7HR1jzBVeG8jCE/Edp7yqxW/cToLG/QKj8qrpox+HV9Qw1rw== - dependencies: - "@jest/console" "^26.3.0" - "@jest/reporters" "^26.4.1" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.3.0" - jest-config "^26.4.1" - jest-haste-map "^26.3.0" - jest-message-util "^26.3.0" - jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-resolve-dependencies "^26.4.1" - jest-runner "^26.4.1" - jest-runtime "^26.4.1" - jest-snapshot "^26.4.1" - jest-util "^26.3.0" - jest-validate "^26.4.0" - jest-watcher "^26.3.0" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.3.0.tgz#e6953ab711ae3e44754a025f838bde1a7fd236a0" - integrity sha512-EW+MFEo0DGHahf83RAaiqQx688qpXgl99wdb8Fy67ybyzHwR1a58LHcO376xQJHfmoXTu89M09dH3J509cx2AA== - dependencies: - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - jest-mock "^26.3.0" - -"@jest/fake-timers@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.3.0.tgz#f515d4667a6770f60ae06ae050f4e001126c666a" - integrity sha512-ZL9ytUiRwVP8ujfRepffokBvD2KbxbqMhrXSBhSdAhISCw3gOkuntisiSFv+A6HN0n0fF4cxzICEKZENLmW+1A== - dependencies: - "@jest/types" "^26.3.0" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.3.0" - jest-mock "^26.3.0" - jest-util "^26.3.0" - -"@jest/globals@^26.4.1": - version "26.4.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.4.1.tgz#4e8f6721f081444eda86a7c3e4ceefcf2baa5de1" - integrity sha512-gdsHefnwjck+AwDUwW+6rmctmKEcZEEZ4F3PB5kKnub7r0dUoN1KVSyNRXtB5qpZgRYESnxgDXhpw/XYKIsAeg== - dependencies: - "@jest/environment" "^26.3.0" - "@jest/types" "^26.3.0" - expect "^26.4.1" - -"@jest/reporters@^26.4.1": - version "26.4.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.4.1.tgz#3b4d6faf28650f3965f8b97bc3d114077fb71795" - integrity sha512-aROTkCLU8++yiRGVxLsuDmZsQEKO6LprlrxtAuzvtpbIFl3eIjgIf3EUxDKgomkS25R9ZzwGEdB5weCcBZlrpQ== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.3.0" - jest-resolve "^26.4.0" - jest-util "^26.3.0" - jest-worker "^26.3.0" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^5.0.1" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.3.0.tgz#0e646e519883c14c551f7b5ae4ff5f1bfe4fc3d9" - integrity sha512-hWX5IHmMDWe1kyrKl7IhFwqOuAreIwHhbe44+XH2ZRHjrKIh0LO5eLQ/vxHFeAfRwJapmxuqlGAEYLadDq6ZGQ== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.3.0.tgz#46cde01fa10c0aaeb7431bf71e4a20d885bc7fdb" - integrity sha512-a8rbLqzW/q7HWheFVMtghXV79Xk+GWwOK1FrtimpI5n1la2SY0qHri3/b0/1F0Ve0/yJmV8pEhxDfVwiUBGtgg== - dependencies: - "@jest/console" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.4.1": - version "26.4.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.4.1.tgz#b7cd13fedf4c1c20364bd40c134876b003f742e1" - integrity sha512-YR4PNPu1RVHxyv/HSQMjc+pBEWa6wuM7xbEX/u5M5FFg6ZM6m00m7Jf0fjRxGN6hZlY5vECmNhJu/kvJLrxR8w== - dependencies: - "@jest/test-result" "^26.3.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.3.0" - jest-runner "^26.4.1" - jest-runtime "^26.4.1" - -"@jest/transform@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.3.0.tgz#c393e0e01459da8a8bfc6d2a7c2ece1a13e8ba55" - integrity sha512-Isj6NB68QorGoFWvcOjlUhpkT56PqNIsXKR7XfvoDlCANn/IANlh8DrKAA2l2JKC3yWSMH5wS0GwuQM20w3b2A== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.3.0" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.3.0" - jest-regex-util "^26.0.0" - jest-util "^26.3.0" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.3.0": - version "26.3.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" - integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@schematics/angular@~10.0.3": - version "10.0.7" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-10.0.7.tgz#feec7bd9fba02ab39606f865fa0a3b3d82ab7422" - integrity sha512-0SljGZjA68tOsn7OIps79lTy9Y96OZglLnBqO6pSLlmCkGMbjFY2ssKQXJzwR0jJ5+TWBjWjpn2U5mir4yzOuQ== - dependencies: - "@angular-devkit/core" "10.0.7" - "@angular-devkit/schematics" "10.0.7" - -"@sindresorhus/is@^3.0.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.1.tgz#6e39e4222add8b362da35720c9dd5d53345d5851" - integrity sha512-tLnujxFtfH7F+i5ghUfgGlJsvyCKvUnSMFMlWybFdX9/DdX8svb4Zwx1gV0gkkVCHXtmPSetoAR3QlKfOld6Tw== - -"@sinonjs/commons@^1.7.0": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" - integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@szmarczak/http-timer@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" - integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== - dependencies: - defer-to-connect "^2.0.0" - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.13.tgz#1874914be974a492e1b4cb00585cabb274e8ba18" - integrity sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ== - dependencies: - "@babel/types" "^7.3.0" - -"@types/cacheable-request@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" - integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "*" - "@types/node" "*" - "@types/responselike" "*" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== - dependencies: - "@types/node" "*" - -"@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" - integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@26.x", "@types/jest@^26.0.0": - version "26.0.10" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.10.tgz#8faf7e9756c033c39014ae76a7329efea00ea607" - integrity sha512-i2m0oyh8w/Lum7wWK/YOZJakYF8Mx08UaKA1CtbmFeDquVhAEdA7znacsVSf2hJ1OQ/OfVMGN90pw/AtzF8s/Q== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/keyv@*": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" - integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== - dependencies: - "@types/node" "*" - -"@types/node@*": - version "14.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" - integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== - -"@types/node@^12.11.1": - version "12.12.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.54.tgz#a4b58d8df3a4677b6c08bfbc94b7ad7a7a5f82d1" - integrity sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/prettier@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" - integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA== - -"@types/responselike@*", "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== - dependencies: - "@types/yargs-parser" "*" - -abab@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" - integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - -ajv@6.12.3: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.3: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== - -babel-jest@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463" - integrity sha512-sxPnQGEyHAOPF8NcUsD0g7hDCnvLL2XyblRBcgrzTWBB/mAIpWow3n1bEL+VghnnZfreLhFSBsFluRoK2tRK4g== - dependencies: - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.3.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd" - integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -babel-preset-jest@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.3.0.tgz#ed6344506225c065fd8a0b53e191986f74890776" - integrity sha512-5WPdf7nyYi2/eRxCbVrE1kKCWxgWY4RsPEbdJWFm7QsesFGqjdkyLeu1zRkwM1cxK6EPIlNd6d2AxLk7J+t4pw== - dependencies: - babel-plugin-jest-hoist "^26.2.0" - babel-preset-current-node-syntax "^0.1.3" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@1.x, buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-lookup@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" - integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== - -cacheable-request@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" - integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^2.0.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" - integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -defer-to-connect@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" - integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diff-sequences@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" - integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^1.14.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.1.tgz#6ed3dc218e6a9ffce16c15edc518f44bad9a6731" - integrity sha512-PnsyF/VmPRH/HAWELjrIAgQ5h+4JLTiomA1A2djx+jXrCQzQ/4egZYBOEx9hShoX+mQLS4enYk6Ouxk8b4kcEw== - dependencies: - "@jest/types" "^26.3.0" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.4.1" - jest-message-util "^26.3.0" - jest-regex-util "^26.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -got@^11.5.2: - version "11.5.2" - resolved "https://registry.yarnpkg.com/got/-/got-11.5.2.tgz#772e3f3a06d9c7589c7c94dc3c83cdb31ddbf742" - integrity sha512-yUhpEDLeuGiGJjRSzEq3kvt4zJtAcjKmhIiwNp/eUs75tRlXfWcHo5tcBaMQtnjHWC7nQYT5HkY/l0QOQTkVww== - dependencies: - "@sindresorhus/is" "^3.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.1" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.0" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" - -graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -http2-wrapper@^1.0.0-beta.5.0: - version "1.0.0-beta.5.2" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" - integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== - dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.3.0.tgz#68fb2a7eb125f50839dab1f5a17db3607fe195b1" - integrity sha512-1C4R4nijgPltX6fugKxM4oQ18zimS7LqQ+zTTY8lMCMFPrxqBFb7KJH0Z2fRQJvw2Slbaipsqq7s1mgX5Iot+g== - dependencies: - "@jest/types" "^26.3.0" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.4.1.tgz#877fff1c17661c7bbd8e7df56711ee489091236f" - integrity sha512-c6px+IOO0OsZ7X/uSr65wcjZnd7NYNUDWFT5OETyCnJRkkwoTER7gneRDrwgr3Ex5+gCGO7D/IMWxUHB/L624A== - dependencies: - "@jest/core" "^26.4.1" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.4.1" - jest-util "^26.3.0" - jest-validate "^26.4.0" - prompts "^2.0.1" - yargs "^15.3.1" - -jest-config@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.4.1.tgz#16b5a8e25c43279025718b1678115e39607f914f" - integrity sha512-0kUnVceEax0sYN+wdkNYF7fxjYKbsvmKmjVWwJvsSYA2p94bIL6wSy3oehewev7L9Dp/FDZFhmc9dyOoavdT6A== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.4.1" - "@jest/types" "^26.3.0" - babel-jest "^26.3.0" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.3.0" - jest-environment-node "^26.3.0" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.4.1" - jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-util "^26.3.0" - jest-validate "^26.4.0" - micromatch "^4.0.2" - pretty-format "^26.4.0" - -jest-diff@^25.2.1: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-diff@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.0.tgz#d073a0a11952b5bd9f1ff39bb9ad24304a0c55f7" - integrity sha512-wwC38HlOW+iTq6j5tkj/ZamHn6/nrdcEOc/fKaVILNtN2NLWGdkfRaHWwfNYr5ehaLvuoG2LfCZIcWByVj0gjg== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.3.0" - jest-get-type "^26.3.0" - pretty-format "^26.4.0" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.4.0.tgz#c53605b20e7a0a58d6dcf4d8b2f309e607d35d5a" - integrity sha512-+cyBh1ehs6thVT/bsZVG+WwmRn2ix4Q4noS9yLZgM10yGWPW12/TDvwuOV2VZXn1gi09/ZwJKJWql6YW1C9zNw== - dependencies: - "@jest/types" "^26.3.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.3.0" - pretty-format "^26.4.0" - -jest-environment-jsdom@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.3.0.tgz#3b749ba0f3a78e92ba2c9ce519e16e5dd515220c" - integrity sha512-zra8He2btIMJkAzvLaiZ9QwEPGEetbxqmjEBQwhH3CA+Hhhu0jSiEJxnJMbX28TGUvPLxBt/zyaTLrOPF4yMJA== - dependencies: - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - jest-mock "^26.3.0" - jest-util "^26.3.0" - jsdom "^16.2.2" - -jest-environment-node@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.3.0.tgz#56c6cfb506d1597f94ee8d717072bda7228df849" - integrity sha512-c9BvYoo+FGcMj5FunbBgtBnbR5qk3uky8PKyRVpSfe2/8+LrNQMiXX53z6q2kY+j15SkjQCOSL/6LHnCPLVHNw== - dependencies: - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - jest-mock "^26.3.0" - jest-util "^26.3.0" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.3.0.tgz#c51a3b40100d53ab777bfdad382d2e7a00e5c726" - integrity sha512-DHWBpTJgJhLLGwE5Z1ZaqLTYqeODQIZpby0zMBsCU9iRFHYyhklYqP4EiG73j5dkbaAdSZhgB938mL51Q5LeZA== - dependencies: - "@jest/types" "^26.3.0" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.3.0" - jest-util "^26.3.0" - jest-worker "^26.3.0" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.4.1.tgz#85f5997720332bedaa64b65b1e7b01074d8485c1" - integrity sha512-GMPqJXyAWpohCg4wfA82lwac65lmgANH4/rOhNNaAN9yjInMAeMExQcWE1xb3fcCgLwibqeAuqVrV83oQl+szg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.3.0" - "@jest/source-map" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.4.1" - is-generator-fn "^2.0.0" - jest-each "^26.4.0" - jest-matcher-utils "^26.4.1" - jest-message-util "^26.3.0" - jest-runtime "^26.4.1" - jest-snapshot "^26.4.1" - jest-util "^26.3.0" - pretty-format "^26.4.0" - throat "^5.0.0" - -jest-leak-detector@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.4.0.tgz#1efeeef693af3c9332062876add5ac5f25cb0a70" - integrity sha512-7EXKKEKnAWUPyiVtGZzJflbPOtYUdlNoevNVOkAcPpdR8xWiYKPGNGA6sz25S+8YhZq3rmkQJYAh3/P0VnoRwA== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.4.0" - -jest-matcher-utils@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.1.tgz#f9f2d1d37d301e328eb22e9df09e7343d6cc1b25" - integrity sha512-nmHWaOz54R/w6zJju5tuW0bw6+m38Rb1jnDKehKM/bOngDDL0UwtN634cRxpFoUNVRUrX8Wa0Z34xq/f8iuP5A== - dependencies: - chalk "^4.0.0" - jest-diff "^26.4.0" - jest-get-type "^26.3.0" - pretty-format "^26.4.0" - -jest-message-util@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.3.0.tgz#3bdb538af27bb417f2d4d16557606fd082d5841a" - integrity sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.3.0" - "@types/stack-utils" "^1.0.1" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.3.0.tgz#ee62207c3c5ebe5f35b760e1267fee19a1cfdeba" - integrity sha512-PeaRrg8Dc6mnS35gOo/CbZovoDPKAeB1FICZiuagAgGvbWdNNyjQjkOaGUa/3N3JtpQ/Mh9P4A2D4Fv51NnP8Q== - dependencies: - "@jest/types" "^26.3.0" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-preset-angular@^8.2.0: - version "8.2.1" - resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-8.2.1.tgz#eaf5f7f6e72c1f700fbdb4c3d812976325f26d4e" - integrity sha512-6t7lavnIHnZWz6a03jpZ5L7phMefi6SoBIRZ/GQdyML8YgwMtbJszbhUE+dh5lzmeNbd6AJ1gfleetGy2Rg4cQ== - dependencies: - pretty-format "^26.0.0" - ts-jest "^26.0.0" - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.4.1.tgz#8e7cd28a1774cfdd64bb79b77ef8cd07e0f35598" - integrity sha512-Gx4JfQ1k/hGb4lqVOOx8TPOkNtyJIQSHcJU68pB+sdyDJi9rbMxD1XXiYyaEq9WXufiZo90k9GTK6z6a5m0SQw== - dependencies: - "@jest/types" "^26.3.0" - jest-regex-util "^26.0.0" - jest-snapshot "^26.4.1" - -jest-resolve@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.4.0.tgz#6dc0af7fb93e65b73fec0368ca2b76f3eb59a6d7" - integrity sha512-bn/JoZTEXRSlEx3+SfgZcJAVuTMOksYq9xe9O6s4Ekg84aKBObEaVXKOEilULRqviSLAYJldnoWV9c07kwtiCg== - dependencies: - "@jest/types" "^26.3.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.3.0" - read-pkg-up "^7.0.1" - resolve "^1.17.0" - slash "^3.0.0" - -jest-runner@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.4.1.tgz#5a98c87b558aacf88e761d5ee83e98bfb0a59839" - integrity sha512-QcKwn1YNlzFumTtFsocETgIm13KNt2X8sae4wcqsF3JnxGUcYYUGBstCQhtAG4fKD/TKThHkgE/ZgQVKipj7oA== - dependencies: - "@jest/console" "^26.3.0" - "@jest/environment" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.4.1" - jest-docblock "^26.0.0" - jest-haste-map "^26.3.0" - jest-leak-detector "^26.4.0" - jest-message-util "^26.3.0" - jest-resolve "^26.4.0" - jest-runtime "^26.4.1" - jest-util "^26.3.0" - jest-worker "^26.3.0" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.4.1.tgz#9a6ffefc7167b0f244e0907f4820ab38d825cdd2" - integrity sha512-zXPQBS4iL/CEZtDfX+rDz+oZ/inQK/EYOeVt3uDWu8kwSdP/Cw4yOZtCTPApeNsGtZy6X5WQ1U+fyagN1B/Qkw== - dependencies: - "@jest/console" "^26.3.0" - "@jest/environment" "^26.3.0" - "@jest/fake-timers" "^26.3.0" - "@jest/globals" "^26.4.1" - "@jest/source-map" "^26.3.0" - "@jest/test-result" "^26.3.0" - "@jest/transform" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.4.1" - jest-haste-map "^26.3.0" - jest-message-util "^26.3.0" - jest-mock "^26.3.0" - jest-regex-util "^26.0.0" - jest-resolve "^26.4.0" - jest-snapshot "^26.4.1" - jest-util "^26.3.0" - jest-validate "^26.4.0" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.3.1" - -jest-serializer@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.3.0.tgz#1c9d5e1b74d6e5f7e7f9627080fa205d976c33ef" - integrity sha512-IDRBQBLPlKa4flg77fqg0n/pH87tcRKwe8zxOVTWISxGpPHYkRZ1dXKyh04JOja7gppc60+soKVZ791mruVdow== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.4.1: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.4.1.tgz#41dd85c41dbb76ac874e36c18dcfe722c88d22c4" - integrity sha512-5DsxbSSuYA8rZ/ynO+l5J65wSIyzDB2AXjuIvep90YmtslrROqDtba2hBgq1Cj6L6A0j/jv6h8JydEe2WYPM/g== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.3.0" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.4.1" - graceful-fs "^4.2.4" - jest-diff "^26.4.0" - jest-get-type "^26.3.0" - jest-haste-map "^26.3.0" - jest-matcher-utils "^26.4.1" - jest-message-util "^26.3.0" - jest-resolve "^26.4.0" - natural-compare "^1.4.0" - pretty-format "^26.4.0" - semver "^7.3.2" - -jest-util@26.x, jest-util@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.3.0.tgz#a8974b191df30e2bf523ebbfdbaeb8efca535b3e" - integrity sha512-4zpn6bwV0+AMFN0IYhH/wnzIQzRaYVrz1A8sYnRnj4UXDXbOVtWmlaZkO9mipFqZ13okIfN87aDoJWB7VH6hcw== - dependencies: - "@jest/types" "^26.3.0" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.4.0.tgz#3874a7cc9e27328afac88899ee9e2fae5e3a4293" - integrity sha512-t56Z/FRMrLP6mpmje7/YgHy0wOzcuc6i3LBXz6kjmsUWYN62OuMdC86Vg9/dX59SvyitSqqegOrx+h7BkNXeaQ== - dependencies: - "@jest/types" "^26.3.0" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.4.0" - -jest-watcher@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.3.0.tgz#f8ef3068ddb8af160ef868400318dc4a898eed08" - integrity sha512-XnLdKmyCGJ3VoF6G/p5ohbJ04q/vv5aH9ENI+i6BL0uu9WWB6Z7Z2lhQQk0d2AVZcRGp1yW+/TsoToMhBFPRdQ== - dependencies: - "@jest/test-result" "^26.3.0" - "@jest/types" "^26.3.0" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.3.0" - string-length "^4.0.1" - -jest-worker@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" - integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^26.0.0: - version "26.4.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.4.1.tgz#4c187999c9af761eba862d720f66f43e80b8d12f" - integrity sha512-q+az+ZXFOTxTlD6BRIMcZC+a33O9lsryV4Wo9gU4D/AI+Y6KKgVRCmyzpc4H2gWv0rn45lACukmMS2uSB7e1LA== - dependencies: - "@jest/core" "^26.4.1" - import-local "^3.0.2" - jest-cli "^26.4.1" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.2.2: - version "16.4.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" - symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@2.x, json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -jsonc-parser@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee" - integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA== - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -keyv@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.1.tgz#9fe703cb4a94d6d11729d320af033307efd02ee6" - integrity sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -magic-string@0.25.7: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@1.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" - integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -ora@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.0.4.tgz#e8da697cc5b6a47266655bf68e0fb588d29a545d" - integrity sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -p-cancelable@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" - integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.1.tgz#7cfe35c1ccd641bce3981467e6c2ece61b3b3878" - integrity sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.0.0, pretty-format@^26.4.0: - version "26.4.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.0.tgz#c08073f531429e9e5024049446f42ecc9f933a3b" - integrity sha512-mEEwwpCseqrUtuMbrJG4b824877pM5xald3AkilJ47Po2YLr97/siejYQHqj2oDQBeJNbu+Q0qUuekJ8F0NAPg== - dependencies: - "@jest/types" "^26.3.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-alpn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" - integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -responselike@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" - integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== - dependencies: - lowercase-keys "^2.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -rxjs@6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.x, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@0.7.3, source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -ts-jest@^26.0.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.2.0.tgz#7ec22faceb05ee1467fdb5265d1b33c27441f163" - integrity sha512-9+y2qwzXdAImgLSYLXAb/Rhq9+K4rbt0417b8ai987V60g2uoNWBBmMkYgutI7D8Zhu+IbCSHbBtrHxB9d7xyA== - dependencies: - "@types/jest" "26.x" - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - jest-util "26.x" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - mkdirp "1.x" - semver "7.x" - yargs-parser "18.x" - -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@~3.9.2: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" - integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== - -v8-to-istanbul@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5" - integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" - integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^5.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.2.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yargs-parser@18.x, yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" diff --git a/npm/ng-packs/scripts/build-schematics.ts b/npm/ng-packs/scripts/build-schematics.ts index 7efca32e72..06d3ca5793 100644 --- a/npm/ng-packs/scripts/build-schematics.ts +++ b/npm/ng-packs/scripts/build-schematics.ts @@ -51,11 +51,6 @@ async function* copyPackageFiles(packageName: string) { (async () => { await fse.remove(`../dist/${PACKAGE_TO_BUILD}`); - await execa('yarn', ['install', '--ignore-scripts'], { - stdout: 'inherit', - cwd: `../packages/${PACKAGE_TO_BUILD}`, - }); - await execa( 'tsc', ['-p', `packages/${PACKAGE_TO_BUILD}/tsconfig.json`, '--outDir', `dist/${PACKAGE_TO_BUILD}`], From a195f0e3d3d65b77246de93b56ce29a7ebb9c4d3 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 15 Sep 2020 13:52:06 +0300 Subject: [PATCH 007/117] refactor: implement new tenant-management proxies --- .../lib/actions/tenant-management.actions.ts | 13 ++++++----- .../components/tenants/tenants.component.ts | 11 +++++----- .../src/lib/models/tenant-management.ts | 22 ++++++++++++++++--- .../lib/services/tenant-management.service.ts | 3 +++ .../src/lib/states/tenant-management.state.ts | 19 ++++++++-------- 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts index 6cb1f997f6..e422d3756f 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts @@ -1,9 +1,12 @@ -import { TenantManagement } from '../models/tenant-management'; -import { ABP } from '@abp/ng.core'; +import { + GetTenantsInput, + TenantCreateDto, + TenantUpdateDto, +} from '../proxy/tenant-management/models'; export class GetTenants { static readonly type = '[TenantManagement] Get Tenant'; - constructor(public payload?: ABP.PageQueryParams) {} + constructor(public payload?: GetTenantsInput) {} } export class GetTenantById { @@ -13,12 +16,12 @@ export class GetTenantById { export class CreateTenant { static readonly type = '[TenantManagement] Create Tenant'; - constructor(public payload: TenantManagement.AddRequest) {} + constructor(public payload: TenantCreateDto) {} } export class UpdateTenant { static readonly type = '[TenantManagement] Update Tenant'; - constructor(public payload: TenantManagement.UpdateRequest) {} + constructor(public payload: TenantUpdateDto & { id: string }) {} } export class DeleteTenant { diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts index ec50b97c6b..1210442a13 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts @@ -1,4 +1,4 @@ -import { ABP, ListService } from '@abp/ng.core'; +import { ABP, ListService, PagedResultDto } from '@abp/ng.core'; import { eFeatureManagementComponents } from '@abp/ng.feature-management'; import { Confirmation, ConfirmationService, getPasswordValidators } from '@abp/ng.theme.shared'; import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; @@ -13,6 +13,7 @@ import { GetTenants, UpdateTenant, } from '../../actions/tenant-management.actions'; +import { GetTenantsInput, TenantDto } from '../../proxy/tenant-management/models'; import { TenantManagementService } from '../../services/tenant-management.service'; import { TenantManagementState } from '../../states/tenant-management.state'; @@ -29,12 +30,12 @@ interface SelectedModalContent { }) export class TenantsComponent implements OnInit { @Select(TenantManagementState.get) - data$: Observable; + data$: Observable>; @Select(TenantManagementState.getTenantsTotalCount) totalCount$: Observable; - selected: ABP.BasicItem; + selected: TenantDto; tenantForm: FormGroup; @@ -99,7 +100,7 @@ export class TenantsComponent implements OnInit { }; constructor( - public readonly list: ListService, + public readonly list: ListService, private confirmationService: ConfirmationService, private tenantService: TenantManagementService, private fb: FormBuilder, @@ -165,7 +166,7 @@ export class TenantsComponent implements OnInit { } addTenant() { - this.selected = {} as ABP.BasicItem; + this.selected = {} as TenantDto; this.createTenantForm(); this.openModal('AbpTenantManagement::NewTenant', this.tenantModalTemplate, 'saveTenant'); } diff --git a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts index b7659e2a95..bf727b442d 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts @@ -1,29 +1,45 @@ -import { ABP } from '@abp/ng.core'; +import { ABP, PagedResultDto } from '@abp/ng.core'; +import { TenantDto } from '../proxy/tenant-management/models'; export namespace TenantManagement { export interface State { - result: Response; - selectedItem: Item; + result: PagedResultDto; + selectedItem: TenantDto; } + /** + * @deprecated To be deleted in v4.0 + */ export type Response = ABP.PagedResponse; + /** + * @deprecated To be deleted in v4.0 + */ export interface Item { id: string; name: string; } + /** + * @deprecated To be deleted in v4.0 + */ export interface AddRequest { adminEmailAddress: string; adminPassword: string; name: string; } + /** + * @deprecated To be deleted in v4.0 + */ export interface UpdateRequest { id: string; name: string; } + /** + * @deprecated To be deleted in v4.0 + */ export interface DefaultConnectionStringRequest { id: string; defaultConnectionString: string; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts index 8678da1332..3ace57367c 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/services/tenant-management.service.ts @@ -6,6 +6,9 @@ import { TenantManagement } from '../models/tenant-management'; @Injectable({ providedIn: 'root', }) +/** + * @deprecated Use TenantService instead. To be deleted in v4.0. + */ export class TenantManagementService { apiName = 'AbpTenantManagement'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts index bacd8981ec..b9eee03bdd 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts @@ -1,4 +1,4 @@ -import { ABP } from '@abp/ng.core'; +import { ABP, PagedResultDto } from '@abp/ng.core'; import { Action, Selector, State, StateContext } from '@ngxs/store'; import { tap } from 'rxjs/operators'; import { @@ -9,8 +9,9 @@ import { UpdateTenant, } from '../actions/tenant-management.actions'; import { TenantManagement } from '../models/tenant-management'; -import { TenantManagementService } from '../services/tenant-management.service'; import { Injectable } from '@angular/core'; +import { TenantService } from '../proxy/tenant-management/tenant.service'; +import { TenantDto } from '../proxy/tenant-management/models'; @State({ name: 'TenantManagementState', @@ -19,7 +20,7 @@ import { Injectable } from '@angular/core'; @Injectable() export class TenantManagementState { @Selector() - static get({ result }: TenantManagement.State): ABP.BasicItem[] { + static get({ result }: TenantManagement.State): TenantDto[] { return result.items || []; } @@ -28,11 +29,11 @@ export class TenantManagementState { return result.totalCount; } - constructor(private tenantManagementService: TenantManagementService) {} + constructor(private service: TenantService) {} @Action(GetTenants) get({ patchState }: StateContext, { payload }: GetTenants) { - return this.tenantManagementService.getTenant(payload).pipe( + return this.service.getList(payload).pipe( tap(result => patchState({ result, @@ -43,7 +44,7 @@ export class TenantManagementState { @Action(GetTenantById) getById({ patchState }: StateContext, { payload }: GetTenantById) { - return this.tenantManagementService.getTenantById(payload).pipe( + return this.service.get(payload).pipe( tap(selectedItem => patchState({ selectedItem, @@ -54,16 +55,16 @@ export class TenantManagementState { @Action(DeleteTenant) delete(_, { payload }: DeleteTenant) { - return this.tenantManagementService.deleteTenant(payload); + return this.service.delete(payload); } @Action(CreateTenant) add(_, { payload }: CreateTenant) { - return this.tenantManagementService.createTenant(payload); + return this.service.create(payload); } @Action(UpdateTenant) update({ getState }: StateContext, { payload }: UpdateTenant) { - return this.tenantManagementService.updateTenant({ ...getState().selectedItem, ...payload }); + return this.service.update(payload.id, { ...getState().selectedItem, ...payload }); } } From e744baae0448b34df61589ae08d39346ccdfac71 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Wed, 16 Sep 2020 17:43:27 +0800 Subject: [PATCH 008/117] Add UsersCanNotChangeTwoFactor & CanNotChangeTwoFactor. --- .../Volo/Abp/Identity/IdentityErrorCodes.cs | 2 ++ .../Volo/Abp/Identity/Localization/en.json | 4 +++- .../Volo/Abp/Identity/Localization/zh-Hans.json | 8 ++++++-- .../Volo/Abp/Identity/Localization/zh-Hant.json | 2 ++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs index 1defe67eeb..b1a292d30e 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IdentityErrorCodes.cs @@ -8,5 +8,7 @@ public const string DuplicateOrganizationUnitDisplayName = "Volo.Abp.Identity:010004"; public const string StaticRoleRenaming = "Volo.Abp.Identity:010005"; public const string StaticRoleDeletion = "Volo.Abp.Identity:010006"; + public const string UsersCanNotChangeTwoFactor = "Volo.Abp.Identity:010007"; + public const string CanNotChangeTwoFactor = "Volo.Abp.Identity:010008"; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json index 166433c5eb..63ad1f2c3e 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json @@ -67,6 +67,8 @@ "Volo.Abp.Identity:010004": "There is already an organization unit with name {0}. Two units with same name can not be created in same level.", "Volo.Abp.Identity:010005": "Static roles can not be renamed.", "Volo.Abp.Identity:010006": "Static roles can not be deleted.", + "Volo.Abp.Identity:010007": "You can't change your two factor setting.", + "Volo.Abp.Identity:010008": "It's not allowed to change two factor setting.", "Identity.OrganizationUnit.MaxUserMembershipCount": "Maximum allowed organization unit membership count for a user", "Permission:IdentityManagement": "Identity management", "Permission:RoleManagement": "Role management", @@ -115,4 +117,4 @@ "DisplayName:Abp.Identity.UsersCanChange": "Allow users to change their Two Factor.", "Description:Abp.Identity.UsersCanChange": "Allow users to change their Two Factor." } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json index 8e8c8cbccf..74859aa0f3 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json @@ -61,10 +61,14 @@ "Volo.Abp.Identity:UserNameNotFound": "用户 {0} 不存在.", "Volo.Abp.Identity:UserNotInRole": "用户不具有 '{0}' 角色.", "Volo.Abp.Identity:PasswordConfirmationFailed": "密码或确认密码不一致.", + "Volo.Abp.Identity:010001": "你无法删除自己的帐户!", + "Volo.Abp.Identity:010002": "不能为用户设置超过{MaxUserMembershipCount}个组织单位!", + "Volo.Abp.Identity:010003": "无法更改外部登录用户的密码!", + "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", "Volo.Abp.Identity:010005": "无法重命名静态角色.", "Volo.Abp.Identity:010006": "无法删除静态角色.", - "Volo.Abp.Identity:010004": "已存在名为 {0} 的组织单位. 无法在同一级别创建相同名称的组织单位.", - "Volo.Abp.Identity:010001": "您无法删除自己的帐户!", + "Volo.Abp.Identity:010007": "你不能修改你的双因素身份验证设置", + "Volo.Abp.Identity:010008": "不允许修改双因素身份验证设置.", "Permission:IdentityManagement": "身份标识管理", "Permission:RoleManagement": "角色管理", "Permission:Create": "创建", diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json index 2881bd886a..54298f530d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json @@ -67,6 +67,8 @@ "Volo.Abp.Identity:010004": "組織內單位內已包含名稱 {0}.同一層級組織,兩個單位不能有相同名稱", "Volo.Abp.Identity:010005": "無法重命名靜態角色.", "Volo.Abp.Identity:010006": "無法刪除靜態角色.", + "Volo.Abp.Identity:010007": "你不能修改你的雙因素身份驗證設置", + "Volo.Abp.Identity:010008": "不允許修改雙因素身份驗證設置.", "Identity.OrganizationUnit.MaxUserMembershipCount": "允許一個使用者至多可隸屬在幾個組織單位", "Permission:IdentityManagement": "身份識別管理", "Permission:RoleManagement": "角色管理", From 202fc6590c661f97cb9e5567f08098bad21a010a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arma=C4=9Fan=20=C3=9Cnl=C3=BC?= <36102404+armgnunlu@users.noreply.github.com> Date: Wed, 16 Sep 2020 15:33:27 +0300 Subject: [PATCH 009/117] Update for borders page --- .../Shared/Demos/BordersDemo/Default.cshtml | 10 +++++----- .../Themes/Shared/Demos/ModalsDemo/Default.cshtml | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/Default.cshtml index 281f6c73ed..7733f51fdf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/BordersDemo/Default.cshtml @@ -9,11 +9,11 @@ - - - - - + + + + + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml index 91ed5b8bff..8b48f579ac 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml @@ -5,7 +5,20 @@ Launch modal - + + + + Woohoo, you're reading this text in a modal! + + + + + + + + Launch modal + + Woohoo, you're reading this text in a modal! From 8c9de96840dc7eeff580dd6bde3171de4faa4de8 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 16 Sep 2020 20:57:49 +0800 Subject: [PATCH 010/117] Update multi-tenancy document --- docs/en/Multi-Tenancy.md | 1 + docs/zh-Hans/Multi-Tenancy.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/en/Multi-Tenancy.md b/docs/en/Multi-Tenancy.md index 5138c9de04..c087c6b8f2 100644 --- a/docs/en/Multi-Tenancy.md +++ b/docs/en/Multi-Tenancy.md @@ -304,6 +304,7 @@ Volo.Abp.AspNetCore.MultiTenancy package adds following tenant resolvers to dete * **CurrentUserTenantResolveContributor**: Gets the tenant id from claims of the current user, if the current user has logged in. **This should always be the first contributor for security**. * **QueryStringTenantResolveContributor**: Tries to find current tenant id from query string parameter. Parameter name is "__tenant" by default. +* **FormTenantResolveContributor**: Tries to find current tenant id from form parameter. Parameter name is "__tenant" by default. * **RouteTenantResolveContributor**: Tries to find current tenant id from route (URL path). Variable name is "__tenant" by default. So, if you defined a route with this variable, then it can determine the current tenant from the route. * **HeaderTenantResolveContributor**: Tries to find current tenant id from HTTP header. Header name is "__tenant" by default. * **CookieTenantResolveContributor**: Tries to find current tenant id from cookie values. Cookie name is "__tenant" by default. diff --git a/docs/zh-Hans/Multi-Tenancy.md b/docs/zh-Hans/Multi-Tenancy.md index 3e65a97cef..863e9cfb4b 100644 --- a/docs/zh-Hans/Multi-Tenancy.md +++ b/docs/zh-Hans/Multi-Tenancy.md @@ -305,6 +305,7 @@ Volo.Abp.AspNetCore.MultiTenancy 添加了下面这些租户解析器,从当前W * **CurrentUserTenantResolveContributor**: 如果当前用户已登录,从当前用户的声明中获取租户Id. **出于安全考虑,应该始终将其做为第一个Contributor**. * **QueryStringTenantResolveContributor**: 尝试从query string参数中获取当前租户,默认参数名为"__tenant". +* **FormTenantResolveContributor**: 尝试从form参数中获取当前租户,默认参数名为"__tenant". * **RouteTenantResolveContributor**:尝试从当前路由中获取(URL路径),默认是变量名是"__tenant".所以,如果你的路由中定义了这个变量,就可以从路由中确定当前租户. * **HeaderTenantResolveContributor**: 尝试从HTTP header中获取当前租户,默认的header名称是"__tenant". * **CookieTenantResolveContributor**: 尝试从当前cookie中获取当前租户.默认的Cookie名称是"__tenant". From 74d993fb53cf8949ed4ef0d386f12e837f837f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 15:58:47 +0300 Subject: [PATCH 011/117] Add the Blazor UI to the cors. --- .../MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json index 3ffc7c4c18..9303043128 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/appsettings.json @@ -1,6 +1,6 @@ { "App": { - "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200" + "CorsOrigins": "https://*.MyProjectName.com,http://localhost:4200,https://localhost:44307" }, "ConnectionStrings": { "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=MyProjectName;Trusted_Connection=True;MultipleActiveResultSets=true" From fbaac23b78b3166da88142d2f55b3e0a15bc8d20 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 16:16:42 +0300 Subject: [PATCH 012/117] fix: resolve filter problem in ListService --- .../packages/core/src/lib/services/list.service.ts | 2 ++ .../src/lib/directives/ngx-datatable-list.directive.ts | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/services/list.service.ts b/npm/ng-packs/packages/core/src/lib/services/list.service.ts index 3ebb6dc193..1a1e7c1aeb 100644 --- a/npm/ng-packs/packages/core/src/lib/services/list.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/list.service.ts @@ -17,6 +17,8 @@ import { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token'; export class ListService implements OnDestroy { private _filter = ''; set filter(value: string) { + if (this._filter !== value) this._page = 0; + this._filter = value; this.get(); } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts index b721e1142a..6cd2ef4031 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts @@ -18,6 +18,7 @@ import { Subscription } from 'rxjs'; }) export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { private subscription = new Subscription(); + private querySubscription: Subscription; @Input() list: ListService; @@ -66,12 +67,21 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { this.subscription.add(sub); } + private subscribeToQuery() { + this.querySubscription = this.list.query$.subscribe(() => { + if (this.list.page !== this.table.offset) this.table.offset = this.list.page; + }); + } + ngOnChanges({ list }: SimpleChanges) { if (!list.firstChange) return; const { maxResultCount, page } = list.currentValue; this.table.limit = maxResultCount; this.table.offset = page; + + if (this.querySubscription) this.querySubscription.unsubscribe(); + this.subscribeToQuery(); } ngOnDestroy() { From 2f4fb58d02b10b6c7f7e69f6b6b21dcdca434a33 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Wed, 16 Sep 2020 16:18:08 +0300 Subject: [PATCH 013/117] feat: add getHeaders method to ApiInterceptor --- .../src/lib/interceptors/api.interceptor.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts index de01335058..b3f34a0524 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts @@ -15,6 +15,7 @@ export class ApiInterceptor implements HttpInterceptor { const headers = {} as any; + // TODO: utilize getHeaders method here WITH GREAT CARE! const token = this.oAuthService.getAccessToken(); if (!request.headers.has('Authorization') && token) { headers['Authorization'] = `Bearer ${token}`; @@ -38,4 +39,25 @@ export class ApiInterceptor implements HttpInterceptor { ) .pipe(finalize(() => this.store.dispatch(new StopLoader(request)))); } + + getHeaders() { + const headers = {} as any; + + const token = this.oAuthService.getAccessToken(); + if (token) { + headers['Authorization'] = `Bearer ${token}`; + } + + const lang = this.store.selectSnapshot(SessionState.getLanguage); + if (lang) { + headers['Accept-Language'] = lang; + } + + const tenant = this.store.selectSnapshot(SessionState.getTenant); + if (tenant) { + headers['__tenant'] = tenant.id; + } + + return headers; + } } From 05a8fd5ec1b423905daf0f2f858801e0b9b7f260 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 16:18:50 +0300 Subject: [PATCH 014/117] refactor: add unsubscribe for query subscription --- .../lib/directives/ngx-datatable-list.directive.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts index 6cd2ef4031..7dc81ab6b9 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts @@ -18,7 +18,7 @@ import { Subscription } from 'rxjs'; }) export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { private subscription = new Subscription(); - private querySubscription: Subscription; + private querySubscription = new Subscription(); @Input() list: ListService; @@ -68,9 +68,11 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { } private subscribeToQuery() { - this.querySubscription = this.list.query$.subscribe(() => { - if (this.list.page !== this.table.offset) this.table.offset = this.list.page; - }); + this.querySubscription.add( + this.list.query$.subscribe(() => { + if (this.list.page !== this.table.offset) this.table.offset = this.list.page; + }), + ); } ngOnChanges({ list }: SimpleChanges) { @@ -80,12 +82,13 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit { this.table.limit = maxResultCount; this.table.offset = page; - if (this.querySubscription) this.querySubscription.unsubscribe(); + this.querySubscription.unsubscribe(); this.subscribeToQuery(); } ngOnDestroy() { this.subscription.unsubscribe(); + this.querySubscription.unsubscribe(); } ngOnInit() { From 03364dfc7ae47a17a6e10b4eaa2cac7ea0bb80a4 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Wed, 16 Sep 2020 16:27:18 +0300 Subject: [PATCH 015/117] feat: complete todo and utilize getHeaders --- .../src/lib/interceptors/api.interceptor.ts | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts index b3f34a0524..3227919b4a 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http'; +import { HttpInterceptor, HttpHandler, HttpRequest, HttpHeaders } from '@angular/common/http'; import { OAuthService } from 'angular-oauth2-oidc'; import { Store } from '@ngxs/store'; import { SessionState } from '../states'; @@ -13,48 +13,30 @@ export class ApiInterceptor implements HttpInterceptor { intercept(request: HttpRequest, next: HttpHandler) { this.store.dispatch(new StartLoader(request)); - const headers = {} as any; - - // TODO: utilize getHeaders method here WITH GREAT CARE! - const token = this.oAuthService.getAccessToken(); - if (!request.headers.has('Authorization') && token) { - headers['Authorization'] = `Bearer ${token}`; - } - - const lang = this.store.selectSnapshot(SessionState.getLanguage); - if (!request.headers.has('Accept-Language') && lang) { - headers['Accept-Language'] = lang; - } - - const tenant = this.store.selectSnapshot(SessionState.getTenant); - if (!request.headers.has('__tenant') && tenant) { - headers['__tenant'] = tenant.id; - } - return next .handle( request.clone({ - setHeaders: headers, + setHeaders: this.getHeaders(request.headers), }), ) .pipe(finalize(() => this.store.dispatch(new StopLoader(request)))); } - getHeaders() { + getHeaders(existingHeaders?: HttpHeaders) { const headers = {} as any; const token = this.oAuthService.getAccessToken(); - if (token) { + if (!existingHeaders?.has('Authorization') && token) { headers['Authorization'] = `Bearer ${token}`; } const lang = this.store.selectSnapshot(SessionState.getLanguage); - if (lang) { + if (!existingHeaders?.has('Accept-Language') && lang) { headers['Accept-Language'] = lang; } const tenant = this.store.selectSnapshot(SessionState.getTenant); - if (tenant) { + if (!existingHeaders?.has('__tenant') && tenant) { headers['__tenant'] = tenant.id; } From c2e0b3b401b30c4733b8e545d496b1f82240c4ec Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Wed, 16 Sep 2020 16:31:08 +0300 Subject: [PATCH 016/117] refactor: rename getHeaders to a meaningful one --- .../packages/core/src/lib/interceptors/api.interceptor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts index 3227919b4a..2bcdadaf22 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts @@ -16,13 +16,13 @@ export class ApiInterceptor implements HttpInterceptor { return next .handle( request.clone({ - setHeaders: this.getHeaders(request.headers), + setHeaders: this.getAdditionalHeaders(request.headers), }), ) .pipe(finalize(() => this.store.dispatch(new StopLoader(request)))); } - getHeaders(existingHeaders?: HttpHeaders) { + getAdditionalHeaders(existingHeaders?: HttpHeaders) { const headers = {} as any; const token = this.oAuthService.getAccessToken(); From 99d4380be3ef8ec754b54e1b79bfd17d64ab568f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 16:37:18 +0300 Subject: [PATCH 017/117] Initial blog post for the 3.2 preview release. --- .../2020-09-17 v3_2_Preview/POST.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md new file mode 100644 index 0000000000..b86228ae5c --- /dev/null +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -0,0 +1,39 @@ +# ABP Framework 3.2 RC with the new Blazor UI + +We are extremely excited today to release the ABP Framework (and the ABP Commercial, as always) version `3.2.0-rc.1` (Release Candidate). This release includes an early preview version of the **Blazor UI** for the ABP.IO Platform. + +## The Blazor UI + +While the Blazor UI should be considered as **experimental** for now, it is possible to develop your application today. + +### Fundamental Services + +Currently implemented some important framework features; + +* **Authentication** through the MVC backend using the OpenId Connect authorization code flow. So, all the current login options (login, register, forgot password, external/social logins...) are supported. +* **Authorization**, using the ABP Framework **permissions** as well as the standard authorization system. +* **Localization** just works like the MVC UI. +* **Basic Theme** with top main menu. +* **Dynamic C# HTTP API proxies**, so you can directly consume your backend API by injecting the application service interfaces. +* Some other **fundamental services** like ISettingProvider, IFeatureChecker, ICurrentUser + +Also, the standard .net services are already available, like caching, logging, validation and much more. Since the ABP Framework is layered itself, all the non MVC UI related features are already available. + +### Pre-Built Modules + +And some modules have been implemented; + +* **Identity** module is pre-installed and provides user**, role and permission management**. +* **Profile management** page is implemented to allow to change password and personal settings. + +### About the Blazorise Library + +We've selected the [Blazorise](https://blazorise.com/) as a fundamental UI library for the Blazor UI. It already support different HTML/CSS frameworks and significantly increases the developer productivity. + +### Get started with the Blazor UI + +TODO + +## What's New with the ABP Framework 3.2 + +d \ No newline at end of file From a5ea2b21e93df0050a0115add489a80e50013386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 16:54:03 +0300 Subject: [PATCH 018/117] Update POST.md --- .../2020-09-17 v3_2_Preview/POST.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md index b86228ae5c..5fd19f4ccf 100644 --- a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -30,8 +30,34 @@ And some modules have been implemented; We've selected the [Blazorise](https://blazorise.com/) as a fundamental UI library for the Blazor UI. It already support different HTML/CSS frameworks and significantly increases the developer productivity. +We also have a good news: **[Mladen Macanović](https://github.com/stsrki)**, the creator of the Blazorise, is **joining to the core ABP Framework team** in the next weeks. We are excited to work with him to bring the power of these two successfully projects together. + ### Get started with the Blazor UI +If you want to try the Blazor UI today, follow the instructions below. + +First, install the the latest [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) preview version: + +````bash +dotnet tool update Volo.Abp.Cli -g --version 3.2.0-rc.1 +```` + +Then you can create a new solution using the *abp new* command: + +````bash +abp new AbpBlazorDemo -u blazor +```` + +> See the ABP CLI documentation for the additional options, like MongoDB database or separated authentication server. + +Open the generated solution using the latest Visual Studio 2019. You will see a solution structure like the picture below: + +TODO + +* Run the `.DbMigrator` project to create the database and seed the initial data. +* Run the `HttpApi.Host` project for the server side. +* Run the `.Blazor` project to start the Blazor UI. + TODO ## What's New with the ABP Framework 3.2 From c6e8ac3d0e971936cc823fb307faeffee04920c5 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Wed, 16 Sep 2020 17:44:37 +0300 Subject: [PATCH 019/117] feat: provide ApiInterceptor in root and useExisting in CoreModule --- npm/ng-packs/packages/core/src/lib/core.module.ts | 2 +- .../packages/core/src/lib/interceptors/api.interceptor.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts index 597e114d4a..8cf9a90886 100644 --- a/npm/ng-packs/packages/core/src/lib/core.module.ts +++ b/npm/ng-packs/packages/core/src/lib/core.module.ts @@ -187,7 +187,7 @@ export class CoreModule { }, { provide: HTTP_INTERCEPTORS, - useClass: ApiInterceptor, + useExisting: ApiInterceptor, multi: true, }, { diff --git a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts index 2bcdadaf22..b27c7fa80a 100644 --- a/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts +++ b/npm/ng-packs/packages/core/src/lib/interceptors/api.interceptor.ts @@ -6,7 +6,9 @@ import { SessionState } from '../states'; import { StartLoader, StopLoader } from '../actions/loader.actions'; import { finalize } from 'rxjs/operators'; -@Injectable() +@Injectable({ + providedIn: 'root', +}) export class ApiInterceptor implements HttpInterceptor { constructor(private oAuthService: OAuthService, private store: Store) {} From e52e5ccc834b7fd5ccf2e16e31c5b7e4e8fbee19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 17:45:23 +0300 Subject: [PATCH 020/117] Update POST.md --- .../2020-09-17 v3_2_Preview/POST.md | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md index 5fd19f4ccf..8f09cc24e6 100644 --- a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -32,6 +32,10 @@ We've selected the [Blazorise](https://blazorise.com/) as a fundamental UI libra We also have a good news: **[Mladen Macanović](https://github.com/stsrki)**, the creator of the Blazorise, is **joining to the core ABP Framework team** in the next weeks. We are excited to work with him to bring the power of these two successfully projects together. +### The Tutorial + +We are currently in progress of updating the web application development tutorial for the Blazor UI. Follow the [@abpframework](https://twitter.com/abpframework) Twitter account to get informed once it's done. + ### Get started with the Blazor UI If you want to try the Blazor UI today, follow the instructions below. @@ -58,8 +62,60 @@ TODO * Run the `HttpApi.Host` project for the server side. * Run the `.Blazor` project to start the Blazor UI. +Use `admin` as the username as `1q2w3E*` as the password to login to the application. + TODO ## What's New with the ABP Framework 3.2 -d \ No newline at end of file +Beside the Blazor UI, there are a lot of issues have been closed with [the milestone 3.2](https://github.com/abpframework/abp/milestone/39?closed=1). I will highlight some of the major features and changes released with this version. + +### MongoDB ACID Transactions + +[MongoDB integration](https://docs.abp.io/en/abp/latest/MongoDB) now supports multi-document transactions that comes with the MongoDB 4.x. + +> Transactions are disabled for automated integration tests coming with the application startup template, since the Mongo2Go library (we use in the test projects) has a problem with the transactions. We've sent a [Pull Request](https://github.com/Mongo2Go/Mongo2Go/pull/101) to fix it and will enable the transactions again when they merge & release it. +> +> If you are upgrading an existing solution and using MongoDB, please disable transactions for the test projects by following the [Unit Of Work](https://docs.abp.io/en/abp/latest/Unit-Of-Work) documentation. + +### Kafka Integration for the Distributed Event Bus + +ABP Framework's [distributed event system](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus) has been [integrated to RabbitMQ](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration) before. By the version 3.2, it has a Kafka integration package, named [Volo.Abp.EventBus.Kafka](https://www.nuget.org/packages/Volo.Abp.EventBus.Kafka). + +See the [Kafka integration documentation](https://docs.abp.io/en/abp/latest/Distributed-Event-Bus-Kafka-Integration) to learn how to install and configure it. + +### Host Features + +TODO + +### AbpHttpClientBuilderOptions + +TODO + +### Account Module: Profile Management Page Extensions + +TODO + +### ABP Build Command + +We are using **mono repository** approach and the [abp repository](https://github.com/abpframework/abp) has tens of solutions and hundreds of projects (the framework, modules, tooling, templates...) with all of them are referencing to each other. + +It gets a significant time to build the whole repository for every Git push. To **optimize** this process, we've created the **abp build** command in the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI): + +````bash +abp build +```` + +We will use this command to build the abp repository or a solution inside it. However it is available to everyone in case of need. + +> **Most of the people will not need it**. If you need it, see the [ABP CLI](https://docs.abp.io/en/abp/latest/CLI) document to learn all the details and options. + +### Other Features, Improvements and Changes + +* Introduced the `DynamicRangeAttribute` that can be used to determine the range values on runtime, just like the `DynamicStringLengthAttribute` was introduced before. +* Improved the feature management modal for multi-tenant applications to group features on the UI and show hierarchically. +* Added `--skip-cli-version-check` option to ABP CLI to improve the performance by bypassing the online version check. +* Angular UI now redirect to MVC UI (the authentication server side) for profile management page, if the authorization code flow is used (which is the default). +* Improvements and optimizations for the [Angular service proxy generation](https://blog.abp.io/abp/Introducing-the-Angular-Service-Proxy-Generation). + +And a lot of minor improvements and bug fixes. You can see [the milestone 3.2](https://github.com/abpframework/abp/milestone/39?closed=1) for all issues & PRs closed with this version. \ No newline at end of file From 3b9b566d98387c2f8ca6863320b2663318ff56a7 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 16 Sep 2020 18:41:19 +0300 Subject: [PATCH 021/117] fix: use Please instead of Plese in schematics prompts --- npm/ng-packs/packages/schematics/src/commands/api/schema.json | 4 ++-- .../packages/schematics/src/commands/proxy-add/schema.json | 4 ++-- .../packages/schematics/src/commands/proxy-index/schema.json | 2 +- .../schematics/src/commands/proxy-refresh/schema.json | 4 ++-- .../packages/schematics/src/commands/proxy-remove/schema.json | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/npm/ng-packs/packages/schematics/src/commands/api/schema.json b/npm/ng-packs/packages/schematics/src/commands/api/schema.json index db58ed73ce..d003d3a4b2 100644 --- a/npm/ng-packs/packages/schematics/src/commands/api/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/api/schema.json @@ -29,7 +29,7 @@ "$source": "argv", "index": 2 }, - "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { "description": "Target Angular project to place the generated code", @@ -38,7 +38,7 @@ "$source": "argv", "index": 3 }, - "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json index c817882730..8ac8fb2b68 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-add/schema.json @@ -29,7 +29,7 @@ "$source": "argv", "index": 2 }, - "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { "description": "Target Angular project to place the generated code", @@ -38,7 +38,7 @@ "$source": "argv", "index": 3 }, - "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json index 632c6d7e51..9447cd397b 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-index/schema.json @@ -11,7 +11,7 @@ "$source": "argv", "index": 0 }, - "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json index c817882730..8ac8fb2b68 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-refresh/schema.json @@ -29,7 +29,7 @@ "$source": "argv", "index": 2 }, - "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { "description": "Target Angular project to place the generated code", @@ -38,7 +38,7 @@ "$source": "argv", "index": 3 }, - "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] diff --git a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json index c817882730..8ac8fb2b68 100644 --- a/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json +++ b/npm/ng-packs/packages/schematics/src/commands/proxy-remove/schema.json @@ -29,7 +29,7 @@ "$source": "argv", "index": 2 }, - "x-prompt": "Plese enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" }, "target": { "description": "Target Angular project to place the generated code", @@ -38,7 +38,7 @@ "$source": "argv", "index": 3 }, - "x-prompt": "Plese enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" } }, "required": [] From 94c08c4f9850d27bf40989778a707e7645db822f Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 16 Sep 2020 18:47:17 +0300 Subject: [PATCH 022/117] fix: return empty string when equal to rootNamespace --- npm/ng-packs/packages/schematics/src/utils/namespace.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/npm/ng-packs/packages/schematics/src/utils/namespace.ts b/npm/ng-packs/packages/schematics/src/utils/namespace.ts index 88c574db8a..779c7b9770 100644 --- a/npm/ng-packs/packages/schematics/src/utils/namespace.ts +++ b/npm/ng-packs/packages/schematics/src/utils/namespace.ts @@ -7,6 +7,8 @@ export function parseNamespace(solution: string, type: string) { .slice(0, -1) .join('.'); + if (solution === namespace) return ''; + solution.split('.').reduceRight((acc, part) => { acc = `${part}\\.${acc}`; const regex = new RegExp(`^${acc}(Controllers\\.)?`); From 3913cf5b34629802d8717a0fbb05b8851224f189 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 19:00:26 +0300 Subject: [PATCH 023/117] feat: update CurrentUser type resolves https://github.com/volosoft/volo/issues/3239 --- .../core/src/lib/models/application-configuration.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts b/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts index 1f3bb65f4e..c974f842a2 100644 --- a/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts +++ b/npm/ng-packs/packages/core/src/lib/models/application-configuration.ts @@ -63,10 +63,15 @@ export namespace ApplicationConfiguration { export interface CurrentUser { email: string; + emailVerified: false; id: string; isAuthenticated: boolean; roles: string[]; tenantId: string; userName: string; + name: string; + phoneNumber: string; + phoneNumberVerified: boolean; + surName: string; } } From 5a57aca669b99679bb96239258bfae0b16ea172e Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 19:10:53 +0300 Subject: [PATCH 024/117] ci: updated the order of packages to build --- npm/ng-packs/scripts/build.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/scripts/build.ts b/npm/ng-packs/scripts/build.ts index 8ced29ec77..312351b346 100644 --- a/npm/ng-packs/scripts/build.ts +++ b/npm/ng-packs/scripts/build.ts @@ -36,9 +36,8 @@ import fse from 'fs-extra'; '--angular', '--prod', '--no-watch', - '--all-packages', - '--excluded-packages', - '@abp/ng.schematics,@abp/ng.core,@abp/ng.theme.shared,@abp/ng.components,@abp/ng.feature-management,@abp/ng.permission-management', + '--packages', + '@abp/ng.feature-management,@abp/ng.permission-management', ], { stdout: 'inherit', cwd: '../' }, ); @@ -51,8 +50,9 @@ import fse from 'fs-extra'; '--angular', '--prod', '--no-watch', - '--packages', - '@abp/ng.feature-management,@abp/ng.permission-management', + '--all-packages', + '--excluded-packages', + '@abp/ng.schematics,@abp/ng.core,@abp/ng.theme.shared,@abp/ng.components,@abp/ng.feature-management,@abp/ng.permission-management', ], { stdout: 'inherit', cwd: '../' }, ); From 26049bea554114a92d62f4285471cd85d5eb43d7 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 19:43:38 +0300 Subject: [PATCH 025/117] refactor: regenerate permission proxies --- .../actions/permission-management.actions.ts | 2 +- .../permission-management.component.ts | 2 +- .../src/lib/proxy/README.md | 17 + .../src/lib/proxy/generate-proxy.json | 300 +++++++++--------- .../{permission-management => }/index.ts | 0 .../{permission-management => }/models.ts | 0 .../permissions.service.ts | 0 .../lib/states/permission-management.state.ts | 9 +- .../permission-management/src/public-api.ts | 2 +- 9 files changed, 174 insertions(+), 158 deletions(-) create mode 100644 npm/ng-packs/packages/permission-management/src/lib/proxy/README.md rename npm/ng-packs/packages/permission-management/src/lib/proxy/{permission-management => }/index.ts (100%) rename npm/ng-packs/packages/permission-management/src/lib/proxy/{permission-management => }/models.ts (100%) rename npm/ng-packs/packages/permission-management/src/lib/proxy/{permission-management => }/permissions.service.ts (100%) diff --git a/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts b/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts index 83bbdee818..2c21561a5c 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts @@ -1,5 +1,5 @@ import { PermissionManagement } from '../models/permission-management'; -import { UpdatePermissionsDto } from '../proxy/permission-management/models'; +import { UpdatePermissionsDto } from '../proxy/models'; export class GetPermissions { static readonly type = '[PermissionManagement] Get Permissions'; diff --git a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts index 190542322d..16fb9fe9e2 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts @@ -6,7 +6,7 @@ import { Observable, of } from 'rxjs'; import { finalize, map, pluck, switchMap, take, tap } from 'rxjs/operators'; import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions'; import { PermissionManagement } from '../models/permission-management'; -import { UpdatePermissionDto } from '../proxy/permission-management/models'; +import { UpdatePermissionDto } from '../proxy/models'; import { PermissionManagementState } from '../states/permission-management.state'; type PermissionWithStyle = PermissionManagement.Permission & { diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/README.md b/npm/ng-packs/packages/permission-management/src/lib/proxy/README.md new file mode 100644 index 0000000000..767dfd0f7c --- /dev/null +++ b/npm/ng-packs/packages/permission-management/src/lib/proxy/README.md @@ -0,0 +1,17 @@ +# Proxy Generation Output + +This directory includes the output of the latest proxy generation. +The files and folders in it will be overwritten when proxy generation is run again. +Therefore, please do not place your own content in this folder. + +In addition, `generate-proxy.json` works like a lock file. +It includes information used by the proxy generator, so please do not delete or modify it. + +Finally, the name of the files and folders should not be changed for two reasons: +- Proxy generator will keep creating them at those paths and you will have multiple copies of the same content. +- ABP Suite generates files which include imports from this folder. + +> **Important Notice:** If you are building a module and are planning to publish to npm, +> some of the generated proxies are likely to be exported from public-api.ts file. In such a case, +> please make sure you export files directly and not from barrel exports. In other words, +> do not include index.ts exports in your public-api.ts exports. diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json b/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json index 383b68929e..09a73e5c3c 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json +++ b/npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json @@ -1059,156 +1059,6 @@ } } }, - "abp": { - "rootPath": "abp", - "remoteServiceName": "abp", - "controllers": { - "Pages.Abp.MultiTenancy.AbpTenantController": { - "controllerName": "AbpTenant", - "type": "Pages.Abp.MultiTenancy.AbpTenantController", - "interfaces": [ - { - "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.IAbpTenantAppService" - } - ], - "actions": { - "FindTenantByNameAsyncByName": { - "uniqueName": "FindTenantByNameAsyncByName", - "name": "FindTenantByNameAsync", - "httpMethod": "GET", - "url": "api/abp/multi-tenancy/tenants/by-name/{name}", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "name", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "name", - "name": "name", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", - "descriptorName": "" - } - ], - "returnValue": { - "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", - "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" - } - }, - "FindTenantByIdAsyncById": { - "uniqueName": "FindTenantByIdAsyncById", - "name": "FindTenantByIdAsync", - "httpMethod": "GET", - "url": "api/abp/multi-tenancy/tenants/by-id/{id}", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", - "descriptorName": "" - } - ], - "returnValue": { - "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", - "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" - } - } - } - }, - "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { - "controllerName": "AbpApplicationConfiguration", - "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", - "interfaces": [ - { - "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" - } - ], - "actions": { - "GetAsync": { - "uniqueName": "GetAsync", - "name": "GetAsync", - "httpMethod": "GET", - "url": "api/abp/application-configuration", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", - "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" - } - } - } - }, - "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { - "controllerName": "AbpApiDefinition", - "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", - "interfaces": [], - "actions": { - "GetByModel": { - "uniqueName": "GetByModel", - "name": "Get", - "httpMethod": "GET", - "url": "api/abp/api-definition", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "model", - "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", - "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", - "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "model", - "name": "IncludeTypes", - "type": "System.Boolean", - "typeSimple": "boolean", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "model" - } - ], - "returnValue": { - "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", - "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" - } - } - } - } - } - }, "account": { "rootPath": "account", "remoteServiceName": "AbpAccount", @@ -1776,6 +1626,156 @@ } } }, + "abp": { + "rootPath": "abp", + "remoteServiceName": "abp", + "controllers": { + "Pages.Abp.MultiTenancy.AbpTenantController": { + "controllerName": "AbpTenant", + "type": "Pages.Abp.MultiTenancy.AbpTenantController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.IAbpTenantAppService" + } + ], + "actions": { + "FindTenantByNameAsyncByName": { + "uniqueName": "FindTenantByNameAsyncByName", + "name": "FindTenantByNameAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-name/{name}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "name", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "name", + "name": "name", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + }, + "FindTenantByIdAsyncById": { + "uniqueName": "FindTenantByIdAsyncById", + "name": "FindTenantByIdAsync", + "httpMethod": "GET", + "url": "api/abp/multi-tenancy/tenants/by-id/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": { + "controllerName": "AbpApplicationConfiguration", + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController", + "interfaces": [ + { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService" + } + ], + "actions": { + "GetAsync": { + "uniqueName": "GetAsync", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/abp/application-configuration", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto", + "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto" + } + } + } + }, + "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": { + "controllerName": "AbpApiDefinition", + "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController", + "interfaces": [], + "actions": { + "GetByModel": { + "uniqueName": "GetByModel", + "name": "Get", + "httpMethod": "GET", + "url": "api/abp/api-definition", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "model", + "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http", + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "model", + "name": "IncludeTypes", + "type": "System.Boolean", + "typeSimple": "boolean", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "model" + } + ], + "returnValue": { + "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel", + "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel" + } + } + } + } + } + }, "permissionManagement": { "rootPath": "permissionManagement", "remoteServiceName": "AbpPermissionManagement", diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts b/npm/ng-packs/packages/permission-management/src/lib/proxy/index.ts similarity index 100% rename from npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts rename to npm/ng-packs/packages/permission-management/src/lib/proxy/index.ts diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts b/npm/ng-packs/packages/permission-management/src/lib/proxy/models.ts similarity index 100% rename from npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts rename to npm/ng-packs/packages/permission-management/src/lib/proxy/models.ts diff --git a/npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts b/npm/ng-packs/packages/permission-management/src/lib/proxy/permissions.service.ts similarity index 100% rename from npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts rename to npm/ng-packs/packages/permission-management/src/lib/proxy/permissions.service.ts diff --git a/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts b/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts index f0f3ebe636..0a7f7830a8 100644 --- a/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts +++ b/npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts @@ -1,10 +1,9 @@ -import { State, Action, StateContext, Selector } from '@ngxs/store'; +import { Injectable } from '@angular/core'; +import { Action, Selector, State, StateContext } from '@ngxs/store'; +import { tap } from 'rxjs/operators'; import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions'; import { PermissionManagement } from '../models/permission-management'; -import { PermissionManagementService } from '../services/permission-management.service'; -import { tap } from 'rxjs/operators'; -import { Injectable } from '@angular/core'; -import { PermissionsService } from '../proxy/permission-management/permissions.service'; +import { PermissionsService } from '../proxy/permissions.service'; @State({ name: 'PermissionManagementState', diff --git a/npm/ng-packs/packages/permission-management/src/public-api.ts b/npm/ng-packs/packages/permission-management/src/public-api.ts index a24bb83101..3068cb766f 100644 --- a/npm/ng-packs/packages/permission-management/src/public-api.ts +++ b/npm/ng-packs/packages/permission-management/src/public-api.ts @@ -9,4 +9,4 @@ export * from './lib/enums/components'; export * from './lib/models'; export * from './lib/services'; export * from './lib/states'; -export * from './lib/proxy/permission-management'; +export * from './lib/proxy'; From 2393d69bf73a334649bb0f4d416f681c0bd89ec6 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 19:45:41 +0300 Subject: [PATCH 026/117] refactor: regenerate tenant-management proxies --- .../dev-app/src/environments/environment.ts | 4 +- .../lib/actions/tenant-management.actions.ts | 6 +- .../components/tenants/tenants.component.ts | 2 +- .../src/lib/models/tenant-management.ts | 2 +- .../tenant-management/src/lib/proxy/README.md | 17 + .../src/lib/proxy/generate-proxy.json | 1520 ++++++++--------- .../proxy/{tenant-management => }/index.ts | 0 .../proxy/{tenant-management => }/models.ts | 1 - .../{tenant-management => }/tenant.service.ts | 9 +- .../src/lib/states/tenant-management.state.ts | 4 +- .../tenant-management/src/public-api.ts | 2 +- 11 files changed, 790 insertions(+), 777 deletions(-) create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/proxy/README.md rename npm/ng-packs/packages/tenant-management/src/lib/proxy/{tenant-management => }/index.ts (100%) rename npm/ng-packs/packages/tenant-management/src/lib/proxy/{tenant-management => }/models.ts (92%) rename npm/ng-packs/packages/tenant-management/src/lib/proxy/{tenant-management => }/tenant.service.ts (92%) diff --git a/npm/ng-packs/apps/dev-app/src/environments/environment.ts b/npm/ng-packs/apps/dev-app/src/environments/environment.ts index d92df082a5..83d52a9e0a 100644 --- a/npm/ng-packs/apps/dev-app/src/environments/environment.ts +++ b/npm/ng-packs/apps/dev-app/src/environments/environment.ts @@ -28,11 +28,11 @@ export const environment = { }, AbpPermissionManagement: { url: 'https://localhost:44305', - rootNamespace: 'Volo.Abp', + rootNamespace: 'Volo.Abp.PermissionManagement', }, AbpTenantManagement: { url: 'https://localhost:44305', - rootNamespace: 'Volo.Abp', + rootNamespace: 'Volo.Abp.TenantManagement', }, AbpIdentity: { url: 'https://localhost:44305', diff --git a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts index e422d3756f..23e0aecb9e 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/actions/tenant-management.actions.ts @@ -1,8 +1,4 @@ -import { - GetTenantsInput, - TenantCreateDto, - TenantUpdateDto, -} from '../proxy/tenant-management/models'; +import { GetTenantsInput, TenantCreateDto, TenantUpdateDto } from '../proxy/models'; export class GetTenants { static readonly type = '[TenantManagement] Get Tenant'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts index 1210442a13..1339d9ebc8 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts @@ -13,7 +13,7 @@ import { GetTenants, UpdateTenant, } from '../../actions/tenant-management.actions'; -import { GetTenantsInput, TenantDto } from '../../proxy/tenant-management/models'; +import { GetTenantsInput, TenantDto } from '../../proxy/models'; import { TenantManagementService } from '../../services/tenant-management.service'; import { TenantManagementState } from '../../states/tenant-management.state'; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts index bf727b442d..bc47ae171d 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/models/tenant-management.ts @@ -1,5 +1,5 @@ import { ABP, PagedResultDto } from '@abp/ng.core'; -import { TenantDto } from '../proxy/tenant-management/models'; +import { TenantDto } from '../proxy/models'; export namespace TenantManagement { export interface State { diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/README.md b/npm/ng-packs/packages/tenant-management/src/lib/proxy/README.md new file mode 100644 index 0000000000..767dfd0f7c --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/README.md @@ -0,0 +1,17 @@ +# Proxy Generation Output + +This directory includes the output of the latest proxy generation. +The files and folders in it will be overwritten when proxy generation is run again. +Therefore, please do not place your own content in this folder. + +In addition, `generate-proxy.json` works like a lock file. +It includes information used by the proxy generator, so please do not delete or modify it. + +Finally, the name of the files and folders should not be changed for two reasons: +- Proxy generator will keep creating them at those paths and you will have multiple copies of the same content. +- ABP Suite generates files which include imports from this folder. + +> **Important Notice:** If you are building a module and are planning to publish to npm, +> some of the generated proxies are likely to be exported from public-api.ts file. In such a case, +> please make sure you export files directly and not from barrel exports. In other words, +> do not include index.ts exports in your public-api.ts exports. diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json b/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json index 4e01a8374b..6fd332abe4 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/generate-proxy.json @@ -3,132 +3,197 @@ "multi-tenancy" ], "modules": { - "featureManagement": { - "rootPath": "featureManagement", - "remoteServiceName": "AbpFeatureManagement", + "identity": { + "rootPath": "identity", + "remoteServiceName": "AbpIdentity", "controllers": { - "Volo.Abp.FeatureManagement.FeaturesController": { - "controllerName": "Features", - "type": "Volo.Abp.FeatureManagement.FeaturesController", + "Volo.Abp.Identity.IdentityRoleController": { + "controllerName": "IdentityRole", + "type": "Volo.Abp.Identity.IdentityRoleController", "interfaces": [ { - "type": "Volo.Abp.FeatureManagement.IFeatureAppService" + "type": "Volo.Abp.Identity.IIdentityRoleAppService" } ], "actions": { - "GetAsyncByProviderNameAndProviderKey": { - "uniqueName": "GetAsyncByProviderNameAndProviderKey", - "name": "GetAsync", + "GetAllListAsync": { + "uniqueName": "GetAllListAsync", + "name": "GetAllListAsync", "httpMethod": "GET", - "url": "api/feature-management/features", + "url": "api/identity/roles/all", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", + "httpMethod": "GET", + "url": "api/identity/roles", "supportedVersions": [], "parametersOnMethod": [ { - "name": "providerName", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - }, - { - "name": "providerKey", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", + "name": "input", + "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", + "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "providerName", - "name": "providerName", + "nameOnMethod": "input", + "name": "Sorting", "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, "constraintTypes": null, "bindingSourceId": "ModelBinding", - "descriptorName": "" + "descriptorName": "input" }, { - "nameOnMethod": "providerKey", - "name": "providerKey", - "type": "System.String", - "typeSimple": "string", + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", "isOptional": false, "defaultValue": null, "constraintTypes": null, "bindingSourceId": "ModelBinding", - "descriptorName": "" + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" } ], "returnValue": { - "type": "Volo.Abp.FeatureManagement.GetFeatureListResultDto", - "typeSimple": "Volo.Abp.FeatureManagement.GetFeatureListResultDto" + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" } }, - "UpdateAsyncByProviderNameAndProviderKeyAndInput": { - "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", - "name": "UpdateAsync", - "httpMethod": "PUT", - "url": "api/feature-management/features", + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/identity/roles/{id}", "supportedVersions": [], "parametersOnMethod": [ { - "name": "providerName", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", "typeSimple": "string", "isOptional": false, "defaultValue": null - }, + } + ], + "parameters": [ { - "name": "providerKey", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", "typeSimple": "string", "isOptional": false, - "defaultValue": null - }, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", + "httpMethod": "POST", + "url": "api/identity/roles", + "supportedVersions": [], + "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.FeatureManagement.UpdateFeaturesDto, Volo.Abp.FeatureManagement.Application.Contracts", - "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", - "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeAsString": "Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "providerName", - "name": "providerName", - "type": "System.String", - "typeSimple": "string", + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityRoleCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, - "bindingSourceId": "ModelBinding", + "bindingSourceId": "Body", "descriptorName": "" + } + ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null }, { - "nameOnMethod": "providerKey", - "name": "providerKey", - "type": "System.String", + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", + "constraintTypes": [], + "bindingSourceId": "Path", "descriptorName": "" }, { "nameOnMethod": "input", "name": "input", - "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", - "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -136,25 +201,53 @@ "descriptorName": "" } ], + "returnValue": { + "type": "Volo.Abp.Identity.IdentityRoleDto", + "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + } + }, + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/identity/roles/{id}", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ + { + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + } + ], "returnValue": { "type": "System.Void", "typeSimple": "System.Void" } } } - } - } - }, - "multi-tenancy": { - "rootPath": "multi-tenancy", - "remoteServiceName": "AbpTenantManagement", - "controllers": { - "Volo.Abp.TenantManagement.TenantController": { - "controllerName": "Tenant", - "type": "Volo.Abp.TenantManagement.TenantController", + }, + "Volo.Abp.Identity.IdentityUserController": { + "controllerName": "IdentityUser", + "type": "Volo.Abp.Identity.IdentityUserController", "interfaces": [ { - "type": "Volo.Abp.TenantManagement.ITenantAppService" + "type": "Volo.Abp.Identity.IIdentityUserAppService" } ], "actions": { @@ -162,7 +255,7 @@ "uniqueName": "GetAsyncById", "name": "GetAsync", "httpMethod": "GET", - "url": "api/multi-tenancy/tenants/{id}", + "url": "api/identity/users/{id}", "supportedVersions": [], "parametersOnMethod": [ { @@ -188,22 +281,22 @@ } ], "returnValue": { - "type": "Volo.Abp.TenantManagement.TenantDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" } }, "GetListAsyncByInput": { "uniqueName": "GetListAsyncByInput", "name": "GetListAsync", "httpMethod": "GET", - "url": "api/multi-tenancy/tenants", + "url": "api/identity/users", "supportedVersions": [], "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.TenantManagement.GetTenantsInput, Volo.Abp.TenantManagement.Application.Contracts", - "type": "Volo.Abp.TenantManagement.GetTenantsInput", - "typeSimple": "Volo.Abp.TenantManagement.GetTenantsInput", + "typeAsString": "Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.GetIdentityUsersInput", + "typeSimple": "Volo.Abp.Identity.GetIdentityUsersInput", "isOptional": false, "defaultValue": null } @@ -255,22 +348,22 @@ } ], "returnValue": { - "type": "Volo.Abp.Application.Dtos.PagedResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" - } + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } }, "CreateAsyncByInput": { "uniqueName": "CreateAsyncByInput", "name": "CreateAsync", "httpMethod": "POST", - "url": "api/multi-tenancy/tenants", + "url": "api/identity/users", "supportedVersions": [], "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.TenantManagement.TenantCreateDto, Volo.Abp.TenantManagement.Application.Contracts", - "type": "Volo.Abp.TenantManagement.TenantCreateDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeAsString": "Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", "isOptional": false, "defaultValue": null } @@ -279,8 +372,8 @@ { "nameOnMethod": "input", "name": "input", - "type": "Volo.Abp.TenantManagement.TenantCreateDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", + "type": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -289,15 +382,15 @@ } ], "returnValue": { - "type": "Volo.Abp.TenantManagement.TenantDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" } }, "UpdateAsyncByIdAndInput": { "uniqueName": "UpdateAsyncByIdAndInput", "name": "UpdateAsync", "httpMethod": "PUT", - "url": "api/multi-tenancy/tenants/{id}", + "url": "api/identity/users/{id}", "supportedVersions": [], "parametersOnMethod": [ { @@ -310,9 +403,9 @@ }, { "name": "input", - "typeAsString": "Volo.Abp.TenantManagement.TenantUpdateDto, Volo.Abp.TenantManagement.Application.Contracts", - "type": "Volo.Abp.TenantManagement.TenantUpdateDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", "isOptional": false, "defaultValue": null } @@ -332,8 +425,8 @@ { "nameOnMethod": "input", "name": "input", - "type": "Volo.Abp.TenantManagement.TenantUpdateDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", + "type": "Volo.Abp.Identity.IdentityUserUpdateDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -342,15 +435,15 @@ } ], "returnValue": { - "type": "Volo.Abp.TenantManagement.TenantDto", - "typeSimple": "Volo.Abp.TenantManagement.TenantDto" + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" } }, "DeleteAsyncById": { "uniqueName": "DeleteAsyncById", "name": "DeleteAsync", "httpMethod": "DELETE", - "url": "api/multi-tenancy/tenants/{id}", + "url": "api/identity/users/{id}", "supportedVersions": [], "parametersOnMethod": [ { @@ -380,11 +473,11 @@ "typeSimple": "System.Void" } }, - "GetDefaultConnectionStringAsyncById": { - "uniqueName": "GetDefaultConnectionStringAsyncById", - "name": "GetDefaultConnectionStringAsync", + "GetRolesAsyncById": { + "uniqueName": "GetRolesAsyncById", + "name": "GetRolesAsync", "httpMethod": "GET", - "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "url": "api/identity/users/{id}/roles", "supportedVersions": [], "parametersOnMethod": [ { @@ -410,15 +503,28 @@ } ], "returnValue": { - "type": "System.String", - "typeSimple": "string" + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" } }, - "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString": { - "uniqueName": "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString", - "name": "UpdateDefaultConnectionStringAsync", + "GetAssignableRolesAsync": { + "uniqueName": "GetAssignableRolesAsync", + "name": "GetAssignableRolesAsync", + "httpMethod": "GET", + "url": "api/identity/users/assignable-roles", + "supportedVersions": [], + "parametersOnMethod": [], + "parameters": [], + "returnValue": { + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + } + }, + "UpdateRolesAsyncByIdAndInput": { + "uniqueName": "UpdateRolesAsyncByIdAndInput", + "name": "UpdateRolesAsync", "httpMethod": "PUT", - "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "url": "api/identity/users/{id}/roles", "supportedVersions": [], "parametersOnMethod": [ { @@ -430,10 +536,10 @@ "defaultValue": null }, { - "name": "defaultConnectionString", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", + "name": "input", + "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateRolesDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", "isOptional": false, "defaultValue": null } @@ -451,14 +557,14 @@ "descriptorName": "" }, { - "nameOnMethod": "defaultConnectionString", - "name": "defaultConnectionString", - "type": "System.String", - "typeSimple": "string", + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, - "bindingSourceId": "ModelBinding", + "bindingSourceId": "Body", "descriptorName": "" } ], @@ -467,17 +573,17 @@ "typeSimple": "System.Void" } }, - "DeleteDefaultConnectionStringAsyncById": { - "uniqueName": "DeleteDefaultConnectionStringAsyncById", - "name": "DeleteDefaultConnectionStringAsync", - "httpMethod": "DELETE", - "url": "api/multi-tenancy/tenants/{id}/default-connection-string", + "FindByUsernameAsyncByUsername": { + "uniqueName": "FindByUsernameAsyncByUsername", + "name": "FindByUsernameAsync", + "httpMethod": "GET", + "url": "api/identity/users/by-username/{userName}", "supportedVersions": [], "parametersOnMethod": [ { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", + "name": "username", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null @@ -485,9 +591,9 @@ ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", + "nameOnMethod": "username", + "name": "username", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, @@ -497,101 +603,60 @@ } ], "returnValue": { - "type": "System.Void", - "typeSimple": "System.Void" - } - } - } - } - } - }, - "identity": { - "rootPath": "identity", - "remoteServiceName": "AbpIdentity", - "controllers": { - "Volo.Abp.Identity.IdentityRoleController": { - "controllerName": "IdentityRole", - "type": "Volo.Abp.Identity.IdentityRoleController", - "interfaces": [ - { - "type": "Volo.Abp.Identity.IIdentityRoleAppService" - } - ], - "actions": { - "GetAllListAsync": { - "uniqueName": "GetAllListAsync", - "name": "GetAllListAsync", - "httpMethod": "GET", - "url": "api/identity/roles/all", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "Volo.Abp.Application.Dtos.ListResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" } }, - "GetListAsyncByInput": { - "uniqueName": "GetListAsyncByInput", - "name": "GetListAsync", + "FindByEmailAsyncByEmail": { + "uniqueName": "FindByEmailAsyncByEmail", + "name": "FindByEmailAsync", "httpMethod": "GET", - "url": "api/identity/roles", + "url": "api/identity/users/by-email/{email}", "supportedVersions": [], "parametersOnMethod": [ { - "name": "input", - "typeAsString": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto, Volo.Abp.Ddd.Application.Contracts", - "type": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", - "typeSimple": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto", + "name": "email", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "input", - "name": "Sorting", + "nameOnMethod": "email", + "name": "email", "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" - }, - { - "nameOnMethod": "input", - "name": "SkipCount", - "type": "System.Int32", - "typeSimple": "number", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" - }, - { - "nameOnMethod": "input", - "name": "MaxResultCount", - "type": "System.Int32", - "typeSimple": "number", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Application.Dtos.PagedResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" } - }, - "GetAsyncById": { - "uniqueName": "GetAsyncById", - "name": "GetAsync", + } + } + }, + "Volo.Abp.Identity.IdentityUserLookupController": { + "controllerName": "IdentityUserLookup", + "type": "Volo.Abp.Identity.IdentityUserLookupController", + "interfaces": [ + { + "type": "Volo.Abp.Identity.IIdentityUserLookupAppService" + } + ], + "actions": { + "FindByIdAsyncById": { + "uniqueName": "FindByIdAsyncById", + "name": "FindByIdAsync", "httpMethod": "GET", - "url": "api/identity/roles/{id}", + "url": "api/identity/users/lookup/{id}", "supportedVersions": [], "parametersOnMethod": [ { @@ -617,188 +682,181 @@ } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityRoleDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" } }, - "CreateAsyncByInput": { - "uniqueName": "CreateAsyncByInput", - "name": "CreateAsync", - "httpMethod": "POST", - "url": "api/identity/roles", + "FindByUserNameAsyncByUserName": { + "uniqueName": "FindByUserNameAsyncByUserName", + "name": "FindByUserNameAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/by-username/{userName}", "supportedVersions": [], "parametersOnMethod": [ { - "name": "input", - "typeAsString": "Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.IdentityRoleCreateDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "name": "userName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Identity.IdentityRoleCreateDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto", + "nameOnMethod": "userName", + "name": "userName", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", + "constraintTypes": [], + "bindingSourceId": "Path", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityRoleDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + "type": "Volo.Abp.Users.UserData", + "typeSimple": "Volo.Abp.Users.UserData" } }, - "UpdateAsyncByIdAndInput": { - "uniqueName": "UpdateAsyncByIdAndInput", - "name": "UpdateAsync", - "httpMethod": "PUT", - "url": "api/identity/roles/{id}", + "SearchAsyncByInput": { + "uniqueName": "SearchAsyncByInput", + "name": "SearchAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/search", "supportedVersions": [], "parametersOnMethod": [ - { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - }, { "name": "input", - "typeAsString": "Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "typeAsString": "Volo.Abp.Identity.UserLookupSearchInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupSearchInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupSearchInputDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", - "descriptorName": "" + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" }, { "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Identity.IdentityRoleUpdateDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto", + "name": "Sorting", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null, "constraintTypes": null, - "bindingSourceId": "Body", - "descriptorName": "" + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "SkipCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" + }, + { + "nameOnMethod": "input", + "name": "MaxResultCount", + "type": "System.Int32", + "typeSimple": "number", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityRoleDto", - "typeSimple": "Volo.Abp.Identity.IdentityRoleDto" + "type": "Volo.Abp.Application.Dtos.ListResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" } }, - "DeleteAsyncById": { - "uniqueName": "DeleteAsyncById", - "name": "DeleteAsync", - "httpMethod": "DELETE", - "url": "api/identity/roles/{id}", + "GetCountAsyncByInput": { + "uniqueName": "GetCountAsyncByInput", + "name": "GetCountAsync", + "httpMethod": "GET", + "url": "api/identity/users/lookup/count", "supportedVersions": [], "parametersOnMethod": [ { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", - "typeSimple": "string", + "name": "input", + "typeAsString": "Volo.Abp.Identity.UserLookupCountInputDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UserLookupCountInputDto", + "typeSimple": "Volo.Abp.Identity.UserLookupCountInputDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", + "nameOnMethod": "input", + "name": "Filter", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", - "descriptorName": "" + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "input" } ], "returnValue": { - "type": "System.Void", - "typeSimple": "System.Void" + "type": "System.Int64", + "typeSimple": "number" } } } }, - "Volo.Abp.Identity.IdentityUserController": { - "controllerName": "IdentityUser", - "type": "Volo.Abp.Identity.IdentityUserController", + "Volo.Abp.Identity.ProfileController": { + "controllerName": "Profile", + "type": "Volo.Abp.Identity.ProfileController", "interfaces": [ { - "type": "Volo.Abp.Identity.IIdentityUserAppService" + "type": "Volo.Abp.Identity.IProfileAppService" } ], "actions": { - "GetAsyncById": { - "uniqueName": "GetAsyncById", + "GetAsync": { + "uniqueName": "GetAsync", "name": "GetAsync", "httpMethod": "GET", - "url": "api/identity/users/{id}", + "url": "api/identity/my-profile", "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", - "descriptorName": "" - } - ], + "parametersOnMethod": [], + "parameters": [], "returnValue": { - "type": "Volo.Abp.Identity.IdentityUserDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" } }, - "GetListAsyncByInput": { - "uniqueName": "GetListAsyncByInput", - "name": "GetListAsync", - "httpMethod": "GET", - "url": "api/identity/users", + "UpdateAsyncByInput": { + "uniqueName": "UpdateAsyncByInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/identity/my-profile", "supportedVersions": [], "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.GetIdentityUsersInput", - "typeSimple": "Volo.Abp.Identity.GetIdentityUsersInput", + "typeAsString": "Volo.Abp.Identity.UpdateProfileDto, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", "isOptional": false, "defaultValue": null } @@ -806,66 +864,33 @@ "parameters": [ { "nameOnMethod": "input", - "name": "Filter", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" - }, - { - "nameOnMethod": "input", - "name": "Sorting", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" - }, - { - "nameOnMethod": "input", - "name": "SkipCount", - "type": "System.Int32", - "typeSimple": "number", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" - }, - { - "nameOnMethod": "input", - "name": "MaxResultCount", - "type": "System.Int32", - "typeSimple": "number", + "name": "input", + "type": "Volo.Abp.Identity.UpdateProfileDto", + "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" + "bindingSourceId": "Body", + "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Application.Dtos.PagedResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + "type": "Volo.Abp.Identity.ProfileDto", + "typeSimple": "Volo.Abp.Identity.ProfileDto" } }, - "CreateAsyncByInput": { - "uniqueName": "CreateAsyncByInput", - "name": "CreateAsync", + "ChangePasswordAsyncByInput": { + "uniqueName": "ChangePasswordAsyncByInput", + "name": "ChangePasswordAsync", "httpMethod": "POST", - "url": "api/identity/users", + "url": "api/identity/my-profile/change-password", "supportedVersions": [], "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.IdentityUserCreateDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "typeAsString": "Volo.Abp.Identity.ChangePasswordInput, Volo.Abp.Identity.Application.Contracts", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", "isOptional": false, "defaultValue": null } @@ -874,8 +899,8 @@ { "nameOnMethod": "input", "name": "input", - "type": "Volo.Abp.Identity.IdentityUserCreateDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto", + "type": "Volo.Abp.Identity.ChangePasswordInput", + "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -884,89 +909,144 @@ } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityUserDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + "type": "System.Void", + "typeSimple": "System.Void" } - }, - "UpdateAsyncByIdAndInput": { - "uniqueName": "UpdateAsyncByIdAndInput", - "name": "UpdateAsync", - "httpMethod": "PUT", - "url": "api/identity/users/{id}", + } + } + } + } + }, + "featureManagement": { + "rootPath": "featureManagement", + "remoteServiceName": "AbpFeatureManagement", + "controllers": { + "Volo.Abp.FeatureManagement.FeaturesController": { + "controllerName": "Features", + "type": "Volo.Abp.FeatureManagement.FeaturesController", + "interfaces": [ + { + "type": "Volo.Abp.FeatureManagement.IFeatureAppService" + } + ], + "actions": { + "GetAsyncByProviderNameAndProviderKey": { + "uniqueName": "GetAsyncByProviderNameAndProviderKey", + "name": "GetAsync", + "httpMethod": "GET", + "url": "api/feature-management/features", "supportedVersions": [], "parametersOnMethod": [ { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null }, { - "name": "input", - "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.IdentityUserUpdateDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "ModelBinding", "descriptorName": "" }, { - "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Identity.IdentityUserUpdateDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto", + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null, "constraintTypes": null, - "bindingSourceId": "Body", + "bindingSourceId": "ModelBinding", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityUserDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + "type": "Volo.Abp.FeatureManagement.GetFeatureListResultDto", + "typeSimple": "Volo.Abp.FeatureManagement.GetFeatureListResultDto" } }, - "DeleteAsyncById": { - "uniqueName": "DeleteAsyncById", - "name": "DeleteAsync", - "httpMethod": "DELETE", - "url": "api/identity/users/{id}", + "UpdateAsyncByProviderNameAndProviderKeyAndInput": { + "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/feature-management/features", "supportedVersions": [], "parametersOnMethod": [ { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", + "name": "providerName", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "providerKey", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.FeatureManagement.UpdateFeaturesDto, Volo.Abp.FeatureManagement.Application.Contracts", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", + "nameOnMethod": "providerName", + "name": "providerName", + "type": "System.String", "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "providerKey", + "name": "providerKey", + "type": "System.String", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "ModelBinding", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto", + "isOptional": false, + "defaultValue": null, + "constraintTypes": null, + "bindingSourceId": "Body", "descriptorName": "" } ], @@ -974,95 +1054,134 @@ "type": "System.Void", "typeSimple": "System.Void" } - }, - "GetRolesAsyncById": { - "uniqueName": "GetRolesAsyncById", - "name": "GetRolesAsync", - "httpMethod": "GET", - "url": "api/identity/users/{id}/roles", + } + } + } + } + }, + "account": { + "rootPath": "account", + "remoteServiceName": "AbpAccount", + "controllers": { + "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController", + "interfaces": [], + "actions": { + "LoginByLogin": { + "uniqueName": "LoginByLogin", + "name": "Login", + "httpMethod": "POST", + "url": "api/account/login", "supportedVersions": [], "parametersOnMethod": [ { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", - "typeSimple": "string", + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", - "typeSimple": "string", + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "Body", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Application.Dtos.ListResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" } }, - "GetAssignableRolesAsync": { - "uniqueName": "GetAssignableRolesAsync", - "name": "GetAssignableRolesAsync", + "Logout": { + "uniqueName": "Logout", + "name": "Logout", "httpMethod": "GET", - "url": "api/identity/users/assignable-roles", + "url": "api/account/logout", "supportedVersions": [], "parametersOnMethod": [], "parameters": [], "returnValue": { - "type": "Volo.Abp.Application.Dtos.ListResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" + "type": "System.Void", + "typeSimple": "System.Void" } }, - "UpdateRolesAsyncByIdAndInput": { - "uniqueName": "UpdateRolesAsyncByIdAndInput", - "name": "UpdateRolesAsync", - "httpMethod": "PUT", - "url": "api/identity/users/{id}/roles", + "CheckPasswordByLogin": { + "uniqueName": "CheckPasswordByLogin", + "name": "CheckPassword", + "httpMethod": "POST", + "url": "api/account/checkPassword", "supportedVersions": [], "parametersOnMethod": [ { - "name": "id", - "typeAsString": "System.Guid, System.Private.CoreLib", - "type": "System.Guid", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - }, - { - "name": "input", - "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateRolesDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "name": "login", + "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "id", - "name": "id", - "type": "System.Guid", - "typeSimple": "string", + "nameOnMethod": "login", + "name": "login", + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "Body", "descriptorName": "" - }, + } + ], + "returnValue": { + "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", + "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + } + } + } + }, + "Volo.Abp.Account.AccountController": { + "controllerName": "Account", + "type": "Volo.Abp.Account.AccountController", + "interfaces": [ + { + "type": "Volo.Abp.Account.IAccountAppService" + } + ], + "actions": { + "RegisterAsyncByInput": { + "uniqueName": "RegisterAsyncByInput", + "name": "RegisterAsync", + "httpMethod": "POST", + "url": "api/account/register", + "supportedVersions": [], + "parametersOnMethod": [ + { + "name": "input", + "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", + "isOptional": false, + "defaultValue": null + } + ], + "parameters": [ { "nameOnMethod": "input", "name": "input", - "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto", + "type": "Volo.Abp.Account.RegisterDto", + "typeSimple": "Volo.Abp.Account.RegisterDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -1071,94 +1190,100 @@ } ], "returnValue": { - "type": "System.Void", - "typeSimple": "System.Void" + "type": "Volo.Abp.Identity.IdentityUserDto", + "typeSimple": "Volo.Abp.Identity.IdentityUserDto" } }, - "FindByUsernameAsyncByUsername": { - "uniqueName": "FindByUsernameAsyncByUsername", - "name": "FindByUsernameAsync", - "httpMethod": "GET", - "url": "api/identity/users/by-username/{userName}", + "SendPasswordResetCodeAsyncByInput": { + "uniqueName": "SendPasswordResetCodeAsyncByInput", + "name": "SendPasswordResetCodeAsync", + "httpMethod": "POST", + "url": "api/account/send-password-reset-code", "supportedVersions": [], "parametersOnMethod": [ { - "name": "username", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", + "name": "input", + "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "username", - "name": "username", - "type": "System.String", - "typeSimple": "string", + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.SendPasswordResetCodeDto", + "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "Body", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityUserDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + "type": "System.Void", + "typeSimple": "System.Void" } }, - "FindByEmailAsyncByEmail": { - "uniqueName": "FindByEmailAsyncByEmail", - "name": "FindByEmailAsync", - "httpMethod": "GET", - "url": "api/identity/users/by-email/{email}", + "ResetPasswordAsyncByInput": { + "uniqueName": "ResetPasswordAsyncByInput", + "name": "ResetPasswordAsync", + "httpMethod": "POST", + "url": "api/account/reset-password", "supportedVersions": [], "parametersOnMethod": [ { - "name": "email", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", + "name": "input", + "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "email", - "name": "email", - "type": "System.String", - "typeSimple": "string", + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.Account.ResetPasswordDto", + "typeSimple": "Volo.Abp.Account.ResetPasswordDto", "isOptional": false, "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", + "constraintTypes": null, + "bindingSourceId": "Body", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityUserDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + "type": "System.Void", + "typeSimple": "System.Void" } } } - }, - "Volo.Abp.Identity.IdentityUserLookupController": { - "controllerName": "IdentityUserLookup", - "type": "Volo.Abp.Identity.IdentityUserLookupController", + } + } + }, + "multi-tenancy": { + "rootPath": "multi-tenancy", + "remoteServiceName": "AbpTenantManagement", + "controllers": { + "Volo.Abp.TenantManagement.TenantController": { + "controllerName": "Tenant", + "type": "Volo.Abp.TenantManagement.TenantController", "interfaces": [ { - "type": "Volo.Abp.Identity.IIdentityUserLookupAppService" + "type": "Volo.Abp.TenantManagement.ITenantAppService" } ], "actions": { - "FindByIdAsyncById": { - "uniqueName": "FindByIdAsyncById", - "name": "FindByIdAsync", + "GetAsyncById": { + "uniqueName": "GetAsyncById", + "name": "GetAsync", "httpMethod": "GET", - "url": "api/identity/users/lookup/{id}", + "url": "api/multi-tenancy/tenants/{id}", "supportedVersions": [], "parametersOnMethod": [ { @@ -1184,56 +1309,22 @@ } ], "returnValue": { - "type": "Volo.Abp.Users.UserData", - "typeSimple": "Volo.Abp.Users.UserData" - } - }, - "FindByUserNameAsyncByUserName": { - "uniqueName": "FindByUserNameAsyncByUserName", - "name": "FindByUserNameAsync", - "httpMethod": "GET", - "url": "api/identity/users/lookup/by-username/{userName}", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "userName", - "typeAsString": "System.String, System.Private.CoreLib", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "userName", - "name": "userName", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": [], - "bindingSourceId": "Path", - "descriptorName": "" - } - ], - "returnValue": { - "type": "Volo.Abp.Users.UserData", - "typeSimple": "Volo.Abp.Users.UserData" + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" } }, - "SearchAsyncByInput": { - "uniqueName": "SearchAsyncByInput", - "name": "SearchAsync", + "GetListAsyncByInput": { + "uniqueName": "GetListAsyncByInput", + "name": "GetListAsync", "httpMethod": "GET", - "url": "api/identity/users/lookup/search", + "url": "api/multi-tenancy/tenants", "supportedVersions": [], "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.Identity.UserLookupSearchInputDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.UserLookupSearchInputDto", - "typeSimple": "Volo.Abp.Identity.UserLookupSearchInputDto", + "typeAsString": "Volo.Abp.TenantManagement.GetTenantsInput, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.GetTenantsInput", + "typeSimple": "Volo.Abp.TenantManagement.GetTenantsInput", "isOptional": false, "defaultValue": null } @@ -1285,114 +1376,22 @@ } ], "returnValue": { - "type": "Volo.Abp.Application.Dtos.ListResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" - } - }, - "GetCountAsyncByInput": { - "uniqueName": "GetCountAsyncByInput", - "name": "GetCountAsync", - "httpMethod": "GET", - "url": "api/identity/users/lookup/count", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "input", - "typeAsString": "Volo.Abp.Identity.UserLookupCountInputDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.UserLookupCountInputDto", - "typeSimple": "Volo.Abp.Identity.UserLookupCountInputDto", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "input", - "name": "Filter", - "type": "System.String", - "typeSimple": "string", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "ModelBinding", - "descriptorName": "input" - } - ], - "returnValue": { - "type": "System.Int64", - "typeSimple": "number" - } - } - } - }, - "Volo.Abp.Identity.ProfileController": { - "controllerName": "Profile", - "type": "Volo.Abp.Identity.ProfileController", - "interfaces": [ - { - "type": "Volo.Abp.Identity.IProfileAppService" - } - ], - "actions": { - "GetAsync": { - "uniqueName": "GetAsync", - "name": "GetAsync", - "httpMethod": "GET", - "url": "api/identity/my-profile", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "Volo.Abp.Identity.ProfileDto", - "typeSimple": "Volo.Abp.Identity.ProfileDto" - } - }, - "UpdateAsyncByInput": { - "uniqueName": "UpdateAsyncByInput", - "name": "UpdateAsync", - "httpMethod": "PUT", - "url": "api/identity/my-profile", - "supportedVersions": [], - "parametersOnMethod": [ - { - "name": "input", - "typeAsString": "Volo.Abp.Identity.UpdateProfileDto, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.UpdateProfileDto", - "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", - "isOptional": false, - "defaultValue": null - } - ], - "parameters": [ - { - "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Identity.UpdateProfileDto", - "typeSimple": "Volo.Abp.Identity.UpdateProfileDto", - "isOptional": false, - "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", - "descriptorName": "" - } - ], - "returnValue": { - "type": "Volo.Abp.Identity.ProfileDto", - "typeSimple": "Volo.Abp.Identity.ProfileDto" - } - }, - "ChangePasswordAsyncByInput": { - "uniqueName": "ChangePasswordAsyncByInput", - "name": "ChangePasswordAsync", + "type": "Volo.Abp.Application.Dtos.PagedResultDto", + "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto" + } + }, + "CreateAsyncByInput": { + "uniqueName": "CreateAsyncByInput", + "name": "CreateAsync", "httpMethod": "POST", - "url": "api/identity/my-profile/change-password", + "url": "api/multi-tenancy/tenants", "supportedVersions": [], "parametersOnMethod": [ { "name": "input", - "typeAsString": "Volo.Abp.Identity.ChangePasswordInput, Volo.Abp.Identity.Application.Contracts", - "type": "Volo.Abp.Identity.ChangePasswordInput", - "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "typeAsString": "Volo.Abp.TenantManagement.TenantCreateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", "isOptional": false, "defaultValue": null } @@ -1401,8 +1400,8 @@ { "nameOnMethod": "input", "name": "input", - "type": "Volo.Abp.Identity.ChangePasswordInput", - "typeSimple": "Volo.Abp.Identity.ChangePasswordInput", + "type": "Volo.Abp.TenantManagement.TenantCreateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -1411,45 +1410,51 @@ } ], "returnValue": { - "type": "System.Void", - "typeSimple": "System.Void" + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" } - } - } - } - } - }, - "account": { - "rootPath": "account", - "remoteServiceName": "AbpAccount", - "controllers": { - "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController": { - "controllerName": "Account", - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController", - "interfaces": [], - "actions": { - "LoginByLogin": { - "uniqueName": "LoginByLogin", - "name": "Login", - "httpMethod": "POST", - "url": "api/account/login", + }, + "UpdateAsyncByIdAndInput": { + "uniqueName": "UpdateAsyncByIdAndInput", + "name": "UpdateAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}", "supportedVersions": [], "parametersOnMethod": [ { - "name": "login", - "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", - "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "input", + "typeAsString": "Volo.Abp.TenantManagement.TenantUpdateDto, Volo.Abp.TenantManagement.Application.Contracts", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "login", - "name": "login", - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", - "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "input", + "name": "input", + "type": "Volo.Abp.TenantManagement.TenantUpdateDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto", "isOptional": false, "defaultValue": null, "constraintTypes": null, @@ -1458,128 +1463,123 @@ } ], "returnValue": { - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", - "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" - } - }, - "Logout": { - "uniqueName": "Logout", - "name": "Logout", - "httpMethod": "GET", - "url": "api/account/logout", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "System.Void", - "typeSimple": "System.Void" + "type": "Volo.Abp.TenantManagement.TenantDto", + "typeSimple": "Volo.Abp.TenantManagement.TenantDto" } }, - "CheckPasswordByLogin": { - "uniqueName": "CheckPasswordByLogin", - "name": "CheckPassword", - "httpMethod": "POST", - "url": "api/account/checkPassword", + "DeleteAsyncById": { + "uniqueName": "DeleteAsyncById", + "name": "DeleteAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}", "supportedVersions": [], "parametersOnMethod": [ { - "name": "login", - "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web", - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", - "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "login", - "name": "login", - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", - "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo", + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", + "constraintTypes": [], + "bindingSourceId": "Path", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult", - "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult" + "type": "System.Void", + "typeSimple": "System.Void" } - } - } - }, - "Volo.Abp.Account.AccountController": { - "controllerName": "Account", - "type": "Volo.Abp.Account.AccountController", - "interfaces": [ - { - "type": "Volo.Abp.Account.IAccountAppService" - } - ], - "actions": { - "RegisterAsyncByInput": { - "uniqueName": "RegisterAsyncByInput", - "name": "RegisterAsync", - "httpMethod": "POST", - "url": "api/account/register", + }, + "GetDefaultConnectionStringAsyncById": { + "uniqueName": "GetDefaultConnectionStringAsyncById", + "name": "GetDefaultConnectionStringAsync", + "httpMethod": "GET", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", "supportedVersions": [], "parametersOnMethod": [ { - "name": "input", - "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts", - "type": "Volo.Abp.Account.RegisterDto", - "typeSimple": "Volo.Abp.Account.RegisterDto", + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Account.RegisterDto", - "typeSimple": "Volo.Abp.Account.RegisterDto", + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", + "constraintTypes": [], + "bindingSourceId": "Path", "descriptorName": "" } ], "returnValue": { - "type": "Volo.Abp.Identity.IdentityUserDto", - "typeSimple": "Volo.Abp.Identity.IdentityUserDto" + "type": "System.String", + "typeSimple": "string" } }, - "SendPasswordResetCodeAsyncByInput": { - "uniqueName": "SendPasswordResetCodeAsyncByInput", - "name": "SendPasswordResetCodeAsync", - "httpMethod": "POST", - "url": "api/account/send-password-reset-code", + "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString": { + "uniqueName": "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString", + "name": "UpdateDefaultConnectionStringAsync", + "httpMethod": "PUT", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", "supportedVersions": [], "parametersOnMethod": [ { - "name": "input", - "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts", - "type": "Volo.Abp.Account.SendPasswordResetCodeDto", - "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null + }, + { + "name": "defaultConnectionString", + "typeAsString": "System.String, System.Private.CoreLib", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Account.SendPasswordResetCodeDto", - "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto", + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", + "isOptional": false, + "defaultValue": null, + "constraintTypes": [], + "bindingSourceId": "Path", + "descriptorName": "" + }, + { + "nameOnMethod": "defaultConnectionString", + "name": "defaultConnectionString", + "type": "System.String", + "typeSimple": "string", "isOptional": false, "defaultValue": null, "constraintTypes": null, - "bindingSourceId": "Body", + "bindingSourceId": "ModelBinding", "descriptorName": "" } ], @@ -1588,32 +1588,32 @@ "typeSimple": "System.Void" } }, - "ResetPasswordAsyncByInput": { - "uniqueName": "ResetPasswordAsyncByInput", - "name": "ResetPasswordAsync", - "httpMethod": "POST", - "url": "api/account/reset-password", + "DeleteDefaultConnectionStringAsyncById": { + "uniqueName": "DeleteDefaultConnectionStringAsyncById", + "name": "DeleteDefaultConnectionStringAsync", + "httpMethod": "DELETE", + "url": "api/multi-tenancy/tenants/{id}/default-connection-string", "supportedVersions": [], "parametersOnMethod": [ { - "name": "input", - "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts", - "type": "Volo.Abp.Account.ResetPasswordDto", - "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "name": "id", + "typeAsString": "System.Guid, System.Private.CoreLib", + "type": "System.Guid", + "typeSimple": "string", "isOptional": false, "defaultValue": null } ], "parameters": [ { - "nameOnMethod": "input", - "name": "input", - "type": "Volo.Abp.Account.ResetPasswordDto", - "typeSimple": "Volo.Abp.Account.ResetPasswordDto", + "nameOnMethod": "id", + "name": "id", + "type": "System.Guid", + "typeSimple": "string", "isOptional": false, "defaultValue": null, - "constraintTypes": null, - "bindingSourceId": "Body", + "constraintTypes": [], + "bindingSourceId": "Path", "descriptorName": "" } ], diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/index.ts similarity index 100% rename from npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/index.ts rename to npm/ng-packs/packages/tenant-management/src/lib/proxy/index.ts diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts similarity index 92% rename from npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts rename to npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts index c084037c5b..a7181bc8fd 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/models.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts @@ -17,6 +17,5 @@ export interface TenantDto extends ExtensibleEntityDto { name: string; } -// tslint:disable-next-line: no-empty-interface export interface TenantUpdateDto extends TenantCreateOrUpdateDtoBase { } diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts similarity index 92% rename from npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts rename to npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts index f17bce8619..ebc307e878 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant-management/tenant.service.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts @@ -1,6 +1,6 @@ -import type { PagedResultDto } from '@abp/ng.core'; import type { GetTenantsInput, TenantCreateDto, TenantDto, TenantUpdateDto } from './models'; import { RestService } from '@abp/ng.core'; +import type { PagedResultDto } from '@abp/ng.core'; import { Injectable } from '@angular/core'; @Injectable({ @@ -12,7 +12,7 @@ export class TenantService { create = (input: TenantCreateDto) => this.restService.request({ method: 'POST', - url: '/api/multi-tenancy/tenants', + url: `/api/multi-tenancy/tenants`, body: input, }, { apiName: this.apiName }); @@ -41,6 +41,7 @@ export class TenantService { getDefaultConnectionString = (id: string) => this.restService.request({ method: 'GET', + responseType: 'text', url: `/api/multi-tenancy/tenants/${id}/default-connection-string`, }, { apiName: this.apiName }); @@ -48,7 +49,7 @@ export class TenantService { getList = (input: GetTenantsInput) => this.restService.request>({ method: 'GET', - url: '/api/multi-tenancy/tenants', + url: `/api/multi-tenancy/tenants`, params: { filter: input.filter, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, }, { apiName: this.apiName }); @@ -65,7 +66,7 @@ export class TenantService { this.restService.request({ method: 'PUT', url: `/api/multi-tenancy/tenants/${id}/default-connection-string`, - params: { defaultConnectionString }, + params: { defaultConnectionString: defaultConnectionString }, }, { apiName: this.apiName }); diff --git a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts index b9eee03bdd..2002afbcd9 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/states/tenant-management.state.ts @@ -10,8 +10,8 @@ import { } from '../actions/tenant-management.actions'; import { TenantManagement } from '../models/tenant-management'; import { Injectable } from '@angular/core'; -import { TenantService } from '../proxy/tenant-management/tenant.service'; -import { TenantDto } from '../proxy/tenant-management/models'; +import { TenantService } from '../proxy/tenant.service'; +import { TenantDto } from '../proxy/models'; @State({ name: 'TenantManagementState', diff --git a/npm/ng-packs/packages/tenant-management/src/public-api.ts b/npm/ng-packs/packages/tenant-management/src/public-api.ts index 7bfa4b14de..42961055b1 100644 --- a/npm/ng-packs/packages/tenant-management/src/public-api.ts +++ b/npm/ng-packs/packages/tenant-management/src/public-api.ts @@ -5,4 +5,4 @@ export * from './lib/enums'; export * from './lib/models'; export * from './lib/services'; export * from './lib/states'; -export * from './lib/proxy/tenant-management'; +export * from './lib/proxy'; From c2f2ba2136422977e9cc30240e71fab91c0b879d Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Wed, 16 Sep 2020 19:47:46 +0300 Subject: [PATCH 027/117] fix: lint errors --- .../packages/tenant-management/src/lib/proxy/models.ts | 1 + .../tenant-management/src/lib/proxy/tenant.service.ts | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts index a7181bc8fd..c084037c5b 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/models.ts @@ -17,5 +17,6 @@ export interface TenantDto extends ExtensibleEntityDto { name: string; } +// tslint:disable-next-line: no-empty-interface export interface TenantUpdateDto extends TenantCreateOrUpdateDtoBase { } diff --git a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts index ebc307e878..61d1667be4 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/proxy/tenant.service.ts @@ -12,7 +12,7 @@ export class TenantService { create = (input: TenantCreateDto) => this.restService.request({ method: 'POST', - url: `/api/multi-tenancy/tenants`, + url: '/api/multi-tenancy/tenants', body: input, }, { apiName: this.apiName }); @@ -49,7 +49,7 @@ export class TenantService { getList = (input: GetTenantsInput) => this.restService.request>({ method: 'GET', - url: `/api/multi-tenancy/tenants`, + url: '/api/multi-tenancy/tenants', params: { filter: input.filter, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount }, }, { apiName: this.apiName }); @@ -66,7 +66,7 @@ export class TenantService { this.restService.request({ method: 'PUT', url: `/api/multi-tenancy/tenants/${id}/default-connection-string`, - params: { defaultConnectionString: defaultConnectionString }, + params: { defaultConnectionString }, }, { apiName: this.apiName }); From 79050f6306b7d2fdedfcb2abf20efeda3ba96070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 20:43:41 +0300 Subject: [PATCH 028/117] Update POST.md --- docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md index 8f09cc24e6..fd60d67128 100644 --- a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -118,4 +118,8 @@ We will use this command to build the abp repository or a solution inside it. Ho * Angular UI now redirect to MVC UI (the authentication server side) for profile management page, if the authorization code flow is used (which is the default). * Improvements and optimizations for the [Angular service proxy generation](https://blog.abp.io/abp/Introducing-the-Angular-Service-Proxy-Generation). -And a lot of minor improvements and bug fixes. You can see [the milestone 3.2](https://github.com/abpframework/abp/milestone/39?closed=1) for all issues & PRs closed with this version. \ No newline at end of file +And a lot of minor improvements and bug fixes. You can see [the milestone 3.2](https://github.com/abpframework/abp/milestone/39?closed=1) for all issues & PRs closed with this version. + +## What's New with the ABP Commercial 3.2 + +TODO \ No newline at end of file From 0cfe5db0f473e9848c58991377075b8c6386a80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 20:57:13 +0300 Subject: [PATCH 029/117] Add Host Features and AbpHttpClientBuilderOptions sections --- .../2020-09-17 v3_2_Preview/POST.md | 30 ++++++++++++++++-- .../2020-09-17 v3_2_Preview/host-features.png | Bin 0 -> 60857 bytes 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 docs/en/Blog-Posts/2020-09-17 v3_2_Preview/host-features.png diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md index fd60d67128..16bd501ad6 100644 --- a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -86,11 +86,37 @@ See the [Kafka integration documentation](https://docs.abp.io/en/abp/latest/Dist ### Host Features -TODO +[ABP Feature System](https://docs.abp.io/en/abp/latest/Features) allows you to define features in your application. Then you can enable/disable a feature dynamically on the runtime. It is generally used in a [multi-tenant](https://docs.abp.io/en/abp/latest/Multi-Tenancy) system to restrict features for tenants, so you can charge extra money for some features in a SaaS application. + +In some cases, you may want to use the same features in the host side (host is you as you are managing the tenants). For this case, we've added a "**Manage Host Features**" button to the Tenant Management page so you can open a modal dialog to select the features for the host side. + +![host-features](host-features.png) ### AbpHttpClientBuilderOptions -TODO +ABP Framework provides a system to dynamically create C# proxies to consume HTTP APIs from your client applications. `AbpHttpClientBuilderOptions` is a new option class to configure the `HttpClient`s used by the proxy system. + +**Example: Use the [Polly](https://github.com/App-vNext/Polly) library to retry up to 3 times for a failed HTTP request** + +````csharp +public override void PreConfigureServices(ServiceConfigurationContext context) +{ + PreConfigure(options => + { + options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) => + { + clientBuilder.AddTransientHttpErrorPolicy(policyBuilder => + policyBuilder.WaitAndRetryAsync( + 3, + i => TimeSpan.FromSeconds(Math.Pow(2, i)) + ) + ); + }); + }); +} +```` + +See the issue [#5304](https://github.com/abpframework/abp/issues/5304) for the details. ### Account Module: Profile Management Page Extensions diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/host-features.png b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/host-features.png new file mode 100644 index 0000000000000000000000000000000000000000..c803f8599b4b10e81d5acd9cd89f234f7a0e33fb GIT binary patch literal 60857 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 M%0R13)8X!a02c@})&Kwi literal 0 HcmV?d00001 From d6463f8bcfc71a942e8788da2e55a67ada4cbd7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 21:01:08 +0300 Subject: [PATCH 030/117] Update POST.md --- docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md index 16bd501ad6..f0199a28d4 100644 --- a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -56,15 +56,15 @@ abp new AbpBlazorDemo -u blazor Open the generated solution using the latest Visual Studio 2019. You will see a solution structure like the picture below: -TODO +TODO: Screenshot * Run the `.DbMigrator` project to create the database and seed the initial data. * Run the `HttpApi.Host` project for the server side. * Run the `.Blazor` project to start the Blazor UI. -Use `admin` as the username as `1q2w3E*` as the password to login to the application. +Use `admin` as the username and `1q2w3E*` as the password to login to the application. -TODO +TODO: Screenshot ## What's New with the ABP Framework 3.2 @@ -118,10 +118,6 @@ public override void PreConfigureServices(ServiceConfigurationContext context) See the issue [#5304](https://github.com/abpframework/abp/issues/5304) for the details. -### Account Module: Profile Management Page Extensions - -TODO - ### ABP Build Command We are using **mono repository** approach and the [abp repository](https://github.com/abpframework/abp) has tens of solutions and hundreds of projects (the framework, modules, tooling, templates...) with all of them are referencing to each other. @@ -142,6 +138,7 @@ We will use this command to build the abp repository or a solution inside it. Ho * Improved the feature management modal for multi-tenant applications to group features on the UI and show hierarchically. * Added `--skip-cli-version-check` option to ABP CLI to improve the performance by bypassing the online version check. * Angular UI now redirect to MVC UI (the authentication server side) for profile management page, if the authorization code flow is used (which is the default). +* Account module profile management page is now extensible. You can implement the `IProfileManagementPageContributor` interface and register it using the `ProfileManagementPageOptions` class. * Improvements and optimizations for the [Angular service proxy generation](https://blog.abp.io/abp/Introducing-the-Angular-Service-Proxy-Generation). And a lot of minor improvements and bug fixes. You can see [the milestone 3.2](https://github.com/abpframework/abp/milestone/39?closed=1) for all issues & PRs closed with this version. From 6e04347a899c4e5e2b57ed2e47fc3ac0ee9b65d1 Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Wed, 16 Sep 2020 21:10:18 +0300 Subject: [PATCH 031/117] docs: add further vs code extension recommendations --- npm/ng-packs/.vscode/extensions.json | 15 +++++++++++++++ templates/app/angular/.vscode/extensions.json | 9 ++++++++- templates/module/angular/.vscode/extensions.json | 15 +++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 npm/ng-packs/.vscode/extensions.json create mode 100644 templates/module/angular/.vscode/extensions.json diff --git a/npm/ng-packs/.vscode/extensions.json b/npm/ng-packs/.vscode/extensions.json new file mode 100644 index 0000000000..5db7bc21ac --- /dev/null +++ b/npm/ng-packs/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "angular.ng-template", + "esbenp.prettier-vscode", + "ms-vscode.vscode-typescript-tslint-plugin", + "visualstudioexptteam.vscodeintellicode", + "christian-kohler.path-intellisense", + "christian-kohler.npm-intellisense", + "Mikael.Angular-BeastCode", + "xabikos.JavaScriptSnippets", + "msjsdiag.debugger-for-chrome", + "donjayamanne.githistory", + "oderwat.indent-rainbow" + ] +} diff --git a/templates/app/angular/.vscode/extensions.json b/templates/app/angular/.vscode/extensions.json index cb49f612c3..5db7bc21ac 100644 --- a/templates/app/angular/.vscode/extensions.json +++ b/templates/app/angular/.vscode/extensions.json @@ -3,6 +3,13 @@ "angular.ng-template", "esbenp.prettier-vscode", "ms-vscode.vscode-typescript-tslint-plugin", - "visualstudioexptteam.vscodeintellicode" + "visualstudioexptteam.vscodeintellicode", + "christian-kohler.path-intellisense", + "christian-kohler.npm-intellisense", + "Mikael.Angular-BeastCode", + "xabikos.JavaScriptSnippets", + "msjsdiag.debugger-for-chrome", + "donjayamanne.githistory", + "oderwat.indent-rainbow" ] } diff --git a/templates/module/angular/.vscode/extensions.json b/templates/module/angular/.vscode/extensions.json new file mode 100644 index 0000000000..5db7bc21ac --- /dev/null +++ b/templates/module/angular/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "angular.ng-template", + "esbenp.prettier-vscode", + "ms-vscode.vscode-typescript-tslint-plugin", + "visualstudioexptteam.vscodeintellicode", + "christian-kohler.path-intellisense", + "christian-kohler.npm-intellisense", + "Mikael.Angular-BeastCode", + "xabikos.JavaScriptSnippets", + "msjsdiag.debugger-for-chrome", + "donjayamanne.githistory", + "oderwat.indent-rainbow" + ] +} From 28effef54980c58d5731a5d62604c3178f408f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 16 Sep 2020 21:27:45 +0300 Subject: [PATCH 032/117] Update POST.md --- .../2020-09-17 v3_2_Preview/POST.md | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md index f0199a28d4..de2ef9cc15 100644 --- a/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md +++ b/docs/en/Blog-Posts/2020-09-17 v3_2_Preview/POST.md @@ -145,4 +145,52 @@ And a lot of minor improvements and bug fixes. You can see [the milestone 3.2](h ## What's New with the ABP Commercial 3.2 -TODO \ No newline at end of file +### The Blazor UI + +The **experimental** Blazor UI is also available for the ABP Commercial. The [Lepton Theme](https://commercial.abp.io/themes) hasn't been implemented with this initial preview, however we are working on it with the highest priority. + +You can use the [ABP Suite](https://docs.abp.io/en/commercial/latest/abp-suite/index) or the following ABP CLI command to create a new solution with the Blazor UI: + +````bash +abp new AbpBlazorDemo -u blazor -t app-pro +```` + +Please try it and provide feedback to us. Thanks in advance. + +### File Management Angular UI + +Angular UI for the [File Management](https://commercial.abp.io/modules/Volo.FileManagement) module is available with the version 3.2. You can add it to your solution using the ABP Suite. + +TODO: Screenshot + +### Profile Picture Management + +We've added profile picture management for the account module, so the user can pick an image as the profile picture. + +TODO: Screenshot + +### Two Factor Authentication Features + +Created [features](https://docs.abp.io/en/abp/latest/Features) and [settings](https://docs.abp.io/en/abp/latest/Settings) to disable, enable or force to use 2FA on login for the tenants and users. + +TODO: Screenshot + +## Other News + +### The ABP Community + +**ABP Community** web site is constantly being improved. We will add "**commenting**" and "**rating**" features soon to increase the interactivity between the people. + +If you have something to share with the ABP community or want to follow the project progress, please check the [community.abp.io](https://community.abp.io/)! + +### CMS Kit Project + +We are silently working on a project, named [CMS Kit](https://github.com/abpframework/abp/tree/dev/modules/cms-kit), for a few months. CMS Kit is a set of reusable CMS (Content Management System) components based on the ABP Framework. Some of the components currently being developed: + +* **Comments**; Allows users to comment under something (a blog post, a document, an image... etc). +* **Reactions**; Allows users to give reactions to something (a comment, a picture... etc.) using simple emoji icons. +* **Rating**; Allows users to rate some content from 1 to 5. +* **Newsletter**; Allows you to put a newsletter box to your web site to collect emails from users. +* **Contact**; Put a form to get message from the web site visitors. + +There are more planned components like articles, tags, votes, favorites, portfolio, image gallery, FAQ... etc. We will document and deploy these components when they get matured and ready to use. Some of them will be open source & free while some of them are paid (included in the [ABP Commercial](https://commercial.abp.io/) license). \ No newline at end of file From 8128df2256ad6b4914308ce774f6e3ce0603a847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Wed, 16 Sep 2020 21:38:57 +0300 Subject: [PATCH 033/117] remove update confirmation from account.blazor --- .../Pages/Account/Manage.razor.cs | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/Manage.razor.cs b/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/Manage.razor.cs index 77cf43327c..b1e1b6c2bd 100644 --- a/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/Manage.razor.cs +++ b/modules/account/src/Volo.Abp.Account.Blazor/Pages/Account/Manage.razor.cs @@ -58,11 +58,6 @@ namespace Volo.Abp.Account.Blazor.Pages.Account return; } - if (!await UiMessageService.ConfirmAsync(UiLocalizer["AreYouSure"])) - { - return; - } - await ProfileAppService.ChangePasswordAsync(new ChangePasswordInput { CurrentPassword = ChangePasswordModel.CurrentPassword, @@ -73,12 +68,7 @@ namespace Volo.Abp.Account.Blazor.Pages.Account } protected async Task UpdatePersonalInfoAsync() - { - if (!await UiMessageService.ConfirmAsync(UiLocalizer["AreYouSure"])) - { - return; - } - + { await ProfileAppService.UpdateAsync( ObjectMapper.Map(PersonalInfoModel) ); From 9e01add8548201ca6d559b4d1eecc3a89fdb98dc Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Wed, 16 Sep 2020 22:28:28 +0300 Subject: [PATCH 034/117] fix: use AbpUi instead of LanguageManagement --- .../components/extensible-table/extensible-table.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html index fdf6e5e092..23e547bc9f 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-table/extensible-table.component.html @@ -14,7 +14,7 @@ From 9727d07b57cc4dc2634a53f0243003bab3c1e588 Mon Sep 17 00:00:00 2001 From: Galip Tolga Erdem Date: Wed, 16 Sep 2020 23:52:55 +0300 Subject: [PATCH 035/117] Angular AzureAD integration article --- .../POST.md | 123 ++++++++++++++++++ .../app-login.JPG | Bin 0 -> 52315 bytes .../auth-diagram.jpeg | Bin 0 -> 48955 bytes .../azure-app-authentication.jpg | Bin 0 -> 132027 bytes .../azure-app-overview.jpg | Bin 0 -> 104227 bytes .../azure-app-register.JPG | Bin 0 -> 122377 bytes .../azure-app-registration.jpg | Bin 0 -> 64047 bytes .../azure-app-secret.jpg | Bin 0 -> 111416 bytes 8 files changed, 123 insertions(+) create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/app-login.JPG create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/auth-diagram.jpeg create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-authentication.jpg create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-overview.jpg create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-register.JPG create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-registration.jpg create mode 100644 docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-secret.jpg diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md new file mode 100644 index 0000000000..5d525c43ca --- /dev/null +++ b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md @@ -0,0 +1,123 @@ +# How to Setup Azure Active Directory and Integrate Abp Angular Application + +This guide demonstrates how to register an application to Azure Active Directory and integrate AzureAD to an ABP angular application that enables users to sign in using OAuth 2.0 with credentials from **Azure Active Directory**. + +## Authentication Flow + +Abp angular applications use **Authentication Code with PKCE** (specs [here](https://tools.ietf.org/html/rfc7636)) which is the most suitable flow for spa applications by the time this article is written since implicit flow is deprecated. + +The most common question is; + +> Where to put OpenId connection code in angular project? + +The answer is, **you don't**. Abp angular application is integrated with backend code (HttpApi.Host project) where it loads the configurations, **permissions** etc. For none-tiered angular applications, **HttpApi.Host** project also has IdentityServer4 embedded; also serving as **Authorization Server**. Angular application authentication flow is shown below. + +auth-diagram + +> What if I want Azure AD as my authorization server and not IdentityServer? + +This means your application will be using AzureAD user store for authentication. By registering both angular app and HttpApi to AzureAD, authentication might work but **authorization won't**. Users need to be registered to Abp identity system for auditing, permissions etc. So the flow should be 3rd party registration. + +## Setting up OpenId Connection + +Lets start with adding OpenId connection. Open the **HttpApiHostModule.cs** and update the **ConfigureAuthentication** method as below: + +```csharp +JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); +JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Add("sub", ClaimTypes.NameIdentifier); + +context.Services.AddAuthentication() + .AddIdentityServerAuthentication(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = false; + options.ApiName = "NonTieredAngular"; + options.JwtBackChannelHandler = new HttpClientHandler() + { + ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator + }; + }) + .AddOpenIdConnect("AzureOpenId", "Azure AD OpenId", options => + { + options.Authority = "https://login.microsoftonline.com/" + configuration["AzureAd:TenantId"] + "/v2.0/"; + options.ClientId = configuration["AzureAd:ClientId"]; + options.ResponseType = OpenIdConnectResponseType.CodeIdToken; + options.CallbackPath = configuration["AzureAd:CallbackPath"]; + options.ClientSecret = configuration["AzureAd:ClientSecret"]; + options.RequireHttpsMetadata = false; + options.SaveTokens = true; + options.GetClaimsFromUserInfoEndpoint = true; + options.Scope.Add("email"); + }); +``` + +> If you are using tiered (separate identity server) application, open **IdentityServerModule.cs** and add the OpenIdConnection manually to **ConfigureServices** method as following: + +```csharp +public override void ConfigureServices(ServiceConfigurationContext context) +{ + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); + JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Add("sub", ClaimTypes.NameIdentifier); + + context.Services.AddAuthentication() + .AddOpenIdConnect("AzureOpenId", "Azure AD OpenId", options => + { + ... // Same configuration above + }); +``` + +Now we can add AzureAD settings. Open the **appsettings.json** located in **HttpApi.Host** project (or **IdentityServer** project if you are using tiered application). Add the following; + +```csharp +"AzureAd": { + "Instance": "https://login.microsoftonline.com/", + "TenantId": "", + "ClientId": "", + "Domain": "domain.onmicrosoft.com", + "CallbackPath": "/signin-azuread-oidc", + "ClientSecret": "" +}, +``` + +Keep on mind that **App.SelfUrl** + **AzureAd.CallbackPath** will be used in AzureAD app registration. We'll update the AzureAd settings after registering the application in Azure Portal. + +## Setting up Azure Active Directory + +Navigate to Manage Azure Active Directory in [azure portal](https://portal.azure.com/). Go to App registrations on left side menu and hit New registration. + +![azure-app-registration](azure-app-registration.jpg) + +Enter a name for your application and register. **App.SelfUrl** + **AzureAd.CallbackPath** as redirect uri then register. + +azure-app-register + +Now navigate to **Authentication** on the left menu and enable **ID tokens**. + +![azure-app-authentication](azure-app-authentication.jpg) + +We also need to set a client secret. Navigate to **Certificates & secrets** menu on the left and create a new client secret. + +![azure-app-secret](azure-app-secret.jpg) + +**Copy** the secret and update your appsettings.json **AzureAd.ClientSecret** field. + +![azure-app-overview](azure-app-overview.jpg) + +Also update your **AzureAd.TenantId** and **AzureAd.ClientId** fields with the information located under **Overview** menu. And that's all. + +Next time you hit login, you should be seeing login screen enabled Azure AD like below. + +![app-login](app-login.JPG) + +# FAQ + +* I am getting errors when trying to login to AzureAD. +* You can check [this article FAQ](../2020-04-27-Use-Azure-Active-Directory-Authentication-for-MVC-Razor-Page-Applications/POST.md) which covers many errors. + + +* But I don't want my users to see default login screen. I want my users to login **only** from AzureAD. + + * You can **mimic** this behaviour by customizing the login page and instantly trigger Azure AD provider click. For more info, you can check [this article](https://community.abp.io/articles/how-to-customize-the-login-page-for-mvc-razor-page-applications-9a40f3cd). diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/app-login.JPG b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/app-login.JPG new file mode 100644 index 0000000000000000000000000000000000000000..94500a4f1527afb548a971de184dd6318c75b494 GIT binary patch literal 52315 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

?9;HqARYq*AZ|5o|)^4!(mf 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/auth-diagram.jpeg b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/auth-diagram.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..dec4a66a17d6ecd3be770b3880c9bafeed8d7c15 GIT binary patch literal 48955 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-authentication.jpg b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-authentication.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5061118aa38ee4c05deac5556b4845fcde3c0215 GIT binary patch literal 132027 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⋛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

N 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%0A{h$tiX%d=#{F^occxHr40~b@82B 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 M{y(}e{omRD1MOqr#Q*>R literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-overview.jpg b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-overview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11053062e2b38bafed086a7e0397314fa22ce7d6 GIT binary patch literal 104227 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�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¥Y!!uiYmPynAxYs8&wN+hR{blyiPxb+-Ol} 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 literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-register.JPG b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-register.JPG new file mode 100644 index 0000000000000000000000000000000000000000..68c180cea002a25cf6dcac430d1368ba19d464c4 GIT binary patch literal 122377 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

plgOfw1$WkZMqP9xf=FB3JI{ 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≠d?&X=;>==%WGG;4@*v3 z6i|;xlEKVyL5)bbC60q+o0~tGu()C8J-j?VCak&srRuIm&Usj-vg@rIk1{EBxj^~O z;}Oy&u{fML9|mSV$Zs9keW4RL9-Gs-A6d;Y;5OtB?V=U}t^A!Lp#h!gV++O~J_#Q0 zIDRP`M*&&3*$z9>DBd@!`x0R!t`WlqOTZ#xU8lU~?~Xz4HFihide?e!Oi3~?UnN@K z{(R2AY4m9oGw;V13U~JgKqYdbLFFRDe;|Z>bro{J^(lKrtrNb!hR77{Radf&xwfP@ zNY`fZ1uYa?wnM}^3ipVK#@G-U8;Er1C8>_7xmg{h<%EMLQ@LU9r837pyKxkJ@AKMW z>$ttkXDvKIL$;m^yG((MQ&~uMSFP`i!%g4Ik0-c$KNIEJvhK{%ubMeKU-ZGT9Nj?^ zLBmI14wfgaQ1c$qu~55_*&MDY%!6^rY@`bemN}kCC-uE)X1`cVqD^6fDmj< z<9f*LYg?3wP8@yp)ol*pg`D-bJtYmi=1kI=iMHl{R?oOa)*s5iFP+gwWNb>3Fp^o#4_e zv)1UPL-7V9=2tS&w&9&-l|!pv%uXpWtW$Veu;z#0h+5U5Jx*8#m5(tgq=pnWeI3A) z7KN1exT#)Vc-s=sEo&;0QQ2uBThEj6L|9n-DqQy@wi7{CfIlH|1KSQQEZfXhM+VCg zYk}xB3SOR7RF%|9?kZlo?s~ORgY$Gsw#09!DB3kCM^>FFxk)u;mTnM2gK!@S2PzIj zaN#XWVk87!Gk}8+TEL%SF}BwvYGgkKlCh6{m`lrTs+z50AY@im$X4`RE}V7-eholF zzqBVsSW_nmkOWnrru2DC4}uG>7lT&*kpVF+Ti7^Ke^NXG?Y<=X(6;PA;ij=5e#TaS z)2X^FY%YwWfs|B8;#JhS4#=B0*=-znvb}>nKHeQS=8xAMQTUlAnPyYf*=k%2u+)oZ zoPj5UNs>RtsJy1w1aZ+%7%0gSR~yr!(enIGu%d6%)~7umHT^i*%F1u`Ewj^fTntwp&=$e+T_c2b$gnhPhI_x5i0z87e`jgotmO| z&C-stGTl`EdYUmN7QFnH$}}2)JnJDo+pXgmVlW2!^M8%?a(C2KuaamIs^IZGa zO@e2PMXOueuVkXFRv(?I3RmV(0rKa}+V26~m02uCfRuq_e}#L$$YC_ysNJOp*OcmR z!(C~Tpf%pxEAGfCEjZ7e@`?+z1W!X>(dg6!;yiT|YKTY#JB0&ZD`rEAxK0r7L!G54 z1&%e!jI9GwKxSjT-(=*cRZj0-i2k(ufaTMEIM?OY2OKvDe?p(J=J9|u=>|y0ytKcF z^muE)FA35ol$*sZyY=Z03-)d!y!P!n)!o;bgVw#B^)ywFk7&BLmcl)Ro)z=ntF6LqISb3W?xz3Mj}#B!*dW(_YuE`w%;5DZ~s z066x=(z*CeV8glsp;dcPcX66s@og*FCgZEN(Qe@H5aZtssKm336re;jJPNKvV#1r= zyH4aQs{Xws63v=&7T}FxJA79Lv%56#Fyn4}IDho0V;ExTgPi!Dfb7{pi1A4yoVAuZ z+8)!Jue)x8A{L~7J|rnLhE!C`bD5}hCfn|&s{o<`+_b_sHzhMJcI4P_fJi`;mi~|k zMuRyij!gg&QG)mxm<)bJsUL5uzTStJ6N>acJpFTaWxS?)RLH(@>Pf#K_w^^`n~&}= zpF2i;gv^G6ULpj#Wnj7U7Rj3bnht^(>ii){?&`d*r2uu`>DcF5Jya-#|~Cygkhj;^(0->CDC=_^ZuJleUv6( zb7?|SxG;7n<=slqrSq+%mqj(%l}_$<(RtAKFdtL1gFa=C7QX#XEAG6;_$6Va)YrTR z2PR(!zsl`f+m=y39{zQ553gQ3M_2kCyj+N6qZkpU4*H3pB=63vB2$6K-oxvW0VY;Nxg`~a%8fK* zn)Kf#a{IBC$zuXov&~vCg(nXiJNh%n8#y49RafP-v_XUg4)*508t9@w)aUCouCn6R z(Y>{B?W?2ys{*c)$heLeQVuY11Y+$D16j+XfF20$F!hMZBYWDLbKb+8i4>;hDWiH@ z7rDyW&modQ?^OYE`(E#GWRCh9?*S5k#-*=pCHiiYOGt7C8Ow;5wa(pL6E$kSY;cX% zap|#I>G+F9sIf$$Tobntp&PV0C7H&teHU-cd=vv9IU{q^yH-~dPkH@82@bq|vn z|5;Z=dQR?bpUMs??pi<0Pa5v;`gHkL!{A|Xy8W}?IZ_r?h994}(+waVp-7i@Q;6e- zE(CbNxhWr2@i?aoqySL-N|!GS#Hh$zt*c(`z_uYOes6p1X7tSquRoAG+S4|{%wQi7 zGbsx~M|!BH;6G3xJFRoIXp8@74ivc;^{VlCq*QfHO>b4)gKS1kTbC@0yZ3jmI1auX zMJ&G#dT!q9`;scCtI?9y%|YU@B{*b*XI9v3Yk!jD`@fVS$!UTyh%A%c#iXIc%qGA( zcx+iMsghL6uj7Hr8VRgoM&U+Em4~iS!3cT|ZN+)P#7$}+6YTx)>HXd2+@(8(MlAEO z0W`lj<{R)wvE4Kj{-(T-$37X=6eHr}IuC3uvqyVQs_l{|Kj_Uj7g?OZ+vMPd3Z_SF zpK2vY5#&%3vzTi7JZMLX%mFxRO>ToAx~(O}DUc)~<)v2uW8?Qmazd9n&e39}UuY?B$OE5t z!)i;%MCc{5@skPX{`Bh&6yfHgxao&69guWe*_QYj3YchU9-A8!-Bd00%OH6vRC#S_ z-89`k4)e{bvps#sHO-hI{*`|m4I}s?1`r8Mq{_hX*ufZ|pS}zZPEg2Mit)0j+r2R# zAL+4Q*Go3Iol4e_=QVFG-M{(9c-`w!j-I4Xt;IAwh?7p7~U{uXn}a1385x| z;CpWZgdGJqhmw~zwe!{2K3zX+c;m(S)`KgCOdbM)3tA&DP)x|>fh3%qdMI1bRHtbr z6bJ&A89%B^n9pu~criUVF=H=n=t~LjY<=B;t{u&8`TtHbjWy9@MbWV;5DcAkSmvl!sRU zSrOT&X};wi2cB~dcZNe;MZa9_FZTD{ce>fLkRX#SJ@%1tX6754rfI@j)#3^k_|kdO2dQ2W_u$+b`)aD;o>f zo~dHj6E%PW+#JqJaD!3RJ#G&zg@KB)zW2~NbKU&MR|bifqXm(4Bo~*t7it#^+aRYY zP(p3W-j4S(@LBic>fyszd~LqGO>>_PY;J9*Ey^a}zWwQo_&Zqxnt=O%=Hl;LwRpht zid3B zCJKu>I+DNerCZtHui54&Pu^iPmia&@BV7*!<+-mDzokeQ6>bSxRhRYdh-6z?r!D9w zzU8y{aVwmbJ{(4WhjEhEq>p-`j_8yGt?*+?$yq4D_>(0?=*0^9>cEo{# zFuZO8pcP5Gn7Awz3f5oZ!4m0uKrqq1hBocDV00OnSX*Z>{3$luhKPp<>xdGx^%L$BYvU;@%O~m{2Ax6Amns;MzLI5ya$moc zBy-TL$N$M(ZO#Ta`VN0sy(#3AUFGpS`dx{E@72|=rZ2-%jX^9$gzG=m^s zhEA>Izu`Fk9nbOq!cQ>}*=C{iRW)2LP@hnLQb}p-@nfX=+g#YqSFTOZl5EhoakfuC z$}z`ChBIviCFuy3!mkmUOWti+skdikytnTvSuN>hN?wx@wiO7X_j7V71Ee2H2)ndp zFl*f7jPf68sS4u*LiBUZ?>q$lpvgjbM(-|`(!KR~wKBLAq%%G91mG)`={MpxHu$3C z*I4^FuRF=HLZ&SDJE=e(+m!ckHL852=#rszQcVdjRCTV?Zu;{kY@`nnvm{S)Av00v z0OnEYwC)QU3D0<&qgD<|o8#xL9QAEjPa!5eE}L_oy-9oeGrilksjou=VJRb^+>>AZ zFi`z+SN|}2|1>UKk|BRKg{AUsx;YKYL2WdG<`Lm2VTI@x-?UXL2>W6Z)EIvl642Z* zR=p4nldsN9W6``h)S#OFxsL8r&sk9EXQ3fsIobLTJ@k(_H=Gz0_sw6n}`6!26C416zOH`sbJfurA8YH?CWeFg-ZJNO?qL>H~n^V&bIH z%0(M!`^nBpf}TILV(2shmE+4Z>?iVJkl|ITt;C&rPiy++rf0fbCuM4JK&lUM7SSwje!LWE~M*;R5Yd8>d~K4 zre%`Ymr$K(jF*d(w!z!Fehgxv)75%()E_)p1rNfZlI#>y+?I#c2M-gwkl328kjm!w zL{_rP%~p3`Z1iZg>cg;9R(sbRskT;zjA3bvb1OT~X9DD~t(`EPL>2#xABp8tA_?2Y z4A=z%MB7gGj=JOh-q80OX&Wjz`h(o2QaN2pubWH0NM>B%k+t5!Y$IF~N4(tY>RMs1bBnUIz`NBS?#kqTt4hNnc8l>u+R5o%%2WG(U5g{=dP9!V1 zQE+g{ysgyEexdGfb+B{zBK zpxjzspF|&j158*WdMH|{IG*aMb>1{#1xyEb#AD_R#bb`|V|a8-v8}%#(G6SKEp}>M zvF&Z$js_Q!y~p(~$X4z$@Y48Za=)Bh5fR9!cxNpGn{^zMIZFlT{Ya$Ii zj=0|6-m(KQ{LtIv4G5K1gp_VBNs}N@T&Q8_x#IIH8D`0A0kp3^MkT0U6P!;yz2yKI zU^B89^9|F4;Xk7Inm$VqKt02(=yodrtAm6WoX-Ln)-PeRHt(?x>Ts;Su;LVW@XbHJ zM3->W;!2j9rOkvl3lq(A=OUBS7h;BN9@>04{Uwt2RwCAK<1>Egg{}%|m3Yv9)&s$% z=t7Dqf@zzN!b3`Jc)F&&R4?s%NfEk|=4Wh{9Q!3NJ)2hfy|q^3D3PY~DIz%SIJ=)C z`FT{zwrDYFt4}Ms%jKk^)IEsf{pPXP)6HC6WRRbG_VZW$?X|Dg=j}|d4kbmO`<`x@ z%B%ZJH{bVJV!hs(_^%?-*FL5tikE++RC)pAbnUf+`Ol{TTDd&J9-a-8qNBq2ZaE6hxYg+H zN@O)IEkFT%?)Gcbjo6hrk~dL!kWW{Jv2P*uX?w4 zI76iAI{Mkx6UhU!`&zHgy+A!^$^?O4e@8$1=-AKrg#Fq`-O6*JC(VfrCv)&B$1tZv z|MaWBb;!9i6iV|+i5JE1E&SAYfbSg3!N)K~B2(luz)Za!uHAU<{q_U7pOS-Hl$zXr z`BqQR(q_y<*D8+BaqkRuQV4}c&I1_Cr6_!t?K3bRwEG;Pw5)gm`utgLR`g+3&~}E= zL$(6)1?l=l)&&QZ&%&-)XMgee3{qI{#$<6_Ls}+-#rKMH>@WQ0subSH{TJHK^PkQB z5BpJ7wW{{sqr)mST7s5ZRW;gLL8_>cMrua|t-Tc&T58qaHDZt2wfBl0w3nS2kxJyc z&)<{#FSzdqUOe$4Idgu`&p3|vabI6FPJguNhiTI{_*kIFz|==gjo`P{adyJQSERdS z@j9GP^ck~|+gv9z*uY0Q)<>G_ShlWshj2|mW{TZF%;oKy?8l;yobL91bAa@A*3ac_ ztWhC{jyA>z)W%~?25@z~9b&U*bV5c=fcFRT0^RUw-`Ny)HQ32j;E;CFc?=a-RvKfw zhSYIlykR90&-10`?nhSR7iSN63Jkd&3^?qg&EHr*y7@*6DSq(>xJSUmJbbm?Wje}v zQ%0p1$^y2k{`Vp>RB;6^yUlA`*&iP0Q6~Fss!QtU4+w@0Y%FF&$9grqU`)mN>t!ZI zVGqioA&k5+ZjD!JjKSh^`ZKen3}?R2=FNr?YLWC8r_2r7aJWFfcuV??8b(Sza(}w-@oz)OLcs-#>RyplnBY1Y)#CJGT`SggT-(55pSA{}fPM{O{ zklj5!2Uw=3*j>^Hs~q9k+P&KKv-&Fe!3P0AkqH}jB}F}Cfz$kk+FtT zK1^JFAO2~{&UAG~_+iV9)NH3K>xbvo7{p;7u5w>S8C}F7Aurz4emdLRX*hl?4o5KP z-A8!eR&Mnf6d0$@aL;>#cx}(0{iKhF^>xfBXFy!YgZ1^T_Xa`pe8VUI{9HbFB?Gi!w09#@<9mNuVP#=w z#)~kpM+V8MGXMS0{xG#`@2XeDxNog}`b&@15Fs-)62ERTGeO;W`%79hBaU=S6mN5~ z*UVHqye6D;(E{PNA&-BHO2n+S&zQ<+wcVhla zVLifvyAOj};B)OCxAieR?y6L1=67$~#tAtI=Nkk4)m$j~$<+YG%aZSPu?9%4Yh%X} z2?MsN*GX|1s*q)oBZ;=i((0-<*YyK6EOWS$46`LV;y(}&$>>zuj!svT6-j!k%I_6Y zkZ{8-Q0Pgb-t+-HwWta5Ano>cQ&Q2FaNE`lU5T$z{59e!$p)h!lmU)JC~Qh0OyW8t z+N7|VpEe*X0am#9KjB9{@frs8Vbc|I7@3TBoFS0gCu@pEP2700AwIny zkYPF?!Zg(Jdi|A8U*RJ@(MI{~>7NA(>CP*0!Zjx6WO&?VMqWfM1*q3?Bs*srf4e7= za@6HaKQeXQ;e;oY6QjaJ`>W+QUF_|tuH7>cl1>Qw05tp>BE(9P!>)YL z0_H~6#u}HK@{c9rumP^9dZQ9zUK3&^+!`Z%qE{r7*UFNj@S`~cE4Nxo&#O?fhfTzA zVU>!zs-rGk@k(dKQ5{r7F(8yQc{hYR&B*u_%aCF~+7O&(e?w&~>PkdQ<0fJ#Xt`;6 zGh2%!X2lJ1Twr+b`H%pP+0tM@v7(9U-*+bm%XWh#fzSdJCatb~H}-nV%pZ9@`gBW& z1c{ds+;3j$&uaBQ5U;z*{3S@9?2IOwVi9rXQ^;geccb8KV!nOh(ryh**;)x*AKI;I z)W4Lu*Yws9x%fu-9f0}2U3L$`5&U*MI$QIytWtyDRW-7=GPq~+C2l-sYo^*;#PR$? z7zPm~Q%|xY?^IrK)M=`dXnUizwg1T1V##c=M^$x@(Y^NGTgKc7;Iq5@I!G&3W;4D~ z+NE+_B=EWMZ~t886b%Wo*^Gv4a2GpRXOsD+4aBGn8M+}cmRGV|R&j6mzH8jnU_GjY zr*?s#@#1BW3Na7&XEW!33)g8))UH56`|QMVBbYFX@H|S&gJz%CH_E%U7Y1wn!k`x| zXFZtT=({}5^`$&2D{>B4+9&Q)EYh;gS6Y?HO*?TPUcja8e?$(4aOWjHT;ipH{sLkG zFu@1R4x7R3D8{KHO&7jIT4IVRE+>*~fE~6XYZopo88iOKAGiV;=K6AOae{bJ^HJYS zmyaipc^RqMx2i4ti zLKxH<7!V{wBldw>2L?Wne&y(6A!x$U0r&9-2A9`Y+9dG5PI6PG$6+5GWoS8SZ^q5;1W{stV}mZ{TC?< z+9j^OY(!7>=W4F9)-(;VBklIAE(=zX>#J@he`^LL9#O3RCF-_suuip1uy~&(J;XzrXM8RwnIN3#7qbV;tOKmyKMAW140TrpcRiqh$=bx( z%}fX&tT^dXy)4Sx7;oIm;HZv0I5T>oJM*=&;r5S2BXqj4{<)2|_@BfI424U3kbZmP4h+h_gdC2kohy5}vaTZh(GTk_v^>3*5id>0ihyIWR5T@^FM zEs?B`jTdzI%JcHdpXKvh=Ex2;;?CHW3&$b0Rz+nYlqhY$lYDU(ZTROaN zHSbzM!{qW|_DorPSzoGs+(Q&xhlY8X)vD*VT3&qPgU{QKhZ*fV@~Ly|pQcUrFQqA( zckwVReESci3Igm#u-SK%hm?s`HvFvwl)WdSLz>Jsp~M4LQlG6?wd;5rak|#S(W>{` zkpGSS{ksnroQF{rxq){`9DC`j5|_zAylcBETwLktcDz554xPnEeLJ+^UkA79s^%Xa z_P1&ZkTs@*M3Gt~?U_8UVmHoOtLHzS&K>(J$PVZvUH2YJRw&^2t29!17OGbpF*kP| z4u@}A=0&j60rl7a5Ktx{(2bAupql>=p-tCkZ zOn_Wl8fUu{>8dX9$7+=lbEtmZY1mYGyT`B z5(F-05<8m@kx6P5NCyfriO5 z!&qascpL2!zLHAWQ(MF5wN9T#T%0281Amv-=9j!Of7BQ9F`$s+c>Gf*TqsJ2#~XT` z`5KX{hl{r{26c1w-e&N z|A+BUC}u!0AK5`aC0C_ne03P>s3DH`*_5bGNB&@V+w9`p^tE7B-;dUPI^|>8Pa%k@ zoiT!BWQB|+JekyxvMx$5zz}158h8)>Q9UDBE%hSagl|N+Iwa^aT01@xi(mW}{z@X; z-y%d4A;*C{*O`9z4$M(7id{;KVntp<7Pq%gS5ODPHmH=qW|r$8J_$03=HUeyteUj! zzXe@1#QaU~%4v)vq(BTd4``p`Ix<~QhDCcH!mIKmwkwN@zyC=69-SespyS~nFgwNh z%A2!RUuh2x@zfb_e#E*Axy(1=wNd@& z$3kMQ08WRduleMyd|kTF^;W-ov@s-cd!NAN zH_r=z?vY|FJl)oO`u9$Bz7#fF@jkp7n{0lcxqA(B-nS})5B}sh2jJAaOjf!|5a#mC^X=i% zyC@zT#cz^7`Kfoxr2YhI6VQ0QPiNyoE!r`EqMMNxK&I~tK19v;GvEJna z%az#aF3ILKe(N`P5ptYl)cVWtbZz{DIwqdWP)mN`6mIL%Kel{}brQBHvlmg!9( z%p(1HV`D>_|7$?<$-U9NEtB`;vxM( z;=ou>t;dc9_-4`55>E(eiKwfz(e@7vbPE?qUX^m?fY1HwFJ7OyXr@OGdbBPG2=>!S zs+8#*POuYBZ$mI$Id**|7^{*176qGn1$dP&TkT9P3T=9mzc03a(nf1VH>OhAxS2R0sK3|Y9uirGK8hi^x{_c1X3%V<3%!js7IR^~m4ztD zPkyZJ_&|;Ln{qd3N)G2azxk)v*7__V1y{uv$Y3~??He=q`=CMw5!y7ym@-}hfkX)J zTk1}!bUf1d{Jlfq@>?)`fy_X9h%&6H!H0JOaY{E)QZtGtH;ONd7+{2p{B8#s6_KYl zg8}Zjad#n4ZctUf)I_hvf^XrOO>lqWz+$T#2i*Vb17l?2l zypTEX13a%?U|JyO*n`#IhrjP=Mi}3fli(vdwnRUq^WvA&5%9mC6g%Ag46NfRTewIqvysu5E`UPeo936 zU~M6N7_M*`AQAj&`)m=HYFf5j_(F_7<>O!| z@MT_`9`J_J0tfQ?8olMJ5jN1FKb=d3cP-jITU|q4s@D`_DD0PDB{a$&S_#I2fm*O@HQ$QuESccC{SWDQ$pGdxXIF`~e2&jSH-re40*91zR>t`00; z^O$C&$+LtZLV@WhL6a*;!v#uLZ)DBPOn!(Pt1JV8mkA!$i8pQSY9Y33+UyM{oeLom z5|ccezZQ;D)sj>|fjT;G zf^QAq>_3leOMii_liGPBu`f^#`#VXUkaDg4D(CUv8%nnHB>jIHsQx;%M%;4h z5>hC&*>VO{E;}yOk-={@F+II&3>qBB-L*chi^w>oQA4v?rNk?;dG`%u3#Rtcd97VV z#wA|2k#3K9@T-Q2ed4J)BCr!nu|~{VIOs=|afKan+Hyt~?0LQ_*4ZrMb>CG`6rxCV zUCcpde2D6bQZ)M&RZyU@4oVDvi%^9hh$Yijkssko8z;~U6h_#^N@3i2t$~xP2dw0K zU_Ku=xRn3hU<;U2#DLzQDxdI~IFD!B_!CO@_b*yl|Otm>D? zLXs=kWAgUPWeNFfo*Ufz@h;T+Zc+pMvV2@NX0R(iqC?joSZ$d`lk>9 zgbADR`v~JYO9ObZAxn}2=I4q5$U(IFS98(_hUz8ezB!G19a(KWxqzmTt$?f*`cox+ z0P>HUnSqyjWj&WE+XbWi}Rj`?a!J#o5>=x!v|b5WEi znN?}K!&{UX80f(^TqJoO;$Kjguuuou2ydIJe;%%n=(raoOj*ofXYPXDw2=!(No@oM z1NmElc-roH7FhCHV3hR$jPT`fw(`}J$;$?=MCY%3wY4=M+SklAx2qY5{@5cfmo;7# z8yp*(shl}r$JUlj=^r|T#PX>v@l?jWfP7`)c`{-5Abpz}CI8x4diCEME}-u*fQ;z> z{TFrk<#!5=RnR1qL6)rI7wDhA>_6eg`?lPv@!*4U9$dl3+D^NPLyjHaPqJZu4+yRV z{`vbmmh>0}A^O2DGdJZzFz0bf`j)y%)l_c04m;M#2`T=(;oIoGa+Mbh{zG9KZ~tK$ zSc46KVI&m!4o)uChv`}{tBo6`Kk-he85&1P46Yt5)K@K>UwHim^5akfkc7QKYHtL` zce-fC1_|Mddjlm0x>cD!9ZGcII>SWUZMF8-4A{CZ^Gl6|4p9pmX^s(?Ysn8r#-$9U zvrR&m+a7-(z{+qQ_Pff8L>$w}tQz`f&?VVEO->eJjH7zsBpe!Y1IE0;)t^I0_Q$0Y zjzUq|`NVYn6YG_#`n|#|(XSpIw+8NrZn^7HrHct$m_Fi{8Q9<6xI^JVT6FCdR(3{` znPtCfM8dC5X?g#i&X%lS*zNk!VODCU?=2h0WBcik_u4|_#^KjOVx*z1nt4hOMKS~u zP)QH>r5Fj$I{owP_uRecyGw7kJqo7oaT{U2=@?>DZmg_wWf7v!B< zGmZs9Y6ZEbQx0A{ZMZ;w*8j1w{D+Zt#B+gr3=nQ}5oB>H;p@2l4^K3NCxbV*a1}xH zwQ!YQ6@oj)##GTn=T3steem7G$)|slZ~1yVy)pXG$4)hX;vw?nlIfdd3>@bW zn)OP2E5EFb@6)IIlJy z;FS*M3f0z>FwZ1m0WQ8Acf9>{ly_dyw51GeH)amhk&TGX-^s6WMnDgX(s2+h%-_{# zMe?lPPj&M4_P&e%l@PTfs?ee;b%&9PZvnV6bv^%qY6e2Un)%C^FFq?~umi(qv+h1j zP`mb-Grs8hrTVrS^X8`1?PL2al?stCe}9GIkrcm#pn2f;f*MJWiQ~OwAwUA+v26fB0!JIIA#Mn? zxdKjTI&`@)OQzF&^}Lbo(}n&wZ4mi;jaHpr+;3U7e+vKcVw-T)tV;}6G?b%Xf-F4y zL6oy@!Qc2?bZAaeIvDXw8WoYKT`#O|`1nrxd7ep_iEl$|ARt1{Py5kD^(I`lHcTB3`@gbp9CVxzy|l z5}o?pi07<9VB+RIjjI?SedwZFcqGB&64|>a$L4OzAAY;_TFh_3{R)47G*VRA{gdZWVw6ocpRGE$Kd5xZo6tEn=kv#dr?;0zu;|B#!RZnAWbyN{dc=o4CrJn z23p4z9wbL>G@3{2pT*ib8-CiKI(j-+t=KFJx9ve!b~U7F)<3e+_V+wAF?8U|d}tlK z{{naP6c^YK3jaQOBgHw-Rf8{tD%c}x-+K^)9TN8YbME<2qOLiDnia&c3xq>|BOVcK zaE-lkQ8mP>oi@Fqz3ExkO7Ym1pZ zszQBB)qJjitfZwQ?_q0uL)|jI8K+fl?Hh|ID|RD#%h?gE^cl;BInk2l5N`)guS z2;Qy4(DiZNC8GI&A<*8&Vk5pHHsWEgW_)-yY-PJ8T8ru;&WIv-nT6nnt+=HwSDN;$^EfmluP8A2Wd;VK8xTU6){*vT8D_Dd;mVfs>VnpE zenQdsHYzJy*U#rH;gR1BTMynIUtl-Q5_(M@y4 zr$qW4fc_y1c6MA9pZ0<5B?Sh+9I#R(+q;x4(E&nqg~L~P!9U-Hr6;qN*c+aPs2Wf> zUAZ*brO8g>_YJU2noo0d8@?8M@pIN0vQL!_WPQq7536(VU?~{`aZFA=5>y9latpAZ z!7M&jM~7T}ywCGIsx_mHRztD2+Im@X1$BmZ#P!e_%CC@OCiv3pqv?08qSdRr45xc&i9pY z#{lwpv|2r)j*xiptL=H3wp}N$4R3{4Y+}QJ)1SaBNq^6=VeVBstwq`GmS8%{xF82k zFZ%S-!KfyK;Zl0<+9KxA>S{1%zGe-Is^}F`z>3>{_N7AmmI|M6lUM_@b_4T-KVu1|f7R(@gde#+Y4OjO~obl5u+Pj;%k857#%-JBY|kLXTb zgDP8Vn5Th{56$IS$lm!*pPAqKX_dGv*=#$YXhOxYRCLa&};HNqJJ@2 zg6Nk=bTF{uGQ?em@%mJMSt^k4{Y2$Uk$f=dFesjV)~>@&_4~qkKYd+55=uKL_=z!@ z$Y9<%cY5bmhCz1s;pv#W4d)w6HJc&d2Cb|xkm>dOa!P;Dwb|24NsdsvX{U)ZTRp4V zwy84`kRNjAj3K?H9jZZ>tQ+C#C_Tw}r`uk)cWD=R>HiR&2~q&ZhMBG>cYzqpE3LuX zg8NvPcI@u}m;G(50P|`d6v@<-|NC+M=3P^gAW<@yZr57rtfQ_1vnMD3rH2}p?)jxR zT73902#)0&7q7hYex5Z+_UN9I?*84)8Q=kOD~F(n3tJVL_VH=K7j{$@FD_Xc`NOaW z=9s`Ye4hO*L6ggO+MQ(o1A$2kkxt^J!iTm&qaAE*Q-})3nlDScg0~v+VY{-w`OY55 z3OC2R_H(?QvC4To@XPn}o!09KSNBOzN)TUmc6No6@OCThJ1p?M(YF|T@b#3z4gICAVl89TULgs!!*6ce4hF}hi~ z#9)K4$4W7-_@$?|xPQo6v6 zHGVto+}$}=hg6s1_qElwb&sZcg#YFz&4fPU&OsYT$OJnd#dI(c2lC!cBhH{~E*%W` zxO>8uWK;VxsCFTSXP(>tKu-2RBE}(IKYZlT{@0HesvS;qLBe{Z4=5d6cx0G;TMN-( zgUNHPw`D%ssS)|E&CuUTIMcXx`s+^>7Cq$W6+`dPK_SNkaaU_AR8BscC|9Kj>6?Cw zZk*wzqp4_Q;jvFJD|P@XS0|>BmkP-W3aS&dQDpJUavx@X%B-LmE^sc>0kLr>jj+~j zUGa|MUhPw8#MDune5htI+}y1H{S{y4zTZ0o`s=Gx|AFA+pxqX~D6~Wi5T$+;0sqt7 zjAz71Y<*Dr6=BL43-^6bBDSaNFF6r(yLT$xSarD5^kPPO{wUs!V=$_JQV=f99j=yhqtmtXI?8In}N@r4BE90u;{Ny*+=Si8_+%} z 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 DfE$cJ literal 0 HcmV?d00001 diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-registration.jpg b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/azure-app-registration.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12f4eb36e2aee55f48b02a32beb99680e73ac1ea GIT binary patch literal 64047 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 Date: Wed, 16 Sep 2020 23:58:53 +0300 Subject: [PATCH 036/117] typo fix --- .../POST.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md index 5d525c43ca..1cc1d6f5cc 100644 --- a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md +++ b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md @@ -86,11 +86,11 @@ Keep on mind that **App.SelfUrl** + **AzureAd.CallbackPath** will be used in Azu ## Setting up Azure Active Directory -Navigate to Manage Azure Active Directory in [azure portal](https://portal.azure.com/). Go to App registrations on left side menu and hit New registration. +Navigate to Manage Azure Active Directory in [azure portal](https://portal.azure.com/). Go to **App registrations** on left side menu and hit New registration. ![azure-app-registration](azure-app-registration.jpg) -Enter a name for your application and register. **App.SelfUrl** + **AzureAd.CallbackPath** as redirect uri then register. +Enter a name for your application and **App.SelfUrl** + **AzureAd.CallbackPath** as redirect uri then register. azure-app-register From 3e86d7913375d02380029c90dfa54466122e6457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 17 Sep 2020 00:08:06 +0300 Subject: [PATCH 037/117] Improve permission management blazor modal --- .../PermissionManagementModal.razor | 3 +- .../PermissionManagementModal.razor.cs | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor index e94319c9ff..cc26b5370a 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor @@ -58,7 +58,8 @@ @permission.DisplayName diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs index 40333fdc80..8ff1a99796 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs @@ -111,6 +111,37 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components } } + private void PermissionChanged(bool value, string groupName, PermissionGrantInfoDto permission) + { + permission.IsGranted = value; + + if (value == false) + { + var childPermissions = GetChildPermissions(groupName, permission); + + foreach (var permissionGrantInfoDto in childPermissions) + { + permissionGrantInfoDto.IsGranted = false; + } + } + else if (permission.ParentName != null) + { + var parentPermission = GetParentPermission(groupName, permission); + + parentPermission.IsGranted = true; + } + } + + private PermissionGrantInfoDto GetParentPermission(string groupName, PermissionGrantInfoDto permission) + { + return _groups.First(x => x.Name == groupName).Permissions.First(x => x.Name == permission.ParentName); + } + + private List GetChildPermissions(string groupName, PermissionGrantInfoDto permission) + { + return _groups.First(x => x.Name == groupName).Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList(); + } + private bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo) { return _disabledPermissions.Any(x => x == permissionGrantInfo); From 8037100c467145d254a8e15eccaf40271a335eca Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Thu, 17 Sep 2020 10:20:20 +0800 Subject: [PATCH 038/117] Change tenant id when seed user,role and permission grant. --- .../Volo/Abp/Identity/IdentityDataSeeder.cs | 80 ++++++++++--------- .../Abp/Identity/IdentityDataSeeder_Tests.cs | 26 +++++- .../PermissionDataSeeder.cs | 42 ++++++---- .../PermissionDataSeeder_Tests.cs | 33 ++++++++ 4 files changed, 127 insertions(+), 54 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs index 6e32ed877a..1a6e221972 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; +using Volo.Abp.MultiTenancy; using Volo.Abp.Uow; namespace Volo.Abp.Identity @@ -16,13 +17,16 @@ namespace Volo.Abp.Identity protected IdentityUserManager UserManager { get; } protected IdentityRoleManager RoleManager { get; } + protected ICurrentTenant CurrentTenant { get; } + public IdentityDataSeeder( IGuidGenerator guidGenerator, IIdentityRoleRepository roleRepository, IIdentityUserRepository userRepository, ILookupNormalizer lookupNormalizer, IdentityUserManager userManager, - IdentityRoleManager roleManager) + IdentityRoleManager roleManager, + ICurrentTenant currentTenant) { GuidGenerator = guidGenerator; RoleRepository = roleRepository; @@ -30,6 +34,7 @@ namespace Volo.Abp.Identity LookupNormalizer = lookupNormalizer; UserManager = userManager; RoleManager = roleManager; + CurrentTenant = currentTenant; } [UnitOfWork] @@ -43,52 +48,55 @@ namespace Volo.Abp.Identity var result = new IdentityDataSeedResult(); - //"admin" user - const string adminUserName = "admin"; - var adminUser = await UserRepository.FindByNormalizedUserNameAsync( - LookupNormalizer.NormalizeName(adminUserName) - ); - - if (adminUser != null) + using (CurrentTenant.Change(tenantId)) { - return result; - } + //"admin" user + const string adminUserName = "admin"; + var adminUser = await UserRepository.FindByNormalizedUserNameAsync( + LookupNormalizer.NormalizeName(adminUserName) + ); - adminUser = new IdentityUser( - GuidGenerator.Create(), - adminUserName, - adminEmail, - tenantId - ) - { - Name = adminUserName - }; - - (await UserManager.CreateAsync(adminUser, adminPassword)).CheckErrors(); - result.CreatedAdminUser = true; + if (adminUser != null) + { + return result; + } - //"admin" role - const string adminRoleName = "admin"; - var adminRole = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(adminRoleName)); - if (adminRole == null) - { - adminRole = new IdentityRole( + adminUser = new IdentityUser( GuidGenerator.Create(), - adminRoleName, + adminUserName, + adminEmail, tenantId ) { - IsStatic = true, - IsPublic = true + Name = adminUserName }; - (await RoleManager.CreateAsync(adminRole)).CheckErrors(); - result.CreatedAdminRole = true; - } + (await UserManager.CreateAsync(adminUser, adminPassword)).CheckErrors(); + result.CreatedAdminUser = true; + + //"admin" role + const string adminRoleName = "admin"; + var adminRole = await RoleRepository.FindByNormalizedNameAsync(LookupNormalizer.NormalizeName(adminRoleName)); + if (adminRole == null) + { + adminRole = new IdentityRole( + GuidGenerator.Create(), + adminRoleName, + tenantId + ) + { + IsStatic = true, + IsPublic = true + }; - (await UserManager.AddToRoleAsync(adminUser, adminRoleName)).CheckErrors(); + (await RoleManager.CreateAsync(adminRole)).CheckErrors(); + result.CreatedAdminRole = true; + } - return result; + (await UserManager.AddToRoleAsync(adminUser, adminRoleName)).CheckErrors(); + + return result; + } } } } diff --git a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/IdentityDataSeeder_Tests.cs b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/IdentityDataSeeder_Tests.cs index 65eac5bc9d..e74c216ea4 100644 --- a/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/IdentityDataSeeder_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/IdentityDataSeeder_Tests.cs @@ -1,7 +1,9 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; using Shouldly; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Xunit; namespace Volo.Abp.Identity @@ -13,6 +15,7 @@ namespace Volo.Abp.Identity private readonly IIdentityUserRepository _userRepository; private readonly IIdentityRoleRepository _roleRepository; private readonly ILookupNormalizer _lookupNormalizer; + private readonly ICurrentTenant _currentTenant; protected IdentityDataSeeder_Tests() { @@ -20,6 +23,7 @@ namespace Volo.Abp.Identity _userRepository = GetRequiredService(); _roleRepository = GetRequiredService(); _lookupNormalizer = GetRequiredService(); + _currentTenant = GetRequiredService(); } [Fact] @@ -31,5 +35,25 @@ namespace Volo.Abp.Identity (await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName("admin"))).Name.ShouldBe("admin"); (await _roleRepository.FindByNormalizedNameAsync(_lookupNormalizer.NormalizeName("admin"))).ShouldNotBeNull(); } + + [Fact] + public async Task Should_Create_Admin_User_And_Role_With_TenantId() + { + var tenantId = Guid.NewGuid(); + + await _identityDataSeeder.SeedAsync("admin@tenant.abp.io", "1q2w3E*", tenantId); + + (await _userRepository.FindByNormalizedEmailAsync(_lookupNormalizer.NormalizeEmail("admin@tenant.abp.io"))).ShouldBeNull(); + + using (_currentTenant.Change(tenantId)) + { + (await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName("admin"))).ShouldNotBeNull(); + (await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName("admin"))).Name.ShouldBe("admin"); + (await _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName("admin"))).TenantId.ShouldBe(tenantId); + + (await _roleRepository.FindByNormalizedNameAsync(_lookupNormalizer.NormalizeName("admin"))).ShouldNotBeNull(); + (await _roleRepository.FindByNormalizedNameAsync(_lookupNormalizer.NormalizeName("admin"))).TenantId.ShouldBe(tenantId); + } + } } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs index b01b4d740a..6217651dc7 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeeder.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; +using Volo.Abp.MultiTenancy; namespace Volo.Abp.PermissionManagement { @@ -11,37 +12,44 @@ namespace Volo.Abp.PermissionManagement protected IPermissionGrantRepository PermissionGrantRepository { get; } protected IGuidGenerator GuidGenerator { get; } + protected ICurrentTenant CurrentTenant { get; } + public PermissionDataSeeder( - IPermissionGrantRepository permissionGrantRepository, - IGuidGenerator guidGenerator) + IPermissionGrantRepository permissionGrantRepository, + IGuidGenerator guidGenerator, + ICurrentTenant currentTenant) { PermissionGrantRepository = permissionGrantRepository; GuidGenerator = guidGenerator; + CurrentTenant = currentTenant; } public virtual async Task SeedAsync( - string providerName, + string providerName, string providerKey, IEnumerable grantedPermissions, Guid? tenantId = null) { - foreach (var permissionName in grantedPermissions) + using (CurrentTenant.Change(tenantId)) { - if (await PermissionGrantRepository.FindAsync(permissionName, providerName, providerKey) != null) + foreach (var permissionName in grantedPermissions) { - continue; - } + if (await PermissionGrantRepository.FindAsync(permissionName, providerName, providerKey) != null) + { + continue; + } - await PermissionGrantRepository.InsertAsync( - new PermissionGrant( - GuidGenerator.Create(), - permissionName, - providerName, - providerKey, - tenantId - ) - ); + await PermissionGrantRepository.InsertAsync( + new PermissionGrant( + GuidGenerator.Create(), + permissionName, + providerName, + providerKey, + tenantId + ) + ); + } } } } -} \ No newline at end of file +} diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs index 6868421a8a..fd40f607c9 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDataSeeder_Tests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Shouldly; +using Volo.Abp.MultiTenancy; using Xunit; namespace Volo.Abp.PermissionManagement @@ -11,11 +12,13 @@ namespace Volo.Abp.PermissionManagement { private readonly IPermissionDataSeeder _permissionDataSeeder; private readonly IPermissionGrantRepository _grantpermissionGrantRepository; + private readonly ICurrentTenant _currentTenant; public PermissionDataSeeder_Tests() { _permissionDataSeeder = GetRequiredService(); _grantpermissionGrantRepository = GetRequiredService(); + _currentTenant = GetRequiredService(); } [Fact] @@ -32,7 +35,37 @@ namespace Volo.Abp.PermissionManagement (await _grantpermissionGrantRepository.FindAsync("MyPermission1", "Test", "Test")).ShouldNotBeNull(); (await _grantpermissionGrantRepository.FindAsync("MyPermission2", "Test", "Test")).ShouldNotBeNull(); + } + + [Fact] + public async Task Seed_With_TenantId() + { + //Seed without tenant + await _permissionDataSeeder.SeedAsync("Test", "Test", new List() + { + "MyPermission1", + "MyPermission2" + }); + var tenantId = Guid.NewGuid(); + + using (_currentTenant.Change(tenantId)) + { + (await _grantpermissionGrantRepository.FindAsync("MyPermission1", "Test", "Test")).ShouldBeNull(); + (await _grantpermissionGrantRepository.FindAsync("MyPermission2", "Test", "Test")).ShouldBeNull(); + } + + await _permissionDataSeeder.SeedAsync("Test", "Test", new List() + { + "MyPermission1", + "MyPermission2" + }, tenantId); + + using (_currentTenant.Change(tenantId)) + { + (await _grantpermissionGrantRepository.FindAsync("MyPermission1", "Test", "Test")).ShouldNotBeNull(); + (await _grantpermissionGrantRepository.FindAsync("MyPermission2", "Test", "Test")).ShouldNotBeNull(); + } } } } From 3ce62d1574888f528c3838c6ff044111ca006c50 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Thu, 17 Sep 2020 10:24:56 +0800 Subject: [PATCH 039/117] Remove spaces. --- .../Volo/Abp/Identity/IdentityDataSeeder.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs index 1a6e221972..72c8a6ad74 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs @@ -16,7 +16,6 @@ namespace Volo.Abp.Identity protected ILookupNormalizer LookupNormalizer { get; } protected IdentityUserManager UserManager { get; } protected IdentityRoleManager RoleManager { get; } - protected ICurrentTenant CurrentTenant { get; } public IdentityDataSeeder( From 51b8c2658fad931d9a1280a66ca3a06ce26f8100 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 17 Sep 2020 11:12:46 +0800 Subject: [PATCH 040/117] Update document --- docs/en/MongoDB.md | 13 +++++++++++++ docs/en/Tutorials/Part-1.md | 9 --------- docs/zh-Hans/MongoDB.md | 13 +++++++++++++ docs/zh-Hans/Tutorials/Part-1.md | 10 ---------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/docs/en/MongoDB.md b/docs/en/MongoDB.md index e7d8084f41..509aee1fe3 100644 --- a/docs/en/MongoDB.md +++ b/docs/en/MongoDB.md @@ -275,6 +275,19 @@ public class BookService > Important: You must reference to the `Volo.Abp.MongoDB` package from the project you want to access to the MongoDB API. This breaks encapsulation, but this is what you want in that case. +#### Transaction + +Starting from version 4.0, MongoDB supports transactions. ABP added support for MongoDB transactions in version 3.2. If you upgrade the project to version 3.2. You need add [MongoDbSchemaMigrator](https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs) to your `.MongoDB` project. + +If you are using MongoDB server version less then v4.0, you need disabled the unit of work manually: + +```csharp +Configure(options => +{ + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; +}); +``` + ### Advanced Topics #### Set Default Repository Classes diff --git a/docs/en/Tutorials/Part-1.md b/docs/en/Tutorials/Part-1.md index 98263f64f7..9cc3354156 100644 --- a/docs/en/Tutorials/Part-1.md +++ b/docs/en/Tutorials/Part-1.md @@ -278,18 +278,9 @@ Run the `Acme.BookStore.DbMigrator` application to update the database: ![bookstore-dbmigrator-on-solution](images/bookstore-dbmigrator-on-solution.png) -{{if DB == "EF"}} `.DbMigrator` is a console application that can be run to **migrate the database schema** and **seed the data** on **development** and **production** environments. -{{end}} - -{{if DB == "Mongo"}} - -While MongoDB **doesn't require** a database schema migration, it is still good to run this application since it **seeds the initial data** on the database. This application can be used on **development** and **production** environments. - -{{end}} - ## Create the Application Service The application layer is separated into two projects: diff --git a/docs/zh-Hans/MongoDB.md b/docs/zh-Hans/MongoDB.md index 64df7d180b..db023f2e2b 100644 --- a/docs/zh-Hans/MongoDB.md +++ b/docs/zh-Hans/MongoDB.md @@ -233,6 +233,19 @@ public class BookService > 重要:如果你想访问MongoDB API,你需要在你的项目中引用`Volo.Abp.MongoDB`.这会破坏封装,但在这种情况下,这就是你想要的. +#### 事务 + +MongoDB在4.0版本开始支持事务, ABP在3.2版本加入了对MongoDb事务的支持. 如果你升级到3.2版本,需要将[MongoDbSchemaMigrator](https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs)添加到你的 `.MongoDB` 项目中. + +如果你在使用4.0版本之前的MongdoDB数据库,你需要手动禁用工作单元: + +```csharp +Configure(options => +{ + options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; +}); +``` + #### 高级主题 ##### 设置默认的仓储类 diff --git a/docs/zh-Hans/Tutorials/Part-1.md b/docs/zh-Hans/Tutorials/Part-1.md index 101835559b..99a7e3d9fb 100644 --- a/docs/zh-Hans/Tutorials/Part-1.md +++ b/docs/zh-Hans/Tutorials/Part-1.md @@ -270,18 +270,8 @@ namespace Acme.BookStore ![bookstore-dbmigrator-on-solution](images/bookstore-dbmigrator-on-solution.png) -{{if DB == "EF"}} - `.DbMigrator` 是一个控制台使用程序,可以在**开发**和**生产**环境**迁移数据库架构**和**初始化种子数据**. -{{end}} - -{{if DB == "Mongo"}} - -尽管MongoDB**不需要**数据库架构迁移,但仍建议运行该应用程序,因为它可以在数据库上播种初始数据. 可以在**开发**和**生产**环境中使用. - -{{end}} - ## 创建应用程序 应用程序层由两个分离的项目组成: From e062b020ed7f71a38b148faef6925555eefadfa0 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 17 Sep 2020 11:22:22 +0800 Subject: [PATCH 041/117] Update document --- docs/en/MongoDB.md | 2 +- docs/zh-Hans/MongoDB.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/MongoDB.md b/docs/en/MongoDB.md index 509aee1fe3..ac6db61198 100644 --- a/docs/en/MongoDB.md +++ b/docs/en/MongoDB.md @@ -279,7 +279,7 @@ public class BookService Starting from version 4.0, MongoDB supports transactions. ABP added support for MongoDB transactions in version 3.2. If you upgrade the project to version 3.2. You need add [MongoDbSchemaMigrator](https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs) to your `.MongoDB` project. -If you are using MongoDB server version less then v4.0, you need disabled the unit of work manually: +If you are using MongoDB server version less then v4.0, you need disabled the `transaction` of unit of work manually: ```csharp Configure(options => diff --git a/docs/zh-Hans/MongoDB.md b/docs/zh-Hans/MongoDB.md index db023f2e2b..12755cdff5 100644 --- a/docs/zh-Hans/MongoDB.md +++ b/docs/zh-Hans/MongoDB.md @@ -237,7 +237,7 @@ public class BookService MongoDB在4.0版本开始支持事务, ABP在3.2版本加入了对MongoDb事务的支持. 如果你升级到3.2版本,需要将[MongoDbSchemaMigrator](https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.MongoDB/MongoDb/MongoDbMyProjectNameDbSchemaMigrator.cs)添加到你的 `.MongoDB` 项目中. -如果你在使用4.0版本之前的MongdoDB数据库,你需要手动禁用工作单元: +如果你在使用4.0版本之前的MongdoDB数据库,你需要手动禁用工作单元的事务: ```csharp Configure(options => From a74748dbe1e3ae03d59f8435f283c22aecdf7c22 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 17 Sep 2020 06:58:24 +0300 Subject: [PATCH 042/117] text: fix errors --- .../packages/core/src/lib/tests/config-state.service.spec.ts | 3 ++- npm/ng-packs/packages/core/src/lib/tests/config.state.spec.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts index 9a8f9b651e..b566e4f24f 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/config-state.service.spec.ts @@ -1,6 +1,7 @@ import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spectator/jest'; import { Store } from '@ngxs/store'; import * as ConfigActions from '../actions'; +import { ApplicationConfiguration } from '../models/application-configuration'; import { Config } from '../models/config'; import { ConfigStateService } from '../services/config-state.service'; import { ConfigState } from '../states'; @@ -87,7 +88,7 @@ const CONFIG_STATE_DATA = { userName: null, email: null, roles: [], - }, + } as ApplicationConfiguration.CurrentUser, features: { values: {}, }, diff --git a/npm/ng-packs/packages/core/src/lib/tests/config.state.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/config.state.spec.ts index e30a55635b..f9a68e5fd6 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/config.state.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/config.state.spec.ts @@ -3,6 +3,7 @@ import { createServiceFactory, SpectatorService, SpyObject } from '@ngneat/spect import { Store } from '@ngxs/store'; import { of, ReplaySubject, timer } from 'rxjs'; import { SetLanguage } from '../actions'; +import { ApplicationConfiguration } from '../models/application-configuration'; import { Config } from '../models/config'; import { ApplicationConfigurationService, ConfigStateService } from '../services'; import { ConfigState } from '../states'; @@ -91,7 +92,7 @@ export const CONFIG_STATE_DATA = { userName: null, email: null, roles: [], - }, + } as ApplicationConfiguration.CurrentUser, features: { values: { 'Chat.Enable': 'True', From d2027039d819020ff2f820a388476f67cd332bc2 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 17 Sep 2020 08:35:29 +0300 Subject: [PATCH 043/117] chore: update a localization key --- npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts b/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts index bfacbcf9a7..a947809623 100644 --- a/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts +++ b/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts @@ -69,7 +69,7 @@ export class ThemeBasicModule { minlength: 'AbpValidation::ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}[{{ requiredLength }}]', ngbDate: 'AbpValidation::ThisFieldIsNotValid.', - passwordMismatch: 'AbpIdentity::Identity.PasswordConfirmationFailed', + passwordMismatch: 'AbpIdentity::Volo.Abp.Identity:PasswordConfirmationFailed', range: 'AbpValidation::ThisFieldMustBeBetween{0}And{1}[{{ min }},{{ max }}]', required: 'AbpValidation::ThisFieldIsRequired.', url: 'AbpValidation::ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl', From 483818ea425e566c23ed77d3471f1eb27829b7e0 Mon Sep 17 00:00:00 2001 From: maliming <6908465+maliming@users.noreply.github.com> Date: Thu, 17 Sep 2020 13:47:13 +0800 Subject: [PATCH 044/117] Make `T To` extension method support string to GUID. https://github.com/aspnetboilerplate/aspnetboilerplate/pull/2330/ --- .../Volo.Abp.Core/System/AbpObjectExtensions.cs | 14 ++++++++++---- .../System/ObjectExtension_Test.cs | 6 ++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Core/System/AbpObjectExtensions.cs b/framework/src/Volo.Abp.Core/System/AbpObjectExtensions.cs index 49e0d6dea6..d1067a383f 100644 --- a/framework/src/Volo.Abp.Core/System/AbpObjectExtensions.cs +++ b/framework/src/Volo.Abp.Core/System/AbpObjectExtensions.cs @@ -1,4 +1,5 @@ -using System.Globalization; +using System.ComponentModel; +using System.Globalization; using System.Linq; namespace System @@ -9,7 +10,7 @@ namespace System public static class AbpObjectExtensions { ///

- /// Used to simplify and beautify casting an object to a type. + /// Used to simplify and beautify casting an object to a type. /// /// Type to be casted /// Object to cast @@ -29,6 +30,11 @@ namespace System public static T To(this object obj) where T : struct { + if (typeof(T) == typeof(Guid)) + { + return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromInvariantString(obj.ToString()); + } + return (T)Convert.ChangeType(obj, typeof(T), CultureInfo.InvariantCulture); } @@ -42,7 +48,7 @@ namespace System { return list.Contains(item); } - + /// /// Can be used to conditionally perform a function /// on an object and return the modified or the original object. @@ -65,7 +71,7 @@ namespace System return obj; } - + /// /// Can be used to conditionally perform an action /// on an object and return the original object. diff --git a/framework/test/Volo.Abp.Core.Tests/System/ObjectExtension_Test.cs b/framework/test/Volo.Abp.Core.Tests/System/ObjectExtension_Test.cs index be429658ed..eeea78461b 100644 --- a/framework/test/Volo.Abp.Core.Tests/System/ObjectExtension_Test.cs +++ b/framework/test/Volo.Abp.Core.Tests/System/ObjectExtension_Test.cs @@ -35,6 +35,8 @@ namespace System Assert.Throws(() => "test".To()); Assert.Throws(() => "test".To()); + + "2260AFEC-BBFD-42D4-A91A-DCB11E09B17F".To().ShouldBeOfType().ShouldBe(new Guid("2260afec-bbfd-42d4-a91a-dcb11e09b17f")); } [Fact] @@ -57,10 +59,10 @@ namespace System public void If_Tests() { var value = 0; - + value = value.If(true, v => v + 1); value.ShouldBe(1); - + value = value.If(false, v => v + 1); value.ShouldBe(1); From 157498de554bca736869481d3182a5b8fa79268c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 17 Sep 2020 09:17:32 +0300 Subject: [PATCH 045/117] Update POST.md --- .../POST.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md index 1cc1d6f5cc..845182078c 100644 --- a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md +++ b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md @@ -115,9 +115,8 @@ Next time you hit login, you should be seeing login screen enabled Azure AD like # FAQ * I am getting errors when trying to login to AzureAD. -* You can check [this article FAQ](../2020-04-27-Use-Azure-Active-Directory-Authentication-for-MVC-Razor-Page-Applications/POST.md) which covers many errors. + * You can check [this article FAQ](../2020-04-27-Use-Azure-Active-Directory-Authentication-for-MVC-Razor-Page-Applications/POST.md) which covers many errors. * But I don't want my users to see default login screen. I want my users to login **only** from AzureAD. - * You can **mimic** this behaviour by customizing the login page and instantly trigger Azure AD provider click. For more info, you can check [this article](https://community.abp.io/articles/how-to-customize-the-login-page-for-mvc-razor-page-applications-9a40f3cd). From 8b87d24c19999b603ca711a1e0fa4e2ba97e7583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 17 Sep 2020 09:18:35 +0300 Subject: [PATCH 046/117] Update POST.md --- .../POST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md index 845182078c..b286bb509d 100644 --- a/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md +++ b/docs/en/Community-Articles/2020-09-16-How-to-Setup-Azure-Active-Directory-and-Integrate-Abp-Angular-Application/POST.md @@ -115,7 +115,7 @@ Next time you hit login, you should be seeing login screen enabled Azure AD like # FAQ * I am getting errors when trying to login to AzureAD. - * You can check [this article FAQ](../2020-04-27-Use-Azure-Active-Directory-Authentication-for-MVC-Razor-Page-Applications/POST.md) which covers many errors. + * You can check [this article FAQ](https://community.abp.io/articles/how-to-use-the-azure-active-directory-authentication-for-mvc-razor-page-applications-4603b9cf) which covers many errors. * But I don't want my users to see default login screen. I want my users to login **only** from AzureAD. From b583639ea5b4b06fc9a0a927ba83bf7f5664da8e Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Thu, 17 Sep 2020 14:47:14 +0800 Subject: [PATCH 047/117] Update FormTenantResolveContributor --- .../Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs index 5e70559f0c..f334b4d434 100644 --- a/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs +++ b/framework/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/FormTenantResolveContributor.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.AspNetCore.MultiTenancy protected override string GetTenantIdOrNameFromHttpContextOrNull(ITenantResolveContext context, HttpContext httpContext) { - if (httpContext.Request == null || !httpContext.Request.Form.Any()) + if (httpContext.Request == null || !httpContext.Request.HasFormContentType || !httpContext.Request.Form.Any()) { return null; } From cdbe00f71a9b383da5acf05855c67185d0d9c064 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arma=C4=9Fan=20=C3=9Cnl=C3=BC?= <36102404+armgnunlu@users.noreply.github.com> Date: Thu, 17 Sep 2020 10:17:26 +0300 Subject: [PATCH 048/117] Abp TagHelpers Updated --- .../Shared/Demos/ModalsDemo/Default.cshtml | 15 +- .../datatables/datatables-extensions.js | 2 +- .../package.json | 3 +- .../wwwroot/libs/clipboard/clipboard.js | 973 ++++++++ .../wwwroot/libs/clipboard/clipboard.min.js | 7 + .../wwwroot/libs/prismjs/CHANGELOG.md | 2174 +++++++++++++++++ .../wwwroot/libs/prismjs/README.md | 32 + .../wwwroot/libs/prismjs/components.js | 2 + .../wwwroot/libs/prismjs/components.json | 1386 +++++++++++ .../wwwroot/libs/prismjs/components/index.js | 56 + .../libs/prismjs/components/prism-abap.js | 48 + .../libs/prismjs/components/prism-abap.min.js | 1 + .../libs/prismjs/components/prism-abnf.js | 54 + .../libs/prismjs/components/prism-abnf.min.js | 1 + .../prismjs/components/prism-actionscript.js | 15 + .../components/prism-actionscript.min.js | 1 + .../libs/prismjs/components/prism-ada.js | 19 + .../libs/prismjs/components/prism-ada.min.js | 1 + .../libs/prismjs/components/prism-agda.js | 24 + .../libs/prismjs/components/prism-agda.min.js | 1 + .../libs/prismjs/components/prism-al.js | 25 + .../libs/prismjs/components/prism-al.min.js | 1 + .../libs/prismjs/components/prism-antlr4.js | 65 + .../prismjs/components/prism-antlr4.min.js | 1 + .../prismjs/components/prism-apacheconf.js | 47 + .../components/prism-apacheconf.min.js | 1 + .../libs/prismjs/components/prism-apl.js | 32 + .../libs/prismjs/components/prism-apl.min.js | 1 + .../prismjs/components/prism-applescript.js | 20 + .../components/prism-applescript.min.js | 1 + .../libs/prismjs/components/prism-aql.js | 41 + .../libs/prismjs/components/prism-aql.min.js | 1 + .../libs/prismjs/components/prism-arduino.js | 5 + .../prismjs/components/prism-arduino.min.js | 1 + .../libs/prismjs/components/prism-arff.js | 10 + .../libs/prismjs/components/prism-arff.min.js | 1 + .../libs/prismjs/components/prism-asciidoc.js | 234 ++ .../prismjs/components/prism-asciidoc.min.js | 1 + .../libs/prismjs/components/prism-asm6502.js | 28 + .../prismjs/components/prism-asm6502.min.js | 1 + .../libs/prismjs/components/prism-aspnet.js | 48 + .../prismjs/components/prism-aspnet.min.js | 1 + .../prismjs/components/prism-autohotkey.js | 34 + .../components/prism-autohotkey.min.js | 1 + .../libs/prismjs/components/prism-autoit.js | 34 + .../prismjs/components/prism-autoit.min.js | 1 + .../libs/prismjs/components/prism-bash.js | 198 ++ .../libs/prismjs/components/prism-bash.min.js | 1 + .../libs/prismjs/components/prism-basic.js | 17 + .../prismjs/components/prism-basic.min.js | 1 + .../libs/prismjs/components/prism-batch.js | 99 + .../prismjs/components/prism-batch.min.js | 1 + .../libs/prismjs/components/prism-bbcode.js | 29 + .../prismjs/components/prism-bbcode.min.js | 1 + .../libs/prismjs/components/prism-bison.js | 39 + .../prismjs/components/prism-bison.min.js | 1 + .../libs/prismjs/components/prism-bnf.js | 21 + .../libs/prismjs/components/prism-bnf.min.js | 1 + .../prismjs/components/prism-brainfuck.js | 20 + .../prismjs/components/prism-brainfuck.min.js | 1 + .../prismjs/components/prism-brightscript.js | 44 + .../components/prism-brightscript.min.js | 1 + .../libs/prismjs/components/prism-bro.js | 48 + .../libs/prismjs/components/prism-bro.min.js | 1 + .../libs/prismjs/components/prism-c.js | 52 + .../libs/prismjs/components/prism-c.min.js | 1 + .../libs/prismjs/components/prism-cil.js | 27 + .../libs/prismjs/components/prism-cil.min.js | 1 + .../libs/prismjs/components/prism-clike.js | 30 + .../prismjs/components/prism-clike.min.js | 1 + .../libs/prismjs/components/prism-clojure.js | 16 + .../prismjs/components/prism-clojure.min.js | 1 + .../libs/prismjs/components/prism-cmake.js | 29 + .../prismjs/components/prism-cmake.min.js | 1 + .../prismjs/components/prism-coffeescript.js | 92 + .../components/prism-coffeescript.min.js | 1 + .../prismjs/components/prism-concurnas.js | 48 + .../prismjs/components/prism-concurnas.min.js | 1 + .../libs/prismjs/components/prism-core.js | 1181 +++++++++ .../libs/prismjs/components/prism-core.min.js | 1 + .../libs/prismjs/components/prism-cpp.js | 56 + .../libs/prismjs/components/prism-cpp.min.js | 1 + .../libs/prismjs/components/prism-crystal.js | 51 + .../prismjs/components/prism-crystal.min.js | 1 + .../libs/prismjs/components/prism-csharp.js | 361 +++ .../prismjs/components/prism-csharp.min.js | 1 + .../libs/prismjs/components/prism-csp.js | 25 + .../libs/prismjs/components/prism-csp.min.js | 1 + .../prismjs/components/prism-css-extras.js | 116 + .../components/prism-css-extras.min.js | 1 + .../libs/prismjs/components/prism-css.js | 72 + .../libs/prismjs/components/prism-css.min.js | 1 + .../libs/prismjs/components/prism-cypher.js | 37 + .../prismjs/components/prism-cypher.min.js | 1 + .../libs/prismjs/components/prism-d.js | 79 + .../libs/prismjs/components/prism-d.min.js | 1 + .../libs/prismjs/components/prism-dart.js | 24 + .../libs/prismjs/components/prism-dart.min.js | 1 + .../libs/prismjs/components/prism-dax.js | 27 + .../libs/prismjs/components/prism-dax.min.js | 1 + .../libs/prismjs/components/prism-dhall.js | 69 + .../prismjs/components/prism-dhall.min.js | 1 + .../libs/prismjs/components/prism-diff.js | 64 + .../libs/prismjs/components/prism-diff.min.js | 1 + .../libs/prismjs/components/prism-django.js | 60 + .../prismjs/components/prism-django.min.js | 1 + .../prismjs/components/prism-dns-zone-file.js | 33 + .../components/prism-dns-zone-file.min.js | 1 + .../libs/prismjs/components/prism-docker.js | 14 + .../prismjs/components/prism-docker.min.js | 1 + .../libs/prismjs/components/prism-ebnf.js | 22 + .../libs/prismjs/components/prism-ebnf.min.js | 1 + .../prismjs/components/prism-editorconfig.js | 25 + .../components/prism-editorconfig.min.js | 1 + .../libs/prismjs/components/prism-eiffel.js | 37 + .../prismjs/components/prism-eiffel.min.js | 1 + .../libs/prismjs/components/prism-ejs.js | 26 + .../libs/prismjs/components/prism-ejs.min.js | 1 + .../libs/prismjs/components/prism-elixir.js | 89 + .../prismjs/components/prism-elixir.min.js | 1 + .../libs/prismjs/components/prism-elm.js | 44 + .../libs/prismjs/components/prism-elm.min.js | 1 + .../libs/prismjs/components/prism-erb.js | 20 + .../libs/prismjs/components/prism-erb.min.js | 1 + .../libs/prismjs/components/prism-erlang.js | 44 + .../prismjs/components/prism-erlang.min.js | 1 + .../libs/prismjs/components/prism-etlua.js | 23 + .../prismjs/components/prism-etlua.min.js | 1 + .../prismjs/components/prism-excel-formula.js | 66 + .../components/prism-excel-formula.min.js | 1 + .../libs/prismjs/components/prism-factor.js | 403 +++ .../prismjs/components/prism-factor.min.js | 1 + .../prism-firestore-security-rules.js | 35 + .../prism-firestore-security-rules.min.js | 1 + .../libs/prismjs/components/prism-flow.js | 35 + .../libs/prismjs/components/prism-flow.min.js | 1 + .../libs/prismjs/components/prism-fortran.js | 40 + .../prismjs/components/prism-fortran.min.js | 1 + .../libs/prismjs/components/prism-fsharp.js | 67 + .../prismjs/components/prism-fsharp.min.js | 1 + .../libs/prismjs/components/prism-ftl.js | 97 + .../libs/prismjs/components/prism-ftl.min.js | 1 + .../libs/prismjs/components/prism-gcode.js | 15 + .../prismjs/components/prism-gcode.min.js | 1 + .../libs/prismjs/components/prism-gdscript.js | 27 + .../prismjs/components/prism-gdscript.min.js | 1 + .../libs/prismjs/components/prism-gedcom.js | 28 + .../prismjs/components/prism-gedcom.min.js | 1 + .../libs/prismjs/components/prism-gherkin.js | 85 + .../prismjs/components/prism-gherkin.min.js | 1 + .../libs/prismjs/components/prism-git.js | 68 + .../libs/prismjs/components/prism-git.min.js | 1 + .../libs/prismjs/components/prism-glsl.js | 3 + .../libs/prismjs/components/prism-glsl.min.js | 1 + .../libs/prismjs/components/prism-gml.js | 7 + .../libs/prismjs/components/prism-gml.min.js | 1 + .../libs/prismjs/components/prism-go.js | 12 + .../libs/prismjs/components/prism-go.min.js | 1 + .../libs/prismjs/components/prism-graphql.js | 43 + .../prismjs/components/prism-graphql.min.js | 1 + .../libs/prismjs/components/prism-groovy.js | 68 + .../prismjs/components/prism-groovy.min.js | 1 + .../libs/prismjs/components/prism-haml.js | 142 ++ .../libs/prismjs/components/prism-haml.min.js | 1 + .../prismjs/components/prism-handlebars.js | 37 + .../components/prism-handlebars.min.js | 1 + .../libs/prismjs/components/prism-haskell.js | 38 + .../prismjs/components/prism-haskell.min.js | 1 + .../libs/prismjs/components/prism-haxe.js | 45 + .../libs/prismjs/components/prism-haxe.min.js | 1 + .../libs/prismjs/components/prism-hcl.js | 63 + .../libs/prismjs/components/prism-hcl.min.js | 1 + .../libs/prismjs/components/prism-hlsl.js | 20 + .../libs/prismjs/components/prism-hlsl.min.js | 1 + .../libs/prismjs/components/prism-hpkp.js | 20 + .../libs/prismjs/components/prism-hpkp.min.js | 1 + .../libs/prismjs/components/prism-hsts.js | 20 + .../libs/prismjs/components/prism-hsts.min.js | 1 + .../libs/prismjs/components/prism-http.js | 77 + .../libs/prismjs/components/prism-http.min.js | 1 + .../prismjs/components/prism-ichigojam.js | 15 + .../prismjs/components/prism-ichigojam.min.js | 1 + .../libs/prismjs/components/prism-icon.js | 20 + .../libs/prismjs/components/prism-icon.min.js | 1 + .../libs/prismjs/components/prism-iecst.js | 30 + .../prismjs/components/prism-iecst.min.js | 1 + .../libs/prismjs/components/prism-ignore.js | 23 + .../prismjs/components/prism-ignore.min.js | 1 + .../libs/prismjs/components/prism-inform7.js | 61 + .../prismjs/components/prism-inform7.min.js | 1 + .../libs/prismjs/components/prism-ini.js | 11 + .../libs/prismjs/components/prism-ini.min.js | 1 + .../libs/prismjs/components/prism-io.js | 31 + .../libs/prismjs/components/prism-io.min.js | 1 + .../libs/prismjs/components/prism-j.js | 25 + .../libs/prismjs/components/prism-j.min.js | 1 + .../libs/prismjs/components/prism-java.js | 65 + .../libs/prismjs/components/prism-java.min.js | 1 + .../libs/prismjs/components/prism-javadoc.js | 82 + .../prismjs/components/prism-javadoc.min.js | 1 + .../prismjs/components/prism-javadoclike.js | 87 + .../components/prism-javadoclike.min.js | 1 + .../prismjs/components/prism-javascript.js | 91 + .../components/prism-javascript.min.js | 1 + .../components/prism-javastacktrace.js | 93 + .../components/prism-javastacktrace.min.js | 1 + .../libs/prismjs/components/prism-jolie.js | 55 + .../prismjs/components/prism-jolie.min.js | 1 + .../libs/prismjs/components/prism-jq.js | 67 + .../libs/prismjs/components/prism-jq.min.js | 1 + .../prismjs/components/prism-js-extras.js | 104 + .../prismjs/components/prism-js-extras.min.js | 1 + .../prismjs/components/prism-js-templates.js | 346 +++ .../components/prism-js-templates.min.js | 1 + .../libs/prismjs/components/prism-jsdoc.js | 78 + .../prismjs/components/prism-jsdoc.min.js | 1 + .../libs/prismjs/components/prism-json.js | 25 + .../libs/prismjs/components/prism-json.min.js | 1 + .../libs/prismjs/components/prism-json5.js | 23 + .../prismjs/components/prism-json5.min.js | 1 + .../libs/prismjs/components/prism-jsonp.js | 7 + .../prismjs/components/prism-jsonp.min.js | 1 + .../prismjs/components/prism-jsstacktrace.js | 48 + .../components/prism-jsstacktrace.min.js | 1 + .../libs/prismjs/components/prism-jsx.js | 126 + .../libs/prismjs/components/prism-jsx.min.js | 1 + .../libs/prismjs/components/prism-julia.js | 31 + .../prismjs/components/prism-julia.min.js | 1 + .../libs/prismjs/components/prism-keyman.js | 14 + .../prismjs/components/prism-keyman.min.js | 1 + .../libs/prismjs/components/prism-kotlin.js | 64 + .../prismjs/components/prism-kotlin.min.js | 1 + .../libs/prismjs/components/prism-latex.js | 64 + .../prismjs/components/prism-latex.min.js | 1 + .../libs/prismjs/components/prism-latte.js | 69 + .../prismjs/components/prism-latte.min.js | 1 + .../libs/prismjs/components/prism-less.js | 54 + .../libs/prismjs/components/prism-less.min.js | 1 + .../libs/prismjs/components/prism-lilypond.js | 69 + .../prismjs/components/prism-lilypond.min.js | 1 + .../libs/prismjs/components/prism-liquid.js | 12 + .../prismjs/components/prism-liquid.min.js | 1 + .../libs/prismjs/components/prism-lisp.js | 197 ++ .../libs/prismjs/components/prism-lisp.min.js | 1 + .../prismjs/components/prism-livescript.js | 119 + .../components/prism-livescript.min.js | 1 + .../libs/prismjs/components/prism-llvm.js | 19 + .../libs/prismjs/components/prism-llvm.min.js | 1 + .../libs/prismjs/components/prism-lolcode.js | 55 + .../prismjs/components/prism-lolcode.min.js | 1 + .../libs/prismjs/components/prism-lua.js | 20 + .../libs/prismjs/components/prism-lua.min.js | 1 + .../libs/prismjs/components/prism-makefile.js | 34 + .../prismjs/components/prism-makefile.min.js | 1 + .../libs/prismjs/components/prism-markdown.js | 340 +++ .../prismjs/components/prism-markdown.min.js | 1 + .../components/prism-markup-templating.js | 123 + .../components/prism-markup-templating.min.js | 1 + .../libs/prismjs/components/prism-markup.js | 130 + .../prismjs/components/prism-markup.min.js | 1 + .../libs/prismjs/components/prism-matlab.js | 16 + .../prismjs/components/prism-matlab.min.js | 1 + .../libs/prismjs/components/prism-mel.js | 43 + .../libs/prismjs/components/prism-mel.min.js | 1 + .../libs/prismjs/components/prism-mizar.js | 12 + .../prismjs/components/prism-mizar.min.js | 1 + .../libs/prismjs/components/prism-monkey.js | 31 + .../prismjs/components/prism-monkey.min.js | 1 + .../prismjs/components/prism-moonscript.js | 57 + .../components/prism-moonscript.min.js | 1 + .../libs/prismjs/components/prism-n1ql.js | 18 + .../libs/prismjs/components/prism-n1ql.min.js | 1 + .../libs/prismjs/components/prism-n4js.js | 14 + .../libs/prismjs/components/prism-n4js.min.js | 1 + .../components/prism-nand2tetris-hdl.js | 9 + .../components/prism-nand2tetris-hdl.min.js | 1 + .../libs/prismjs/components/prism-nasm.js | 24 + .../libs/prismjs/components/prism-nasm.min.js | 1 + .../libs/prismjs/components/prism-neon.js | 41 + .../libs/prismjs/components/prism-neon.min.js | 1 + .../libs/prismjs/components/prism-nginx.js | 11 + .../prismjs/components/prism-nginx.min.js | 1 + .../libs/prismjs/components/prism-nim.js | 33 + .../libs/prismjs/components/prism-nim.min.js | 1 + .../libs/prismjs/components/prism-nix.js | 40 + .../libs/prismjs/components/prism-nix.min.js | 1 + .../libs/prismjs/components/prism-nsis.js | 29 + .../libs/prismjs/components/prism-nsis.min.js | 1 + .../prismjs/components/prism-objectivec.js | 9 + .../components/prism-objectivec.min.js | 1 + .../libs/prismjs/components/prism-ocaml.js | 41 + .../prismjs/components/prism-ocaml.min.js | 1 + .../libs/prismjs/components/prism-opencl.js | 54 + .../prismjs/components/prism-opencl.min.js | 1 + .../libs/prismjs/components/prism-oz.js | 25 + .../libs/prismjs/components/prism-oz.min.js | 1 + .../libs/prismjs/components/prism-parigp.js | 30 + .../prismjs/components/prism-parigp.min.js | 1 + .../libs/prismjs/components/prism-parser.js | 73 + .../prismjs/components/prism-parser.min.js | 1 + .../libs/prismjs/components/prism-pascal.js | 55 + .../prismjs/components/prism-pascal.min.js | 1 + .../prismjs/components/prism-pascaligo.js | 62 + .../prismjs/components/prism-pascaligo.min.js | 1 + .../libs/prismjs/components/prism-pcaxis.js | 53 + .../prismjs/components/prism-pcaxis.min.js | 1 + .../prismjs/components/prism-peoplecode.js | 42 + .../components/prism-peoplecode.min.js | 1 + .../libs/prismjs/components/prism-perl.js | 191 ++ .../libs/prismjs/components/prism-perl.min.js | 1 + .../prismjs/components/prism-php-extras.js | 11 + .../components/prism-php-extras.min.js | 1 + .../libs/prismjs/components/prism-php.js | 130 + .../libs/prismjs/components/prism-php.min.js | 1 + .../libs/prismjs/components/prism-phpdoc.js | 27 + .../prismjs/components/prism-phpdoc.min.js | 1 + .../libs/prismjs/components/prism-plsql.js | 26 + .../prismjs/components/prism-plsql.min.js | 1 + .../prismjs/components/prism-powerquery.js | 55 + .../components/prism-powerquery.min.js | 1 + .../prismjs/components/prism-powershell.js | 60 + .../components/prism-powershell.min.js | 1 + .../prismjs/components/prism-processing.js | 18 + .../components/prism-processing.min.js | 1 + .../libs/prismjs/components/prism-prolog.js | 20 + .../prismjs/components/prism-prolog.min.js | 1 + .../prismjs/components/prism-properties.js | 9 + .../components/prism-properties.min.js | 1 + .../libs/prismjs/components/prism-protobuf.js | 43 + .../prismjs/components/prism-protobuf.min.js | 1 + .../libs/prismjs/components/prism-pug.js | 183 ++ .../libs/prismjs/components/prism-pug.min.js | 1 + .../libs/prismjs/components/prism-puppet.js | 136 ++ .../prismjs/components/prism-puppet.min.js | 1 + .../libs/prismjs/components/prism-pure.js | 81 + .../libs/prismjs/components/prism-pure.min.js | 1 + .../prismjs/components/prism-purebasic.js | 70 + .../prismjs/components/prism-purebasic.min.js | 1 + .../libs/prismjs/components/prism-python.js | 64 + .../prismjs/components/prism-python.min.js | 1 + .../libs/prismjs/components/prism-q.js | 51 + .../libs/prismjs/components/prism-q.min.js | 1 + .../libs/prismjs/components/prism-qml.js | 58 + .../libs/prismjs/components/prism-qml.min.js | 1 + .../libs/prismjs/components/prism-qore.js | 20 + .../libs/prismjs/components/prism-qore.min.js | 1 + .../libs/prismjs/components/prism-r.js | 22 + .../libs/prismjs/components/prism-r.min.js | 1 + .../libs/prismjs/components/prism-racket.js | 65 + .../prismjs/components/prism-racket.min.js | 1 + .../libs/prismjs/components/prism-reason.js | 28 + .../prismjs/components/prism-reason.min.js | 1 + .../libs/prismjs/components/prism-regex.js | 127 + .../prismjs/components/prism-regex.min.js | 1 + .../libs/prismjs/components/prism-renpy.js | 31 + .../prismjs/components/prism-renpy.min.js | 1 + .../libs/prismjs/components/prism-rest.js | 205 ++ .../libs/prismjs/components/prism-rest.min.js | 1 + .../libs/prismjs/components/prism-rip.js | 32 + .../libs/prismjs/components/prism-rip.min.js | 1 + .../libs/prismjs/components/prism-roboconf.js | 27 + .../prismjs/components/prism-roboconf.min.js | 1 + .../components/prism-robotframework.js | 104 + .../components/prism-robotframework.min.js | 1 + .../libs/prismjs/components/prism-ruby.js | 106 + .../libs/prismjs/components/prism-ruby.min.js | 1 + .../libs/prismjs/components/prism-rust.js | 129 + .../libs/prismjs/components/prism-rust.min.js | 1 + .../libs/prismjs/components/prism-sas.js | 325 +++ .../libs/prismjs/components/prism-sas.min.js | 1 + .../libs/prismjs/components/prism-sass.js | 72 + .../libs/prismjs/components/prism-sass.min.js | 1 + .../libs/prismjs/components/prism-scala.js | 17 + .../prismjs/components/prism-scala.min.js | 1 + .../libs/prismjs/components/prism-scheme.js | 67 + .../prismjs/components/prism-scheme.min.js | 1 + .../libs/prismjs/components/prism-scss.js | 77 + .../libs/prismjs/components/prism-scss.min.js | 1 + .../prismjs/components/prism-shell-session.js | 54 + .../components/prism-shell-session.min.js | 1 + .../libs/prismjs/components/prism-smali.js | 86 + .../prismjs/components/prism-smali.min.js | 1 + .../prismjs/components/prism-smalltalk.js | 31 + .../prismjs/components/prism-smalltalk.min.js | 1 + .../libs/prismjs/components/prism-smarty.js | 87 + .../prismjs/components/prism-smarty.min.js | 1 + .../libs/prismjs/components/prism-solidity.js | 22 + .../prismjs/components/prism-solidity.min.js | 1 + .../prismjs/components/prism-solution-file.js | 51 + .../components/prism-solution-file.min.js | 1 + .../libs/prismjs/components/prism-soy.js | 96 + .../libs/prismjs/components/prism-soy.min.js | 1 + .../libs/prismjs/components/prism-sparql.js | 18 + .../prismjs/components/prism-sparql.min.js | 1 + .../prismjs/components/prism-splunk-spl.js | 24 + .../components/prism-splunk-spl.min.js | 1 + .../libs/prismjs/components/prism-sqf.js | 34 + .../libs/prismjs/components/prism-sqf.min.js | 1 + .../libs/prismjs/components/prism-sql.js | 24 + .../libs/prismjs/components/prism-sql.min.js | 1 + .../libs/prismjs/components/prism-stylus.js | 144 ++ .../prismjs/components/prism-stylus.min.js | 1 + .../libs/prismjs/components/prism-swift.js | 25 + .../prismjs/components/prism-swift.min.js | 1 + .../libs/prismjs/components/prism-t4-cs.js | 1 + .../prismjs/components/prism-t4-cs.min.js | 1 + .../prismjs/components/prism-t4-templating.js | 49 + .../components/prism-t4-templating.min.js | 1 + .../libs/prismjs/components/prism-t4-vb.js | 1 + .../prismjs/components/prism-t4-vb.min.js | 1 + .../libs/prismjs/components/prism-tap.js | 20 + .../libs/prismjs/components/prism-tap.min.js | 1 + .../libs/prismjs/components/prism-tcl.js | 46 + .../libs/prismjs/components/prism-tcl.min.js | 1 + .../libs/prismjs/components/prism-textile.js | 276 +++ .../prismjs/components/prism-textile.min.js | 1 + .../libs/prismjs/components/prism-toml.js | 49 + .../libs/prismjs/components/prism-toml.min.js | 1 + .../libs/prismjs/components/prism-tsx.js | 2 + .../libs/prismjs/components/prism-tsx.min.js | 1 + .../libs/prismjs/components/prism-tt2.js | 53 + .../libs/prismjs/components/prism-tt2.min.js | 1 + .../libs/prismjs/components/prism-turtle.js | 54 + .../prismjs/components/prism-turtle.min.js | 1 + .../libs/prismjs/components/prism-twig.js | 46 + .../libs/prismjs/components/prism-twig.min.js | 1 + .../prismjs/components/prism-typescript.js | 42 + .../components/prism-typescript.min.js | 1 + .../prismjs/components/prism-unrealscript.js | 42 + .../components/prism-unrealscript.min.js | 1 + .../libs/prismjs/components/prism-vala.js | 74 + .../libs/prismjs/components/prism-vala.min.js | 1 + .../libs/prismjs/components/prism-vbnet.js | 15 + .../prismjs/components/prism-vbnet.min.js | 1 + .../libs/prismjs/components/prism-velocity.js | 72 + .../prismjs/components/prism-velocity.min.js | 1 + .../libs/prismjs/components/prism-verilog.js | 20 + .../prismjs/components/prism-verilog.min.js | 1 + .../libs/prismjs/components/prism-vhdl.js | 23 + .../libs/prismjs/components/prism-vhdl.min.js | 1 + .../libs/prismjs/components/prism-vim.js | 10 + .../libs/prismjs/components/prism-vim.min.js | 1 + .../prismjs/components/prism-visual-basic.js | 35 + .../components/prism-visual-basic.min.js | 1 + .../prismjs/components/prism-warpscript.js | 21 + .../components/prism-warpscript.min.js | 1 + .../libs/prismjs/components/prism-wasm.js | 31 + .../libs/prismjs/components/prism-wasm.min.js | 1 + .../libs/prismjs/components/prism-wiki.js | 82 + .../libs/prismjs/components/prism-wiki.min.js | 1 + .../libs/prismjs/components/prism-xeora.js | 114 + .../prismjs/components/prism-xeora.min.js | 1 + .../libs/prismjs/components/prism-xml-doc.js | 40 + .../prismjs/components/prism-xml-doc.min.js | 1 + .../libs/prismjs/components/prism-xojo.js | 20 + .../libs/prismjs/components/prism-xojo.min.js | 1 + .../libs/prismjs/components/prism-xquery.js | 162 ++ .../prismjs/components/prism-xquery.min.js | 1 + .../libs/prismjs/components/prism-yaml.js | 76 + .../libs/prismjs/components/prism-yaml.min.js | 1 + .../libs/prismjs/components/prism-yang.js | 20 + .../libs/prismjs/components/prism-yang.min.js | 1 + .../libs/prismjs/components/prism-zig.js | 101 + .../libs/prismjs/components/prism-zig.min.js | 1 + .../wwwroot/libs/prismjs/dependencies.js | 450 ++++ .../wwwroot/libs/prismjs/package.json | 65 + .../plugins/autolinker/prism-autolinker.css | 3 + .../plugins/autolinker/prism-autolinker.js | 81 + .../autolinker/prism-autolinker.min.js | 1 + .../plugins/autoloader/prism-autoloader.js | 466 ++++ .../autoloader/prism-autoloader.min.js | 1 + .../command-line/prism-command-line.css | 33 + .../command-line/prism-command-line.js | 182 ++ .../command-line/prism-command-line.min.js | 1 + .../prism-copy-to-clipboard.js | 77 + .../prism-copy-to-clipboard.min.js | 1 + .../custom-class/prism-custom-class.js | 95 + .../custom-class/prism-custom-class.min.js | 1 + .../prism-data-uri-highlight.js | 98 + .../prism-data-uri-highlight.min.js | 1 + .../diff-highlight/prism-diff-highlight.css | 13 + .../diff-highlight/prism-diff-highlight.js | 83 + .../prism-diff-highlight.min.js | 1 + .../download-button/prism-download-button.js | 19 + .../prism-download-button.min.js | 1 + .../file-highlight/prism-file-highlight.js | 141 ++ .../prism-file-highlight.min.js | 1 + .../prism-filter-highlight-all.js | 125 + .../prism-filter-highlight-all.min.js | 1 + .../prism-highlight-keywords.js | 17 + .../prism-highlight-keywords.min.js | 1 + .../inline-color/prism-inline-color.css | 33 + .../inline-color/prism-inline-color.js | 105 + .../inline-color/prism-inline-color.min.js | 1 + .../jsonp-highlight/prism-jsonp-highlight.js | 276 +++ .../prism-jsonp-highlight.min.js | 1 + .../plugins/keep-markup/prism-keep-markup.js | 103 + .../keep-markup/prism-keep-markup.min.js | 1 + .../line-highlight/prism-line-highlight.css | 59 + .../line-highlight/prism-line-highlight.js | 280 +++ .../prism-line-highlight.min.js | 1 + .../line-numbers/prism-line-numbers.css | 40 + .../line-numbers/prism-line-numbers.js | 244 ++ .../line-numbers/prism-line-numbers.min.js | 1 + .../match-braces/prism-match-braces.css | 29 + .../match-braces/prism-match-braces.js | 184 ++ .../match-braces/prism-match-braces.min.js | 1 + .../prism-normalize-whitespace.js | 194 ++ .../prism-normalize-whitespace.min.js | 1 + .../plugins/previewers/prism-previewers.css | 242 ++ .../plugins/previewers/prism-previewers.js | 703 ++++++ .../previewers/prism-previewers.min.js | 1 + .../prism-remove-initial-line-feed.js | 21 + .../prism-remove-initial-line-feed.min.js | 1 + .../show-invisibles/prism-show-invisibles.css | 34 + .../show-invisibles/prism-show-invisibles.js | 84 + .../prism-show-invisibles.min.js | 1 + .../show-language/prism-show-language.js | 233 ++ .../show-language/prism-show-language.min.js | 1 + .../prismjs/plugins/toolbar/prism-toolbar.css | 64 + .../prismjs/plugins/toolbar/prism-toolbar.js | 178 ++ .../plugins/toolbar/prism-toolbar.min.js | 1 + .../plugins/treeview/prism-treeview.css | 146 ++ .../plugins/treeview/prism-treeview.js | 63 + .../plugins/treeview/prism-treeview.min.js | 1 + .../prism-unescaped-markup.css | 10 + .../prism-unescaped-markup.js | 44 + .../prism-unescaped-markup.min.js | 1 + .../libs/prismjs/plugins/wpd/prism-wpd.css | 11 + .../libs/prismjs/plugins/wpd/prism-wpd.js | 169 ++ .../libs/prismjs/plugins/wpd/prism-wpd.min.js | 1 + .../wwwroot/libs/prismjs/prism.js | 1680 +++++++++++++ .../wwwroot/libs/prismjs/themes/prism-coy.css | 218 ++ .../libs/prismjs/themes/prism-dark.css | 129 + .../libs/prismjs/themes/prism-funky.css | 130 + .../libs/prismjs/themes/prism-okaidia.css | 123 + .../prismjs/themes/prism-solarizedlight.css | 150 ++ .../libs/prismjs/themes/prism-tomorrow.css | 122 + .../libs/prismjs/themes/prism-twilight.css | 199 ++ .../wwwroot/libs/prismjs/themes/prism.css | 140 ++ .../yarn.lock | 55 + 541 files changed, 27811 insertions(+), 16 deletions(-) create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/CHANGELOG.md create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/README.md create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components.json create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/index.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-abap.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-abap.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-abnf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-abnf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-actionscript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-actionscript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ada.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ada.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-agda.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-agda.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-al.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-al.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-antlr4.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-antlr4.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-apacheconf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-apacheconf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-apl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-apl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-applescript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-applescript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-aql.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-aql.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-arduino.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-arduino.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-arff.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-arff.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-asciidoc.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-asciidoc.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-asm6502.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-asm6502.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-aspnet.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-aspnet.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-autohotkey.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-autohotkey.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-autoit.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-autoit.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bash.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bash.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-basic.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-basic.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-batch.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-batch.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bbcode.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bbcode.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bison.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bison.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bnf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bnf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-brainfuck.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-brainfuck.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-brightscript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-brightscript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bro.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-bro.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-c.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-c.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cil.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cil.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-clike.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-clike.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-clojure.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-clojure.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cmake.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cmake.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-coffeescript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-coffeescript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-concurnas.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-concurnas.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-core.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-core.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cpp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cpp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-crystal.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-crystal.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-csharp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-csharp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-csp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-csp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-css-extras.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-css-extras.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-css.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-css.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cypher.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-cypher.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-d.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-d.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dart.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dart.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dax.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dax.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dhall.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dhall.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-diff.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-diff.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-django.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-django.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dns-zone-file.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-dns-zone-file.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-docker.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-docker.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ebnf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ebnf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-editorconfig.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-editorconfig.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-eiffel.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-eiffel.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ejs.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ejs.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-elixir.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-elixir.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-elm.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-elm.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-erb.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-erb.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-erlang.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-erlang.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-etlua.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-etlua.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-excel-formula.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-excel-formula.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-factor.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-factor.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-firestore-security-rules.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-firestore-security-rules.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-flow.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-flow.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-fortran.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-fortran.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-fsharp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-fsharp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ftl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ftl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gcode.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gcode.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gdscript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gdscript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gedcom.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gedcom.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gherkin.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gherkin.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-git.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-git.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-glsl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-glsl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gml.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-gml.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-go.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-go.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-graphql.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-graphql.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-groovy.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-groovy.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-haml.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-haml.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-handlebars.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-handlebars.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-haskell.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-haskell.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-haxe.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-haxe.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hcl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hcl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hlsl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hlsl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hpkp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hpkp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hsts.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-hsts.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-http.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-http.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ichigojam.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ichigojam.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-icon.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-icon.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-iecst.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-iecst.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ignore.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ignore.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-inform7.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-inform7.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ini.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ini.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-io.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-io.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-j.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-j.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-java.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-java.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javadoc.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javadoc.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javadoclike.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javadoclike.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javascript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javascript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javastacktrace.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-javastacktrace.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jolie.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jolie.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jq.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jq.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-js-extras.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-js-extras.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-js-templates.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-js-templates.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsdoc.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsdoc.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-json.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-json.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-json5.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-json5.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsonp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsonp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsstacktrace.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsstacktrace.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsx.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-jsx.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-julia.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-julia.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-keyman.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-keyman.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-kotlin.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-kotlin.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-latex.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-latex.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-latte.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-latte.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-less.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-less.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lilypond.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lilypond.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-liquid.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-liquid.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lisp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lisp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-livescript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-livescript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-llvm.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-llvm.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lolcode.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lolcode.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lua.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-lua.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-makefile.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-makefile.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-markdown.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-markdown.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-markup-templating.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-markup-templating.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-markup.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-markup.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-matlab.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-matlab.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-mel.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-mel.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-mizar.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-mizar.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-monkey.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-monkey.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-moonscript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-moonscript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-n1ql.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-n1ql.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-n4js.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-n4js.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nand2tetris-hdl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nand2tetris-hdl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nasm.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nasm.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-neon.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-neon.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nginx.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nginx.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nim.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nim.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nix.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nix.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nsis.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-nsis.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-objectivec.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-objectivec.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ocaml.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ocaml.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-opencl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-opencl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-oz.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-oz.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-parigp.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-parigp.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-parser.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-parser.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pascal.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pascal.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pascaligo.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pascaligo.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pcaxis.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pcaxis.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-peoplecode.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-peoplecode.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-perl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-perl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-php-extras.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-php-extras.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-php.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-php.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-phpdoc.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-phpdoc.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-plsql.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-plsql.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-powerquery.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-powerquery.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-powershell.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-powershell.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-processing.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-processing.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-prolog.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-prolog.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-properties.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-properties.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-protobuf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-protobuf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pug.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pug.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-puppet.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-puppet.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pure.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-pure.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-purebasic.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-purebasic.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-python.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-python.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-q.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-q.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-qml.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-qml.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-qore.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-qore.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-r.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-r.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-racket.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-racket.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-reason.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-reason.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-regex.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-regex.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-renpy.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-renpy.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-rest.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-rest.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-rip.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-rip.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-roboconf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-roboconf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-robotframework.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-robotframework.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ruby.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-ruby.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-rust.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-rust.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sas.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sas.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sass.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sass.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-scala.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-scala.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-scheme.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-scheme.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-scss.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-scss.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-shell-session.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-shell-session.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-smali.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-smali.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-smalltalk.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-smalltalk.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-smarty.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-smarty.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-solidity.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-solidity.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-solution-file.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-solution-file.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-soy.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-soy.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sparql.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sparql.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-splunk-spl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-splunk-spl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sqf.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sqf.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sql.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-sql.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-stylus.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-stylus.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-swift.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-swift.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-t4-cs.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-t4-cs.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-t4-templating.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-t4-templating.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-t4-vb.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-t4-vb.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tap.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tap.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tcl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tcl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-textile.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-textile.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-toml.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-toml.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tsx.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tsx.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tt2.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-tt2.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-turtle.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-turtle.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-twig.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-twig.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-typescript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-typescript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-unrealscript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-unrealscript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vala.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vala.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vbnet.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vbnet.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-velocity.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-velocity.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-verilog.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-verilog.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vhdl.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vhdl.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vim.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-vim.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-visual-basic.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-visual-basic.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-warpscript.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-warpscript.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-wasm.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-wasm.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-wiki.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-wiki.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xeora.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xeora.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xml-doc.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xml-doc.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xojo.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xojo.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xquery.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-xquery.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-yaml.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-yaml.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-yang.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-yang.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-zig.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/components/prism-zig.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/dependencies.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/package.json create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/autolinker/prism-autolinker.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/autoloader/prism-autoloader.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/command-line/prism-command-line.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/custom-class/prism-custom-class.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/data-uri-highlight/prism-data-uri-highlight.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/diff-highlight/prism-diff-highlight.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/diff-highlight/prism-diff-highlight.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/diff-highlight/prism-diff-highlight.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/download-button/prism-download-button.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/download-button/prism-download-button.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/file-highlight/prism-file-highlight.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/filter-highlight-all/prism-filter-highlight-all.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/filter-highlight-all/prism-filter-highlight-all.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/highlight-keywords/prism-highlight-keywords.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/inline-color/prism-inline-color.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/inline-color/prism-inline-color.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/inline-color/prism-inline-color.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/jsonp-highlight/prism-jsonp-highlight.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/keep-markup/prism-keep-markup.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/line-highlight/prism-line-highlight.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/line-numbers/prism-line-numbers.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/match-braces/prism-match-braces.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/match-braces/prism-match-braces.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/match-braces/prism-match-braces.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/normalize-whitespace/prism-normalize-whitespace.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/previewers/prism-previewers.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/remove-initial-line-feed/prism-remove-initial-line-feed.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/show-invisibles/prism-show-invisibles.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/show-language/prism-show-language.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/toolbar/prism-toolbar.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/treeview/prism-treeview.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/treeview/prism-treeview.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/treeview/prism-treeview.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/unescaped-markup/prism-unescaped-markup.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/plugins/wpd/prism-wpd.min.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/prism.js create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-coy.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-dark.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-funky.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-okaidia.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-solarizedlight.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-tomorrow.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism-twilight.css create mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/prismjs/themes/prism.css diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml index 8b48f579ac..91ed5b8bff 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ModalsDemo/Default.cshtml @@ -5,20 +5,7 @@ Launch modal - - - - Woohoo, you're reading this text in a modal! - - - - - - - - Launch modal - - + Woohoo, you're reading this text in a modal! diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index 8d85f6f6d8..6f3f0c9314 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -363,7 +363,7 @@ datatables.defaultConfigurations = datatables.defaultConfigurations || {}; datatables.defaultConfigurations.scrollX = true; - + datatables.defaultConfigurations.language = function () { return { info: localize("PagerInfo"), diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json index 9e281c4b1f..52e9df08b6 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json @@ -3,7 +3,8 @@ "name": "asp.net", "private": true, "dependencies": { - "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.2" + "@abp/aspnetcore.mvc.ui.theme.basic": "^3.1.2", + "@abp/prismjs": "^3.1.2" }, "devDependencies": {} } \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.js new file mode 100644 index 0000000000..0240e3f738 --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.js @@ -0,0 +1,973 @@ +/*! + * clipboard.js v2.0.6 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["ClipboardJS"] = factory(); + else + root["ClipboardJS"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 6); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +function E () { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) +} + +E.prototype = { + on: function (name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function (name, callback, ctx) { + var self = this; + function listener () { + self.off(name, listener); + callback.apply(ctx, arguments); + }; + + listener._ = callback + return this.on(name, listener, ctx); + }, + + emit: function (name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function (name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + (liveEvents.length) + ? e[name] = liveEvents + : delete e[name]; + + return this; + } +}; + +module.exports = E; +module.exports.TinyEmitter = E; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +var is = __webpack_require__(3); +var delegate = __webpack_require__(4); + +/** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error('Missing required arguments'); + } + + if (!is.string(type)) { + throw new TypeError('Second argument must be a String'); + } + + if (!is.fn(callback)) { + throw new TypeError('Third argument must be a Function'); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } + else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } + else if (is.string(target)) { + return listenSelector(target, type, callback); + } + else { + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + } +} + +/** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + } +} + +/** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + } +} + +/** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); +} + +module.exports = listen; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +/** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ +exports.node = function(value) { + return value !== undefined + && value instanceof HTMLElement + && value.nodeType === 1; +}; + +/** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ +exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return value !== undefined + && (type === '[object NodeList]' || type === '[object HTMLCollection]') + && ('length' in value) + && (value.length === 0 || exports.node(value[0])); +}; + +/** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ +exports.string = function(value) { + return typeof value === 'string' + || value instanceof String; +}; + +/** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ +exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === '[object Function]'; +}; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +var closest = __webpack_require__(5); + +/** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + } +} + +/** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === 'function') { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === 'function') { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === 'string') { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function (element) { + return _delegate(element, selector, type, callback, useCapture); + }); +} + +/** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ +function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + } +} + +module.exports = delegate; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +var DOCUMENT_NODE_TYPE = 9; + +/** + * A polyfill for Element.matches() + */ +if (typeof Element !== 'undefined' && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; +} + +/** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ +function closest (element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if (typeof element.matches === 'function' && + element.matches(selector)) { + return element; + } + element = element.parentNode; + } +} + +module.exports = closest; + + +/***/ }), +/* 6 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + +// EXTERNAL MODULE: ./node_modules/select/src/select.js +var src_select = __webpack_require__(0); +var select_default = /*#__PURE__*/__webpack_require__.n(src_select); + +// CONCATENATED MODULE: ./src/clipboard-action.js +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + + +/** + * Inner class which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + */ + +var clipboard_action_ClipboardAction = function () { + /** + * @param {Object} options + */ + function ClipboardAction(options) { + _classCallCheck(this, ClipboardAction); + + this.resolveOptions(options); + this.initSelection(); + } + + /** + * Defines base properties passed from constructor. + * @param {Object} options + */ + + + _createClass(ClipboardAction, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = options.action; + this.container = options.container; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ''; + } + + /** + * Decides which selection strategy is going to be applied based + * on the existence of `text` and `target` properties. + */ + + }, { + key: 'initSelection', + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + + /** + * Creates a fake textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + + }, { + key: 'selectFake', + value: function selectFake() { + var _this = this; + + var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; + + this.removeFake(); + + this.fakeHandlerCallback = function () { + return _this.removeFake(); + }; + this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true; + + this.fakeElem = document.createElement('textarea'); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = '12pt'; + // Reset box model + this.fakeElem.style.border = '0'; + this.fakeElem.style.padding = '0'; + this.fakeElem.style.margin = '0'; + // Move element out of screen horizontally + this.fakeElem.style.position = 'absolute'; + this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + 'px'; + + this.fakeElem.setAttribute('readonly', ''); + this.fakeElem.value = this.text; + + this.container.appendChild(this.fakeElem); + + this.selectedText = select_default()(this.fakeElem); + this.copyText(); + } + + /** + * Only removes the fake element after another click event, that way + * a user can hit `Ctrl+C` to copy because selection still exists. + */ + + }, { + key: 'removeFake', + value: function removeFake() { + if (this.fakeHandler) { + this.container.removeEventListener('click', this.fakeHandlerCallback); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + this.container.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + + /** + * Selects the content from element passed on `target` property. + */ + + }, { + key: 'selectTarget', + value: function selectTarget() { + this.selectedText = select_default()(this.target); + this.copyText(); + } + + /** + * Executes the copy operation based on the current selection. + */ + + }, { + key: 'copyText', + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + + /** + * Fires an event based on the copy operation result. + * @param {Boolean} succeeded + */ + + }, { + key: 'handleResult', + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + + /** + * Moves focus away from `target` and back to the trigger, removes current selection. + */ + + }, { + key: 'clearSelection', + value: function clearSelection() { + if (this.trigger) { + this.trigger.focus(); + } + document.activeElement.blur(); + window.getSelection().removeAllRanges(); + } + + /** + * Sets the `action` to be performed which can be either 'copy' or 'cut'. + * @param {String} action + */ + + }, { + key: 'destroy', + + + /** + * Destroy lifecycle. + */ + value: function destroy() { + this.removeFake(); + } + }, { + key: 'action', + set: function set() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; + + this._action = action; + + if (this._action !== 'copy' && this._action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } + } + + /** + * Gets the `action` property. + * @return {String} + */ + , + get: function get() { + return this._action; + } + + /** + * Sets the `target` property using an element + * that will be have its content copied. + * @param {Element} target + */ + + }, { + key: 'target', + set: function set(target) { + if (target !== undefined) { + if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { + if (this.action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + + this._target = target; + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } + } + + /** + * Gets the `target` property. + * @return {String|HTMLElement} + */ + , + get: function get() { + return this._target; + } + }]); + + return ClipboardAction; +}(); + +/* harmony default export */ var clipboard_action = (clipboard_action_ClipboardAction); +// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js +var tiny_emitter = __webpack_require__(1); +var tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter); + +// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js +var listen = __webpack_require__(2); +var listen_default = /*#__PURE__*/__webpack_require__.n(listen); + +// CONCATENATED MODULE: ./src/clipboard.js +var clipboard_typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var clipboard_createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function clipboard_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + + + + + +/** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ + +var clipboard_Clipboard = function (_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + clipboard_classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + clipboard_createClass(Clipboard, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body; + } + + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + + }, { + key: 'listenClick', + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = listen_default()(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + + }, { + key: 'onClick', + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new clipboard_action({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + container: this.container, + trigger: trigger, + emitter: this + }); + } + + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultAction', + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultTarget', + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + + }, { + key: 'defaultText', + + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + + /** + * Destroy lifecycle. + */ + + }, { + key: 'destroy', + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + }], [{ + key: 'isSupported', + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + + return support; + } + }]); + + return Clipboard; +}(tiny_emitter_default.a); + +/** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + + +function getAttributeValue(suffix, element) { + var attribute = 'data-clipboard-' + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); +} + +/* harmony default export */ var clipboard = __webpack_exports__["default"] = (clipboard_Clipboard); + +/***/ }) +/******/ ])["default"]; +}); \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.min.js b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.min.js new file mode 100644 index 0000000000..28650f3cc9 --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/wwwroot/libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.6 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return o={},r.m=n=[function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o