redis-smq-web-ui 9.0.0-next.15 → 9.0.0-next.17

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,22 @@
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.17](https://github.com/weyoss/redis-smq/compare/v9.0.0-next.16...v9.0.0-next.17) (2025-11-07)
7
+
8
+ ### 📝 Documentation
9
+
10
+ - **redis-smq-web-ui:** restructure README, move details to separate files ([1f701cd](https://github.com/weyoss/redis-smq/commit/1f701cd6e1e5eee01525677f86bf98b69e7c4dfd))
11
+ - standardize documentation links to use relative paths ([fc7c474](https://github.com/weyoss/redis-smq/commit/fc7c474bffbd2160fb9bb8727cec4bbdc5a23dc8))
12
+
13
+ ### ♻️ Code Refactoring
14
+
15
+ - **redis-smq-web-ui:** improve message audit disabled alert text clarity ([1b5d99f](https://github.com/weyoss/redis-smq/commit/1b5d99fee98f93a61c26564f79623787082665cd))
16
+ - **redis-smq-web-ui:** remove unused custom-fetch.ts ([eb672c4](https://github.com/weyoss/redis-smq/commit/eb672c4bbfb83dfb1f2c54809338f4a20d43bd75))
17
+
18
+ ## [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)
19
+
20
+ **Note:** Version bump only for package redis-smq-web-ui
21
+
6
22
  ## [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)
7
23
 
8
24
  ### ♻️ Code Refactoring
package/README.md CHANGED
@@ -23,16 +23,10 @@ A Single Page Application for monitoring and managing RedisSMQ. Inspect queues a
23
23
  - Supports multiple queue and delivery models
24
24
  - Exchange types: Direct, Topic, Fanout
25
25
  - 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
26
 
33
27
  ## Requirements
34
28
 
35
- See [requirements of RedisSMQ](/README.md).
29
+ See [RedisSMQ requirements](/README.md).
36
30
 
37
31
  ## Installation
38
32
 
@@ -46,65 +40,13 @@ npm install ioredis
46
40
  npm install @redis/client
47
41
  ```
48
42
 
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:
43
+ ## Version Compatibility
61
44
 
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
- ```
45
+ Always install matching versions of RedisSMQ packages to ensure compatibility. See [version compatibility](/packages/redis-smq/docs/version-compatibility.md) for details.
72
46
 
73
- See [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md) for CLI options such as:
47
+ ## Documentation
74
48
 
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
81
-
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
87
-
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.
91
-
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
49
+ For in-depth guides and API references, see [the documentation page](docs/README.md).
108
50
 
109
51
  ## Related packages
110
52
 
@@ -113,10 +55,6 @@ See [RedisSMQ Web Server](/packages/redis-smq-web-server/README.md) for CLI opti
113
55
  - [redis-smq-rest-api](../redis-smq-rest-api/README.md): REST API with OpenAPI v3 and Swagger UI
114
56
  - [redis-smq-web-server](../redis-smq-web-server/README.md): Static hosting + in-process or proxied API
115
57
 
116
- ## Contributing
117
-
118
- Contributions are welcome. Please see the repository’s [CONTRIBUTING.md](/CONTRIBUTING.md) in the project root.
119
-
120
58
  ## License
121
59
 
122
60
  RedisSMQ Web UI is released under the [MIT License](/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-CSN1d8Vl.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-DI_TzeXY.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};