From 1650874922d70f6cab4cf8a65c18fde2d072f32a Mon Sep 17 00:00:00 2001 From: Alex Martzios Date: Wed, 24 Jul 2024 12:13:41 +0300 Subject: [PATCH] [angular-17 | WIP] upgrade angular core and cli to v17 --- angular.json | 13 ++++---- package.json | 34 ++++++++++----------- server.ts | 65 ++++++++++++++++++---------------------- src/app/openaireLibrary | 2 +- src/assets/common-assets | 2 +- 5 files changed, 56 insertions(+), 60 deletions(-) diff --git a/angular.json b/angular.json index be7cf09..6fc3fc7 100644 --- a/angular.json +++ b/angular.json @@ -173,18 +173,18 @@ "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { - "browserTarget": "monitor:build" + "buildTarget": "monitor:build" }, "configurations": { "production": { - "browserTarget": "monitor:build:production" + "buildTarget": "monitor:build:production" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { - "browserTarget": "monitor:build" + "buildTarget": "monitor:build" } }, "test": { @@ -249,7 +249,7 @@ "defaultConfiguration": "" }, "serve-ssr": { - "builder": "@nguniversal/builders:ssr-dev-server", + "builder": "@angular-devkit/build-angular:ssr-dev-server", "options": { "browserTarget": "monitor:build", "serverTarget": "monitor:server" @@ -262,7 +262,7 @@ } }, "prerender": { - "builder": "@nguniversal/builders:prerender", + "builder": "@angular-devkit/build-angular:prerender", "options": { "browserTarget": "monitor:build:production", "serverTarget": "monitor:server:production", @@ -295,5 +295,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/package.json b/package.json index 99b72c1..c29890e 100644 --- a/package.json +++ b/package.json @@ -21,19 +21,19 @@ }, "private": true, "dependencies": { - "@angular/animations": "^16.1.8", + "@angular/animations": "^17.3.12", "@angular/cdk": "^16.1.7", - "@angular/common": "^16.1.8", - "@angular/compiler": "^16.1.8", - "@angular/core": "^16.1.8", - "@angular/forms": "^16.1.8", - "@angular/localize": "^16.1.8", + "@angular/common": "^17.3.12", + "@angular/compiler": "^17.3.12", + "@angular/core": "^17.3.12", + "@angular/forms": "^17.3.12", + "@angular/localize": "^17.3.12", "@angular/material": "^16.1.7", - "@angular/platform-browser": "^16.1.8", - "@angular/platform-browser-dynamic": "^16.1.8", - "@angular/platform-server": "^16.1.8", - "@angular/router": "^16.1.8", - "@nguniversal/express-engine": "^16.1.1", + "@angular/platform-browser": "^17.3.12", + "@angular/platform-browser-dynamic": "^17.3.12", + "@angular/platform-server": "^17.3.12", + "@angular/router": "^17.3.12", + "@angular/ssr": "^17.3.8", "clipboard": "^1.5.16", "core-js": "^2.5.4", "express": "^4.15.2", @@ -46,16 +46,16 @@ "zone.js": "~0.14.0" }, "devDependencies": { - "@angular-devkit/build-angular": "^16.1.7", - "@angular/cli": "^16.1.7", - "@angular/compiler-cli": "^16.1.8", - "@angular/language-service": "^16.1.8", - "@nguniversal/builders": "^16.1.1", + "@angular-devkit/build-angular": "^17.3.8", + "@angular/cli": "^17.3.8", + "@angular/compiler-cli": "^17.3.12", + "@angular/language-service": "^17.3.12", "@types/compression": "^1.7.0", "@types/express": "^4.17.0", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", "@types/node": "^16.18.50", + "browser-sync": "^3.0.0", "codelyzer": "^6.0.0", "jasmine-core": "~3.8.0", "jasmine-spec-reporter": "~5.0.0", @@ -68,4 +68,4 @@ "ts-node": "~7.0.0", "typescript": "~5.2.0" } -} +} \ No newline at end of file diff --git a/server.ts b/server.ts index d12f8d4..48159d8 100644 --- a/server.ts +++ b/server.ts @@ -1,27 +1,22 @@ + import 'zone.js/node'; -import { ngExpressEngine } from '@nguniversal/express-engine'; -import * as express from 'express'; -import * as compression from 'compression'; -import { join } from 'path'; - -import { AppServerModule } from './src/main.server'; import { APP_BASE_HREF } from '@angular/common'; -import { existsSync } from 'fs'; -import {REQUEST, RESPONSE} from "./src/app/openaireLibrary/utils/tokens"; +import { CommonEngine } from '@angular/ssr'; +import * as express from 'express'; +import { existsSync } from 'node:fs'; +import { join } from 'node:path'; +import bootstrap from './src/main.server'; // The Express app is exported so that it can be used by serverless Functions. -export function app() { +export function app(): express.Express { const server = express(); - server.use(compression()); const distFolder = join(process.cwd(), 'dist/monitor/browser'); - const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index'; + const indexHtml = existsSync(join(distFolder, 'index.original.html')) + ? join(distFolder, 'index.original.html') + : join(distFolder, 'index.html'); - // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine) - server.engine('html', ngExpressEngine({ - bootstrap: AppServerModule, - inlineCriticalCss: false - })); + const commonEngine = new CommonEngine(); server.set('view engine', 'html'); server.set('views', distFolder); @@ -33,30 +28,28 @@ export function app() { maxAge: '1y' })); - // All regular routes use the Universal engine - server.get('*', (req, res) => { - res.render(indexHtml, { - req, providers: [ - { - provide: APP_BASE_HREF, - useValue: req.baseUrl - }, - { - provide: REQUEST, useValue: (req) - }, - { - provide: RESPONSE, useValue: (res) - } - ] - } - ); + // All regular routes use the Angular engine + server.get('*', (req, res, next) => { + const { protocol, originalUrl, baseUrl, headers } = req; + + commonEngine + .render({ + bootstrap, + documentFilePath: indexHtml, + url: `${protocol}://${headers.host}${originalUrl}`, + publicPath: distFolder, + providers: [ + { provide: APP_BASE_HREF, useValue: baseUrl },], + }) + .then((html) => res.send(html)) + .catch((err) => next(err)); }); return server; } -function run() { - const port = process.env.PORT || 4000; +function run(): void { + const port = process.env['PORT'] || 4000; // Start up the Node server const server = app(); @@ -75,4 +68,4 @@ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) { run(); } -export * from './src/main.server'; +export default bootstrap; diff --git a/src/app/openaireLibrary b/src/app/openaireLibrary index 7bb45fe..af31fcf 160000 --- a/src/app/openaireLibrary +++ b/src/app/openaireLibrary @@ -1 +1 @@ -Subproject commit 7bb45fefa04f7dea80d7679b507030fb22ac7cba +Subproject commit af31fcfc372e314637b24a1646db013edf19bdec diff --git a/src/assets/common-assets b/src/assets/common-assets index 6bc0212..ee1a55a 160000 --- a/src/assets/common-assets +++ b/src/assets/common-assets @@ -1 +1 @@ -Subproject commit 6bc02125166daa907d39ff523cd635088bdb63c2 +Subproject commit ee1a55a529fde844f54761633e59f3be791717e3