matter-server 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/MatterServer.js +1 -1
- package/dist/esm/MatterServer.js.map +1 -1
- package/dist/esm/cli.d.ts +1 -0
- package/dist/esm/cli.d.ts.map +1 -1
- package/dist/esm/cli.js +7 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/server/StaticFileHandler.d.ts +2 -1
- package/dist/esm/server/StaticFileHandler.d.ts.map +1 -1
- package/dist/esm/server/StaticFileHandler.js +28 -2
- package/dist/esm/server/StaticFileHandler.js.map +1 -1
- package/package.json +9 -9
- package/src/MatterServer.ts +1 -1
- package/src/cli.ts +12 -0
- package/src/server/StaticFileHandler.ts +37 -2
package/dist/esm/MatterServer.js
CHANGED
|
@@ -150,7 +150,7 @@ async function start() {
|
|
|
150
150
|
const wsHandler = new WebSocketControllerHandler(controller, config, MATTER_SERVER_VERSION);
|
|
151
151
|
const handlers = [new HealthHandler(wsHandler), wsHandler];
|
|
152
152
|
if (!cliOptions.disableDashboard) {
|
|
153
|
-
handlers.push(new StaticFileHandler());
|
|
153
|
+
handlers.push(new StaticFileHandler(cliOptions.productionMode));
|
|
154
154
|
} else {
|
|
155
155
|
logger.info("Dashboard disabled via CLI flag");
|
|
156
156
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/MatterServer.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/cli.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export interface CliOptions {
|
|
|
21
21
|
disableOta: boolean;
|
|
22
22
|
otaProviderDir: string | null;
|
|
23
23
|
disableDashboard: boolean;
|
|
24
|
+
productionMode: boolean;
|
|
24
25
|
}
|
|
25
26
|
export declare function parseCliArgs(argv?: string[]): CliOptions;
|
|
26
27
|
export declare function getCliOptions(): CliOptions;
|
package/dist/esm/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAKnC,QAAA,MAAM,UAAU,uEAAwE,CAAC;AAGzF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,UAAU;IAEvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAG/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,gBAAgB,EAAE,OAAO,CAAC;IAG1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,gBAAgB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,eAAO,MAAM,iBAAiB,QAAS,CAAC;AACxC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAKnC,QAAA,MAAM,UAAU,uEAAwE,CAAC;AAGzF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,UAAU;IAEvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAG/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAGvB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,gBAAgB,EAAE,OAAO,CAAC;IAG1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGhC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAG9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CAC3B;AAgCD,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAgIxD;AAKD,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
|
package/dist/esm/cli.js
CHANGED
|
@@ -71,6 +71,11 @@ function parseCliArgs(argv) {
|
|
|
71
71
|
new Option("--disable-ota [value]", "Disable OTA update functionality").argParser(parseBooleanEnv).preset(true).default(false).env("DISABLE_OTA")
|
|
72
72
|
).addOption(new Option("--ota-provider-dir <path>", "Directory for OTA Provider files").env("OTA_PROVIDER_DIR")).addOption(
|
|
73
73
|
new Option("--disable-dashboard [value]", "Disable the web dashboard").argParser(parseBooleanEnv).preset(true).default(false).env("DISABLE_DASHBOARD")
|
|
74
|
+
).addOption(
|
|
75
|
+
new Option(
|
|
76
|
+
"--production-mode [value]",
|
|
77
|
+
"Force dashboard production mode (auto-connect to server). Use when running behind a reverse proxy."
|
|
78
|
+
).argParser(parseBooleanEnv).preset(true).default(false).env("PRODUCTION_MODE")
|
|
74
79
|
).addOption(
|
|
75
80
|
new Option("--log-level-sdk <level>", "Matter SDK logging level (deprecated, no longer used)").choices(SDK_LOG_LEVELS).hideHelp()
|
|
76
81
|
).option("--log-node-ids <ids...>", "Node IDs to filter logs (deprecated, no longer used)").option("--paa-root-cert-dir <path>", "Directory for PAA root certificates (deprecated, no longer used)").option("--disable-server-interactions", "Disable server cluster interactions (deprecated, no longer used)");
|
|
@@ -100,7 +105,8 @@ function parseCliArgs(argv) {
|
|
|
100
105
|
bluetoothAdapter: opts.bluetoothAdapter ?? null,
|
|
101
106
|
disableOta: opts.disableOta,
|
|
102
107
|
otaProviderDir: opts.otaProviderDir ?? null,
|
|
103
|
-
disableDashboard: opts.disableDashboard
|
|
108
|
+
disableDashboard: opts.disableDashboard,
|
|
109
|
+
productionMode: opts.productionMode
|
|
104
110
|
};
|
|
105
111
|
}
|
|
106
112
|
let cliOptions;
|
package/dist/esm/cli.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cli.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,SAAS,SAAS,sBAAsB,cAAc;AACtD,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AACxB,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAG9B,MAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,MAAM,kBAAkB,KAAK,WAAW,oBAAoB;AAC5D,MAAM,cAAc,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC;AACrE,MAAM,UAAU,YAAY;AAGrB,MAAM,oBAAoB;AAC1B,MAAM,oBAAoB;AACjC,MAAM,eAAe;AACrB,MAAM,uBAAuB,KAAK,QAAQ,GAAG,gBAAgB;AAG7D,MAAM,aAAa,CAAC,YAAY,SAAS,WAAW,QAAQ,SAAS,SAAS;AAC9E,MAAM,iBAAiB,CAAC,QAAQ,SAAS,YAAY,UAAU,YAAY;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
import type { HttpServer, WebServerHandler } from "@matter-server/ws-controller";
|
|
7
7
|
/**
|
|
8
8
|
* Serves static files from the dashboard package's dist/web directory.
|
|
9
|
+
* Optionally, injects server configuration into index.html.
|
|
9
10
|
*/
|
|
10
11
|
export declare class StaticFileHandler implements WebServerHandler {
|
|
11
12
|
#private;
|
|
12
|
-
constructor();
|
|
13
|
+
constructor(productionMode?: boolean);
|
|
13
14
|
register(server: HttpServer): Promise<void>;
|
|
14
15
|
unregister(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticFileHandler.d.ts","sourceRoot":"","sources":["../../../src/server/StaticFileHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"StaticFileHandler.d.ts","sourceRoot":"","sources":["../../../src/server/StaticFileHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMjF;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,gBAAgB;;gBAK1C,cAAc,GAAE,OAAe;IASrC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -4,16 +4,26 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import express from "express";
|
|
7
|
-
import {
|
|
7
|
+
import { readFileSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
8
9
|
import { fileURLToPath } from "node:url";
|
|
9
10
|
class StaticFileHandler {
|
|
10
11
|
#staticPath;
|
|
11
|
-
|
|
12
|
+
#productionMode;
|
|
13
|
+
#indexHtml = null;
|
|
14
|
+
constructor(productionMode = false) {
|
|
12
15
|
const dashboardMain = import.meta.resolve("@matter-server/dashboard");
|
|
13
16
|
this.#staticPath = dirname(dirname(fileURLToPath(dashboardMain)));
|
|
17
|
+
this.#productionMode = productionMode;
|
|
14
18
|
}
|
|
15
19
|
async register(server) {
|
|
16
20
|
const app = express();
|
|
21
|
+
app.get("/", (_req, res) => {
|
|
22
|
+
res.type("html").send(this.#getIndexHtml());
|
|
23
|
+
});
|
|
24
|
+
app.get("/index.html", (_req, res) => {
|
|
25
|
+
res.type("html").send(this.#getIndexHtml());
|
|
26
|
+
});
|
|
17
27
|
app.use(express.static(this.#staticPath));
|
|
18
28
|
server.on("request", (req, res) => {
|
|
19
29
|
if (!req.url?.startsWith("/ws") && req.url !== "/health") {
|
|
@@ -21,6 +31,22 @@ class StaticFileHandler {
|
|
|
21
31
|
}
|
|
22
32
|
});
|
|
23
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the index.html content, potentially modified with server configuration.
|
|
36
|
+
*/
|
|
37
|
+
#getIndexHtml() {
|
|
38
|
+
if (!this.#indexHtml) {
|
|
39
|
+
const indexPath = join(this.#staticPath, "index.html");
|
|
40
|
+
let html = readFileSync(indexPath, "utf-8");
|
|
41
|
+
if (this.#productionMode) {
|
|
42
|
+
const configScript = `<script>window.__MATTERJS_PRODUCTION_MODE__ = true;<\/script>`;
|
|
43
|
+
html = html.replace("</head>", `${configScript}
|
|
44
|
+
</head>`);
|
|
45
|
+
}
|
|
46
|
+
this.#indexHtml = html;
|
|
47
|
+
}
|
|
48
|
+
return this.#indexHtml;
|
|
49
|
+
}
|
|
24
50
|
async unregister() {
|
|
25
51
|
}
|
|
26
52
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/server/StaticFileHandler.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,OAAO,aAAa;AACpB,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,OAAO,aAAa;AACpB,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAMvB,MAAM,kBAA8C;AAAA,EACvD;AAAA,EACA;AAAA,EACA,aAA4B;AAAA,EAE5B,YAAY,iBAA0B,OAAO;AAGzC,UAAM,gBAAgB,YAAY,QAAQ,0BAA0B;AAEpE,SAAK,cAAc,QAAQ,QAAQ,cAAc,aAAa,CAAC,CAAC;AAChE,SAAK,kBAAkB;AAAA,EAC3B;AAAA,EAEA,MAAM,SAAS,QAAmC;AAC9C,UAAM,MAAM,QAAQ;AAGpB,QAAI,IAAI,KAAK,CAAC,MAAM,QAAQ;AACxB,UAAI,KAAK,MAAM,EAAE,KAAK,KAAK,cAAc,CAAC;AAAA,IAC9C,CAAC;AACD,QAAI,IAAI,eAAe,CAAC,MAAM,QAAQ;AAClC,UAAI,KAAK,MAAM,EAAE,KAAK,KAAK,cAAc,CAAC;AAAA,IAC9C,CAAC;AAGD,QAAI,IAAI,QAAQ,OAAO,KAAK,WAAW,CAAC;AAGxC,WAAO,GAAG,WAAW,CAAC,KAAK,QAAQ;AAE/B,UAAI,CAAC,IAAI,KAAK,WAAW,KAAK,KAAK,IAAI,QAAQ,WAAW;AACtD,YAAI,KAAK,GAAG;AAAA,MAChB;AAAA,IACJ,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAwB;AACpB,QAAI,CAAC,KAAK,YAAY;AAClB,YAAM,YAAY,KAAK,KAAK,aAAa,YAAY;AACrD,UAAI,OAAO,aAAa,WAAW,OAAO;AAG1C,UAAI,KAAK,iBAAiB;AACtB,cAAM,eAAe;AAErB,eAAO,KAAK,QAAQ,WAAW,GAAG,YAAY;AAAA,QAAW;AAAA,MAC7D;AAEA,WAAK,aAAa;AAAA,IACtB;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAM,aAA4B;AAAA,EAElC;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matter-server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "WebSocket Matter server based on matter.js",
|
|
6
6
|
"bugs": {
|
|
@@ -23,19 +23,19 @@
|
|
|
23
23
|
"node": ">=20.19.0 <22.0.0 || >=22.13.0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@matter/main": "0.16.9-alpha.0-
|
|
27
|
-
"@matter-server/ws-controller": "0.3.
|
|
28
|
-
"@matter-server/dashboard": "0.3.
|
|
29
|
-
"@matter-server/custom-clusters": "0.3.
|
|
30
|
-
"commander": "^14.0.
|
|
26
|
+
"@matter/main": "0.16.9-alpha.0-20260204-fd5b6ed86",
|
|
27
|
+
"@matter-server/ws-controller": "0.3.5",
|
|
28
|
+
"@matter-server/dashboard": "0.3.5",
|
|
29
|
+
"@matter-server/custom-clusters": "0.3.5",
|
|
30
|
+
"commander": "^14.0.3",
|
|
31
31
|
"express": "^5.2.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/express": "^5.0.6",
|
|
35
35
|
"@types/node": "^25.0.10",
|
|
36
|
-
"@matter/nodejs": "0.16.9-alpha.0-
|
|
37
|
-
"@matter/testing": "0.16.9-alpha.0-
|
|
38
|
-
"@matter-server/ws-client": "0.3.
|
|
36
|
+
"@matter/nodejs": "0.16.9-alpha.0-20260204-fd5b6ed86",
|
|
37
|
+
"@matter/testing": "0.16.9-alpha.0-20260204-fd5b6ed86",
|
|
38
|
+
"@matter-server/ws-client": "0.3.5"
|
|
39
39
|
},
|
|
40
40
|
"files": [
|
|
41
41
|
"dist/**/*",
|
package/src/MatterServer.ts
CHANGED
|
@@ -194,7 +194,7 @@ async function start() {
|
|
|
194
194
|
const wsHandler = new WebSocketControllerHandler(controller, config, MATTER_SERVER_VERSION);
|
|
195
195
|
const handlers: WebServerHandler[] = [new HealthHandler(wsHandler), wsHandler];
|
|
196
196
|
if (!cliOptions.disableDashboard) {
|
|
197
|
-
handlers.push(new StaticFileHandler());
|
|
197
|
+
handlers.push(new StaticFileHandler(cliOptions.productionMode));
|
|
198
198
|
} else {
|
|
199
199
|
logger.info("Dashboard disabled via CLI flag");
|
|
200
200
|
}
|
package/src/cli.ts
CHANGED
|
@@ -62,6 +62,7 @@ export interface CliOptions {
|
|
|
62
62
|
|
|
63
63
|
// Dashboard configuration
|
|
64
64
|
disableDashboard: boolean;
|
|
65
|
+
productionMode: boolean;
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
function parseIntOption(value: string): number {
|
|
@@ -168,6 +169,16 @@ export function parseCliArgs(argv?: string[]): CliOptions {
|
|
|
168
169
|
.default(false)
|
|
169
170
|
.env("DISABLE_DASHBOARD"),
|
|
170
171
|
)
|
|
172
|
+
.addOption(
|
|
173
|
+
new Option(
|
|
174
|
+
"--production-mode [value]",
|
|
175
|
+
"Force dashboard production mode (auto-connect to server). Use when running behind a reverse proxy.",
|
|
176
|
+
)
|
|
177
|
+
.argParser(parseBooleanEnv)
|
|
178
|
+
.preset(true)
|
|
179
|
+
.default(false)
|
|
180
|
+
.env("PRODUCTION_MODE"),
|
|
181
|
+
)
|
|
171
182
|
// Deprecated options - still accepted for backwards compatibility
|
|
172
183
|
.addOption(
|
|
173
184
|
new Option("--log-level-sdk <level>", "Matter SDK logging level (deprecated, no longer used)")
|
|
@@ -210,6 +221,7 @@ export function parseCliArgs(argv?: string[]): CliOptions {
|
|
|
210
221
|
disableOta: opts.disableOta,
|
|
211
222
|
otaProviderDir: opts.otaProviderDir ?? null,
|
|
212
223
|
disableDashboard: opts.disableDashboard,
|
|
224
|
+
productionMode: opts.productionMode,
|
|
213
225
|
};
|
|
214
226
|
}
|
|
215
227
|
|
|
@@ -6,25 +6,40 @@
|
|
|
6
6
|
|
|
7
7
|
import type { HttpServer, WebServerHandler } from "@matter-server/ws-controller";
|
|
8
8
|
import express from "express";
|
|
9
|
-
import {
|
|
9
|
+
import { readFileSync } from "node:fs";
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
10
11
|
import { fileURLToPath } from "node:url";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Serves static files from the dashboard package's dist/web directory.
|
|
15
|
+
* Optionally, injects server configuration into index.html.
|
|
14
16
|
*/
|
|
15
17
|
export class StaticFileHandler implements WebServerHandler {
|
|
16
18
|
#staticPath: string;
|
|
19
|
+
#productionMode: boolean;
|
|
20
|
+
#indexHtml: string | null = null;
|
|
17
21
|
|
|
18
|
-
constructor() {
|
|
22
|
+
constructor(productionMode: boolean = false) {
|
|
19
23
|
// Resolve the @matter-server/dashboard package entry point (dist/web/js/main.js)
|
|
20
24
|
// and get its parent directory (dist/web) for serving static files
|
|
21
25
|
const dashboardMain = import.meta.resolve("@matter-server/dashboard");
|
|
22
26
|
// Go up from dist/web/js/ to dist/web/
|
|
23
27
|
this.#staticPath = dirname(dirname(fileURLToPath(dashboardMain)));
|
|
28
|
+
this.#productionMode = productionMode;
|
|
24
29
|
}
|
|
25
30
|
|
|
26
31
|
async register(server: HttpServer): Promise<void> {
|
|
27
32
|
const app = express();
|
|
33
|
+
|
|
34
|
+
// Custom handler for index.html to inject the production mode flag
|
|
35
|
+
app.get("/", (_req, res) => {
|
|
36
|
+
res.type("html").send(this.#getIndexHtml());
|
|
37
|
+
});
|
|
38
|
+
app.get("/index.html", (_req, res) => {
|
|
39
|
+
res.type("html").send(this.#getIndexHtml());
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Serve other static files normally
|
|
28
43
|
app.use(express.static(this.#staticPath));
|
|
29
44
|
|
|
30
45
|
// Attach to the existing server
|
|
@@ -36,6 +51,26 @@ export class StaticFileHandler implements WebServerHandler {
|
|
|
36
51
|
});
|
|
37
52
|
}
|
|
38
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Get the index.html content, potentially modified with server configuration.
|
|
56
|
+
*/
|
|
57
|
+
#getIndexHtml(): string {
|
|
58
|
+
if (!this.#indexHtml) {
|
|
59
|
+
const indexPath = join(this.#staticPath, "index.html");
|
|
60
|
+
let html = readFileSync(indexPath, "utf-8");
|
|
61
|
+
|
|
62
|
+
// Inject production mode configuration if enabled
|
|
63
|
+
if (this.#productionMode) {
|
|
64
|
+
const configScript = `<script>window.__MATTERJS_PRODUCTION_MODE__ = true;</script>`;
|
|
65
|
+
// Insert before the closing </head> tag
|
|
66
|
+
html = html.replace("</head>", `${configScript}\n</head>`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
this.#indexHtml = html;
|
|
70
|
+
}
|
|
71
|
+
return this.#indexHtml;
|
|
72
|
+
}
|
|
73
|
+
|
|
39
74
|
async unregister(): Promise<void> {
|
|
40
75
|
// Nothing to clean up
|
|
41
76
|
}
|