Browse Source

Merge pull request #15047 from abpframework/auto-merge/rel-7-0/1569

Merge branch dev with rel-7.0
pull/15053/head
Engincan VESKE 4 years ago
committed by GitHub
parent
commit
c71d514c7d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      docs/en/Audit-Logging.md
  2. 80
      docs/en/Integration-Services.md
  3. 36
      docs/en/docs-nav.json
  4. BIN
      docs/en/images/integration-services.png
  5. 4
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  6. 4
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css
  7. 4
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss
  8. 244
      npm/ng-packs/angular.json
  9. 17
      npm/ng-packs/apps/dev-app/.browserslistrc
  10. 2
      npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
  11. 4
      npm/ng-packs/apps/dev-app/tsconfig.app.json
  12. 160
      npm/ng-packs/migrations.json
  13. 30
      npm/ng-packs/nx.json
  14. 74
      npm/ng-packs/package.json
  15. 5
      npm/ng-packs/packages/account-core/tsconfig.lib.json
  16. 4
      npm/ng-packs/packages/account-core/tsconfig.lib.prod.json
  17. 5
      npm/ng-packs/packages/account/tsconfig.lib.json
  18. 4
      npm/ng-packs/packages/account/tsconfig.lib.prod.json
  19. 5
      npm/ng-packs/packages/components/tsconfig.lib.json
  20. 4
      npm/ng-packs/packages/components/tsconfig.lib.prod.json
  21. 2
      npm/ng-packs/packages/core/package.json
  22. 2
      npm/ng-packs/packages/core/src/lib/services/timeout-limited-oauth.service.ts
  23. 5
      npm/ng-packs/packages/core/tsconfig.lib.json
  24. 4
      npm/ng-packs/packages/core/tsconfig.lib.prod.json
  25. 5
      npm/ng-packs/packages/feature-management/tsconfig.lib.json
  26. 4
      npm/ng-packs/packages/feature-management/tsconfig.lib.prod.json
  27. 5
      npm/ng-packs/packages/identity/tsconfig.lib.json
  28. 4
      npm/ng-packs/packages/identity/tsconfig.lib.prod.json
  29. 5
      npm/ng-packs/packages/permission-management/tsconfig.lib.json
  30. 4
      npm/ng-packs/packages/permission-management/tsconfig.lib.prod.json
  31. 8
      npm/ng-packs/packages/schematics/package.json
  32. 2
      npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts
  33. 2
      npm/ng-packs/packages/schematics/src/utils/angular/README.md
  34. 61
      npm/ng-packs/packages/schematics/src/utils/angular/add-declaration-to-ng-module.ts
  35. 47
      npm/ng-packs/packages/schematics/src/utils/angular/ast-utils.ts
  36. 4
      npm/ng-packs/packages/schematics/src/utils/angular/generate-from-files.ts
  37. 10
      npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json
  38. 1
      npm/ng-packs/packages/schematics/src/utils/angular/parse-name.ts
  39. 34
      npm/ng-packs/packages/schematics/src/utils/angular/test/create-app-module.ts
  40. 19
      npm/ng-packs/packages/schematics/src/utils/angular/test/get-file-content.ts
  41. 10
      npm/ng-packs/packages/schematics/src/utils/angular/test/index.ts
  42. 5
      npm/ng-packs/packages/setting-management/tsconfig.lib.json
  43. 4
      npm/ng-packs/packages/setting-management/tsconfig.lib.prod.json
  44. 5
      npm/ng-packs/packages/tenant-management/tsconfig.lib.json
  45. 4
      npm/ng-packs/packages/tenant-management/tsconfig.lib.prod.json
  46. 5
      npm/ng-packs/packages/theme-basic/tsconfig.lib.json
  47. 4
      npm/ng-packs/packages/theme-basic/tsconfig.lib.prod.json
  48. 4
      npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts
  49. 18
      npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts
  50. 4
      npm/ng-packs/packages/theme-shared/package.json
  51. 6
      npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts
  52. 5
      npm/ng-packs/packages/theme-shared/tsconfig.lib.json
  53. 4
      npm/ng-packs/packages/theme-shared/tsconfig.lib.prod.json
  54. 10
      npm/ng-packs/scripts/mock-schematic/mock-schematic-json.ts
  55. 17
      templates/app-nolayers/angular/.browserslistrc
  56. 38
      templates/app-nolayers/angular/package.json
  57. 2
      templates/app-nolayers/angular/src/app/app-routing.module.ts
  58. 15
      templates/app-nolayers/angular/src/test.ts
  59. 13
      templates/app-nolayers/angular/tsconfig.json
  60. 17
      templates/app/angular/.browserslistrc
  61. 38
      templates/app/angular/package.json
  62. 2
      templates/app/angular/src/app/app-routing.module.ts
  63. 16
      templates/app/angular/src/test.ts
  64. 18
      templates/app/angular/tsconfig.json
  65. 10
      templates/app/react-native/Environment.js
  66. 41
      templates/app/react-native/package.json
  67. 38
      templates/module/angular/package.json
  68. 17
      templates/module/angular/projects/dev-app/.browserslistrc
  69. 2
      templates/module/angular/projects/dev-app/src/app/app-routing.module.ts
  70. 11
      templates/module/angular/projects/dev-app/src/test.ts
  71. 11
      templates/module/angular/projects/my-project-name/src/test.ts
  72. 1
      templates/module/angular/projects/my-project-name/tsconfig.lib.json

4
docs/en/Audit-Logging.md

@ -40,12 +40,14 @@ Here, a list of the options you can configure:
* `HideErrors` (default: `true`): Audit log system hides and write regular [logs](Logging.md) if any error occurs while saving the audit log objects. If saving the audit logs is critical for your system, set this to `false` to throw exception in case of hiding the errors. * `HideErrors` (default: `true`): Audit log system hides and write regular [logs](Logging.md) if any error occurs while saving the audit log objects. If saving the audit logs is critical for your system, set this to `false` to throw exception in case of hiding the errors.
* `IsEnabledForAnonymousUsers` (default: `true`): If you want to write audit logs only for the authenticated users, set this to `false`. If you save audit logs for anonymous users, you will see `null` for `UserId` values for these users. * `IsEnabledForAnonymousUsers` (default: `true`): If you want to write audit logs only for the authenticated users, set this to `false`. If you save audit logs for anonymous users, you will see `null` for `UserId` values for these users.
* `AlwaysLogOnException` (default: `true`): If you set to true, it always saves the audit log on an exception/error case without checking other options (except `IsEnabled`, which completely disables the audit logging). * `AlwaysLogOnException` (default: `true`): If you set to true, it always saves the audit log on an exception/error case without checking other options (except `IsEnabled`, which completely disables the audit logging).
* `IsEnabledForIntegrationService` (default: `false`): Audit Logging is disabled for [integration services](Integration-Services.md) by default. Set this property as `true` to enable it.
* `IsEnabledForGetRequests` (default: `false`): HTTP GET requests should not make any change in the database normally and audit log system doesn't save audit log objects for GET request. Set this to `true` to enable it also for the GET requests. * `IsEnabledForGetRequests` (default: `false`): HTTP GET requests should not make any change in the database normally and audit log system doesn't save audit log objects for GET request. Set this to `true` to enable it also for the GET requests.
* `DisableLogActionInfo` (default: `false`):If you set to true, Will no longer log `AuditLogActionInfo`. * `DisableLogActionInfo` (default: `false`):If you set to true, Will no longer log `AuditLogActionInfo`.
* `ApplicationName`: If multiple applications saving audit logs into a single database, set this property to your application name, so you can distinguish the logs of different applications. If you don't set, it is set from the `IApplicationInfoAccessor.ApplicationName` value, which is the entry assembly name by default. * `ApplicationName`: If multiple applications are saving audit logs into a single database, set this property to your application name, so you can distinguish the logs of different applications. If you don't set, it will set from the `IApplicationInfoAccessor.ApplicationName` value, which is the entry assembly name by default.
* `IgnoredTypes`: A list of `Type`s to be ignored for audit logging. If this is an entity type, changes for this type of entities will not be saved. This list is also used while serializing the action parameters. * `IgnoredTypes`: A list of `Type`s to be ignored for audit logging. If this is an entity type, changes for this type of entities will not be saved. This list is also used while serializing the action parameters.
* `EntityHistorySelectors`: A list of selectors those are used to determine if an entity type is selected for saving the entity change. See the section below for details. * `EntityHistorySelectors`: A list of selectors those are used to determine if an entity type is selected for saving the entity change. See the section below for details.
* `Contributors`: A list of `AuditLogContributor` implementations. A contributor is a way of extending the audit log system. See the "Audit Log Contributors" section below. * `Contributors`: A list of `AuditLogContributor` implementations. A contributor is a way of extending the audit log system. See the "Audit Log Contributors" section below.
* `AlwaysLogSelectors`: A list of selectors to save the audit logs for the matched criteria.
### Entity History Selectors ### Entity History Selectors

80
docs/en/Integration-Services.md

