redis-smq-web-server 9.0.0-next.12 → 9.0.0-next.13

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/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [9.0.0-next.13](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.12...v9.0.0-next.13) (2025-10-28)
7
+
8
+ ### 🐛 Bug Fixes
9
+
10
+ - **redis-smq-web-server:** ensure API server inherits correct base path configuration ([eaa1b7d](https://github.com/weyoss/redis-smq/commit/eaa1b7d0a40ccdf98ceecd98f37930f840407946))
11
+
12
+ ### 📝 Documentation
13
+
14
+ - **redis-smq-web-server:** update apiProxyTarget notes ([692926d](https://github.com/weyoss/redis-smq/commit/692926d93a242ca58bb798b037a555d4d6e4d69d))
15
+
6
16
  ## [9.0.0-next.12](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.11...v9.0.0-next.12) (2025-10-27)
7
17
 
8
18
  ### 🚀 Chore
package/README.md CHANGED
@@ -15,14 +15,14 @@ A lightweight, configurable HTTP server that hosts the RedisSMQ Web UI and expos
15
15
 
16
16
  - Serves the SPA (Single Page Application) for monitoring and managing RedisSMQ.
17
17
  - Mounts the HTTP API under a configurable base path.
18
- - Can run the HTTP API in-process, or proxy API/docs/assets to an external `redis-smq-rest-api`.
18
+ - Can run the HTTP API in-process, or proxy API to an external `redis-smq-rest-api`.
19
19
  - Requires only Redis connection details when hosting the API in-process; with proxying, Redis is managed by the upstream API service.
20
20
 
21
21
  ## Features
22
22
 
23
23
  - Static SPA hosting with history fallback (client-side routing supported).
24
24
  - One binary to serve both UI and HTTP API (or proxy to an existing API instance).
25
- - Optional upstream proxy for API/docs/assets via a single flag.
25
+ - Optional upstream proxy for API via a single flag.
26
26
  - Simple, explicit configuration via CLI or programmatic config.
27
27
  - Sensible defaults; easily deployable behind reverse proxies.
28
28
 
@@ -80,7 +80,7 @@ npx redis-smq-web-server \
80
80
  --api-proxy-target http://127.0.0.1:7210
81
81
  ```
82
82
 
83
- When `--api-proxy-target` is provided, requests to `<basePath>/api`, `<basePath>/docs`, and `<basePath>/assets` are forwarded
83
+ When `--api-proxy-target` is provided, requests to `<basePath>/api` and `<basePath>/docs` are forwarded
84
84
  to the upstream. In this mode, Redis connection options on the web server are not used; the upstream API service manages Redis.
85
85
 
86
86
  ### Programmatically (optional)
@@ -118,7 +118,7 @@ const server = new RedisSMQWebServer({
118
118
  await server.run();
119
119
  // await server.shutdown();
120
120
 
121
- // Or proxy API/docs/assets to an external service
121
+ // Or proxy API to an external service
122
122
  const srv = new RedisSMQWebServer({
123
123
  webServer: {
124
124
  port: 8080,
@@ -149,7 +149,6 @@ Proxying behavior:
149
149
  - When apiProxyTarget is set, the server forwards:
150
150
  - <basePath>/api → ${apiProxyTarget}
151
151
  - <basePath>/docs → ${apiProxyTarget}
152
- - <basePath>/assets → ${apiProxyTarget}
153
152
  - When apiProxyTarget is not set, the server hosts the embedded REST API in-process.
154
153
 
155
154
  ## Configuration
@@ -174,7 +173,7 @@ interface IRedisSMQWebServerConfig extends IRedisSMQRestApiConfig {
174
173
  basePath?: string;
175
174
 
176
175
  /**
177
- * Optional target for proxying (/api, /docs, /assets).
176
+ * Optional target for proxying API.
178
177
  * If provided, the embedded REST API is not mounted and requests are forwarded to the target.
179
178
  * Example: 'http://127.0.0.1:7210'
180
179
  */
@@ -185,8 +184,7 @@ interface IRedisSMQWebServerConfig extends IRedisSMQRestApiConfig {
185
184
 
186
185
  Notes:
187
186
 
188
- - When `webServer.apiProxyTarget` is set, the server proxies `<basePath>/api`, `<basePath>/docs`, and
189
- `<basePath>/assets` to the target. In this mode, redis and logger options are not used by the web server (they are
187
+ - When `webServer.apiProxyTarget` is set, the server proxies `<basePath>/api` and `<basePath>/docs` to the target. In this mode, redis and logger options are not used by the web server (they are
190
188
  handled by the upstream API service).
191
189
 
192
190
  - When `webServer.apiProxyTarget` is not set, the web server mounts the embedded `redis-smq-rest-api` using the provided
@@ -197,7 +195,7 @@ Notes:
197
195
  ```shell
198
196
  -p, --port <number> Port to run the server on (default: "8080")
199
197
  -b, --base-path <string> Base public path for the RedisSMQ Web UI SPA (default: "/")
200
- -t, --api-proxy-target <string> Proxy target for API (/api, /docs, /assets). Example: http://127.0.0.1:6000
198
+ -t, --api-proxy-target <string> Proxy target for API (/api, /docs). Example: http://127.0.0.1:6000
201
199
  -c, --redis-client <ioredis|redis> Redis client. Valid options are: ioredis, redis. (default: "ioredis")
202
200
  -r, --redis-host <string> Redis server host (default: "127.0.0.1")
203
201
  -o, --redis-port <number> Redis server port (default: "6379")
@@ -215,7 +213,7 @@ Notes:
215
213
  - If you terminate TLS at the proxy, no additional config is needed here.
216
214
  - If you also proxy the API to an external service, combine with `--api-proxy-target`:
217
215
  - Client → reverse proxy → web server (/redis-smq)
218
- - Web server proxies /redis-smq/api, /redis-smq/docs, /redis-smq/assets → external API
216
+ - Web server proxies /redis-smq/api, /redis-smq/docs → external API
219
217
 
220
218
  ## License
221
219
 
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,aAAa,EAAE,wBAM3B,CAAC;AAMF,wBAAgB,WAAW,CACzB,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,8BAA8B,CAkBhC"}
1
+ {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,aAAa,EAAE,wBAM3B,CAAC;AAMF,wBAAgB,WAAW,CACzB,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,8BAA8B,CAsBhC"}
@@ -14,7 +14,7 @@ function parseConfig(config = {}) {
14
14
  const restApiParsedConfig = (0, redis_smq_rest_api_1.parseConfig)(config);
15
15
  const webServer = Object.assign(Object.assign({}, exports.defaultConfig.webServer), config.webServer);
16
16
  const basePath = String(webServer.basePath).replace(/\/+$/, '') || '/';
17
- return Object.assign(Object.assign({}, restApiParsedConfig), { webServer: {
17
+ return Object.assign(Object.assign({}, restApiParsedConfig), { apiServer: Object.assign(Object.assign({}, restApiParsedConfig.apiServer), { basePath: basePath }), webServer: {
18
18
  port: Number(webServer.port),
19
19
  basePath,
20
20
  apiProxyTarget: webServer.apiProxyTarget
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":";;;AA2BA,kCAoBC;AAlCD,2DAAuE;AAE1D,QAAA,aAAa,GAA6B;IACrD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,cAAc,EAAE,SAAS;KAC1B;CACF,CAAC;AAMF,SAAgB,WAAW,CACzB,SAA4C,EAAE;IAE9C,MAAM,mBAAmB,GAAG,IAAA,gCAAkB,EAAC,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,mCACV,qBAAa,CAAC,SAAS,GACvB,MAAM,CAAC,SAAS,CACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACvE,uCACK,mBAAmB,KACtB,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,QAAQ;YACR,cAAc,EAAE,SAAS,CAAC,cAAc;gBACtC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,SAAS;SACd,IACD;AACJ,CAAC"}
1
+ {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":";;;AA2BA,kCAwBC;AAtCD,2DAAuE;AAE1D,QAAA,aAAa,GAA6B;IACrD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,cAAc,EAAE,SAAS;KAC1B;CACF,CAAC;AAMF,SAAgB,WAAW,CACzB,SAA4C,EAAE;IAE9C,MAAM,mBAAmB,GAAG,IAAA,gCAAkB,EAAC,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,mCACV,qBAAa,CAAC,SAAS,GACvB,MAAM,CAAC,SAAS,CACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACvE,uCACK,mBAAmB,KACtB,SAAS,kCACJ,mBAAmB,CAAC,SAAS,KAChC,QAAQ,EAAE,QAAQ,KAEpB,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,QAAQ;YACR,cAAc,EAAE,SAAS,CAAC,cAAc;gBACtC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,SAAS;SACd,IACD;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,aAAa,EAAE,wBAM3B,CAAC;AAMF,wBAAgB,WAAW,CACzB,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,8BAA8B,CAkBhC"}
1
+ {"version":3,"file":"parse-config.d.ts","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAG1B,eAAO,MAAM,aAAa,EAAE,wBAM3B,CAAC;AAMF,wBAAgB,WAAW,CACzB,MAAM,GAAE,OAAO,CAAC,wBAAwB,CAAM,GAC7C,8BAA8B,CAsBhC"}
@@ -15,6 +15,10 @@ export function parseConfig(config = {}) {
15
15
  const basePath = String(webServer.basePath).replace(/\/+$/, '') || '/';
16
16
  return {
17
17
  ...restApiParsedConfig,
18
+ apiServer: {
19
+ ...restApiParsedConfig.apiServer,
20
+ basePath: basePath,
21
+ },
18
22
  webServer: {
19
23
  port: Number(webServer.port),
20
24
  basePath,
@@ -1 +1 @@
1
- {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,cAAc,EAAE,SAAS;KAC1B;CACF,CAAC;AAMF,MAAM,UAAU,WAAW,CACzB,SAA4C,EAAE;IAE9C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,GAAG,aAAa,CAAC,SAAS;QAC1B,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACvE,OAAO;QACL,GAAG,mBAAmB;QACtB,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,QAAQ;YACR,cAAc,EAAE,SAAS,CAAC,cAAc;gBACtC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,SAAS;SACd;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"parse-config.js","sourceRoot":"","sources":["../../../../src/config/parse-config.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,GAAG;QACb,cAAc,EAAE,SAAS;KAC1B;CACF,CAAC;AAMF,MAAM,UAAU,WAAW,CACzB,SAA4C,EAAE;IAE9C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG;QAChB,GAAG,aAAa,CAAC,SAAS;QAC1B,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IACvE,OAAO;QACL,GAAG,mBAAmB;QACtB,SAAS,EAAE;YACT,GAAG,mBAAmB,CAAC,SAAS;YAChC,QAAQ,EAAE,QAAQ;SACnB;QACD,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YAC5B,QAAQ;YACR,cAAc,EAAE,SAAS,CAAC,cAAc;gBACtC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,SAAS;SACd;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "redis-smq-web-server",
3
- "version": "9.0.0-next.12",
3
+ "version": "9.0.0-next.13",
4
4
  "description": "Web server for RedisSMQ Web UI: serves the SPA and hosts or proxies the RedisSMQ REST API.",
5
5
  "author": "Weyoss <weyoss@protonmail.com>",
6
6
  "license": "MIT",
@@ -46,10 +46,10 @@
46
46
  "peerDependencies": {
47
47
  "@redis/client": "^5",
48
48
  "ioredis": "^5",
49
- "redis-smq-common": "^9.0.0-next.12",
50
- "redis-smq-web-ui": "^9.0.0-next.12",
51
- "redis-smq": "^9.0.0-next.12",
52
- "redis-smq-rest-api": "^9.0.0-next.12"
49
+ "redis-smq": "^9.0.0-next.13",
50
+ "redis-smq-common": "^9.0.0-next.13",
51
+ "redis-smq-rest-api": "^9.0.0-next.13",
52
+ "redis-smq-web-ui": "^9.0.0-next.13"
53
53
  },
54
54
  "peerDependenciesMeta": {
55
55
  "@redis/client": {