Skip to content

Commit 05a2e0b

Browse files
committed
fix(api-server): enables HTML 5 mode for angular front end
Also: performance improvement by using compression on the API server and the front end web server as well. Signed-off-by: Peter Somogyvari <[email protected]>
1 parent 210df1d commit 05a2e0b

File tree

4 files changed

+57
-5
lines changed

4 files changed

+57
-5
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"private": true,
44
"scripts": {
55
"configure": "lerna clean --yes && lerna bootstrap && npm run build && node ./tools/generate-api-server-config.js",
6-
"start": "node ./packages/bif-cmd-api-server/dist/lib/main/typescript/cmd/bif-api.js --config-file=.config.json",
6+
"start:api-server": "node ./packages/bif-cmd-api-server/dist/lib/main/typescript/cmd/bif-api.js --config-file=.config.json",
77
"tsc": "lerna exec --stream --ignore '*/*cockpit' -- tsc --project ./tsconfig.json",
88
"clean": "lerna exec --stream --ignore '*/*cockpit' -- del-cli dist/**",
99
"build": "npm-run-all --parallel build:frontend build:backend",

packages/bif-cmd-api-server/package-lock.json

+43
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/bif-cmd-api-server/package.json

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"@hyperledger-labs/bif-plugin-keychain-memory": "0.2.0",
5252
"@hyperledger-labs/bif-plugin-kv-storage-memory": "0.2.0",
5353
"body-parser": "1.19.0",
54+
"compression": "1.7.4",
5455
"convict": "5.2.0",
5556
"cors": "2.8.5",
5657
"express": "4.17.1",
@@ -62,6 +63,7 @@
6263
"uuid": "7.0.2"
6364
},
6465
"devDependencies": {
66+
"@types/compression": "1.7.0",
6567
"@types/convict": "4.2.1",
6668
"@types/cors": "2.8.6",
6769
"@types/express": "4.17.3",

packages/bif-cmd-api-server/src/main/typescript/api-server.ts

+11-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import path from 'path';
22
import { Config } from 'convict';
33
import express, { Express, Request, Response, NextFunction, RequestHandler, Application } from 'express';
44
import { OpenApiValidator } from 'express-openapi-validator';
5+
import compression from 'compression';
56
import bodyParser from 'body-parser';
67
import cors, { CorsOptions } from 'cors';
78
import { IPluginKVStorage, PluginFactory } from '@hyperledger-labs/bif-core-api';
@@ -34,14 +35,19 @@ export class ApiServer {
3435
}
3536

3637
async startCockpitFileServer(): Promise<void> {
37-
38-
const app: Express = express();
39-
4038
const cockpitWwwRoot = this.options.config.get('cockpitWwwRoot');
41-
this.log.info(`cockpitWwwRoot: ${cockpitWwwRoot}`);
39+
this.log.info(`wwwRoot: ${cockpitWwwRoot}`);
40+
4241
const resolvedWwwRoot = path.resolve(process.cwd(), cockpitWwwRoot);
4342
this.log.info(`resolvedWwwRoot: ${resolvedWwwRoot}`);
43+
44+
const resolvedIndexHtml = path.resolve(resolvedWwwRoot + '/index.html');
45+
this.log.info(`resolvedIndexHtml: ${resolvedIndexHtml}`);
46+
47+
const app: Express = express();
48+
app.use(compression());
4449
app.use(express.static(resolvedWwwRoot));
50+
app.get('/*', (_, res) => res.sendFile(resolvedIndexHtml));
4551

4652
const cockpitPort: number = this.options.config.get('cockpitPort');
4753
const cockpitHost: string = this.options.config.get('cockpitHost');
@@ -58,6 +64,7 @@ export class ApiServer {
5864

5965
async startApiServer(): Promise<void> {
6066
const app: Application = express();
67+
app.use(compression());
6168

6269
const corsMiddleware = this.createCorsMiddleware()
6370
app.use(corsMiddleware);

0 commit comments

Comments
 (0)