@ -0,0 +1,80 @@
# Integration Services
The *Integration Service* concept was created to distinguish the [application services](Application-Services.md) that are built for inter-module (or inter-microservice) communication from the application services that are intended to be consumed from a UI or a client application.
The following figure shows a few microservices behind an API Gateway that is consumed by a UI application and 3rd-party client applications:
![integration-services](images/integration-services.png)
HTTP requests coming from out of the API Gateway can be called as *external request*, while the HTTP requests performed between microservices can be considered as *internal requests*. The application services that are designed to respond to these external requests are called as *integration services*, because their purpose is to integrate microservices in the system, rather than respond to user requests.
## Marking an Application Service as Integration Service
Assume that you have an application service named `ProductAppService`, and you want to use that application service as an integration service. In that case, you can use the `[IntegrationService]` attribute on top of the application service class as shown below:
```csharp
[IntegrationService]
public class ProductAppService : ApplicationService, IProductAppService
{
// ...
}
```
If your application service has an interface, like `IProductService` in this example, you can use it on the service interface:
```csharp
[IntegrationService]
public interface IProductAppService : IApplicationService
{
// ...
}
```
> If you've used the `[IntegrationService]` on top of your service interface, it is *not needed* to use on the service class too.
That's all. From now, ABP will handle your application service as integration service and implement the followings by convention:
* If you are using the [Auto API Controllers](API/Auto-API-Controllers.md) feature in your application, the URL prefix will be `/integration-api` instead of `/api` for your integration services. Thus, you can distinguish internal and external service communications and take additional actions, such as preventing REST API calls for integration services out of API Gateway.
* Audit logging is disabled by default for the integration services. See the next section if you want to enable it.
## Configuration
### Enabling/Disabling the Audit Logging
Audit Logging is disabled by default for integration services but it can be enabled by configuring the `AbpAuditingOptions` [options class](Options.md) in the `ConfigureServices` method of your [module class](Module-Development-Basics.md):
```csharp
Configure<AbpAuditingOptions>(options =>
{
options.IsEnabledForIntegrationService = true;
});
```
> Please refer to the [audit logging document](Audit-Logging.md) for other options and details.
### Filtering Auto API Controllers
You can filter integration services (or non-integration services) while creating [Auto API Controllers](API/Auto-API-Controllers.md), using the `ApplicationServiceTypes` option of the `ConventionalControllerSetting` by configuring the `AbpAspNetCoreMvcOptions` as shown below:
```csharp
Configure<AbpAspNetCoreMvcOptions>(options =>
{
options.ConventionalControllers.Create(
typeof(MyApplicationModule).Assembly,
conventionalControllerSetting =>
{
conventionalControllerSetting.ApplicationServiceTypes =
ApplicationServiceTypes.IntegrationServices;
});
});
```
Tip: You can call the `options.ConventionalControllers.Create` multiple times to configure regular application services and integration services with different options.
> Please refer to the [Auto API Controllers document](API/Auto-API-Controllers.md) for more information about the Auto API Controller system.
## See Also
* [Application Services](Application-Services.md)
* [Auto API Controllers](API/Auto-API-Controllers.md)
* [Audit Logging](Audit-Logging.md)

36
docs/en/docs-nav.json

@ -604,18 +604,6 @@
{ {
"text": "API", "text": "API",
"items": [ "items": [
{
"text": "Auto API Controllers",
"path": "API/Auto-API-Controllers.md"
},
{
"text": "Dynamic C# API Clients",
"path": "API/Dynamic-CSharp-API-Clients.md"
},
{
"text": "Static C# API Clients",
"path": "API/Static-CSharp-API-Clients.md"
},
{ {
"text": "ABP Endpoints", "text": "ABP Endpoints",
"items": [ "items": [
@ -629,13 +617,29 @@
} }
] ]
}, },
{
"text": "Swagger Integration",
"path": "API/Swagger-Integration.md"
},
{ {
"text": "API Versioning", "text": "API Versioning",
"path": "API/API-Versioning.md" "path": "API/API-Versioning.md"
},
{
"text": "Auto API Controllers",
"path": "API/Auto-API-Controllers.md"
},
{
"text": "Dynamic C# API Clients",
"path": "API/Dynamic-CSharp-API-Clients.md"
},
{
"text": "Integration Services",
"path": "Integration-Services.md"
},
{
"text": "Static C# API Clients",
"path": "API/Static-CSharp-API-Clients.md"
},
{
"text": "Swagger Integration",
"path": "API/Swagger-Integration.md"
} }
] ]
}, },

BIN
docs/en/images/integration-services.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

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

