redis-smq-web-ui 9.0.0-next.3 → 9.0.0-next.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/CHANGELOG.md CHANGED
@@ -3,6 +3,55 @@
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.5](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.4...v9.0.0-next.5) (2025-10-12)
7
+
8
+ ### ✨ Features
9
+
10
+ - **redis-smq-web-ui:** improve mobile experience ([1230bfe](https://github.com/weyoss/redis-smq/commit/1230bfee88f2d6ed2dea4c56bd4b7e4c7dd216df))
11
+ - **redis-smq-web-ui:** notify about disabled message storage for ack/dl messages ([b3ecc52](https://github.com/weyoss/redis-smq/commit/b3ecc527548c770c37829cc69f716c27b8df5f14))
12
+
13
+ ### 🐛 Bug Fixes
14
+
15
+ - **redis-smq-web-ui:** fix sudden CreateExchangeModal closure ([b6b2b0e](https://github.com/weyoss/redis-smq/commit/b6b2b0edb6d4d1c4fc022d2cbaf2f21101a61c4a))
16
+
17
+ ### 🚀 Chore
18
+
19
+ - **redis-smq-web-ui:** update dependencies to latest versions ([f48c578](https://github.com/weyoss/redis-smq/commit/f48c578eaf84b04bdb700d808b5acc60396fc9e5))
20
+
21
+ ### 📝 Documentation
22
+
23
+ - add GitHub note callouts in README files ([86e855a](https://github.com/weyoss/redis-smq/commit/86e855ae7aea91e3295301671b8da3249164ea40))
24
+ - **redis-smq-web-ui:** fix license statement ([0e37a16](https://github.com/weyoss/redis-smq/commit/0e37a16143bc458de9b33e78e2be9f1757897f33))
25
+ - **redis-smq-web-ui:** improve README clarity and structure ([d85bffe](https://github.com/weyoss/redis-smq/commit/d85bffede56fcc17651af1ac7d0fb0a03cb331ce))
26
+ - standardize "next" branch reference ([15f3e4f](https://github.com/weyoss/redis-smq/commit/15f3e4f4347fd4f76f9dc167dd72f174f178ab8e))
27
+ - update README files for next branch with pre-release badges and doc links ([463250b](https://github.com/weyoss/redis-smq/commit/463250bbd754d44ae6741abcf4e2d62995aef620))
28
+
29
+ ### ♻️ Code Refactoring
30
+
31
+ - **redis-smq-web-ui:** migrate scripts utils to use RedisSMQ class ([30797f8](https://github.com/weyoss/redis-smq/commit/30797f855272f5c2f3456224c0a91a2301d2eb39))
32
+ - **redis-smq-web-ui:** remove unused CreateFanoutExchangeModal ([79f3fda](https://github.com/weyoss/redis-smq/commit/79f3fdae50c2f1cc21592e7a8759daf98be09fe8))
33
+ - **redis-smq-web-ui:** reorder navigation menu items ([235e81c](https://github.com/weyoss/redis-smq/commit/235e81c98a4df75b229b89227e06c2d7aaded068))
34
+
35
+ ## [9.0.0-next.4](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.3...v9.0.0-next.4) (2025-10-09)
36
+
37
+ ### ✨ Features
38
+
39
+ - **redis-smq-web-ui:** add exchange management system ([c33650c](https://github.com/weyoss/redis-smq/commit/c33650c01a3c4fcd4663b08668642f7aea394fce))
40
+
41
+ ### 🐛 Bug Fixes
42
+
43
+ - **redis-smq-web-ui:** fix error message reference ([8e6fb43](https://github.com/weyoss/redis-smq/commit/8e6fb4379976a7a3d26036f22f235f0271da79a0))
44
+ - **redis-smq-web-ui:** initialize RedisSMQ before starting API server ([22887fa](https://github.com/weyoss/redis-smq/commit/22887faf0abc8939de9f90e8abfb18d7c8e93d02))
45
+ - **redis-smq-web-ui:** update branding ([2bd50ce](https://github.com/weyoss/redis-smq/commit/2bd50ce8ef75bdca9c5602ddc8bc6d36cdb8342f))
46
+
47
+ ### 📝 Documentation
48
+
49
+ - **redis-smq-web-ui:** improve README formatting ([e0d3399](https://github.com/weyoss/redis-smq/commit/e0d33990886f934df31e65fa831b87f7a761e3b0))
50
+
51
+ ### ♻️ Code Refactoring
52
+
53
+ - **redis-smq-web-ui:** standardize HTML formatting ([b290044](https://github.com/weyoss/redis-smq/commit/b290044c861014cda393467dd3b7af52f5507679))
54
+
6
55
  ## [9.0.0-next.3](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.2...v9.0.0-next.3) (2025-09-09)
7
56
 
8
57
  ### 🐛 Bug Fixes
package/README.md CHANGED
@@ -1,117 +1,122 @@
1
1
  # RedisSMQ Web UI
2
2
 
3
+ > [!NOTE]
4
+ > You are viewing the documentation for the "next" branch. These docs describe unreleased changes published under the npm "next" dist-tag.
5
+ > For the latest stable documentation, see:
6
+ >
7
+ > - Master (stable) README: https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq-web-ui
8
+ > - Latest release notes/tags: https://github.com/weyoss/redis-smq/releases/latest
9
+ > - Install stable packages with @latest; pre-release with @next.
10
+
3
11
  ![RedisSMQ Web UI - Pending Messages](docs/screenshots/img01.png)
4
12
 
5
- A Single Page Application for monitoring and managing RedisSMQ: inspect queues, messages, consumers, and more — with an integrated OpenAPI client.
13
+ A Single Page Application for monitoring and managing RedisSMQ. Inspect queues and messages, review consumers, and perform common actions — with an integrated, type-safe OpenAPI client.
6
14
 
7
15
  - Works seamlessly with the RedisSMQ REST API
8
- - Best served via the RedisSMQ Web Server (serves static UI and hosts or proxies the API)
9
- - Ships with developer-friendly tooling, types, and test setup
16
+ - Best served via the RedisSMQ Web Server (serves the static UI and hosts or proxies the API)
17
+ - Ships with developer-friendly types and OpenAPI client generation
10
18
 
11
19
  ## Features
12
20
 
13
- - Dashboard to overview queues, consumers, and message stats
21
+ - Dashboard for queues, consumers, and message stats
14
22
  - Queue/message browsers with filters and actions (ack, retry, delete, etc.)
15
- - Support for FIFO/LIFO/Priority Queues and multiple delivery models
16
- - Integrated documentation via Swagger UI (when served with the REST API)
17
- - Type-safe OpenAPI client (generated)
23
+ - Supports multiple queue and delivery models
24
+ - Exchange types: Direct, Topic, Fanout
25
+ - Type-safe OpenAPI client (generated from the REST API schema)
26
+ - History-fallback friendly routing (works correctly under a sub-path when configured)
18
27
 
19
28
  ## Version compatibility
20
29
 
21
- Always install matching versions of RedisSMQ packages. See the root docs for Version Compatibility. Use the same major/minor across:
22
- - redis-smq
23
- - redis-smq-common
24
- - redis-smq-rest-api
25
- - redis-smq-web-server
26
- - redis-smq-web-ui
27
-
28
- ## Getting started
30
+ Always install matching versions of RedisSMQ packages (same major/minor) to avoid runtime/API mismatches. See
31
+ [version-compatibility.md](/packages/redis-smq/docs/version-compatibility.md).
29
32
 
30
- ### Recommended: run via the Web Server
33
+ ## Requirements
31
34
 
32
- Use redis-smq-web-server to host the UI and API in one place, or proxy the API to an external service.
33
-
34
- - In-process API:
35
- - UI at http://localhost:8080/
36
- - API at http://localhost:8080/api
37
- - Proxy to an external REST API:
38
- - UI is still served locally
39
- - API/docs/assets are forwarded to the upstream API
35
+ See [requirements of RedisSMQ](/README.md).
40
36
 
41
- See [RedisSMQ Web Server](../redis-smq-web-server/README.md) for CLI options such as:
42
- - --port
43
- - --base-path
44
- - --api-proxy-target
37
+ ## Installation
45
38
 
46
- ### Development
47
-
48
- Prerequisites:
49
- - Node.js >= 20
50
- - PNPM (recommended)
51
-
52
- From the monorepo root:
39
+ Typically consumed via the [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md). To set up everything with pre-release builds:
53
40
 
54
41
  ```bash
55
- pnpm install
56
- pnpm -w -C packages/redis-smq-web-ui dev
42
+ npm install redis-smq@next redis-smq-common@next redis-smq-rest-api@next redis-smq-web-ui@next redis-smq-web-server@next
43
+ # Choose a Redis client:
44
+ npm install ioredis
45
+ # or
46
+ npm install @redis/client
57
47
  ```
58
48
 
59
- #### OpenAPI client generation
49
+ ## Quick start
60
50
 
61
- The UI uses a generated OpenAPI client. To regenerate:
51
+ Use the [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md) to serve the UI and either mount the REST API in-process or proxy to an external instance.
62
52
 
63
- ```shell
64
- pnpm -w -C packages/redis-smq-web-ui generate-openapi-client
65
- ```
66
-
67
- Make sure redis-smq-rest-api (with OpenAPI endpoint) is reachable as configured by the generation script.
53
+ - In-process API (default):
54
+ - UI at http://localhost:8080/
55
+ - API at http://localhost:8080/api
56
+ - Proxy to an external REST API:
57
+ - UI is served locally
58
+ - API/docs/assets are forwarded to the upstream API
68
59
 
69
- #### Running the dev Server
60
+ Examples:
70
61
 
71
62
  ```bash
72
- pnpm -w -C packages/redis-smq-web-ui dev
73
- ```
63
+ # Default (UI at /, API at /api)
64
+ npx redis-smq-web-server
74
65
 
75
- The dev script typically runs:
66
+ # Serve under a sub-path (e.g., behind a reverse proxy)
67
+ npx redis-smq-web-server --base-path /redis-smq
76
68
 
77
- - Vite dev server for the UI
78
- - A local REST API dev server for convenience
69
+ # Proxy API/docs/assets to an external REST API
70
+ npx redis-smq-web-server --api-proxy-target http://127.0.0.1:7210
71
+ ```
79
72
 
80
- - Open the printed local URL to access the UI during development.
81
-
82
- #### Building
83
-
84
- From the monorepo root:
73
+ See [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md) for CLI options such as:
85
74
 
86
- ```shell
87
- pnpm -w -C packages/redis-smq-web-ui build
88
- ```
75
+ - `--port`
76
+ - `--base-path`
77
+ - `--api-proxy-target`
78
+ - Redis connection and logging options (used only when hosting the API in-process)
79
+
80
+ ## Configuration and routing
89
81
 
90
- Artifacts are output to the package’s dist directory.
91
- Serve the built assets with [RedisSMQ Web Server](../redis-smq-web-server/README.md) for correct routing and API integration.
82
+ - Base path
83
+ - When served by [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md), basePath controls where the UI and local API/docs are mounted.
84
+ - Examples:
85
+ - basePath = / → UI at /, API at /api, Swagger UI at /docs
86
+ - basePath = /redis-smq → UI at /redis-smq, API at /redis-smq/api, Swagger UI at /redis-smq/docs
92
87
 
93
- #### Configuration and routing
88
+ - API endpoint
89
+ - With an embedded API (no proxy): the server mounts the REST API alongside the UI under <basePath>/api.
90
+ - With a proxy target: the server forwards <basePath>/api, <basePath>/docs, and <basePath>/assets to the configured upstream URL.
94
91
 
95
- - Base path: When served by redis-smq-web-server, the basePath is handled by the server and the UI will work under either / or a sub-path (e.g., /redis-smq).
96
- - API endpoint: When using redis-smq-web-server, the UI automatically talks to the in-process API or the configured proxy target.
97
- - Swagger UI and static docs are available when the REST API is hosted or proxied alongside the UI.
92
+ - Standalone/static hosting (advanced)
93
+ - If hosting the UI assets yourself:
94
+ - Serve the SPA with history fallback (so client-side routes work on refresh).
95
+ - Ensure the public base path matches where you host the app.
96
+ - Proxy API requests to the REST API under the same public base path (e.g., <basePath>/api).
97
+ - Expose <basePath>/docs and <basePath>/assets if you want Swagger UI and API schema accessible.
98
+ - Note: [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md) already handles these concerns and is the simplest path.
98
99
 
99
- For standalone/static hosting, ensure your server:
100
+ ## Deploying behind a reverse proxy
100
101
 
101
- - Serves the built assets under the desired public base path
102
- - Proxies API requests to the REST API under the same base path (e.g., /api)
102
+ - Set a public sub-path using the web server’s --base-path (e.g., /redis-smq).
103
+ - Forward both the UI and API prefixes through your proxy:
104
+ - /redis-smq → web server
105
+ - If proxying the API to an external service, combine with --api-proxy-target:
106
+ - Client → reverse proxy → web server (/redis-smq)
107
+ - Web server proxies /redis-smq/api, /redis-smq/docs, /redis-smq/assets → external API
103
108
 
104
109
  ## Related packages
105
110
 
106
111
  - [redis-smq](../redis-smq/README.md): Core message queue
107
112
  - [redis-smq-common](../redis-smq-common/README.md): Shared components/utilities
108
- - [redis-smq-rest-api](../redis-smq-rest-api/README.md): REST API with OpenAPI 3 schema and Swagger UI
113
+ - [redis-smq-rest-api](../redis-smq-rest-api/README.md): REST API with OpenAPI v3 and Swagger UI
109
114
  - [redis-smq-web-server](../redis-smq-web-server/README.md): Static hosting + in-process or proxied API
110
115
 
111
116
  ## Contributing
112
117
 
113
- Contributions are welcome. Please see the repository’s CONTRIBUTING.md in the project root.
118
+ Contributions are welcome. Please see the repository’s [CONTRIBUTING.md](/CONTRIBUTING.md) in the project root.
114
119
 
115
120
  ## License
116
121
 
117
- RedisSMQ Web UI is licensed under is released under the [MIT License](https://github.com/weyoss/redis-smq/blob/master/LICENSE).
122
+ RedisSMQ Web UI is released under the [MIT License](/LICENSE).
@@ -0,0 +1 @@
1
+ import{d as H,u as I,a as R,b as j,c as G,e as K,f as h,r as p,w,o as Y,g as z,h as f,i as S,j as E,k as y,l as J,P as O,m as t,n as g,C as U,D as W,p as i,q as n,s as _,t as m,F as X,v as Z,Q as ee,x as te,_ as ae}from"./index-C2KJn_-I.js";const se={key:0,class:"alert alert-warning alert-dismissible fade show mb-4",role:"alert"},ue={key:1,class:"alert alert-warning alert-dismissible fade show mb-4",role:"alert"},le={class:"queues-list-container"},ne={class:"queues-list-header"},re={class:"queues-count"},ie={class:"queues-list"},oe="Queues",ce="Manage all available message queues",de=H({__name:"QueuesView",setup(ve){const D=te(),s=I(),k=R(),{sortedQueues:c,isLoadingQueues:d,queuesError:C,refetchQueues:v}=j(),{createQueue:M,isCreatingQueue:Q,createQueueError:b,createQueueMutation:x}=G(async()=>{await v()}),{deleteQueue:$,isDeletingQueue:F,deleteQueueError:q,deleteQueueMutation:L}=K(async()=>{await v()}),N=h(()=>c.value.length>0),u=p(!1),l=p(!1),o=p(null),P=h(()=>[{id:"refresh-queues",label:"Refresh",icon:"bi bi-arrow-clockwise",variant:"secondary",disabled:d.value,loading:d.value,handler:()=>v()},{id:"create-queue",label:"Create Queue",icon:"bi bi-plus-circle",variant:"primary",disabled:Q.value,loading:Q.value,handler:()=>u.value=!0}]);function T(a,e){D.push({name:"Queue",params:{ns:a,queue:e}})}async function V(a){try{const e={queue:{ns:a.ns,name:a.name},queueType:a.type,queueDeliveryModel:a.deliveryModel};await M({data:e}),u.value=!1}catch(e){console.error("Failed to create queue:",e)}}function B(a,e){o.value={ns:a,name:e},l.value=!0}async function A(){if(o.value)try{await $(o.value),l.value=!1}catch(a){console.error("Failed to delete queue:",a)}}return w(()=>{s.setPageHeader({title:oe,subtitle:ce,icon:"bi bi-card-list"}),s.setPageActions(P.value),s.setLoadingState(d.value),C.value?(s.setErrorState(g(C.value)),s.setEmptyState(!1)):!d.value&&!N.value?(s.setErrorState(null),s.setEmptyState(!0,{icon:"bi bi-plus-square-dotted",title:"No Queues Found",message:"Get started by creating your first message queue.",actionLabel:"Create Your First Queue",actionHandler:()=>u.value=!0})):(s.setErrorState(null),s.setEmptyState(!1))}),w(()=>{k.clearSelectedQueue()}),Y(()=>{v()}),z([{isVisible:u,onEscape:()=>u.value=!1},{isVisible:l,onEscape:()=>l.value=!1}]),(a,e)=>(i(),f("div",null,[S(O,null,{default:J(()=>[t(b)&&!u.value?(i(),f("div",se,[e[4]||(e[4]=n("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),_(" "+m(t(g)(t(b)))+" ",1),n("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:e[0]||(e[0]=r=>t(x).reset())})])):y("",!0),t(q)&&!l.value?(i(),f("div",ue,[e[5]||(e[5]=n("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),_(" "+m(t(g)(t(q)))+" ",1),n("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:e[1]||(e[1]=r=>t(L).reset())})])):y("",!0),n("div",le,[n("div",ne,[n("h5",re,m(t(c).length)+" Queue"+m(t(c).length!==1?"s":""),1)]),n("div",ie,[(i(!0),f(X,null,Z(t(c),r=>(i(),E(ee,{key:`${r.ns}-${r.name}`,queue:r,onSelect:T,onDelete:B},null,8,["queue"]))),128))])])]),_:1}),S(U,{"is-visible":u.value,"is-creating":t(Q),"create-error":t(b)?`${t(g)(t(b))?.message}`:"",onClose:e[2]||(e[2]=r=>u.value=!1),onCreate:V},null,8,["is-visible","is-creating","create-error"]),l.value&&o.value?(i(),E(W,{key:0,"is-visible":l.value,"is-deleting":t(F),queue:o.value,onCancel:e[3]||(e[3]=r=>l.value=!1),onConfirm:A},null,8,["is-visible","is-deleting","queue"])):y("",!0)]))}}),fe=ae(de,[["__scopeId","data-v-f3ec936e"]]);export{fe as default};