redis-smq-web-ui 9.0.0-next.8 → 9.0.0

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,74 @@
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](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.18...v9.0.0) (2025-11-07)
7
+
8
+ **Note:** Version bump only for package redis-smq-web-ui
9
+
10
+ ## [9.0.0-next.18](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.17...v9.0.0-next.18) (2025-11-07)
11
+
12
+ ### 📝 Documentation
13
+
14
+ - convert relative paths to absolute URLs in package READMEs ([ad5da5f](https://github.com/weyoss/redis-smq/commit/ad5da5f14aeb01822e560e7e15473dc27518e80a))
15
+ - **redis-smq-web-ui:** fix screenshot URL to use raw GitHub content ([e9024e4](https://github.com/weyoss/redis-smq/commit/e9024e47316dfe8e8ce2b966eef727355098753b))
16
+
17
+ ## [9.0.0-next.17](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.16...v9.0.0-next.17) (2025-11-07)
18
+
19
+ ### 📝 Documentation
20
+
21
+ - **redis-smq-web-ui:** restructure README, move details to separate files ([1f701cd](https://github.com/weyoss/redis-smq/commit/1f701cd6e1e5eee01525677f86bf98b69e7c4dfd))
22
+ - standardize documentation links to use relative paths ([fc7c474](https://github.com/weyoss/redis-smq/commit/fc7c474bffbd2160fb9bb8727cec4bbdc5a23dc8))
23
+
24
+ ### ♻️ Code Refactoring
25
+
26
+ - **redis-smq-web-ui:** improve message audit disabled alert text clarity ([1b5d99f](https://github.com/weyoss/redis-smq/commit/1b5d99fee98f93a61c26564f79623787082665cd))
27
+ - **redis-smq-web-ui:** remove unused custom-fetch.ts ([eb672c4](https://github.com/weyoss/redis-smq/commit/eb672c4bbfb83dfb1f2c54809338f4a20d43bd75))
28
+
29
+ ## [9.0.0-next.16](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.15...v9.0.0-next.16) (2025-11-05)
30
+
31
+ **Note:** Version bump only for package redis-smq-web-ui
32
+
33
+ ## [9.0.0-next.15](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.14...v9.0.0-next.15) (2025-10-31)
34
+
35
+ ### ♻️ Code Refactoring
36
+
37
+ - **redis-smq-web-ui:** update message audit configuration handling ([1f2c55f](https://github.com/weyoss/redis-smq/commit/1f2c55f113e5b8e34feb7c37d9f4f0507d82a6e3))
38
+
39
+ ## [9.0.0-next.14](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.13...v9.0.0-next.14) (2025-10-28)
40
+
41
+ ### 🐛 Bug Fixes
42
+
43
+ - **redis-smq-web-ui:** fix base path handling ([622576e](https://github.com/weyoss/redis-smq/commit/622576e0abd511f7731a3ef98d9777c554007893))
44
+
45
+ ## [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)
46
+
47
+ **Note:** Version bump only for package redis-smq-web-ui
48
+
49
+ ## [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)
50
+
51
+ ### 🚀 Chore
52
+
53
+ - add copyright headers to source files ([771e980](https://github.com/weyoss/redis-smq/commit/771e9802ddea11abb5982c4bfdfde1bebf1c7468))
54
+
55
+ ## [9.0.0-next.11](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.10...v9.0.0-next.11) (2025-10-27)
56
+
57
+ **Note:** Version bump only for package redis-smq-web-ui
58
+
59
+ ## [9.0.0-next.10](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.9...v9.0.0-next.10) (2025-10-26)
60
+
61
+ ### 🐛 Bug Fixes
62
+
63
+ - **redis-smq-web-ui:** handle correctly base path ([f338be1](https://github.com/weyoss/redis-smq/commit/f338be1c279bd1b6a91225c85c2615490f0050cc))
64
+
65
+ ### 🚀 Chore
66
+
67
+ - **redis-smq-web-ui:** upgrade playwright to version 1.56.1 ([ac1cd46](https://github.com/weyoss/redis-smq/commit/ac1cd46cc64c927fb00ade40e39e4752fc8fa9fd))
68
+ - **redis-smq-web-ui:** upgrade vite to version 7.1.12 ([5c92529](https://github.com/weyoss/redis-smq/commit/5c92529828d9f2512dee5f1b95d92eba996ee2ab))
69
+
70
+ ## [9.0.0-next.9](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.8...v9.0.0-next.9) (2025-10-21)
71
+
72
+ **Note:** Version bump only for package redis-smq-web-ui
73
+
6
74
  ## [9.0.0-next.8](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.7...v9.0.0-next.8) (2025-10-18)
7
75
 
8
76
  ### 🐛 Bug Fixes
package/README.md CHANGED
@@ -1,14 +1,6 @@
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
-
11
- ![RedisSMQ Web UI - Home](docs/screenshots/img01.png)
3
+ ![RedisSMQ Web UI - Home](https://raw.githubusercontent.com/weyoss/redis-smq/master/packages/redis-smq-web-ui/docs/screenshots/img01.png)
12
4
 
13
5
  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.
14
6
 
@@ -23,100 +15,38 @@ A Single Page Application for monitoring and managing RedisSMQ. Inspect queues a
23
15
  - Supports multiple queue and delivery models
24
16
  - Exchange types: Direct, Topic, Fanout
25
17
  - Type-safe OpenAPI client (generated from the REST API schema)
26
- - History-fallback friendly routing (works correctly under a sub-path when configured)
27
-
28
- ## Version compatibility
29
-
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).
32
18
 
33
19
  ## Requirements
34
20
 
35
- See [requirements of RedisSMQ](/README.md).
21
+ See [RedisSMQ requirements](https://github.com/weyoss/redis-smq/tree/master/README.md).
36
22
 
37
23
  ## Installation
38
24
 
39
- Typically consumed via the [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md). To set up everything with pre-release builds:
25
+ Typically consumed via the [RedisSMQ Web Server](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq-web-server/README.md). To set up everything with pre-release builds:
40
26
 
41
27
  ```bash
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
28
+ npm install redis-smq@latest redis-smq-common@latest redis-smq-rest-api@latest redis-smq-web-ui@latest redis-smq-web-server@latest
43
29
  # Choose a Redis client:
44
30
  npm install ioredis
45
31
  # or
46
32
  npm install @redis/client
47
33
  ```
48
34
 
49
- ## Quick start
50
-
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.
52
-
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
59
-
60
- Examples:
61
-
62
- ```bash
63
- # Default (UI at /, API at /api)
64
- npx redis-smq-web-server
65
-
66
- # Serve under a sub-path (e.g., behind a reverse proxy)
67
- npx redis-smq-web-server --base-path /redis-smq
68
-
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
- ```
72
-
73
- See [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md) for CLI options such as:
74
-
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
35
+ ## Version Compatibility
81
36
 
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
37
+ Always install matching versions of RedisSMQ packages to ensure compatibility. See [version compatibility](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq/docs/version-compatibility.md) for details.
87
38
 
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.
39
+ ## Documentation
91
40
 
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.
99
-
100
- ## Deploying behind a reverse proxy
101
-
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
41
+ For in-depth guides and API references, see [the documentation page](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq-web-ui/docs/README.md).
108
42
 
109
43
  ## Related packages
110
44
 
111
- - [redis-smq](../redis-smq/README.md): Core message queue
112
- - [redis-smq-common](../redis-smq-common/README.md): Shared components/utilities
113
- - [redis-smq-rest-api](../redis-smq-rest-api/README.md): REST API with OpenAPI v3 and Swagger UI
114
- - [redis-smq-web-server](../redis-smq-web-server/README.md): Static hosting + in-process or proxied API
115
-
116
- ## Contributing
117
-
118
- Contributions are welcome. Please see the repository’s [CONTRIBUTING.md](/CONTRIBUTING.md) in the project root.
45
+ - [redis-smq](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq/README.md): Core message queue
46
+ - [redis-smq-common](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq-common/README.md): Shared components/utilities
47
+ - [redis-smq-rest-api](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq-rest-api/README.md): REST API with OpenAPI v3 and Swagger UI
48
+ - [redis-smq-web-server](https://github.com/weyoss/redis-smq/tree/master/packages/redis-smq-web-server/README.md): Static hosting + in-process or proxied API
119
49
 
120
50
  ## License
121
51
 
122
- RedisSMQ Web UI is released under the [MIT License](/LICENSE).
52
+ RedisSMQ Web UI is released under the [MIT License](https://github.com/weyoss/redis-smq/tree/master/LICENSE).
@@ -1 +1 @@
1
- import{d as F,u as N,a as P,b as B,c as T,e as Q,r as f,w as C,o as A,f as H,g as b,h as y,i as S,j as h,k as I,P as R,l as s,C as j,D as G,m as q,n as r,p as o,q as K,t as g,F as Y,s as z,Q as J,v as O,_ as U}from"./index-DOHVrN4w.js";const W={key:0,class:"alert alert-warning alert-dismissible fade show mb-4",role:"alert"},X={class:"queues-list-container"},Z={class:"queues-list-header"},ee={class:"queues-count"},te={class:"queues-list"},se="Queues",ae="Manage all available message queues",ue=F({__name:"QueuesView",setup(le){const E=O(),t=N(),_=P(),{sortedQueues:c,isLoadingQueues:d,queuesError:m,refetchQueues:v}=B(),{deleteQueue:w,isDeletingQueue:D,deleteQueueError:p,deleteQueueMutation:k}=T(async()=>{await v()}),M=Q(()=>c.value.length>0),l=f(!1),a=f(!1),i=f(null),V=Q(()=>[{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:!1,loading:!1,handler:()=>l.value=!0}]);function x(n,e){E.push({name:"Queue",params:{ns:n,queue:e}})}function L(n,e){i.value={ns:n,name:e},a.value=!0}async function $(){if(i.value)try{await w(i.value),a.value=!1}catch(n){console.error("Failed to delete queue:",n)}}return C(()=>{t.setPageHeader({title:se,subtitle:ae,icon:"bi bi-card-list"}),t.setPageActions(V.value),t.setLoadingState(d.value),m.value?(t.setErrorState(q(m.value)),t.setEmptyState(!1)):!d.value&&!M.value?(t.setErrorState(null),t.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:()=>l.value=!0})):(t.setErrorState(null),t.setEmptyState(!1))}),C(()=>{_.clearSelectedQueue()}),A(()=>{v()}),H([{isVisible:l,onEscape:()=>l.value=!1},{isVisible:a,onEscape:()=>a.value=!1}]),(n,e)=>(r(),b("div",null,[y(R,null,{default:I(()=>[s(p)&&!a.value?(r(),b("div",W,[e[4]||(e[4]=o("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),K(" "+g(s(q)(s(p)))+" ",1),o("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:e[0]||(e[0]=u=>s(k).reset())})])):h("",!0),o("div",X,[o("div",Z,[o("h5",ee,g(s(c).length)+" Queue"+g(s(c).length!==1?"s":""),1)]),o("div",te,[(r(!0),b(Y,null,z(s(c),u=>(r(),S(J,{key:`${u.ns}-${u.name}`,queue:u,onSelect:x,onDelete:L},null,8,["queue"]))),128))])])]),_:1}),y(j,{"is-visible":l.value,onClose:e[1]||(e[1]=u=>l.value=!1),onCreated:e[2]||(e[2]=u=>s(v)())},null,8,["is-visible"]),a.value&&i.value?(r(),S(G,{key:0,"is-visible":a.value,"is-deleting":s(D),queue:i.value,onCancel:e[3]||(e[3]=u=>a.value=!1),onConfirm:$},null,8,["is-visible","is-deleting","queue"])):h("",!0)]))}}),oe=U(ue,[["__scopeId","data-v-4363b2b4"]]);export{oe as default};
1
+ import{d as F,u as N,a as P,b as B,c as T,e as Q,r as f,w as C,o as A,f as H,g as b,h as y,i as S,j as h,k as I,P as R,l as s,C as j,D as G,m as q,n as r,p as o,q as K,t as g,F as Y,s as z,Q as J,v as O,_ as U}from"./index-DeYBY2gM.js";const W={key:0,class:"alert alert-warning alert-dismissible fade show mb-4",role:"alert"},X={class:"queues-list-container"},Z={class:"queues-list-header"},ee={class:"queues-count"},te={class:"queues-list"},se="Queues",ae="Manage all available message queues",ue=F({__name:"QueuesView",setup(le){const E=O(),t=N(),_=P(),{sortedQueues:c,isLoadingQueues:d,queuesError:m,refetchQueues:v}=B(),{deleteQueue:w,isDeletingQueue:D,deleteQueueError:p,deleteQueueMutation:k}=T(async()=>{await v()}),M=Q(()=>c.value.length>0),l=f(!1),a=f(!1),i=f(null),V=Q(()=>[{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:!1,loading:!1,handler:()=>l.value=!0}]);function x(n,e){E.push({name:"Queue",params:{ns:n,queue:e}})}function L(n,e){i.value={ns:n,name:e},a.value=!0}async function $(){if(i.value)try{await w(i.value),a.value=!1}catch(n){console.error("Failed to delete queue:",n)}}return C(()=>{t.setPageHeader({title:se,subtitle:ae,icon:"bi bi-card-list"}),t.setPageActions(V.value),t.setLoadingState(d.value),m.value?(t.setErrorState(q(m.value)),t.setEmptyState(!1)):!d.value&&!M.value?(t.setErrorState(null),t.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:()=>l.value=!0})):(t.setErrorState(null),t.setEmptyState(!1))}),C(()=>{_.clearSelectedQueue()}),A(()=>{v()}),H([{isVisible:l,onEscape:()=>l.value=!1},{isVisible:a,onEscape:()=>a.value=!1}]),(n,e)=>(r(),b("div",null,[y(R,null,{default:I(()=>[s(p)&&!a.value?(r(),b("div",W,[e[4]||(e[4]=o("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),K(" "+g(s(q)(s(p)))+" ",1),o("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:e[0]||(e[0]=u=>s(k).reset())})])):h("",!0),o("div",X,[o("div",Z,[o("h5",ee,g(s(c).length)+" Queue"+g(s(c).length!==1?"s":""),1)]),o("div",te,[(r(!0),b(Y,null,z(s(c),u=>(r(),S(J,{key:`${u.ns}-${u.name}`,queue:u,onSelect:x,onDelete:L},null,8,["queue"]))),128))])])]),_:1}),y(j,{"is-visible":l.value,onClose:e[1]||(e[1]=u=>l.value=!1),onCreated:e[2]||(e[2]=u=>s(v)())},null,8,["is-visible"]),a.value&&i.value?(r(),S(G,{key:0,"is-visible":a.value,"is-deleting":s(D),queue:i.value,onCancel:e[3]||(e[3]=u=>a.value=!1),onConfirm:$},null,8,["is-visible","is-deleting","queue"])):h("",!0)]))}}),oe=U(ue,[["__scopeId","data-v-4363b2b4"]]);export{oe as default};