@ -136,7 +136,7 @@
{ {
<div class="col"> <div class="col">
<div> <div>
<div class="docs-version docs-language @(Model.VersionSelectItems.Any() ? "ps-1" : "")"> <div class="docs-version docs-language">
<span>@L["Language"]</span> <span>@L["Language"]</span>
<div class="version-select"> <div class="version-select">
<div class="input-group"> <div class="input-group">
@ -158,7 +158,7 @@
<div class="docs-version"> <div class="docs-version">
<div class="version-select"> <div class="version-select">
<div class="input-group"> <div class="input-group align-items-center">
<span class="input-group-text"> <span class="input-group-text">
<i class="fa fa-filter"></i> <i class="fa fa-filter"></i>
</span> </span>

4
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.css

@ -149,7 +149,7 @@ body.scrolledMore .alert-criteria p.alert-p {
padding: 0 0; padding: 0 0;
font-size: 0.75rem; font-size: 0.75rem;
width: 15px; width: 15px;
height: 34px; height: 24px;
line-height: 1; line-height: 1;
border-radius: 0px; border-radius: 0px;
border: 0; border: 0;
@ -313,7 +313,7 @@ body.scrolledMore .alert-criteria p.alert-p {
.docs-page .docs-content .top-container nav .breadcrumb { .docs-page .docs-content .top-container nav .breadcrumb {
margin-bottom: 0; margin-bottom: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
overflow-x: scroll; overflow-x: auto;
white-space: nowrap; white-space: nowrap;
padding-bottom: 10px; padding-bottom: 10px;
} }

4
modules/docs/src/Volo.Docs.Web/Pages/Documents/Shared/Styles/vs.scss

@ -179,7 +179,7 @@ body {
padding: 0 0; padding: 0 0;
font-size: 0.75rem; font-size: 0.75rem;
width: 15px; width: 15px;
height: 34px; height: 24px;
line-height: 1; line-height: 1;
border-radius: 0px; border-radius: 0px;
border: 0; border: 0;
@ -393,7 +393,7 @@ body {
.breadcrumb { .breadcrumb {
margin-bottom: 0; margin-bottom: 0;
flex-wrap: nowrap; flex-wrap: nowrap;
overflow-x: scroll; overflow-x: auto;
white-space: nowrap; white-space: nowrap;
padding-bottom: 10px; padding-bottom: 10px;

244
npm/ng-packs/angular.json

@ -10,7 +10,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/account"], "outputs": [
"{workspaceRoot}/dist/packages/account"
],
"options": { "options": {
"project": "packages/account/ng-package.json" "project": "packages/account/ng-package.json"
}, },
@ -26,7 +28,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/account"], "outputs": [
"{workspaceRoot}/coverage/packages/account"
],
"options": { "options": {
"jestConfig": "packages/account/jest.config.ts", "jestConfig": "packages/account/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -35,13 +39,22 @@
"lint": { "lint": {
"builder": "@nrwl/linter:eslint", "builder": "@nrwl/linter:eslint",
"options": { "options": {
"lintFilePatterns": ["packages/account/src/**/*.ts", "packages/account/src/**/*.html"] "lintFilePatterns": [
"packages/account/src/**/*.ts",
"packages/account/src/**/*.html"
]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared", "account-core"] "implicitDependencies": [
"core",
"theme-shared",
"account-core"
]
}, },
"account-core": { "account-core": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -52,7 +65,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/account-core"], "outputs": [
"{workspaceRoot}/dist/packages/account-core"
],
"options": { "options": {
"project": "packages/account-core/ng-package.json" "project": "packages/account-core/ng-package.json"
}, },
@ -68,7 +83,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/account-core"], "outputs": [
"{workspaceRoot}/coverage/packages/account-core"
],
"options": { "options": {
"jestConfig": "packages/account-core/jest.config.ts", "jestConfig": "packages/account-core/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -82,11 +99,16 @@
"packages/account-core/src/**/*.html" "packages/account-core/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared"] "implicitDependencies": [
"core",
"theme-shared"
]
}, },
"components": { "components": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -97,7 +119,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/components"], "outputs": [
"{workspaceRoot}/dist/packages/components"
],
"options": { "options": {
"project": "packages/components/ng-package.json" "project": "packages/components/ng-package.json"
}, },
@ -113,7 +137,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/components"], "outputs": [
"{workspaceRoot}/coverage/packages/components"
],
"options": { "options": {
"jestConfig": "packages/components/jest.config.ts", "jestConfig": "packages/components/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -127,11 +153,16 @@
"packages/components/src/**/*.html" "packages/components/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared"] "implicitDependencies": [
"core",
"theme-shared"
]
}, },
"core": { "core": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -142,7 +173,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/core"], "outputs": [
"{workspaceRoot}/dist/packages/core"
],
"options": { "options": {
"project": "packages/core/ng-package.json" "project": "packages/core/ng-package.json"
}, },
@ -158,7 +191,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/core"], "outputs": [
"{workspaceRoot}/coverage/packages/core"
],
"options": { "options": {
"jestConfig": "packages/core/jest.config.ts", "jestConfig": "packages/core/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -167,9 +202,14 @@
"lint": { "lint": {
"builder": "@nrwl/linter:eslint", "builder": "@nrwl/linter:eslint",
"options": { "options": {
"lintFilePatterns": ["packages/core/src/**/*.ts", "packages/core/src/**/*.html"] "lintFilePatterns": [
"packages/core/src/**/*.ts",
"packages/core/src/**/*.html"
]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [] "tags": []
@ -183,7 +223,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@angular-devkit/build-angular:browser", "builder": "@angular-devkit/build-angular:browser",
"outputs": ["{options.outputPath}"], "outputs": [
"{options.outputPath}"
],
"options": { "options": {
"outputPath": "dist/apps/dev-app", "outputPath": "dist/apps/dev-app",
"index": "apps/dev-app/src/index.html", "index": "apps/dev-app/src/index.html",
@ -191,8 +233,14 @@
"polyfills": "apps/dev-app/src/polyfills.ts", "polyfills": "apps/dev-app/src/polyfills.ts",
"tsConfig": "apps/dev-app/tsconfig.app.json", "tsConfig": "apps/dev-app/tsconfig.app.json",
"inlineStyleLanguage": "scss", "inlineStyleLanguage": "scss",
"allowedCommonJsDependencies": ["chart.js", "js-sha256"], "allowedCommonJsDependencies": [
"assets": ["apps/dev-app/src/favicon.ico", "apps/dev-app/src/assets"], "chart.js",
"js-sha256"
],
"assets": [
"apps/dev-app/src/favicon.ico",
"apps/dev-app/src/assets"
],
"styles": [ "styles": [
{ {
"input": "node_modules/bootstrap/dist/css/bootstrap.rtl.min.css", "input": "node_modules/bootstrap/dist/css/bootstrap.rtl.min.css",
@ -288,12 +336,17 @@
"lint": { "lint": {
"builder": "@nrwl/linter:eslint", "builder": "@nrwl/linter:eslint",
"options": { "options": {
"lintFilePatterns": ["apps/dev-app/src/**/*.ts", "apps/dev-app/src/**/*.html"] "lintFilePatterns": [
"apps/dev-app/src/**/*.ts",
"apps/dev-app/src/**/*.html"
]
} }
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/apps/dev-app"], "outputs": [
"{workspaceRoot}/coverage/apps/dev-app"
],
"options": { "options": {
"jestConfig": "apps/dev-app/jest.config.ts", "jestConfig": "apps/dev-app/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -323,13 +376,19 @@
"lint": { "lint": {
"builder": "@nrwl/linter:eslint", "builder": "@nrwl/linter:eslint",
"options": { "options": {
"lintFilePatterns": ["apps/dev-app-e2e/**/*.{js,ts}"] "lintFilePatterns": [
"apps/dev-app-e2e/**/*.{js,ts}"
]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["dev-app"] "implicitDependencies": [
"dev-app"
]
}, },
"feature-management": { "feature-management": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -340,7 +399,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/feature-management"], "outputs": [
"{workspaceRoot}/dist/packages/feature-management"
],
"options": { "options": {
"project": "packages/feature-management/ng-package.json" "project": "packages/feature-management/ng-package.json"
}, },
@ -356,7 +417,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/feature-management"], "outputs": [
"{workspaceRoot}/coverage/packages/feature-management"
],
"options": { "options": {
"jestConfig": "packages/feature-management/jest.config.ts", "jestConfig": "packages/feature-management/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -370,11 +433,16 @@
"packages/feature-management/src/**/*.html" "packages/feature-management/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared"] "implicitDependencies": [
"core",
"theme-shared"
]
}, },
"identity": { "identity": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -385,7 +453,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/identity"], "outputs": [
"{workspaceRoot}/dist/packages/identity"
],
"options": { "options": {
"project": "packages/identity/ng-package.json" "project": "packages/identity/ng-package.json"
}, },
@ -401,7 +471,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/identity"], "outputs": [
"{workspaceRoot}/coverage/packages/identity"
],
"options": { "options": {
"jestConfig": "packages/identity/jest.config.ts", "jestConfig": "packages/identity/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -410,13 +482,22 @@
"lint": { "lint": {
"builder": "@nrwl/linter:eslint", "builder": "@nrwl/linter:eslint",
"options": { "options": {
"lintFilePatterns": ["packages/identity/src/**/*.ts", "packages/identity/src/**/*.html"] "lintFilePatterns": [
"packages/identity/src/**/*.ts",
"packages/identity/src/**/*.html"
]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared", "permission-management"] "implicitDependencies": [
"core",
"theme-shared",
"permission-management"
]
}, },
"permission-management": { "permission-management": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -427,7 +508,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/permission-management"], "outputs": [
"{workspaceRoot}/dist/packages/permission-management"
],
"options": { "options": {
"project": "packages/permission-management/ng-package.json" "project": "packages/permission-management/ng-package.json"
}, },
@ -443,7 +526,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/permission-management"], "outputs": [
"{workspaceRoot}/coverage/packages/permission-management"
],
"options": { "options": {
"jestConfig": "packages/permission-management/jest.config.ts", "jestConfig": "packages/permission-management/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -457,11 +542,16 @@
"packages/permission-management/src/**/*.html" "packages/permission-management/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared"] "implicitDependencies": [
"core",
"theme-shared"
]
}, },
"schematics": { "schematics": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -472,7 +562,9 @@
"architect": { "architect": {
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/schematics"], "outputs": [
"{workspaceRoot}/coverage/packages/schematics"
],
"options": { "options": {
"jestConfig": "packages/schematics/jest.config.ts", "jestConfig": "packages/schematics/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -486,7 +578,9 @@
"packages/schematics/src/**/*.html" "packages/schematics/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [] "tags": []
@ -500,7 +594,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/setting-management"], "outputs": [
"{workspaceRoot}/dist/packages/setting-management"
],
"options": { "options": {
"project": "packages/setting-management/ng-package.json" "project": "packages/setting-management/ng-package.json"
}, },
@ -516,7 +612,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/setting-management"], "outputs": [
"{workspaceRoot}/coverage/packages/setting-management"
],
"options": { "options": {
"jestConfig": "packages/setting-management/jest.config.ts", "jestConfig": "packages/setting-management/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -530,11 +628,17 @@
"packages/setting-management/src/**/*.html" "packages/setting-management/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared", "components"] "implicitDependencies": [
"core",
"theme-shared",
"components"
]
}, },
"tenant-management": { "tenant-management": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -545,7 +649,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/tenant-management"], "outputs": [
"{workspaceRoot}/dist/packages/tenant-management"
],
"options": { "options": {
"project": "packages/tenant-management/ng-package.json" "project": "packages/tenant-management/ng-package.json"
}, },
@ -561,7 +667,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/tenant-management"], "outputs": [
"{workspaceRoot}/coverage/packages/tenant-management"
],
"options": { "options": {
"jestConfig": "packages/tenant-management/jest.config.ts", "jestConfig": "packages/tenant-management/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -575,11 +683,17 @@
"packages/tenant-management/src/**/*.html" "packages/tenant-management/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared", "feature-management"] "implicitDependencies": [
"core",
"theme-shared",
"feature-management"
]
}, },
"theme-basic": { "theme-basic": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -590,7 +704,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/theme-basic"], "outputs": [
"{workspaceRoot}/dist/packages/theme-basic"
],
"options": { "options": {
"project": "packages/theme-basic/ng-package.json" "project": "packages/theme-basic/ng-package.json"
}, },
@ -606,7 +722,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/theme-basic"], "outputs": [
"{workspaceRoot}/coverage/packages/theme-basic"
],
"options": { "options": {
"jestConfig": "packages/theme-basic/jest.config.ts", "jestConfig": "packages/theme-basic/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -620,11 +738,17 @@
"packages/theme-basic/src/**/*.html" "packages/theme-basic/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core", "theme-shared", "account-core"] "implicitDependencies": [
"core",
"theme-shared",
"account-core"
]
}, },
"theme-shared": { "theme-shared": {
"$schema": "../../node_modules/nx/schemas/project-schema.json", "$schema": "../../node_modules/nx/schemas/project-schema.json",
@ -635,7 +759,9 @@
"architect": { "architect": {
"build": { "build": {
"builder": "@nrwl/angular:package", "builder": "@nrwl/angular:package",
"outputs": ["dist/packages/theme-shared"], "outputs": [
"{workspaceRoot}/dist/packages/theme-shared"
],
"options": { "options": {
"project": "packages/theme-shared/ng-package.json" "project": "packages/theme-shared/ng-package.json"
}, },
@ -651,7 +777,9 @@
}, },
"test": { "test": {
"builder": "@nrwl/jest:jest", "builder": "@nrwl/jest:jest",
"outputs": ["coverage/packages/theme-shared"], "outputs": [
"{workspaceRoot}/coverage/packages/theme-shared"
],
"options": { "options": {
"jestConfig": "packages/theme-shared/jest.config.ts", "jestConfig": "packages/theme-shared/jest.config.ts",
"passWithNoTests": true "passWithNoTests": true
@ -665,11 +793,15 @@
"packages/theme-shared/src/**/*.html" "packages/theme-shared/src/**/*.html"
] ]
}, },
"outputs": ["{options.outputFile}"] "outputs": [
"{options.outputFile}"
]
} }
}, },
"tags": [], "tags": [],
"implicitDependencies": ["core"] "implicitDependencies": [
"core"
]
} }
} }
} }

17
npm/ng-packs/apps/dev-app/.browserslistrc

@ -1,17 +0,0 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.

2
npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts

@ -28,7 +28,7 @@ const routes: Routes = [
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], imports: [RouterModule.forRoot(routes, {})],
exports: [RouterModule], exports: [RouterModule],
}) })
export class AppRoutingModule {} export class AppRoutingModule {}

4
npm/ng-packs/apps/dev-app/tsconfig.app.json

@ -2,7 +2,9 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"types": [] "types": [],
"target": "ES2022",
"useDefineForClassFields": false
}, },
"files": ["src/main.ts", "src/polyfills.ts"], "files": ["src/main.ts", "src/polyfills.ts"],
"include": ["src/**/*.d.ts"], "include": ["src/**/*.d.ts"],

160
npm/ng-packs/migrations.json

@ -2,43 +2,161 @@
"migrations": [ "migrations": [
{ {
"cli": "nx", "cli": "nx",
"version": "14.6.0-beta.0", "version": "15.0.0-beta.1",
"description": "Update the @angular/cli package version to ~14.2.0.", "description": "Replace implicitDependencies with namedInputs + target inputs",
"factory": "./src/migrations/update-14-6-0/update-angular-cli", "implementation": "./src/migrations/update-15-0-0/migrate-to-inputs",
"package": "nx",
"name": "15.0.0-migrate-to-inputs"
},
{
"cli": "nx",
"version": "15.0.0-beta.1",
"description": "Prefix outputs with {workspaceRoot}/{projectRoot} if needed",
"implementation": "./src/migrations/update-15-0-0/prefix-outputs",
"package": "nx",
"name": "15.0.0-prefix-outputs"
},
{
"cli": "nx",
"version": "15.0.12-beta.1",
"description": "Set project names in project.json files",
"implementation": "./src/migrations/update-15-1-0/set-project-names",
"package": "nx",
"name": "15.1.0-set-project-names"
},
{
"cli": "nx",
"version": "15.0.0-beta.0",
"description": "Rename @nrwl/angular:webpack-server executor to @nrwl/angular:webpack-dev-server",
"factory": "./src/migrations/update-14-8-0/rename-webpack-server",
"package": "@nrwl/angular",
"name": "rename-webpack-server-executor"
},
{
"cli": "nx",
"version": "15.0.0-beta.0",
"description": "Update the usages of @nrwl/angular/testing to import jasmine-marbles symbols from jasmine-marbles itself.",
"factory": "./src/migrations/update-15-0-0/switch-to-jasmine-marbles",
"package": "@nrwl/angular", "package": "@nrwl/angular",
"name": "update-angular-cli-version-14-2-0" "name": "switch-to-jasmine-marbles"
}, },
{ {
"cli": "nx", "cli": "nx",
"version": "14.6.1-beta.0", "version": "15.0.0-beta.1",
"description": "Change Cypress e2e and component testing presets to use __filename instead of __dirname and include a devServerTarget for component testing.", "description": "Stop hashing karma spec files and config files for build targets and dependent tasks",
"factory": "./src/migrations/update-14-6-1/update-cypress-configs-presets", "factory": "./src/migrations/update-15-0-0/add-karma-inputs",
"package": "@nrwl/angular",
"name": "add-karma-inputs"
},
{
"cli": "nx",
"version": "15.2.0-beta.0",
"description": "Update the @angular/cli package version to ~15.0.0.",
"factory": "./src/migrations/update-15-2-0/update-angular-cli",
"package": "@nrwl/angular",
"name": "update-angular-cli-version-15-0-0"
},
{
"cli": "nx",
"version": "15.2.0-beta.0",
"description": "Remove browserlist config as it's handled by build-angular",
"factory": "./src/migrations/update-15-2-0/remove-browserlist-config",
"package": "@nrwl/angular",
"name": "remove-browserlist-config"
},
{
"cli": "nx",
"version": "15.2.0-beta.0",
"description": "Update typescript target to ES2022",
"factory": "./src/migrations/update-15-2-0/update-typescript-target",
"package": "@nrwl/angular",
"name": "update-typescript-target"
},
{
"cli": "nx",
"version": "15.2.0-beta.0",
"description": "Remove bundleDependencies from server targets",
"factory": "./src/migrations/update-15-2-0/update-workspace-config",
"package": "@nrwl/angular",
"name": "update-workspace-config"
},
{
"cli": "ng",
"version": "15.2.0-beta.0",
"description": "Remove exported `@angular/platform-server` `renderModule` method. The `renderModule` method is now exported by the Angular CLI.",
"factory": "./src/migrations/update-15-2-0/remove-platform-server-exports",
"package": "@nrwl/angular",
"name": "update-platform-server-exports"
},
{
"cli": "ng",
"version": "15.2.0-beta.0",
"description": "Remove no longer needed require calls in Karma builder main file.",
"factory": "./src/migrations/update-15-2-0/update-karma-main-file",
"package": "@nrwl/angular",
"name": "update-karma-main-file"
},
{
"version": "15.0.0-beta",
"description": "Since Angular v15, the `RouterLink` contains the logic of the `RouterLinkWithHref` directive. This migration replaces all `RouterLinkWithHref` references with `RouterLink`.",
"factory": "./migrations/router-link-with-href/index",
"package": "@angular/core",
"name": "migration-v15-router-link-with-href"
},
{
"version": "15.0.0-beta",
"description": "In Angular version 15, the deprecated `relativeLinkResolution` config parameter of the Router is removed. This migration removes all `relativeLinkResolution` fields from the Router config objects.",
"factory": "./migrations/relative-link-resolution/index",
"package": "@angular/core",
"name": "migration-v15-relative-link-resolution"
},
{
"cli": "nx",
"version": "15.0.0-beta.0",
"description": "Stop hashing cypress spec files and config files for build targets and dependent tasks",
"factory": "./src/migrations/update-15-0-0/add-cypress-inputs",
"package": "@nrwl/cypress", "package": "@nrwl/cypress",
"name": "update-cypress-configs-preset" "name": "add-cypress-inputs"
}, },
{ {
"cli": "nx", "cli": "nx",
"version": "14.7.0-beta.0", "version": "15.0.0-beta.4",
"description": "Update Cypress if using v10 to support latest component testing features", "description": "Update to using cy.mount in the commands.ts file instead of importing mount for each component test file",
"factory": "./src/migrations/update-14-7-0/update-cypress-version-if-10", "factory": "./src/migrations/update-15-0-0/update-cy-mount-usage",
"package": "@nrwl/cypress", "package": "@nrwl/cypress",
"name": "update-cypress-if-v10" "name": "update-cy-mount-usage"
}, },
{ {
"version": "14.6.0-beta.0",
"cli": "nx", "cli": "nx",
"description": "Update jest configs to support jest 28 changes (https://jestjs.io/docs/upgrading-to-jest28#configuration-options)", "version": "15.1.0-beta.0",
"factory": "./src/migrations/update-14-6-0/update-configs-jest-28", "description": "Update to Cypress v11. This migration will only update if the workspace is already on v10. https://www.cypress.io/blog/2022/11/04/upcoming-changes-to-component-testing/",
"package": "@nrwl/jest", "factory": "./src/migrations/update-15-1-0/cypress-11",
"name": "update-configs-jest-28" "package": "@nrwl/cypress",
"name": "update-to-cypress-11"
}, },
{ {
"version": "14.6.0-beta.0", "version": "15.0.0-beta.0",
"cli": "nx", "cli": "nx",
"description": "Update jest test files to support jest 28 changes (https://jestjs.io/docs/upgrading-to-jest28)", "description": "Stop hashing jest spec files and config files for build targets and dependent tasks",
"factory": "./src/migrations/update-14-6-0/update-tests-jest-28", "factory": "./src/migrations/update-15-0-0/add-jest-inputs",
"package": "@nrwl/jest", "package": "@nrwl/jest",
"name": "update-tests-jest-28" "name": "add-jest-inputs"
},
{
"cli": "nx",
"version": "15.0.0-beta.0",
"description": "Stop hashing eslint config files for build targets and dependent tasks",
"factory": "./src/migrations/update-15-0-0/add-eslint-inputs",
"package": "@nrwl/linter",
"name": "add-eslint-inputs"
},
{
"version": "14.8.0-beta.0",
"description": "Migrates from @nrwl/workspace:run-commands to nx:run-commands",
"cli": "nx",
"implementation": "./src/migrations/update-14-8-0/change-run-commands-executor",
"package": "@nrwl/workspace",
"name": "14-8-0-change-run-commands-executor"
} }
] ]
} }

30
npm/ng-packs/nx.json

@ -3,13 +3,6 @@
"affected": { "affected": {
"defaultBase": "dev" "defaultBase": "dev"
}, },
"implicitDependencies": {
"package.json": {
"dependencies": "*",
"devDependencies": "*"
},
".eslintrc.json": "*"
},
"tasksRunnerOptions": { "tasksRunnerOptions": {
"default": { "default": {
"runner": "nx/tasks-runners/default", "runner": "nx/tasks-runners/default",
@ -57,7 +50,28 @@
"$schema": "./node_modules/nx/schemas/nx-schema.json", "$schema": "./node_modules/nx/schemas/nx-schema.json",
"targetDefaults": { "targetDefaults": {
"build": { "build": {
"dependsOn": ["^build"] "dependsOn": ["^build"],
"inputs": ["production", "^production"]
},
"e2e": {
"inputs": ["default", "^production"]
},
"test": {
"inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"]
},
"lint": {
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
} }
},
"namedInputs": {
"default": ["{projectRoot}/**/*", "sharedGlobals"],
"sharedGlobals": [],
"production": [
"default",
"!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
"!{projectRoot}/tsconfig.spec.json",
"!{projectRoot}/jest.config.[jt]s",
"!{projectRoot}/.eslintrc.json"
]
} }
} }

74
npm/ng-packs/package.json

@ -33,32 +33,34 @@
"postinstall": "node ./decorate-angular-cli.js && yarn compile:ivy", "postinstall": "node ./decorate-angular-cli.js && yarn compile:ivy",
"build:schematics": "cd scripts && yarn && yarn build:schematics && cd ..", "build:schematics": "cd scripts && yarn && yarn build:schematics && cd ..",
"dev:schematics": "tsc -p packages/schematics/tsconfig.json -w", "dev:schematics": "tsc -p packages/schematics/tsconfig.json -w",
"mock:schematics": "cd scripts/mock-schematic && yarn && yarn start",
"debug:schematics": "./node_modules/.bin/ng g ./packages/schematics/src/collection.json:proxy-add --module __default --apiName __default --source __default --target __default --url https://localhost:44305 --serviceType application",
"debug:schematics-dist": "./node_modules/.bin/ng g ./dist/packages/schematics/collection.json:proxy-add --module __default --apiName __default --source __default --target __default --url http://localhost:4300 --service-type application",
"ci": "yarn affected:lint && yarn affected:build && yarn affected:test", "ci": "yarn affected:lint && yarn affected:build && yarn affected:test",
"lerna": "lerna", "lerna": "lerna",
"migrate-nx": "yarn nx migrate --run-migrations", "migrate-nx": "yarn nx migrate --run-migrations"
"mock:schematics": "cd scripts/mock-schematic && yarn && yarn start",
"debug:schematics": "./node_modules/.bin/ng g ./packages/schematics/src/collection.json:proxy-add --module __default --apiName __default --source __default --target __default --url https://localhost:44305 --serviceType application"
}, },
"private": true, "private": true,
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "14.2.1", "@abp/utils": "~7.0.0-rc.3",
"@angular-devkit/build-angular": "~15.0.1",
"@angular-devkit/build-ng-packagr": "^0.1002.0", "@angular-devkit/build-ng-packagr": "^0.1002.0",
"@angular-devkit/schematics-cli": "~14.2.1", "@angular-devkit/schematics-cli": "~15.0.1",
"@angular-eslint/eslint-plugin": "14.0.3", "@angular-eslint/eslint-plugin": "15.1.0",
"@angular-eslint/eslint-plugin-template": "14.0.3", "@angular-eslint/eslint-plugin-template": "15.1.0",
"@angular-eslint/template-parser": "14.0.3", "@angular-eslint/template-parser": "15.1.0",
"@angular/animations": "14.2.1", "@angular/animations": "~15.0.1",
"@angular/cli": "~14.2.1", "@angular/cli": "~15.0.1",
"@angular/common": "14.2.1", "@angular/common": "~15.0.1",
"@angular/compiler": "14.2.1", "@angular/compiler": "~15.0.1",
"@angular/compiler-cli": "14.2.1", "@angular/compiler-cli": "~15.0.1",
"@angular/core": "14.2.1", "@angular/core": "~15.0.1",
"@angular/forms": "14.2.1", "@angular/forms": "~15.0.1",
"@angular/language-service": "14.2.1", "@angular/language-service": "~15.0.1",
"@angular/localize": "14.2.1", "@angular/localize": "~15.0.1",
"@angular/platform-browser": "14.2.1", "@angular/platform-browser": "~15.0.1",
"@angular/platform-browser-dynamic": "14.2.1", "@angular/platform-browser-dynamic": "~15.0.1",
"@angular/router": "14.2.1", "@angular/router": "~15.0.1",
"@abp/ng.account": "~7.0.0-rc.3", "@abp/ng.account": "~7.0.0-rc.3",
"@abp/ng.account.core": "~7.0.0-rc.3", "@abp/ng.account.core": "~7.0.0-rc.3",
"@abp/ng.core": "~7.0.0-rc.3", "@abp/ng.core": "~7.0.0-rc.3",
@ -71,24 +73,24 @@
"@abp/ng.theme.basic": "~7.0.0-rc.3", "@abp/ng.theme.basic": "~7.0.0-rc.3",
"@abp/ng.theme.shared": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3",
"@fortawesome/fontawesome-free": "^5.15.4", "@fortawesome/fontawesome-free": "^5.15.4",
"@ng-bootstrap/ng-bootstrap": "~13.0.0", "@ng-bootstrap/ng-bootstrap": "^14.0.0-rc.1",
"@ngneat/spectator": "^10.0.0", "@ngneat/spectator": "^10.0.0",
"@ngx-validate/core": "^0.1.2", "@ngx-validate/core": "^0.2.0",
"@nrwl/angular": "14.7.5", "@nrwl/angular": "15.2.1",
"@nrwl/cli": "14.7.5", "@nrwl/cli": "15.2.1",
"@nrwl/cypress": "14.7.5", "@nrwl/cypress": "15.2.1",
"@nrwl/eslint-plugin-nx": "14.7.5", "@nrwl/eslint-plugin-nx": "15.2.1",
"@nrwl/jest": "14.7.5", "@nrwl/jest": "15.2.1",
"@nrwl/linter": "14.7.5", "@nrwl/linter": "15.2.1",
"@nrwl/workspace": "14.7.5", "@nrwl/workspace": "15.2.1",
"@popperjs/core": "~2.11.2", "@popperjs/core": "~2.11.2",
"@schematics/angular": "14.2.2", "@schematics/angular": "~15.0.1",
"@swimlane/ngx-datatable": "^20.0.0", "@swimlane/ngx-datatable": "^20.0.0",
"@types/jest": "28.1.8", "@types/jest": "28.1.8",
"@types/node": "14.14.33", "@types/node": "14.14.33",
"@typescript-eslint/eslint-plugin": "5.33.1", "@typescript-eslint/eslint-plugin": "5.44.0",
"@typescript-eslint/parser": "5.33.1", "@typescript-eslint/parser": "5.44.0",
"angular-oauth2-oidc": "^13.0.1", "angular-oauth2-oidc": "^15.0.1",
"bootstrap": "^5.1.1", "bootstrap": "^5.1.1",
"chart.js": "^3.5.1", "chart.js": "^3.5.1",
"cypress": "^7.3.0", "cypress": "^7.3.0",
@ -106,9 +108,9 @@
"just-compare": "^1.4.0", "just-compare": "^1.4.0",
"lerna": "^4.0.0", "lerna": "^4.0.0",
"lint-staged": "^13.0.3", "lint-staged": "^13.0.3",
"ng-packagr": "14.2.1", "ng-packagr": "15.0.1",
"ng-zorro-antd": "^14.0.0", "ng-zorro-antd": "^14.0.0",
"nx": "14.7.5", "nx": "15.2.1",
"postcss": "^8.3.9", "postcss": "^8.3.9",
"postcss-import": "14.1.0", "postcss-import": "14.1.0",
"postcss-preset-env": "7.5.0", "postcss-preset-env": "7.5.0",
@ -123,7 +125,7 @@
"tsickle": "^0.39.1", "tsickle": "^0.39.1",
"tslib": "^2.0.0", "tslib": "^2.0.0",
"tslint": "~6.1.0", "tslint": "~6.1.0",
"typescript": "4.7.4", "typescript": "4.8.4",
"zone.js": "0.11.4" "zone.js": "0.11.4"
}, },
"dependencies": {}, "dependencies": {},

