From cf9bc41b5a879ce4cd866a424494dae0ebf06fea Mon Sep 17 00:00:00 2001 From: Mahmut Gundogdu Date: Fri, 9 Dec 2022 15:41:23 +0300 Subject: [PATCH] Update angular 15 (#14859) * Update angular repo with nx * Update app-pro/angular to 15. * Update schematic utils to 15. * Update app-nolayers * Update module project to angular 15 * Update package.json files in packages/z * Bump ng-bootstrap version --- npm/ng-packs/angular.json | 244 ++++++++++++++---- npm/ng-packs/apps/dev-app/.browserslistrc | 17 -- .../dev-app/src/app/app-routing.module.ts | 2 +- npm/ng-packs/apps/dev-app/tsconfig.app.json | 4 +- npm/ng-packs/migrations.json | 160 ++++++++++-- npm/ng-packs/nx.json | 30 ++- npm/ng-packs/package.json | 67 ++--- .../packages/account-core/tsconfig.lib.json | 5 +- .../account-core/tsconfig.lib.prod.json | 4 +- .../packages/account/tsconfig.lib.json | 5 +- .../packages/account/tsconfig.lib.prod.json | 4 +- .../packages/components/tsconfig.lib.json | 5 +- .../components/tsconfig.lib.prod.json | 4 +- npm/ng-packs/packages/core/package.json | 2 +- .../services/timeout-limited-oauth.service.ts | 2 +- npm/ng-packs/packages/core/tsconfig.lib.json | 5 +- .../packages/core/tsconfig.lib.prod.json | 4 +- .../feature-management/tsconfig.lib.json | 5 +- .../feature-management/tsconfig.lib.prod.json | 4 +- .../packages/identity/tsconfig.lib.json | 5 +- .../packages/identity/tsconfig.lib.prod.json | 4 +- .../permission-management/tsconfig.lib.json | 5 +- .../tsconfig.lib.prod.json | 4 +- npm/ng-packs/packages/schematics/package.json | 8 +- .../src/commands/change-theme/style-map.ts | 2 +- .../schematics/src/utils/angular/README.md | 2 +- .../angular/add-declaration-to-ng-module.ts | 61 +++++ .../schematics/src/utils/angular/ast-utils.ts | 47 +--- .../src/utils/angular/generate-from-files.ts | 4 +- .../angular/latest-versions/package.json | 10 +- .../src/utils/angular/parse-name.ts | 1 - .../utils/angular/test/create-app-module.ts | 34 +++ .../utils/angular/test/get-file-content.ts | 19 ++ .../src/utils/angular/test/index.ts | 10 + .../setting-management/tsconfig.lib.json | 5 +- .../setting-management/tsconfig.lib.prod.json | 4 +- .../tenant-management/tsconfig.lib.json | 5 +- .../tenant-management/tsconfig.lib.prod.json | 4 +- .../packages/theme-basic/tsconfig.lib.json | 5 +- .../theme-basic/tsconfig.lib.prod.json | 4 +- .../extensions/src/lib/models/props.ts | 4 +- .../src/lib/pipes/create-injector.pipe.ts | 18 +- .../packages/theme-shared/package.json | 4 +- .../src/lib/utils/validation-utils.ts | 6 +- .../packages/theme-shared/tsconfig.lib.json | 5 +- .../theme-shared/tsconfig.lib.prod.json | 4 +- .../app-nolayers/angular/.browserslistrc | 17 -- templates/app-nolayers/angular/package.json | 38 +-- .../angular/src/app/app-routing.module.ts | 2 +- templates/app-nolayers/angular/src/test.ts | 15 -- templates/app-nolayers/angular/tsconfig.json | 13 +- templates/app/angular/.browserslistrc | 17 -- templates/app/angular/package.json | 38 +-- .../app/angular/src/app/app-routing.module.ts | 2 +- templates/app/angular/src/test.ts | 16 -- templates/app/angular/tsconfig.json | 18 +- templates/module/angular/package.json | 38 +-- .../angular/projects/dev-app/.browserslistrc | 17 -- .../dev-app/src/app/app-routing.module.ts | 2 +- .../angular/projects/dev-app/src/test.ts | 11 - .../projects/my-project-name/src/test.ts | 11 - .../my-project-name/tsconfig.lib.json | 1 - 62 files changed, 696 insertions(+), 417 deletions(-) delete mode 100644 npm/ng-packs/apps/dev-app/.browserslistrc create mode 100644 npm/ng-packs/packages/schematics/src/utils/angular/add-declaration-to-ng-module.ts create mode 100644 npm/ng-packs/packages/schematics/src/utils/angular/test/create-app-module.ts create mode 100644 npm/ng-packs/packages/schematics/src/utils/angular/test/get-file-content.ts create mode 100644 npm/ng-packs/packages/schematics/src/utils/angular/test/index.ts delete mode 100644 templates/app-nolayers/angular/.browserslistrc delete mode 100644 templates/app/angular/.browserslistrc delete mode 100644 templates/module/angular/projects/dev-app/.browserslistrc diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json index f02c1f3e6f..0b2e115734 100644 --- a/npm/ng-packs/angular.json +++ b/npm/ng-packs/angular.json @@ -10,7 +10,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/account"], + "outputs": [ + "{workspaceRoot}/dist/packages/account" + ], "options": { "project": "packages/account/ng-package.json" }, @@ -26,7 +28,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/account"], + "outputs": [ + "{workspaceRoot}/coverage/packages/account" + ], "options": { "jestConfig": "packages/account/jest.config.ts", "passWithNoTests": true @@ -35,13 +39,22 @@ "lint": { "builder": "@nrwl/linter:eslint", "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": [], - "implicitDependencies": ["core", "theme-shared", "account-core"] + "implicitDependencies": [ + "core", + "theme-shared", + "account-core" + ] }, "account-core": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -52,7 +65,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/account-core"], + "outputs": [ + "{workspaceRoot}/dist/packages/account-core" + ], "options": { "project": "packages/account-core/ng-package.json" }, @@ -68,7 +83,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/account-core"], + "outputs": [ + "{workspaceRoot}/coverage/packages/account-core" + ], "options": { "jestConfig": "packages/account-core/jest.config.ts", "passWithNoTests": true @@ -82,11 +99,16 @@ "packages/account-core/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared"] + "implicitDependencies": [ + "core", + "theme-shared" + ] }, "components": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -97,7 +119,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/components"], + "outputs": [ + "{workspaceRoot}/dist/packages/components" + ], "options": { "project": "packages/components/ng-package.json" }, @@ -113,7 +137,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/components"], + "outputs": [ + "{workspaceRoot}/coverage/packages/components" + ], "options": { "jestConfig": "packages/components/jest.config.ts", "passWithNoTests": true @@ -127,11 +153,16 @@ "packages/components/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared"] + "implicitDependencies": [ + "core", + "theme-shared" + ] }, "core": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -142,7 +173,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/core"], + "outputs": [ + "{workspaceRoot}/dist/packages/core" + ], "options": { "project": "packages/core/ng-package.json" }, @@ -158,7 +191,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/core"], + "outputs": [ + "{workspaceRoot}/coverage/packages/core" + ], "options": { "jestConfig": "packages/core/jest.config.ts", "passWithNoTests": true @@ -167,9 +202,14 @@ "lint": { "builder": "@nrwl/linter:eslint", "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": [] @@ -183,7 +223,9 @@ "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", - "outputs": ["{options.outputPath}"], + "outputs": [ + "{options.outputPath}" + ], "options": { "outputPath": "dist/apps/dev-app", "index": "apps/dev-app/src/index.html", @@ -191,8 +233,14 @@ "polyfills": "apps/dev-app/src/polyfills.ts", "tsConfig": "apps/dev-app/tsconfig.app.json", "inlineStyleLanguage": "scss", - "allowedCommonJsDependencies": ["chart.js", "js-sha256"], - "assets": ["apps/dev-app/src/favicon.ico", "apps/dev-app/src/assets"], + "allowedCommonJsDependencies": [ + "chart.js", + "js-sha256" + ], + "assets": [ + "apps/dev-app/src/favicon.ico", + "apps/dev-app/src/assets" + ], "styles": [ { "input": "node_modules/bootstrap/dist/css/bootstrap.rtl.min.css", @@ -288,12 +336,17 @@ "lint": { "builder": "@nrwl/linter:eslint", "options": { - "lintFilePatterns": ["apps/dev-app/src/**/*.ts", "apps/dev-app/src/**/*.html"] + "lintFilePatterns": [ + "apps/dev-app/src/**/*.ts", + "apps/dev-app/src/**/*.html" + ] } }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/apps/dev-app"], + "outputs": [ + "{workspaceRoot}/coverage/apps/dev-app" + ], "options": { "jestConfig": "apps/dev-app/jest.config.ts", "passWithNoTests": true @@ -323,13 +376,19 @@ "lint": { "builder": "@nrwl/linter:eslint", "options": { - "lintFilePatterns": ["apps/dev-app-e2e/**/*.{js,ts}"] + "lintFilePatterns": [ + "apps/dev-app-e2e/**/*.{js,ts}" + ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["dev-app"] + "implicitDependencies": [ + "dev-app" + ] }, "feature-management": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -340,7 +399,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/feature-management"], + "outputs": [ + "{workspaceRoot}/dist/packages/feature-management" + ], "options": { "project": "packages/feature-management/ng-package.json" }, @@ -356,7 +417,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/feature-management"], + "outputs": [ + "{workspaceRoot}/coverage/packages/feature-management" + ], "options": { "jestConfig": "packages/feature-management/jest.config.ts", "passWithNoTests": true @@ -370,11 +433,16 @@ "packages/feature-management/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared"] + "implicitDependencies": [ + "core", + "theme-shared" + ] }, "identity": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -385,7 +453,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/identity"], + "outputs": [ + "{workspaceRoot}/dist/packages/identity" + ], "options": { "project": "packages/identity/ng-package.json" }, @@ -401,7 +471,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/identity"], + "outputs": [ + "{workspaceRoot}/coverage/packages/identity" + ], "options": { "jestConfig": "packages/identity/jest.config.ts", "passWithNoTests": true @@ -410,13 +482,22 @@ "lint": { "builder": "@nrwl/linter:eslint", "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": [], - "implicitDependencies": ["core", "theme-shared", "permission-management"] + "implicitDependencies": [ + "core", + "theme-shared", + "permission-management" + ] }, "permission-management": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -427,7 +508,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/permission-management"], + "outputs": [ + "{workspaceRoot}/dist/packages/permission-management" + ], "options": { "project": "packages/permission-management/ng-package.json" }, @@ -443,7 +526,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/permission-management"], + "outputs": [ + "{workspaceRoot}/coverage/packages/permission-management" + ], "options": { "jestConfig": "packages/permission-management/jest.config.ts", "passWithNoTests": true @@ -457,11 +542,16 @@ "packages/permission-management/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared"] + "implicitDependencies": [ + "core", + "theme-shared" + ] }, "schematics": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -472,7 +562,9 @@ "architect": { "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/schematics"], + "outputs": [ + "{workspaceRoot}/coverage/packages/schematics" + ], "options": { "jestConfig": "packages/schematics/jest.config.ts", "passWithNoTests": true @@ -486,7 +578,9 @@ "packages/schematics/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [] @@ -500,7 +594,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/setting-management"], + "outputs": [ + "{workspaceRoot}/dist/packages/setting-management" + ], "options": { "project": "packages/setting-management/ng-package.json" }, @@ -516,7 +612,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/setting-management"], + "outputs": [ + "{workspaceRoot}/coverage/packages/setting-management" + ], "options": { "jestConfig": "packages/setting-management/jest.config.ts", "passWithNoTests": true @@ -530,11 +628,17 @@ "packages/setting-management/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared", "components"] + "implicitDependencies": [ + "core", + "theme-shared", + "components" + ] }, "tenant-management": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -545,7 +649,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/tenant-management"], + "outputs": [ + "{workspaceRoot}/dist/packages/tenant-management" + ], "options": { "project": "packages/tenant-management/ng-package.json" }, @@ -561,7 +667,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/tenant-management"], + "outputs": [ + "{workspaceRoot}/coverage/packages/tenant-management" + ], "options": { "jestConfig": "packages/tenant-management/jest.config.ts", "passWithNoTests": true @@ -575,11 +683,17 @@ "packages/tenant-management/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared", "feature-management"] + "implicitDependencies": [ + "core", + "theme-shared", + "feature-management" + ] }, "theme-basic": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -590,7 +704,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/theme-basic"], + "outputs": [ + "{workspaceRoot}/dist/packages/theme-basic" + ], "options": { "project": "packages/theme-basic/ng-package.json" }, @@ -606,7 +722,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/theme-basic"], + "outputs": [ + "{workspaceRoot}/coverage/packages/theme-basic" + ], "options": { "jestConfig": "packages/theme-basic/jest.config.ts", "passWithNoTests": true @@ -620,11 +738,17 @@ "packages/theme-basic/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core", "theme-shared", "account-core"] + "implicitDependencies": [ + "core", + "theme-shared", + "account-core" + ] }, "theme-shared": { "$schema": "../../node_modules/nx/schemas/project-schema.json", @@ -635,7 +759,9 @@ "architect": { "build": { "builder": "@nrwl/angular:package", - "outputs": ["dist/packages/theme-shared"], + "outputs": [ + "{workspaceRoot}/dist/packages/theme-shared" + ], "options": { "project": "packages/theme-shared/ng-package.json" }, @@ -651,7 +777,9 @@ }, "test": { "builder": "@nrwl/jest:jest", - "outputs": ["coverage/packages/theme-shared"], + "outputs": [ + "{workspaceRoot}/coverage/packages/theme-shared" + ], "options": { "jestConfig": "packages/theme-shared/jest.config.ts", "passWithNoTests": true @@ -665,11 +793,15 @@ "packages/theme-shared/src/**/*.html" ] }, - "outputs": ["{options.outputFile}"] + "outputs": [ + "{options.outputFile}" + ] } }, "tags": [], - "implicitDependencies": ["core"] + "implicitDependencies": [ + "core" + ] } } } diff --git a/npm/ng-packs/apps/dev-app/.browserslistrc b/npm/ng-packs/apps/dev-app/.browserslistrc deleted file mode 100644 index 427441dc93..0000000000 --- a/npm/ng-packs/apps/dev-app/.browserslistrc +++ /dev/null @@ -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. diff --git a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts index 178c182324..0d9f82ea25 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts @@ -28,7 +28,7 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], + imports: [RouterModule.forRoot(routes, {})], exports: [RouterModule], }) export class AppRoutingModule {} diff --git a/npm/ng-packs/apps/dev-app/tsconfig.app.json b/npm/ng-packs/apps/dev-app/tsconfig.app.json index feaf147e48..adbc754523 100644 --- a/npm/ng-packs/apps/dev-app/tsconfig.app.json +++ b/npm/ng-packs/apps/dev-app/tsconfig.app.json @@ -2,7 +2,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "types": [] + "types": [], + "target": "ES2022", + "useDefineForClassFields": false }, "files": ["src/main.ts", "src/polyfills.ts"], "include": ["src/**/*.d.ts"], diff --git a/npm/ng-packs/migrations.json b/npm/ng-packs/migrations.json index b724b6f446..a44c341a86 100644 --- a/npm/ng-packs/migrations.json +++ b/npm/ng-packs/migrations.json @@ -2,43 +2,161 @@ "migrations": [ { "cli": "nx", - "version": "14.6.0-beta.0", - "description": "Update the @angular/cli package version to ~14.2.0.", - "factory": "./src/migrations/update-14-6-0/update-angular-cli", + "version": "15.0.0-beta.1", + "description": "Replace implicitDependencies with namedInputs + target inputs", + "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", - "name": "update-angular-cli-version-14-2-0" + "name": "switch-to-jasmine-marbles" }, { "cli": "nx", - "version": "14.6.1-beta.0", - "description": "Change Cypress e2e and component testing presets to use __filename instead of __dirname and include a devServerTarget for component testing.", - "factory": "./src/migrations/update-14-6-1/update-cypress-configs-presets", + "version": "15.0.0-beta.1", + "description": "Stop hashing karma spec files and config files for build targets and dependent tasks", + "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", - "name": "update-cypress-configs-preset" + "name": "add-cypress-inputs" }, { "cli": "nx", - "version": "14.7.0-beta.0", - "description": "Update Cypress if using v10 to support latest component testing features", - "factory": "./src/migrations/update-14-7-0/update-cypress-version-if-10", + "version": "15.0.0-beta.4", + "description": "Update to using cy.mount in the commands.ts file instead of importing mount for each component test file", + "factory": "./src/migrations/update-15-0-0/update-cy-mount-usage", "package": "@nrwl/cypress", - "name": "update-cypress-if-v10" + "name": "update-cy-mount-usage" }, { - "version": "14.6.0-beta.0", "cli": "nx", - "description": "Update jest configs to support jest 28 changes (https://jestjs.io/docs/upgrading-to-jest28#configuration-options)", - "factory": "./src/migrations/update-14-6-0/update-configs-jest-28", - "package": "@nrwl/jest", - "name": "update-configs-jest-28" + "version": "15.1.0-beta.0", + "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/", + "factory": "./src/migrations/update-15-1-0/cypress-11", + "package": "@nrwl/cypress", + "name": "update-to-cypress-11" }, { - "version": "14.6.0-beta.0", + "version": "15.0.0-beta.0", "cli": "nx", - "description": "Update jest test files to support jest 28 changes (https://jestjs.io/docs/upgrading-to-jest28)", - "factory": "./src/migrations/update-14-6-0/update-tests-jest-28", + "description": "Stop hashing jest spec files and config files for build targets and dependent tasks", + "factory": "./src/migrations/update-15-0-0/add-jest-inputs", "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" } ] } diff --git a/npm/ng-packs/nx.json b/npm/ng-packs/nx.json index e0cc546fc8..68238cd979 100644 --- a/npm/ng-packs/nx.json +++ b/npm/ng-packs/nx.json @@ -3,13 +3,6 @@ "affected": { "defaultBase": "dev" }, - "implicitDependencies": { - "package.json": { - "dependencies": "*", - "devDependencies": "*" - }, - ".eslintrc.json": "*" - }, "tasksRunnerOptions": { "default": { "runner": "nx/tasks-runners/default", @@ -57,7 +50,28 @@ "$schema": "./node_modules/nx/schemas/nx-schema.json", "targetDefaults": { "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" + ] } } diff --git a/npm/ng-packs/package.json b/npm/ng-packs/package.json index 1bf16fa7d5..8f81fd0c20 100644 --- a/npm/ng-packs/package.json +++ b/npm/ng-packs/package.json @@ -42,24 +42,25 @@ }, "private": true, "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/schematics-cli": "~14.2.1", - "@angular-eslint/eslint-plugin": "14.0.3", - "@angular-eslint/eslint-plugin-template": "14.0.3", - "@angular-eslint/template-parser": "14.0.3", - "@angular/animations": "14.2.1", - "@angular/cli": "~14.2.1", - "@angular/common": "14.2.1", - "@angular/compiler": "14.2.1", - "@angular/compiler-cli": "14.2.1", - "@angular/core": "14.2.1", - "@angular/forms": "14.2.1", - "@angular/language-service": "14.2.1", - "@angular/localize": "14.2.1", - "@angular/platform-browser": "14.2.1", - "@angular/platform-browser-dynamic": "14.2.1", - "@angular/router": "14.2.1", + "@angular-devkit/schematics-cli": "~15.0.1", + "@angular-eslint/eslint-plugin": "15.1.0", + "@angular-eslint/eslint-plugin-template": "15.1.0", + "@angular-eslint/template-parser": "15.1.0", + "@angular/animations": "~15.0.1", + "@angular/cli": "~15.0.1", + "@angular/common": "~15.0.1", + "@angular/compiler": "~15.0.1", + "@angular/compiler-cli": "~15.0.1", + "@angular/core": "~15.0.1", + "@angular/forms": "~15.0.1", + "@angular/language-service": "~15.0.1", + "@angular/localize": "~15.0.1", + "@angular/platform-browser": "~15.0.1", + "@angular/platform-browser-dynamic": "~15.0.1", + "@angular/router": "~15.0.1", "@abp/ng.account": "~7.0.0-rc.3", "@abp/ng.account.core": "~7.0.0-rc.3", "@abp/ng.core": "~7.0.0-rc.3", @@ -72,24 +73,24 @@ "@abp/ng.theme.basic": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3", "@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", - "@ngx-validate/core": "^0.1.2", - "@nrwl/angular": "14.7.5", - "@nrwl/cli": "14.7.5", - "@nrwl/cypress": "14.7.5", - "@nrwl/eslint-plugin-nx": "14.7.5", - "@nrwl/jest": "14.7.5", - "@nrwl/linter": "14.7.5", - "@nrwl/workspace": "14.7.5", + "@ngx-validate/core": "^0.2.0", + "@nrwl/angular": "15.2.1", + "@nrwl/cli": "15.2.1", + "@nrwl/cypress": "15.2.1", + "@nrwl/eslint-plugin-nx": "15.2.1", + "@nrwl/jest": "15.2.1", + "@nrwl/linter": "15.2.1", + "@nrwl/workspace": "15.2.1", "@popperjs/core": "~2.11.2", - "@schematics/angular": "14.2.2", + "@schematics/angular": "~15.0.1", "@swimlane/ngx-datatable": "^20.0.0", "@types/jest": "28.1.8", "@types/node": "14.14.33", - "@typescript-eslint/eslint-plugin": "5.33.1", - "@typescript-eslint/parser": "5.33.1", - "angular-oauth2-oidc": "^13.0.1", + "@typescript-eslint/eslint-plugin": "5.44.0", + "@typescript-eslint/parser": "5.44.0", + "angular-oauth2-oidc": "^15.0.1", "bootstrap": "^5.1.1", "chart.js": "^3.5.1", "cypress": "^7.3.0", @@ -107,9 +108,9 @@ "just-compare": "^1.4.0", "lerna": "^4.0.0", "lint-staged": "^13.0.3", - "ng-packagr": "14.2.1", + "ng-packagr": "15.0.1", "ng-zorro-antd": "^14.0.0", - "nx": "14.7.5", + "nx": "15.2.1", "postcss": "^8.3.9", "postcss-import": "14.1.0", "postcss-preset-env": "7.5.0", @@ -124,7 +125,7 @@ "tsickle": "^0.39.1", "tslib": "^2.0.0", "tslint": "~6.1.0", - "typescript": "4.7.4", + "typescript": "4.8.4", "zone.js": "0.11.4" }, "dependencies": {}, diff --git a/npm/ng-packs/packages/account-core/tsconfig.lib.json b/npm/ng-packs/packages/account-core/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/account-core/tsconfig.lib.json +++ b/npm/ng-packs/packages/account-core/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/account-core/tsconfig.lib.prod.json b/npm/ng-packs/packages/account-core/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/account-core/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/account-core/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/account/tsconfig.lib.json b/npm/ng-packs/packages/account/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/account/tsconfig.lib.json +++ b/npm/ng-packs/packages/account/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/account/tsconfig.lib.prod.json b/npm/ng-packs/packages/account/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/account/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/account/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/components/tsconfig.lib.json b/npm/ng-packs/packages/components/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/components/tsconfig.lib.json +++ b/npm/ng-packs/packages/components/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/components/tsconfig.lib.prod.json b/npm/ng-packs/packages/components/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/components/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/components/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/core/package.json b/npm/ng-packs/packages/core/package.json index e66cac3bd1..f682039c9a 100644 --- a/npm/ng-packs/packages/core/package.json +++ b/npm/ng-packs/packages/core/package.json @@ -8,7 +8,7 @@ }, "dependencies": { "@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-compare": "^1.4.0", "ts-toolbelt": "6.15.4", diff --git a/npm/ng-packs/packages/core/src/lib/services/timeout-limited-oauth.service.ts b/npm/ng-packs/packages/core/src/lib/services/timeout-limited-oauth.service.ts index 6e8454997c..bdce294968 100644 --- a/npm/ng-packs/packages/core/src/lib/services/timeout-limited-oauth.service.ts +++ b/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'; @Injectable() diff --git a/npm/ng-packs/packages/core/tsconfig.lib.json b/npm/ng-packs/packages/core/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/core/tsconfig.lib.json +++ b/npm/ng-packs/packages/core/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/core/tsconfig.lib.prod.json b/npm/ng-packs/packages/core/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/core/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/core/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/feature-management/tsconfig.lib.json b/npm/ng-packs/packages/feature-management/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/feature-management/tsconfig.lib.json +++ b/npm/ng-packs/packages/feature-management/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/feature-management/tsconfig.lib.prod.json b/npm/ng-packs/packages/feature-management/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/feature-management/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/feature-management/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/identity/tsconfig.lib.json b/npm/ng-packs/packages/identity/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/identity/tsconfig.lib.json +++ b/npm/ng-packs/packages/identity/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/identity/tsconfig.lib.prod.json b/npm/ng-packs/packages/identity/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/identity/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/identity/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/permission-management/tsconfig.lib.json b/npm/ng-packs/packages/permission-management/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/permission-management/tsconfig.lib.json +++ b/npm/ng-packs/packages/permission-management/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/permission-management/tsconfig.lib.prod.json b/npm/ng-packs/packages/permission-management/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/permission-management/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/permission-management/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/schematics/package.json b/npm/ng-packs/packages/schematics/package.json index bdcd9b976f..979364614f 100644 --- a/npm/ng-packs/packages/schematics/package.json +++ b/npm/ng-packs/packages/schematics/package.json @@ -9,13 +9,13 @@ "license": "MIT", "schematics": "./collection.json", "dependencies": { - "@angular-devkit/core": "~14.2.1", - "@angular-devkit/schematics": "~14.2.1", - "@angular/cli": "~14.2.1", + "@angular-devkit/core": "~15.0.1", + "@angular-devkit/schematics": "~15.0.1", + "@angular/cli": "~15.0.1", "got": "^11.5.2", "jsonc-parser": "^2.3.0", "should-quote": "^1.0.0", - "typescript": "~4.7.4" + "typescript": "4.8.4" }, "devDependencies": { "@schematics/angular": "~14.2.1", diff --git a/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts b/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts index 8063820e9e..91ef14a673 100644 --- a/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts +++ b/npm/ng-packs/packages/schematics/src/commands/change-theme/style-map.ts @@ -213,7 +213,7 @@ styleMap.set(ThemeOptionsEnum.LeptonXLite, [ inject: false, bundleName: 'bootstrap-dim.rtl', }, - { + { input: 'node_modules/@volo/ngx-lepton-x.lite/assets/css/font-bundle.rtl.css', inject: false, bundleName: 'font-bundle.rtl', diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/README.md b/npm/ng-packs/packages/schematics/src/utils/angular/README.md index d97f876e7f..217cccfaf5 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/README.md +++ b/npm/ng-packs/packages/schematics/src/utils/angular/README.md @@ -1,5 +1,5 @@ **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. diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/add-declaration-to-ng-module.ts b/npm/ng-packs/packages/schematics/src/utils/angular/add-declaration-to-ng-module.ts new file mode 100644 index 0000000000..f62e3922fd --- /dev/null +++ b/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; + }; +} diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/ast-utils.ts b/npm/ng-packs/packages/schematics/src/utils/angular/ast-utils.ts index 86801032f6..bda343f07b 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/ast-utils.ts +++ b/npm/ng-packs/packages/schematics/src/utils/angular/ast-utils.ts @@ -171,7 +171,7 @@ export function findNodes( */ export function getSourceNodes(sourceFile: ts.SourceFile): ts.Node[] { const nodes: ts.Node[] = [sourceFile]; - const result = []; + const result: ts.Node[] = []; while (nodes.length > 0) { const node = nodes.shift(); @@ -552,51 +552,6 @@ export function isImported( 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. */ diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/generate-from-files.ts b/npm/ng-packs/packages/schematics/src/utils/angular/generate-from-files.ts index d62b02bc92..eaf8febb54 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/generate-from-files.ts +++ b/npm/ng-packs/packages/schematics/src/utils/angular/generate-from-files.ts @@ -28,7 +28,7 @@ export interface GenerateFromFilesOptions { name: string; path?: string; prefix?: string; - project?: string; + project: string; skipTests?: boolean; } @@ -37,7 +37,7 @@ export function generateFromFiles( extraTemplateValues: Record string)> = {}, ): Rule { return async (host: Tree) => { - options.path ??= await createDefaultPath(host, options.project as string); + options.path ??= await createDefaultPath(host, options.project); options.prefix ??= ''; options.flat ??= true; diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json b/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json index a593d0efbd..c04d111f07 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/latest-versions/package.json +++ b/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.", "private": true, "dependencies": { - "@types/jasmine": "~4.0.0", + "@types/jasmine": "~4.3.0", "@types/node": "^14.15.0", - "jasmine-core": "~4.3.0", + "jasmine-core": "~4.5.0", "jasmine-spec-reporter": "~7.0.0", "karma-chrome-launcher": "~3.1.0", "karma-coverage": "~2.2.0", "karma-jasmine-html-reporter": "~2.0.0", "karma-jasmine": "~5.1.0", "karma": "~6.4.0", - "ng-packagr": "^14.2.0", + "ng-packagr": "^15.0.0", "protractor": "~7.0.0", "rxjs": "~7.5.0", "tslib": "^2.3.0", "ts-node": "~10.9.0", - "typescript": "~4.7.2", - "zone.js": "~0.11.4" + "typescript": "~4.8.2", + "zone.js": "~0.12.0" } } diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/parse-name.ts b/npm/ng-packs/packages/schematics/src/utils/angular/parse-name.ts index 231c99341a..01227198c9 100644 --- a/npm/ng-packs/packages/schematics/src/utils/angular/parse-name.ts +++ b/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 */ -// import { relative, Path } from "../../../angular_devkit/core/src/virtual-fs"; import { Path, basename, dirname, join, normalize } from '@angular-devkit/core'; export interface Location { diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/test/create-app-module.ts b/npm/ng-packs/packages/schematics/src/utils/angular/test/create-app-module.ts new file mode 100644 index 0000000000..a00f740ca3 --- /dev/null +++ b/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; +} diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/test/get-file-content.ts b/npm/ng-packs/packages/schematics/src/utils/angular/test/get-file-content.ts new file mode 100644 index 0000000000..98f0b34a5c --- /dev/null +++ b/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(); +} diff --git a/npm/ng-packs/packages/schematics/src/utils/angular/test/index.ts b/npm/ng-packs/packages/schematics/src/utils/angular/test/index.ts new file mode 100644 index 0000000000..bfe027bf21 --- /dev/null +++ b/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'; diff --git a/npm/ng-packs/packages/setting-management/tsconfig.lib.json b/npm/ng-packs/packages/setting-management/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/setting-management/tsconfig.lib.json +++ b/npm/ng-packs/packages/setting-management/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/setting-management/tsconfig.lib.prod.json b/npm/ng-packs/packages/setting-management/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/setting-management/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/setting-management/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/tenant-management/tsconfig.lib.json b/npm/ng-packs/packages/tenant-management/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/tenant-management/tsconfig.lib.json +++ b/npm/ng-packs/packages/tenant-management/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/tenant-management/tsconfig.lib.prod.json b/npm/ng-packs/packages/tenant-management/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/tenant-management/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/tenant-management/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/theme-basic/tsconfig.lib.json b/npm/ng-packs/packages/theme-basic/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/theme-basic/tsconfig.lib.json +++ b/npm/ng-packs/packages/theme-basic/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/theme-basic/tsconfig.lib.prod.json b/npm/ng-packs/packages/theme-basic/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/theme-basic/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/theme-basic/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts index 456a280ba8..a393e7587c 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts @@ -1,5 +1,5 @@ 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 { ePropType } from '../enums/props.enum'; @@ -9,7 +9,7 @@ export abstract class PropData { abstract getInjected: ( token: Type | InjectionToken, notFoundValue?: T, - flags?: InjectFlags, + options?: InjectOptions | InjectFlags, ) => T; index?: number; abstract record: R; diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts index 7941a2fe56..dff92e2c2d 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts +++ b/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 { EXTENSIONS_ACTION_CALLBACK, EXTENSIONS_ACTION_DATA } from '../tokens/extensions.token'; @@ -11,7 +19,11 @@ export class CreateInjectorPipe implements PipeTransform { action: ToolbarComponent, context: HasCreateInjectorPipe, ): Injector { - const get = (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => { + const get = ( + token: Type | InjectionToken, + notFoundValue?: T, + options?: InjectOptions | InjectFlags, + ) => { const componentData = context.getData(); const componentDataCallback = data => { data = data ?? context.getData(); @@ -26,7 +38,7 @@ export class CreateInjectorPipe implements PipeTransform { extensionData = componentDataCallback; break; default: - extensionData = context.getInjected.call(context.injector, token, notFoundValue, flags); + extensionData = context.getInjected.call(context.injector, token, notFoundValue, options); } return extensionData; }; diff --git a/npm/ng-packs/packages/theme-shared/package.json b/npm/ng-packs/packages/theme-shared/package.json index 5ffbf7b8fc..f2e6d8c256 100644 --- a/npm/ng-packs/packages/theme-shared/package.json +++ b/npm/ng-packs/packages/theme-shared/package.json @@ -9,8 +9,8 @@ "dependencies": { "@abp/ng.core": "~7.0.0-rc.3", "@fortawesome/fontawesome-free": "^5.15.4", - "@ng-bootstrap/ng-bootstrap": "13.0.0", - "@ngx-validate/core": "^0.1.2", + "@ng-bootstrap/ng-bootstrap": "^14.0.0-rc.1", + "@ngx-validate/core": "^0.2.0", "@popperjs/core": "~2.11.2", "@swimlane/ngx-datatable": "^20.0.0", "bootstrap": "^5.2.0", diff --git a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts b/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts index cb201d224f..9418580a64 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/utils/validation-utils.ts +++ b/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 { AbstractControl, ValidatorFn, Validators } from '@angular/forms'; import { normalizeDiacritics, PasswordRules } from '@ngx-validate/core'; -import { PasswordRule } from "../models/validation"; +import { PasswordRule } from '../models/validation'; const { minLength, maxLength } = Validators; @@ -52,9 +52,7 @@ const errorMessageMap = { special: 'passwordRequiresNonAlphanumeric', }; -export function validatePassword( - shouldContain: PasswordRule -): ValidatorFn { +export function validatePassword(shouldContain: PasswordRule): ValidatorFn { return (control: AbstractControl) => { if (!control.value) return null; diff --git a/npm/ng-packs/packages/theme-shared/tsconfig.lib.json b/npm/ng-packs/packages/theme-shared/tsconfig.lib.json index 77b9be04ff..58b88ce56c 100644 --- a/npm/ng-packs/packages/theme-shared/tsconfig.lib.json +++ b/npm/ng-packs/packages/theme-shared/tsconfig.lib.json @@ -2,12 +2,13 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "../../dist/out-tsc", - "target": "es2020", + "target": "ES2022", "declaration": true, "declarationMap": true, "inlineSources": true, "types": [], - "lib": ["dom", "es2018"] + "lib": ["dom", "es2018"], + "useDefineForClassFields": false }, "exclude": ["src/test-setup.ts", "**/*.spec.ts", "jest.config.ts"], "include": ["**/*.ts"] diff --git a/npm/ng-packs/packages/theme-shared/tsconfig.lib.prod.json b/npm/ng-packs/packages/theme-shared/tsconfig.lib.prod.json index 2a2faa884c..0e06848ce5 100644 --- a/npm/ng-packs/packages/theme-shared/tsconfig.lib.prod.json +++ b/npm/ng-packs/packages/theme-shared/tsconfig.lib.prod.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig.lib.json", "compilerOptions": { - "declarationMap": false + "declarationMap": false, + "target": "ES2022", + "useDefineForClassFields": false }, "angularCompilerOptions": { "compilationMode": "partial" diff --git a/templates/app-nolayers/angular/.browserslistrc b/templates/app-nolayers/angular/.browserslistrc deleted file mode 100644 index 427441dc93..0000000000 --- a/templates/app-nolayers/angular/.browserslistrc +++ /dev/null @@ -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. diff --git a/templates/app-nolayers/angular/package.json b/templates/app-nolayers/angular/package.json index 0bc13d69e7..d43b456cd9 100644 --- a/templates/app-nolayers/angular/package.json +++ b/templates/app-nolayers/angular/package.json @@ -20,15 +20,15 @@ "@abp/ng.tenant-management": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3", "@abp/ng.theme.lepton-x": "~2.0.0-rc.1", - "@angular/animations": "^14.2.1", - "@angular/common": "^14.2.1", - "@angular/compiler": "^14.2.1", - "@angular/core": "^14.2.1", - "@angular/forms": "^14.2.1", - "@angular/localize": "^14.2.1", - "@angular/platform-browser": "^14.2.1", - "@angular/platform-browser-dynamic": "^14.2.1", - "@angular/router": "^14.2.1", + "@angular/animations": "^15.0.1", + "@angular/common": "^15.0.1", + "@angular/compiler": "^15.0.1", + "@angular/core": "^15.0.1", + "@angular/forms": "^15.0.1", + "@angular/localize": "^15.0.1", + "@angular/platform-browser": "^15.0.1", + "@angular/platform-browser-dynamic": "^15.0.1", + "@angular/router": "^15.0.1", "rxjs": "7.5.6", "tslib": "^2.1.0", "bootstrap-icons": "~1.8.3", @@ -36,15 +36,15 @@ }, "devDependencies": { "@abp/ng.schematics": "~7.0.0-rc.3", - "@angular-devkit/build-angular": "^14.2.3", - "@angular-eslint/builder": "~14.1.1", - "@angular-eslint/eslint-plugin": "~14.1.1", - "@angular-eslint/eslint-plugin-template": "~14.1.1", - "@angular-eslint/schematics": "~14.1.1", - "@angular-eslint/template-parser": "~14.1.1", - "@angular/cli": "^14.2.3", - "@angular/compiler-cli": "^14.2.1", - "@angular/language-service": "^14.2.1", + "@angular-devkit/build-angular": "^15.0.1", + "@angular-eslint/builder": "~15.1.0", + "@angular-eslint/eslint-plugin": "~15.1.0", + "@angular-eslint/eslint-plugin-template": "~15.1.0", + "@angular-eslint/schematics": "~15.1.0", + "@angular-eslint/template-parser": "~15.1.0", + "@angular/cli": "^15.0.1", + "@angular/compiler-cli": "^15.0.1", + "@angular/language-service": "^15.0.1", "@types/jasmine": "~3.6.0", "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "^5.36.2", @@ -56,7 +56,7 @@ "karma-coverage": "~2.1.0", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.7.0", - "ng-packagr": "^14.2.1", + "ng-packagr": "^15.0.1", "typescript": "~4.8.3" } } diff --git a/templates/app-nolayers/angular/src/app/app-routing.module.ts b/templates/app-nolayers/angular/src/app/app-routing.module.ts index 178c182324..0d9f82ea25 100644 --- a/templates/app-nolayers/angular/src/app/app-routing.module.ts +++ b/templates/app-nolayers/angular/src/app/app-routing.module.ts @@ -28,7 +28,7 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], + imports: [RouterModule.forRoot(routes, {})], exports: [RouterModule], }) export class AppRoutingModule {} diff --git a/templates/app-nolayers/angular/src/test.ts b/templates/app-nolayers/angular/src/test.ts index 85c74fe531..3b701bbfa0 100644 --- a/templates/app-nolayers/angular/src/test.ts +++ b/templates/app-nolayers/angular/src/test.ts @@ -6,23 +6,8 @@ import { platformBrowserDynamicTesting, } from '@angular/platform-browser-dynamic/testing'; -declare const require: { - context( - path: string, - deep?: boolean, - filter?: RegExp - ): { - keys(): string[]; - (id: string): T; - }; -}; - // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting() ); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/templates/app-nolayers/angular/tsconfig.json b/templates/app-nolayers/angular/tsconfig.json index bf75909a03..9395506033 100644 --- a/templates/app-nolayers/angular/tsconfig.json +++ b/templates/app-nolayers/angular/tsconfig.json @@ -10,16 +10,21 @@ "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, - "target": "es2020", + "target": "ES2022", "module": "es2020", "lib": [ "es2018", "dom" ], "paths": { - "@proxy": ["src/app/proxy/index.ts"], - "@proxy/*": ["src/app/proxy/*"] - } + "@proxy": [ + "src/app/proxy/index.ts" + ], + "@proxy/*": [ + "src/app/proxy/*" + ] + }, + "useDefineForClassFields": false }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false diff --git a/templates/app/angular/.browserslistrc b/templates/app/angular/.browserslistrc deleted file mode 100644 index 427441dc93..0000000000 --- a/templates/app/angular/.browserslistrc +++ /dev/null @@ -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. diff --git a/templates/app/angular/package.json b/templates/app/angular/package.json index c18b4dd3cc..8ce9214452 100644 --- a/templates/app/angular/package.json +++ b/templates/app/angular/package.json @@ -20,15 +20,15 @@ "@abp/ng.tenant-management": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3", "@abp/ng.theme.lepton-x": "~2.0.0-rc.1", - "@angular/animations": "^14.2.1", - "@angular/common": "^14.2.1", - "@angular/compiler": "^14.2.1", - "@angular/core": "^14.2.1", - "@angular/forms": "^14.2.1", - "@angular/localize": "^14.2.1", - "@angular/platform-browser": "^14.2.1", - "@angular/platform-browser-dynamic": "^14.2.1", - "@angular/router": "^14.2.1", + "@angular/animations": "^15.0.1", + "@angular/common": "^15.0.1", + "@angular/compiler": "^15.0.1", + "@angular/core": "^15.0.1", + "@angular/forms": "^15.0.1", + "@angular/localize": "^15.0.1", + "@angular/platform-browser": "^15.0.1", + "@angular/platform-browser-dynamic": "^15.0.1", + "@angular/router": "^15.0.1", "bootstrap-icons": "~1.8.3", "rxjs": "7.5.6", "tslib": "^2.1.0", @@ -36,15 +36,15 @@ }, "devDependencies": { "@abp/ng.schematics": "~7.0.0-rc.3", - "@angular-devkit/build-angular": "^14.2.3", - "@angular-eslint/builder": "~14.1.1", - "@angular-eslint/eslint-plugin": "~14.1.1", - "@angular-eslint/eslint-plugin-template": "~14.1.1", - "@angular-eslint/schematics": "~14.1.1", - "@angular-eslint/template-parser": "~14.1.1", - "@angular/cli": "^14.2.3", - "@angular/compiler-cli": "^14.2.1", - "@angular/language-service": "^14.2.1", + "@angular-devkit/build-angular": "^15.0.1", + "@angular-eslint/builder": "~15.1.0", + "@angular-eslint/eslint-plugin": "~15.1.0", + "@angular-eslint/eslint-plugin-template": "~15.1.0", + "@angular-eslint/schematics": "~15.1.0", + "@angular-eslint/template-parser": "~15.1.0", + "@angular/cli": "^15.0.1", + "@angular/compiler-cli": "^15.0.1", + "@angular/language-service": "^15.0.1", "@types/jasmine": "~3.6.0", "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "^5.36.2", @@ -56,7 +56,7 @@ "karma-coverage": "~2.1.0", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.7.0", - "ng-packagr": "^14.2.1", + "ng-packagr": "^15.0.1", "typescript": "~4.8.3" } } diff --git a/templates/app/angular/src/app/app-routing.module.ts b/templates/app/angular/src/app/app-routing.module.ts index 178c182324..0d9f82ea25 100644 --- a/templates/app/angular/src/app/app-routing.module.ts +++ b/templates/app/angular/src/app/app-routing.module.ts @@ -28,7 +28,7 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], + imports: [RouterModule.forRoot(routes, {})], exports: [RouterModule], }) export class AppRoutingModule {} diff --git a/templates/app/angular/src/test.ts b/templates/app/angular/src/test.ts index 5b643ec44d..3b701bbfa0 100644 --- a/templates/app/angular/src/test.ts +++ b/templates/app/angular/src/test.ts @@ -6,24 +6,8 @@ import { platformBrowserDynamicTesting, } from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context( - path: string, - deep?: boolean, - filter?: RegExp - ): { - keys(): string[]; - (id: string): T; - }; -}; - // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting() ); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/templates/app/angular/tsconfig.json b/templates/app/angular/tsconfig.json index 9e918832d9..9395506033 100644 --- a/templates/app/angular/tsconfig.json +++ b/templates/app/angular/tsconfig.json @@ -10,13 +10,21 @@ "experimentalDecorators": true, "moduleResolution": "node", "importHelpers": true, - "target": "es2020", + "target": "ES2022", "module": "es2020", - "lib": ["es2018", "dom"], + "lib": [ + "es2018", + "dom" + ], "paths": { - "@proxy": ["src/app/proxy/index.ts"], - "@proxy/*": ["src/app/proxy/*"] - } + "@proxy": [ + "src/app/proxy/index.ts" + ], + "@proxy/*": [ + "src/app/proxy/*" + ] + }, + "useDefineForClassFields": false }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false diff --git a/templates/module/angular/package.json b/templates/module/angular/package.json index 5d10e26dc9..a27cd58b1a 100644 --- a/templates/module/angular/package.json +++ b/templates/module/angular/package.json @@ -23,30 +23,30 @@ "@abp/ng.tenant-management": "~7.0.0-rc.3", "@abp/ng.theme.basic": "~7.0.0-rc.3", "@abp/ng.theme.shared": "~7.0.0-rc.3", - "@angular/animations": "^14.2.1", - "@angular/common": "^14.2.1", - "@angular/compiler": "^14.2.1", - "@angular/core": "^14.2.1", - "@angular/forms": "^14.2.1", - "@angular/localize": "^14.2.1", - "@angular/platform-browser": "^14.2.1", - "@angular/platform-browser-dynamic": "^14.2.1", - "@angular/router": "^14.2.1", + "@angular/animations": "^15.0.1", + "@angular/common": "^15.0.1", + "@angular/compiler": "^15.0.1", + "@angular/core": "^15.0.1", + "@angular/forms": "^15.0.1", + "@angular/localize": "^15.0.1", + "@angular/platform-browser": "^15.0.1", + "@angular/platform-browser-dynamic": "^15.0.1", + "@angular/router": "^15.0.1", "rxjs": "7.5.6", "tslib": "^2.1.0", "zone.js": "~0.11.4" }, "devDependencies": { "@abp/ng.schematics": "~7.0.0-rc.3", - "@angular-devkit/build-angular": "^14.2.3", - "@angular-eslint/builder": "~14.1.1", - "@angular-eslint/eslint-plugin": "~14.1.1", - "@angular-eslint/eslint-plugin-template": "~14.1.1", - "@angular-eslint/schematics": "~14.1.1", - "@angular-eslint/template-parser": "~14.1.1", - "@angular/cli": "^14.2.3", - "@angular/compiler-cli": "^14.2.1", - "@angular/language-service": "^14.2.1", + "@angular-devkit/build-angular": "^15.0.1", + "@angular-eslint/builder": "~15.1.0", + "@angular-eslint/eslint-plugin": "~15.1.0", + "@angular-eslint/eslint-plugin-template": "~15.1.0", + "@angular-eslint/schematics": "~15.1.0", + "@angular-eslint/template-parser": "~15.1.0", + "@angular/cli": "^15.0.1", + "@angular/compiler-cli": "^15.0.1", + "@angular/language-service": "^15.0.1", "@types/jasmine": "~3.6.0", "@types/node": "^12.11.1", "@typescript-eslint/eslint-plugin": "^5.36.2", @@ -58,7 +58,7 @@ "karma-coverage": "~2.1.0", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.7.0", - "ng-packagr": "^14.2.1", + "ng-packagr": "^15.0.1", "symlink-manager": "^1.5.0", "typescript": "~4.8.3" } diff --git a/templates/module/angular/projects/dev-app/.browserslistrc b/templates/module/angular/projects/dev-app/.browserslistrc deleted file mode 100644 index 427441dc93..0000000000 --- a/templates/module/angular/projects/dev-app/.browserslistrc +++ /dev/null @@ -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. diff --git a/templates/module/angular/projects/dev-app/src/app/app-routing.module.ts b/templates/module/angular/projects/dev-app/src/app/app-routing.module.ts index 982cf8228b..ba7ee06b13 100644 --- a/templates/module/angular/projects/dev-app/src/app/app-routing.module.ts +++ b/templates/module/angular/projects/dev-app/src/app/app-routing.module.ts @@ -33,7 +33,7 @@ const routes: Routes = [ ]; @NgModule({ - imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], + imports: [RouterModule.forRoot(routes, {})], exports: [RouterModule], }) export class AppRoutingModule {} diff --git a/templates/module/angular/projects/dev-app/src/test.ts b/templates/module/angular/projects/dev-app/src/test.ts index 2042356408..7632e27a11 100644 --- a/templates/module/angular/projects/dev-app/src/test.ts +++ b/templates/module/angular/projects/dev-app/src/test.ts @@ -7,19 +7,8 @@ import { platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting() ); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/templates/module/angular/projects/my-project-name/src/test.ts b/templates/module/angular/projects/my-project-name/src/test.ts index 52e55168eb..e63a876062 100644 --- a/templates/module/angular/projects/my-project-name/src/test.ts +++ b/templates/module/angular/projects/my-project-name/src/test.ts @@ -8,19 +8,8 @@ import { platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting() ); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/templates/module/angular/projects/my-project-name/tsconfig.lib.json b/templates/module/angular/projects/my-project-name/tsconfig.lib.json index c5f09fa1da..8246b3f0b1 100644 --- a/templates/module/angular/projects/my-project-name/tsconfig.lib.json +++ b/templates/module/angular/projects/my-project-name/tsconfig.lib.json @@ -3,7 +3,6 @@ "extends": "../../tsconfig.prod.json", "compilerOptions": { "outDir": "../../out-tsc/lib", - "target": "es2020", "declaration": true, "declarationMap": true, "inlineSources": true,