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.
@@ -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;
@@ -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;CAC7B;AAgCD,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAqHxD;AAKD,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
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;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli.ts"],
4
- "mappings": "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",
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;AAKjF;;GAEG;AACH,qBAAa,iBAAkB,YAAW,gBAAgB;;;IAWhD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
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 { dirname } from "node:path";
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
- constructor() {
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,eAAe;AACxB,SAAS,qBAAqB;AAKvB,MAAM,kBAA8C;AAAA,EACvD;AAAA,EAEA,cAAc;AAGV,UAAM,gBAAgB,YAAY,QAAQ,0BAA0B;AAEpE,SAAK,cAAc,QAAQ,QAAQ,cAAc,aAAa,CAAC,CAAC;AAAA,EACpE;AAAA,EAEA,MAAM,SAAS,QAAmC;AAC9C,UAAM,MAAM,QAAQ;AACpB,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,EAEA,MAAM,aAA4B;AAAA,EAElC;AACJ;",
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.4",
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-20260201-8748390b1",
27
- "@matter-server/ws-controller": "0.3.4",
28
- "@matter-server/dashboard": "0.3.4",
29
- "@matter-server/custom-clusters": "0.3.4",
30
- "commander": "^14.0.2",
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-20260201-8748390b1",
37
- "@matter/testing": "0.16.9-alpha.0-20260201-8748390b1",
38
- "@matter-server/ws-client": "0.3.4"
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/**/*",
@@ -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 { dirname } from "node:path";
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
  }