5
npm/ng-packs/packages/account-core/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/account-core/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/account/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/account/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/components/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/components/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

2
npm/ng-packs/packages/core/package.json

@ -8,7 +8,7 @@
}, },
"dependencies": { "dependencies": {
"@abp/utils": "~7.0.0-rc.3", "@abp/utils": "~7.0.0-rc.3",
"angular-oauth2-oidc": "^13.0.1", "angular-oauth2-oidc": "^15.0.1",
"just-clone": "^3.2.1", "just-clone": "^3.2.1",
"just-compare": "^1.4.0", "just-compare": "^1.4.0",
"ts-toolbelt": "6.15.4", "ts-toolbelt": "6.15.4",

2
npm/ng-packs/packages/core/src/lib/services/timeout-limited-oauth.service.ts

@ -1,4 +1,4 @@
import { Injectable } from '@angular/core'; import { Injectable, NgZone, Optional } from '@angular/core';
import { OAuthService } from 'angular-oauth2-oidc'; import { OAuthService } from 'angular-oauth2-oidc';
@Injectable() @Injectable()

5
npm/ng-packs/packages/core/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/core/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/feature-management/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/feature-management/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/identity/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/identity/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/permission-management/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/permission-management/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

8
npm/ng-packs/packages/schematics/package.json

@ -9,13 +9,13 @@
"license": "MIT", "license": "MIT",
"schematics": "./collection.json", "schematics": "./collection.json",
"dependencies": { "dependencies": {
"@angular-devkit/core": "~14.2.1", "@angular-devkit/core": "~15.0.1",
"@angular-devkit/schematics": "~14.2.1", "@angular-devkit/schematics": "~15.0.1",
"@angular/cli": "~14.2.1", "@angular/cli": "~15.0.1",
"got": "^11.5.2", "got": "^11.5.2",
"jsonc-parser": "^2.3.0", "jsonc-parser": "^2.3.0",
"should-quote": "^1.0.0", "should-quote": "^1.0.0",
"typescript": "~4.7.4" "typescript": "4.8.4"
}, },
"devDependencies": { "devDependencies": {
"@schematics/angular": "~14.2.1", "@schematics/angular": "~14.2.1",

2
npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts

@ -213,7 +213,7 @@ styleMap.set(ThemeOptionsEnum.LeptonXLite, [
inject: false, inject: false,
bundleName: 'bootstrap-dim.rtl', bundleName: 'bootstrap-dim.rtl',
}, },
{ {
input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.rtl.css', input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.rtl.css',
inject: false, inject: false,
bundleName: 'font-bundle.rtl', bundleName: 'font-bundle.rtl',

2
npm/ng-packs/packages/schematics/src/utils/angular/README.md

@ -1,5 +1,5 @@
**DISCLAIMER** **DISCLAIMER**
This directory is a direct copy of https://github.com/angular/angular-cli/tree/c5ef701639755d5b390e64287963ee35faab2cd4/packages/schematics/angular/utility and is used under terms and permissions by the MIT license granted by Google, LLC. This directory is a direct copy of https://github.com/angular/angular-cli/tree/324f8da02b0e26faa26090ce306c43b31dde2165/packages/schematics/angular/utility and is used under terms and permissions by the MIT license granted by Google, LLC.
All credits go to Angular team for building these utilities. All credits go to Angular team for building these utilities.

61
npm/ng-packs/packages/schematics/src/utils/angular/add-declaration-to-ng-module.ts

@ -0,0 +1,61 @@
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { Rule, Tree, strings } from '@angular-devkit/schematics';
import * as ts from 'typescript';
import { addDeclarationToModule, addSymbolToNgModuleMetadata } from './ast-utils';
import { InsertChange } from './change';
import { buildRelativePath } from './find-module';
export interface DeclarationToNgModuleOptions {
module?: string;
path?: string;
name: string;
flat?: boolean;
export?: boolean;
type: string;
skipImport?: boolean;
standalone?: boolean;
}
export function addDeclarationToNgModule(options: DeclarationToNgModuleOptions): Rule {
return (host: Tree) => {
const modulePath = options.module;
if (options.skipImport || options.standalone || !modulePath) {
return host;
}
const sourceText = host.readText(modulePath);
const source = ts.createSourceFile(modulePath, sourceText, ts.ScriptTarget.Latest, true);
const filePath =
`/${options.path}/` +
(options.flat ? '' : strings.dasherize(options.name) + '/') +
strings.dasherize(options.name) +
(options.type ? '.' : '') +
strings.dasherize(options.type);
const importPath = buildRelativePath(modulePath, filePath);
const classifiedName = strings.classify(options.name) + strings.classify(options.type);
const changes = addDeclarationToModule(source, modulePath, classifiedName, importPath);
if (options.export) {
changes.push(...addSymbolToNgModuleMetadata(source, modulePath, 'exports', classifiedName));
}
const recorder = host.beginUpdate(modulePath);
for (const change of changes) {
if (change instanceof InsertChange) {
recorder.insertLeft(change.pos, change.toAdd);
}
}
host.commitUpdate(recorder);
return host;
};
}

47
npm/ng-packs/packages/schematics/src/utils/angular/ast-utils.ts

@ -171,7 +171,7 @@ export function findNodes<T extends ts.Node>(
*/ */
export function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] { export function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] {
const nodes: ts.Node[] = [sourceFile]; const nodes: ts.Node[] = [sourceFile];
const result = []; const result: ts.Node[] = [];
while (nodes.length > 0) { while (nodes.length > 0) {
const node = nodes.shift(); const node = nodes.shift();
@ -552,51 +552,6 @@ export function isImported(
return matchingNodes.length > 0; return matchingNodes.length > 0;
} }
/**
* This function returns the name of the environment export
* whether this export is aliased or not. If the environment file
* is not imported, then it will return `null`.
*/
export function getEnvironmentExportName(source: ts.SourceFile): string | null {
// Initial value is `null` as we don't know yet if the user
// has imported `environment` into the root module or not.
let environmentExportName: string | null = null;
const allNodes = getSourceNodes(source);
allNodes
.filter(ts.isImportDeclaration)
.filter(
declaration =>
declaration.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral &&
declaration.importClause !== undefined,
)
.map(declaration =>
// If `importClause` property is defined then the first
// child will be `NamedImports` object (or `namedBindings`).
(declaration.importClause as ts.ImportClause).getChildAt(0),
)
// Find those `NamedImports` object that contains `environment` keyword
// in its text. E.g. `{ environment as env }`.
.filter(ts.isNamedImports)
.filter(namedImports => namedImports.getText().includes('environment'))
.forEach(namedImports => {
for (const specifier of namedImports.elements) {
// `propertyName` is defined if the specifier
// has an aliased import.
const name = specifier.propertyName || specifier.name;
// Find specifier that contains `environment` keyword in its text.
// Whether it's `environment` or `environment as env`.
if (name.text.includes('environment')) {
environmentExportName = specifier.name.text;
}
}
});
return environmentExportName;
}
/** /**
* Returns the RouterModule declaration from NgModule metadata, if any. * Returns the RouterModule declaration from NgModule metadata, if any.
*/ */

4
npm/ng-packs/packages/schematics/src/utils/angular/generate-from-files.ts

@ -28,7 +28,7 @@ export interface GenerateFromFilesOptions {
name: string; name: string;
path?: string; path?: string;
prefix?: string; prefix?: string;
project?: string; project: string;
skipTests?: boolean; skipTests?: boolean;
} }
@ -37,7 +37,7 @@ export function generateFromFiles(
extraTemplateValues: Record<string, string | ((v: string) => string)> = {}, extraTemplateValues: Record<string, string | ((v: string) => string)> = {},
): Rule { ): Rule {
return async (host: Tree) => { return async (host: Tree) => {
options.path ??= await createDefaultPath(host, options.project as string); options.path ??= await createDefaultPath(host, options.project);
options.prefix ??= ''; options.prefix ??= '';
options.flat ??= true; options.flat ??= true;

10
npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json

@ -3,21 +3,21 @@
"comment": "This file is needed so that dependencies are synced by Renovate.", "comment": "This file is needed so that dependencies are synced by Renovate.",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@types/jasmine": "~4.0.0", "@types/jasmine": "~4.3.0",
"@types/node": "^14.15.0", "@types/node": "^14.15.0",
"jasmine-core": "~4.3.0", "jasmine-core": "~4.5.0",
"jasmine-spec-reporter": "~7.0.0", "jasmine-spec-reporter": "~7.0.0",
"karma-chrome-launcher": "~3.1.0", "karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.2.0", "karma-coverage": "~2.2.0",
"karma-jasmine-html-reporter": "~2.0.0", "karma-jasmine-html-reporter": "~2.0.0",
"karma-jasmine": "~5.1.0", "karma-jasmine": "~5.1.0",
"karma": "~6.4.0", "karma": "~6.4.0",
"ng-packagr": "^14.2.0", "ng-packagr": "^15.0.0",
"protractor": "~7.0.0", "protractor": "~7.0.0",
"rxjs": "~7.5.0", "rxjs": "~7.5.0",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"ts-node": "~10.9.0", "ts-node": "~10.9.0",
"typescript": "~4.7.2", "typescript": "~4.8.2",
"zone.js": "~0.11.4" "zone.js": "~0.12.0"
} }
} }

1
npm/ng-packs/packages/schematics/src/utils/angular/parse-name.ts

@ -6,7 +6,6 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
// import { relative, Path } from "../../../angular_devkit/core/src/virtual-fs";
import { Path, basename, dirname, join, normalize } from '@angular-devkit/core'; import { Path, basename, dirname, join, normalize } from '@angular-devkit/core';
export interface Location { export interface Location {

34
npm/ng-packs/packages/schematics/src/utils/angular/test/create-app-module.ts

@ -0,0 +1,34 @@
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { UnitTestTree } from '@angular-devkit/schematics/testing';
export function createAppModule(tree: UnitTestTree, path?: string): UnitTestTree {
tree.create(
path || '/src/app/app.module.ts',
`
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
`,
);
return tree;
}

19
npm/ng-packs/packages/schematics/src/utils/angular/test/get-file-content.ts

@ -0,0 +1,19 @@
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { Tree } from '@angular-devkit/schematics';
export function getFileContent(tree: Tree, path: string): string {
const fileEntry = tree.get(path);
if (!fileEntry) {
throw new Error(`The file (${path}) does not exist.`);
}
return fileEntry.content.toString();
}

10
npm/ng-packs/packages/schematics/src/utils/angular/test/index.ts

@ -0,0 +1,10 @@
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
export * from './create-app-module';
export * from './get-file-content';

5
npm/ng-packs/packages/setting-management/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/setting-management/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/tenant-management/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/tenant-management/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

5
npm/ng-packs/packages/theme-basic/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/theme-basic/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

4
npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts

@ -1,5 +1,5 @@
import { LinkedList } from '@abp/utils'; import { LinkedList } from '@abp/utils';
import { InjectFlags, InjectionToken, Type } from '@angular/core'; import { InjectFlags, InjectionToken, InjectOptions, Type } from '@angular/core';
import { O } from 'ts-toolbelt'; import { O } from 'ts-toolbelt';
import { ePropType } from '../enums/props.enum'; import { ePropType } from '../enums/props.enum';
@ -9,7 +9,7 @@ export abstract class PropData<R = any> {
abstract getInjected: <T>( abstract getInjected: <T>(
token: Type<T> | InjectionToken<T>, token: Type<T> | InjectionToken<T>,
notFoundValue?: T, notFoundValue?: T,
flags?: InjectFlags, options?: InjectOptions | InjectFlags,
) => T; ) => T;
index?: number; index?: number;
abstract record: R; abstract record: R;

18
npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts

@ -1,4 +1,12 @@
import { InjectFlags, InjectionToken, Injector, Pipe, PipeTransform, Type } from '@angular/core'; import {
InjectFlags,
InjectionToken,
InjectOptions,
Injector,
Pipe,
PipeTransform,
Type,
} from '@angular/core';
import { HasCreateInjectorPipe, ToolbarComponent } from '../models/toolbar-actions'; import { HasCreateInjectorPipe, ToolbarComponent } from '../models/toolbar-actions';
import { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token'; import { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token';
@ -11,7 +19,11 @@ export class CreateInjectorPipe<R> implements PipeTransform {
action: ToolbarComponent<R>, action: ToolbarComponent<R>,
context: HasCreateInjectorPipe<R>, context: HasCreateInjectorPipe<R>,
): Injector { ): Injector {
const get = <T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: InjectFlags) => { const get = <T>(
token: Type<T> | InjectionToken<T>,
notFoundValue?: T,
options?: InjectOptions | InjectFlags,
) => {
const componentData = context.getData(); const componentData = context.getData();
const componentDataCallback = data => { const componentDataCallback = data => {
data = data ?? context.getData(); data = data ?? context.getData();
@ -26,7 +38,7 @@ export class CreateInjectorPipe<R> implements PipeTransform {
extensionData = componentDataCallback; extensionData = componentDataCallback;
break; break;
default: default:
extensionData = context.getInjected.call(context.injector, token, notFoundValue, flags); extensionData = context.getInjected.call(context.injector, token, notFoundValue, options);
} }
return extensionData; return extensionData;
}; };

4
npm/ng-packs/packages/theme-shared/package.json

@ -9,8 +9,8 @@
"dependencies": { "dependencies": {
"@abp/ng.core": "~7.0.0-rc.3", "@abp/ng.core": "~7.0.0-rc.3",
"@fortawesome/fontawesome-free": "^5.15.4", "@fortawesome/fontawesome-free": "^5.15.4",
"@ng-bootstrap/ng-bootstrap": "13.0.0", "@ng-bootstrap/ng-bootstrap": "^14.0.0-rc.1",
"@ngx-validate/core": "^0.1.2", "@ngx-validate/core": "^0.2.0",
"@popperjs/core": "~2.11.2", "@popperjs/core": "~2.11.2",
"@swimlane/ngx-datatable": "^20.0.0", "@swimlane/ngx-datatable": "^20.0.0",
"bootstrap": "^5.2.0", "bootstrap": "^5.2.0",

6
npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts

@ -2,7 +2,7 @@ import { ABP, ConfigStateService } from '@abp/ng.core';
import { Injector } from '@angular/core'; import { Injector } from '@angular/core';
import { AbstractControl, ValidatorFn, Validators } from '@angular/forms'; import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';
import { normalizeDiacritics, PasswordRules } from '@ngx-validate/core'; import { normalizeDiacritics, PasswordRules } from '@ngx-validate/core';
import { PasswordRule } from "../models/validation"; import { PasswordRule } from '../models/validation';
const { minLength, maxLength } = Validators; const { minLength, maxLength } = Validators;
@ -52,9 +52,7 @@ const errorMessageMap = {
special: 'passwordRequiresNonAlphanumeric', special: 'passwordRequiresNonAlphanumeric',
}; };
export function validatePassword( export function validatePassword(shouldContain: PasswordRule): ValidatorFn {
shouldContain: PasswordRule
): ValidatorFn {
return (control: AbstractControl) => { return (control: AbstractControl) => {
if (!control.value) return null; if (!control.value) return null;

5
npm/ng-packs/packages/theme-shared/tsconfig.lib.json

@ -2,12 +2,13 @@
"extends": "./tsconfig.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"target": "es2020", "target": "ES2022",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,
"types": [], "types": [],
"lib": ["dom", "es2018"] "lib": ["dom", "es2018"],
"useDefineForClassFields": false
}, },
"exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"],
"include": ["**/*.ts"] "include": ["**/*.ts"]

4
npm/ng-packs/packages/theme-shared/tsconfig.lib.prod.json

@ -1,7 +1,9 @@
{ {
"extends": "./tsconfig.lib.json", "extends": "./tsconfig.lib.json",
"compilerOptions": { "compilerOptions": {
"declarationMap": false "declarationMap": false,
"target": "ES2022",
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"compilationMode": "partial" "compilationMode": "partial"

10
npm/ng-packs/scripts/mock-schematic/mock-schematic-json.ts

@ -1,11 +1,15 @@
import express, { Request, Response } from 'express'; import express, { Request } from 'express';
import fs from 'fs'; import fs from 'fs';
const port = 4300; const port = 4300;
const app = express(); const app = express();
app.get('/api/abp/api-definition', async (req: Request, res: Response) => { app.get('/', function(req:any, res:any){
const file = fs.readFileSync('./api-definition.json'); res.redirect('/api/abp/api-definition');
});
app.get('/api/abp/api-definition', async (req: Request, res: any) => {
const file = fs.readFileSync('./api-definition.json');
res.contentType('application/json'); res.contentType('application/json');
res.send(file); res.send(file);
}); });

17
templates/app-nolayers/angular/.browserslistrc

@ -1,17 +0,0 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.

38
templates/app-nolayers/angular/package.json

@ -20,15 +20,15 @@
"@abp/ng.tenant-management": "~7.0.0-rc.3", "@abp/ng.tenant-management": "~7.0.0-rc.3",
"@abp/ng.theme.shared": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3",
"@abp/ng.theme.lepton-x": "~2.0.0-rc.1", "@abp/ng.theme.lepton-x": "~2.0.0-rc.1",
"@angular/animations": "^14.2.1", "@angular/animations": "^15.0.1",
"@angular/common": "^14.2.1", "@angular/common": "^15.0.1",
"@angular/compiler": "^14.2.1", "@angular/compiler": "^15.0.1",
"@angular/core": "^14.2.1", "@angular/core": "^15.0.1",
"@angular/forms": "^14.2.1", "@angular/forms": "^15.0.1",
"@angular/localize": "^14.2.1", "@angular/localize": "^15.0.1",
"@angular/platform-browser": "^14.2.1", "@angular/platform-browser": "^15.0.1",
"@angular/platform-browser-dynamic": "^14.2.1", "@angular/platform-browser-dynamic": "^15.0.1",
"@angular/router": "^14.2.1", "@angular/router": "^15.0.1",
"rxjs": "7.5.6", "rxjs": "7.5.6",
"tslib": "^2.1.0", "tslib": "^2.1.0",
"bootstrap-icons": "~1.8.3", "bootstrap-icons": "~1.8.3",
@ -36,15 +36,15 @@
}, },
"devDependencies": { "devDependencies": {
"@abp/ng.schematics": "~7.0.0-rc.3", "@abp/ng.schematics": "~7.0.0-rc.3",
"@angular-devkit/build-angular": "^14.2.3", "@angular-devkit/build-angular": "^15.0.1",
"@angular-eslint/builder": "~14.1.1", "@angular-eslint/builder": "~15.1.0",
"@angular-eslint/eslint-plugin": "~14.1.1", "@angular-eslint/eslint-plugin": "~15.1.0",
"@angular-eslint/eslint-plugin-template": "~14.1.1", "@angular-eslint/eslint-plugin-template": "~15.1.0",
"@angular-eslint/schematics": "~14.1.1", "@angular-eslint/schematics": "~15.1.0",
"@angular-eslint/template-parser": "~14.1.1", "@angular-eslint/template-parser": "~15.1.0",
"@angular/cli": "^14.2.3", "@angular/cli": "^15.0.1",
"@angular/compiler-cli": "^14.2.1", "@angular/compiler-cli": "^15.0.1",
"@angular/language-service": "^14.2.1", "@angular/language-service": "^15.0.1",
"@types/jasmine": "~3.6.0", "@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1", "@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "^5.36.2", "@typescript-eslint/eslint-plugin": "^5.36.2",
@ -56,7 +56,7 @@
"karma-coverage": "~2.1.0", "karma-coverage": "~2.1.0",
"karma-jasmine": "~4.0.0", "karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0", "karma-jasmine-html-reporter": "^1.7.0",
"ng-packagr": "^14.2.1", "ng-packagr": "^15.0.1",
"typescript": "~4.8.3" "typescript": "~4.8.3"
} }
} }

2
templates/app-nolayers/angular/src/app/app-routing.module.ts

@ -28,7 +28,7 @@ const routes: Routes = [
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], imports: [RouterModule.forRoot(routes, {})],
exports: [RouterModule], exports: [RouterModule],
}) })
export class AppRoutingModule {} export class AppRoutingModule {}

15
templates/app-nolayers/angular/src/test.ts

@ -6,23 +6,8 @@ import {
platformBrowserDynamicTesting, platformBrowserDynamicTesting,
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(
path: string,
deep?: boolean,
filter?: RegExp
): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
platformBrowserDynamicTesting() platformBrowserDynamicTesting()
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

13
templates/app-nolayers/angular/tsconfig.json

@ -10,16 +10,21 @@
"experimentalDecorators": true, "experimentalDecorators": true,
"moduleResolution": "node", "moduleResolution": "node",
"importHelpers": true, "importHelpers": true,
"target": "es2020", "target": "ES2022",
"module": "es2020", "module": "es2020",
"lib": [ "lib": [
"es2018", "es2018",
"dom" "dom"
], ],
"paths": { "paths": {
"@proxy": ["src/app/proxy/index.ts"], "@proxy": [
"@proxy/*": ["src/app/proxy/*"] "src/app/proxy/index.ts"
} ],
"@proxy/*": [
"src/app/proxy/*"
]
},
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false "enableI18nLegacyMessageIdFormat": false

17
templates/app/angular/.browserslistrc

@ -1,17 +0,0 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.

38
templates/app/angular/package.json

@ -20,15 +20,15 @@
"@abp/ng.tenant-management": "~7.0.0-rc.3", "@abp/ng.tenant-management": "~7.0.0-rc.3",
"@abp/ng.theme.shared": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3",
"@abp/ng.theme.lepton-x": "~2.0.0-rc.1", "@abp/ng.theme.lepton-x": "~2.0.0-rc.1",
"@angular/animations": "^14.2.1", "@angular/animations": "^15.0.1",
"@angular/common": "^14.2.1", "@angular/common": "^15.0.1",
"@angular/compiler": "^14.2.1", "@angular/compiler": "^15.0.1",
"@angular/core": "^14.2.1", "@angular/core": "^15.0.1",
"@angular/forms": "^14.2.1", "@angular/forms": "^15.0.1",
"@angular/localize": "^14.2.1", "@angular/localize": "^15.0.1",
"@angular/platform-browser": "^14.2.1", "@angular/platform-browser": "^15.0.1",
"@angular/platform-browser-dynamic": "^14.2.1", "@angular/platform-browser-dynamic": "^15.0.1",
"@angular/router": "^14.2.1", "@angular/router": "^15.0.1",
"bootstrap-icons": "~1.8.3", "bootstrap-icons": "~1.8.3",
"rxjs": "7.5.6", "rxjs": "7.5.6",
"tslib": "^2.1.0", "tslib": "^2.1.0",
@ -36,15 +36,15 @@
}, },
"devDependencies": { "devDependencies": {
"@abp/ng.schematics": "~7.0.0-rc.3", "@abp/ng.schematics": "~7.0.0-rc.3",
"@angular-devkit/build-angular": "^14.2.3", "@angular-devkit/build-angular": "^15.0.1",
"@angular-eslint/builder": "~14.1.1", "@angular-eslint/builder": "~15.1.0",
"@angular-eslint/eslint-plugin": "~14.1.1", "@angular-eslint/eslint-plugin": "~15.1.0",
"@angular-eslint/eslint-plugin-template": "~14.1.1", "@angular-eslint/eslint-plugin-template": "~15.1.0",
"@angular-eslint/schematics": "~14.1.1", "@angular-eslint/schematics": "~15.1.0",
"@angular-eslint/template-parser": "~14.1.1", "@angular-eslint/template-parser": "~15.1.0",
"@angular/cli": "^14.2.3", "@angular/cli": "^15.0.1",
"@angular/compiler-cli": "^14.2.1", "@angular/compiler-cli": "^15.0.1",
"@angular/language-service": "^14.2.1", "@angular/language-service": "^15.0.1",
"@types/jasmine": "~3.6.0", "@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1", "@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "^5.36.2", "@typescript-eslint/eslint-plugin": "^5.36.2",
@ -56,7 +56,7 @@
"karma-coverage": "~2.1.0", "karma-coverage": "~2.1.0",
"karma-jasmine": "~4.0.0", "karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0", "karma-jasmine-html-reporter": "^1.7.0",
"ng-packagr": "^14.2.1", "ng-packagr": "^15.0.1",
"typescript": "~4.8.3" "typescript": "~4.8.3"
} }
} }

2
templates/app/angular/src/app/app-routing.module.ts

@ -28,7 +28,7 @@ const routes: Routes = [
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], imports: [RouterModule.forRoot(routes, {})],
exports: [RouterModule], exports: [RouterModule],
}) })
export class AppRoutingModule {} export class AppRoutingModule {}

16
templates/app/angular/src/test.ts

@ -6,24 +6,8 @@ import {
platformBrowserDynamicTesting, platformBrowserDynamicTesting,
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(
path: string,
deep?: boolean,
filter?: RegExp
): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
platformBrowserDynamicTesting() platformBrowserDynamicTesting()
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

18
templates/app/angular/tsconfig.json

@ -10,13 +10,21 @@
"experimentalDecorators": true, "experimentalDecorators": true,
"moduleResolution": "node", "moduleResolution": "node",
"importHelpers": true, "importHelpers": true,
"target": "es2020", "target": "ES2022",
"module": "es2020", "module": "es2020",
"lib": ["es2018", "dom"], "lib": [
"es2018",
"dom"
],
"paths": { "paths": {
"@proxy": ["src/app/proxy/index.ts"], "@proxy": [
"@proxy/*": ["src/app/proxy/*"] "src/app/proxy/index.ts"
} ],
"@proxy/*": [
"src/app/proxy/*"
]
},
"useDefineForClassFields": false
}, },
"angularCompilerOptions": { "angularCompilerOptions": {
"enableI18nLegacyMessageIdFormat": false "enableI18nLegacyMessageIdFormat": false

10
templates/app/react-native/Environment.js

@ -1,10 +1,13 @@
const yourIP = 'Your Local IP Address etc 192.168.1.64'; // See the docs https://docs.abp.io/en/abp/latest/Getting-Started-React-Native?Tiered=No
const port = 44305;
const apiUrl = `http://${yourIP}:${port}`;
const ENV = { const ENV = {
dev: { dev: {
apiUrl: 'http://localhost:44305', apiUrl: apiUrl,
oAuthConfig: { oAuthConfig: {
issuer: 'http://localhost:44305', issuer: apiUrl,
clientId: 'MyProjectName_App', clientId: 'MyProjectName_App',
clientSecret: '1q2w3e*',
scope: 'offline_access MyProjectName', scope: 'offline_access MyProjectName',
}, },
localization: { localization: {
@ -16,7 +19,6 @@ const ENV = {
oAuthConfig: { oAuthConfig: {
issuer: 'http://localhost:44305', issuer: 'http://localhost:44305',
clientId: 'MyProjectName_App', clientId: 'MyProjectName_App',
clientSecret: '1q2w3e*',
scope: 'offline_access MyProjectName', scope: 'offline_access MyProjectName',
}, },
localization: { localization: {

41
templates/app/react-native/package.json

@ -10,34 +10,35 @@
"eject": "expo eject" "eject": "expo eject"
}, },
"dependencies": { "dependencies": {
"@react-native-async-storage/async-storage": "~1.15.0", "@react-native-async-storage/async-storage": "~1.17.11",
"@react-navigation/drawer": "^6.1.8", "@react-navigation/drawer": "^6.5.4",
"@react-navigation/native": "^6.0.6", "@react-navigation/native": "^6.1.0",
"@react-navigation/native-stack": "^6.2.5", "@react-navigation/native-stack": "^6.9.5",
"@reduxjs/toolkit": "^1.7.1", "@reduxjs/toolkit": "^1.7.1",
"axios": "^0.24.0", "axios": "~1.2.1",
"expo": "~44.0.0", "expo": "^47.0.0",
"expo-status-bar": "~1.2.0", "expo-status-bar": "~1.4.2",
"formik": "^2.2.9", "formik": "^2.2.9",
"i18n-js": "^3.8.0", "i18n-js": "^3.8.0",
"native-base": "^3.3.1", "native-base": "^3.4.25",
"prop-types": "^15.8.1", "prop-types": "^15.8.1",
"react": "17.0.1", "react": "18.1.0",
"react-dom": "17.0.1", "react-dom": "18.1.0",
"react-native": "0.64.3", "react-native": "0.70.5",
"react-native-gesture-handler": "~2.1.0", "react-native-chart-kit": "^6.11.0",
"react-native-reanimated": "~2.3.1", "react-native-gesture-handler": "~2.8.0",
"react-native-safe-area-context": "3.3.2", "react-native-reanimated": "~2.12.0",
"react-native-screens": "~3.10.1", "react-native-safe-area-context": "4.4.1",
"react-native-svg": "12.1.1", "react-native-screens": "~3.18.0",
"react-native-web": "0.17.1", "react-native-svg": "13.4.0",
"react-redux": "^7.2.6", "react-native-web": "~0.18.7",
"react-redux": "^8.0.5",
"redux-persist": "^6.0.0", "redux-persist": "^6.0.0",
"redux-saga": "^1.1.3", "redux-saga": "^1.2.1",
"yup": "^0.32.11" "yup": "^0.32.11"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.12.9" "@babel/core": "^7.19.3"
}, },
"private": true "private": true
} }

38
templates/module/angular/package.json

@ -23,30 +23,30 @@
"@abp/ng.tenant-management": "~7.0.0-rc.3", "@abp/ng.tenant-management": "~7.0.0-rc.3",
"@abp/ng.theme.basic": "~7.0.0-rc.3", "@abp/ng.theme.basic": "~7.0.0-rc.3",
"@abp/ng.theme.shared": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3",
"@angular/animations": "^14.2.1", "@angular/animations": "^15.0.1",
"@angular/common": "^14.2.1", "@angular/common": "^15.0.1",
"@angular/compiler": "^14.2.1", "@angular/compiler": "^15.0.1",
"@angular/core": "^14.2.1", "@angular/core": "^15.0.1",
"@angular/forms": "^14.2.1", "@angular/forms": "^15.0.1",
"@angular/localize": "^14.2.1", "@angular/localize": "^15.0.1",
"@angular/platform-browser": "^14.2.1", "@angular/platform-browser": "^15.0.1",
"@angular/platform-browser-dynamic": "^14.2.1", "@angular/platform-browser-dynamic": "^15.0.1",
"@angular/router": "^14.2.1", "@angular/router": "^15.0.1",
"rxjs": "7.5.6", "rxjs": "7.5.6",
"tslib": "^2.1.0", "tslib": "^2.1.0",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
}, },
"devDependencies": { "devDependencies": {
"@abp/ng.schematics": "~7.0.0-rc.3", "@abp/ng.schematics": "~7.0.0-rc.3",
"@angular-devkit/build-angular": "^14.2.3", "@angular-devkit/build-angular": "^15.0.1",
"@angular-eslint/builder": "~14.1.1", "@angular-eslint/builder": "~15.1.0",
"@angular-eslint/eslint-plugin": "~14.1.1", "@angular-eslint/eslint-plugin": "~15.1.0",
"@angular-eslint/eslint-plugin-template": "~14.1.1", "@angular-eslint/eslint-plugin-template": "~15.1.0",
"@angular-eslint/schematics": "~14.1.1", "@angular-eslint/schematics": "~15.1.0",
"@angular-eslint/template-parser": "~14.1.1", "@angular-eslint/template-parser": "~15.1.0",
"@angular/cli": "^14.2.3", "@angular/cli": "^15.0.1",
"@angular/compiler-cli": "^14.2.1", "@angular/compiler-cli": "^15.0.1",
"@angular/language-service": "^14.2.1", "@angular/language-service": "^15.0.1",
"@types/jasmine": "~3.6.0", "@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1", "@types/node": "^12.11.1",
"@typescript-eslint/eslint-plugin": "^5.36.2", "@typescript-eslint/eslint-plugin": "^5.36.2",
@ -58,7 +58,7 @@
"karma-coverage": "~2.1.0", "karma-coverage": "~2.1.0",
"karma-jasmine": "~4.0.0", "karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0", "karma-jasmine-html-reporter": "^1.7.0",
"ng-packagr": "^14.2.1", "ng-packagr": "^15.0.1",
"symlink-manager": "^1.5.0", "symlink-manager": "^1.5.0",
"typescript": "~4.8.3" "typescript": "~4.8.3"
} }

17
templates/module/angular/projects/dev-app/.browserslistrc

@ -1,17 +0,0 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# For the full list of supported browsers by the Angular framework, please see:
# https://angular.io/guide/browser-support
# You can see what browsers were selected by your queries by running:
# npx browserslist
last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major versions
last 2 iOS major versions
Firefox ESR
not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line.

2
templates/module/angular/projects/dev-app/src/app/app-routing.module.ts

@ -33,7 +33,7 @@ const routes: Routes = [
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], imports: [RouterModule.forRoot(routes, {})],
exports: [RouterModule], exports: [RouterModule],
}) })
export class AppRoutingModule {} export class AppRoutingModule {}

11
templates/module/angular/projects/dev-app/src/test.ts

@ -7,19 +7,8 @@ import {
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
platformBrowserDynamicTesting() platformBrowserDynamicTesting()
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

11
templates/module/angular/projects/my-project-name/src/test.ts

@ -8,19 +8,8 @@ import {
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
declare const require: {
context(path: string, deep?: boolean, filter?: RegExp): {
keys(): string[];
<T>(id: string): T;
};
};
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
platformBrowserDynamicTesting() platformBrowserDynamicTesting()
); );
// Then we find all the tests.
const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules.
context.keys().map(context);

1
templates/module/angular/projects/my-project-name/tsconfig.lib.json

@ -3,7 +3,6 @@
"extends": "../../tsconfig.prod.json", "extends": "../../tsconfig.prod.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../../out-tsc/lib", "outDir": "../../out-tsc/lib",
"target": "es2020",
"declaration": true, "declaration": true,
"declarationMap": true, "declarationMap": true,
"inlineSources": true, "inlineSources": true,

Loading…
Cancel
Save