redis-smq-web-ui 9.0.0-next.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 +24 -0
- package/LICENSE +22 -0
- package/README.md +115 -0
- package/dist/browser/assets/QueuesView-BOytmHBz.css +1 -0
- package/dist/browser/assets/QueuesView-DVkPAdhy.js +1 -0
- package/dist/browser/assets/bootstrap-icons-BeopsB42.woff +0 -0
- package/dist/browser/assets/bootstrap-icons-mSm7cUeB.woff2 +0 -0
- package/dist/browser/assets/index-C9NdrZBx.js +43 -0
- package/dist/browser/assets/index-DZKBl9eI.css +9 -0
- package/dist/browser/favicon.ico +0 -0
- package/dist/browser/index.html +23 -0
- package/dist/node/cjs/index.d.ts +3 -0
- package/dist/node/cjs/index.d.ts.map +1 -0
- package/dist/node/cjs/index.js +3 -0
- package/dist/node/cjs/index.js.map +1 -0
- package/dist/node/cjs/node-utils/dist-path.d.ts +2 -0
- package/dist/node/cjs/node-utils/dist-path.d.ts.map +1 -0
- package/dist/node/cjs/node-utils/dist-path.js +7 -0
- package/dist/node/cjs/node-utils/dist-path.js.map +1 -0
- package/dist/node/cjs/package.json +3 -0
- package/dist/node/cjs/src/config/types/index.d.ts +5 -0
- package/dist/node/cjs/src/config/types/index.d.ts.map +1 -0
- package/dist/node/cjs/src/config/types/index.js +2 -0
- package/dist/node/cjs/src/config/types/index.js.map +1 -0
- package/dist/node/esm/index.d.ts +3 -0
- package/dist/node/esm/index.d.ts.map +1 -0
- package/dist/node/esm/index.js +3 -0
- package/dist/node/esm/index.js.map +1 -0
- package/dist/node/esm/node-utils/dist-path.d.ts +2 -0
- package/dist/node/esm/node-utils/dist-path.d.ts.map +1 -0
- package/dist/node/esm/node-utils/dist-path.js +7 -0
- package/dist/node/esm/node-utils/dist-path.js.map +1 -0
- package/dist/node/esm/src/config/types/index.d.ts +5 -0
- package/dist/node/esm/src/config/types/index.d.ts.map +1 -0
- package/dist/node/esm/src/config/types/index.js +2 -0
- package/dist/node/esm/src/config/types/index.js.map +1 -0
- package/package.json +96 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
+
|
|
6
|
+
## [9.0.0-next.0](https://github.com/weyoss/redis-smq/compare/v8.3.1...v9.0.0-next.0) (2025-09-06)
|
|
7
|
+
|
|
8
|
+
### ✨ Features
|
|
9
|
+
|
|
10
|
+
- **redis-smq-web-ui:** implement comprehensive Vue.js web interface for RedisSMQ management ([cee3212](https://github.com/weyoss/redis-smq/commit/cee3212119c10c3fb08109d27f1ad89e7e033110))
|
|
11
|
+
|
|
12
|
+
### 🐛 Bug Fixes
|
|
13
|
+
|
|
14
|
+
- **redis-smq-web-ui:** add OpenAPI client generation to build process ([c726ea6](https://github.com/weyoss/redis-smq/commit/c726ea64895cd51d1e899b0dcf8b9d3c280b9608))
|
|
15
|
+
- **redis-smq-web-ui:** clean up old files before OpenAPI client generation ([65372c7](https://github.com/weyoss/redis-smq/commit/65372c725eab412d645dfb6c0589f0519773d70b))
|
|
16
|
+
- **redis-smq-web-ui:** correct import path for messages API module ([dc913f6](https://github.com/weyoss/redis-smq/commit/dc913f689618358e45058891273670eba9d4cc61))
|
|
17
|
+
- **redis-smq-web-ui:** correct license statement in README ([7dfed65](https://github.com/weyoss/redis-smq/commit/7dfed65b2249a6cebfdb949858297622abdbe294))
|
|
18
|
+
- **redis-smq-web-ui:** improve modal warning text and fix z-index ([7dcefe1](https://github.com/weyoss/redis-smq/commit/7dcefe18fecbcb386c0be688b9f2d791faabf0eb))
|
|
19
|
+
- **redis-smq-web-ui:** reduce app initialization delay and improve comments ([d250209](https://github.com/weyoss/redis-smq/commit/d25020943ce08d015be0e24d135fe77f9772c32f))
|
|
20
|
+
- **redis-smq-web-ui:** standardize import file extensions to .ts ([65974b9](https://github.com/weyoss/redis-smq/commit/65974b9eb7031bba8e83ead4107a1f8b450cafa5))
|
|
21
|
+
|
|
22
|
+
### 🚀 Chore
|
|
23
|
+
|
|
24
|
+
- add .npmignore files to web packages for proper publishing ([2179c30](https://github.com/weyoss/redis-smq/commit/2179c30785e4c0f7ab7d1b102a91a966b70ccf24))
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Weyoss <weyoss@protonmail.com>, https://github.com/weyoss
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# RedisSMQ Web UI
|
|
2
|
+
|
|
3
|
+
A Single Page Application for monitoring and managing RedisSMQ: inspect queues, messages, consumers, and more — with an integrated OpenAPI client.
|
|
4
|
+
|
|
5
|
+
- Works seamlessly with the RedisSMQ REST API
|
|
6
|
+
- Best served via the RedisSMQ Web Server (serves static UI and hosts or proxies the API)
|
|
7
|
+
- Ships with developer-friendly tooling, types, and test setup
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Dashboard to overview queues, consumers, and message stats
|
|
12
|
+
- Queue/message browsers with filters and actions (ack, retry, delete, etc.)
|
|
13
|
+
- Support for FIFO/LIFO and multiple delivery models
|
|
14
|
+
- Integrated documentation via Swagger UI (when served with the REST API)
|
|
15
|
+
- Type-safe OpenAPI client (generated)
|
|
16
|
+
|
|
17
|
+
## Version compatibility
|
|
18
|
+
|
|
19
|
+
Always install matching versions of RedisSMQ packages. See the root docs for Version Compatibility. Use the same major/minor across:
|
|
20
|
+
- redis-smq
|
|
21
|
+
- redis-smq-common
|
|
22
|
+
- redis-smq-rest-api
|
|
23
|
+
- redis-smq-web-server
|
|
24
|
+
- redis-smq-web-ui
|
|
25
|
+
|
|
26
|
+
## Getting started
|
|
27
|
+
|
|
28
|
+
### Recommended: run via the Web Server
|
|
29
|
+
|
|
30
|
+
Use redis-smq-web-server to host the UI and API in one place, or proxy the API to an external service.
|
|
31
|
+
|
|
32
|
+
- In-process API:
|
|
33
|
+
- UI at http://localhost:8080/
|
|
34
|
+
- API at http://localhost:8080/api
|
|
35
|
+
- Proxy to an external REST API:
|
|
36
|
+
- UI is still served locally
|
|
37
|
+
- API/docs/assets are forwarded to the upstream API
|
|
38
|
+
|
|
39
|
+
See [RedisSMQ Web Server](../redis-smq-web-server/README.md) for CLI options such as:
|
|
40
|
+
- --port
|
|
41
|
+
- --base-path
|
|
42
|
+
- --api-proxy-target
|
|
43
|
+
|
|
44
|
+
### Development
|
|
45
|
+
|
|
46
|
+
Prerequisites:
|
|
47
|
+
- Node.js >= 20
|
|
48
|
+
- PNPM (recommended)
|
|
49
|
+
|
|
50
|
+
From the monorepo root:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pnpm install
|
|
54
|
+
pnpm -w -C packages/redis-smq-web-ui dev
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### OpenAPI client generation
|
|
58
|
+
|
|
59
|
+
The UI uses a generated OpenAPI client. To regenerate:
|
|
60
|
+
|
|
61
|
+
```shell
|
|
62
|
+
pnpm -w -C packages/redis-smq-web-ui generate-openapi-client
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Make sure redis-smq-rest-api (with OpenAPI endpoint) is reachable as configured by the generation script.
|
|
66
|
+
|
|
67
|
+
#### Running the dev Server
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
pnpm -w -C packages/redis-smq-web-ui dev
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The dev script typically runs:
|
|
74
|
+
|
|
75
|
+
- Vite dev server for the UI
|
|
76
|
+
- A local REST API dev server for convenience
|
|
77
|
+
|
|
78
|
+
- Open the printed local URL to access the UI during development.
|
|
79
|
+
|
|
80
|
+
#### Building
|
|
81
|
+
|
|
82
|
+
From the monorepo root:
|
|
83
|
+
|
|
84
|
+
```shell
|
|
85
|
+
pnpm -w -C packages/redis-smq-web-ui build
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Artifacts are output to the package’s dist directory.
|
|
89
|
+
Serve the built assets with [RedisSMQ Web Server](../redis-smq-web-server/README.md) for correct routing and API integration.
|
|
90
|
+
|
|
91
|
+
#### Configuration and routing
|
|
92
|
+
|
|
93
|
+
- 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).
|
|
94
|
+
- API endpoint: When using redis-smq-web-server, the UI automatically talks to the in-process API or the configured proxy target.
|
|
95
|
+
- Swagger UI and static docs are available when the REST API is hosted or proxied alongside the UI.
|
|
96
|
+
|
|
97
|
+
For standalone/static hosting, ensure your server:
|
|
98
|
+
|
|
99
|
+
- Serves the built assets under the desired public base path
|
|
100
|
+
- Proxies API requests to the REST API under the same base path (e.g., /api)
|
|
101
|
+
|
|
102
|
+
## Related packages
|
|
103
|
+
|
|
104
|
+
- [redis-smq](../redis-smq/README.md): Core message queue
|
|
105
|
+
- [redis-smq-common](../redis-smq-common/README.md): Shared components/utilities
|
|
106
|
+
- [redis-smq-rest-api](../redis-smq-rest-api/README.md): REST API with OpenAPI 3 schema and Swagger UI
|
|
107
|
+
- [redis-smq-web-server](../redis-smq-web-server/README.md): Static hosting + in-process or proxied API
|
|
108
|
+
|
|
109
|
+
## Contributing
|
|
110
|
+
|
|
111
|
+
Contributions are welcome. Please see the repository’s CONTRIBUTING.md in the project root.
|
|
112
|
+
|
|
113
|
+
## License
|
|
114
|
+
|
|
115
|
+
RedisSMQ Web UI is licensed under is released under the [MIT License](https://github.com/weyoss/redis-smq/blob/master/LICENSE).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.queues-list-container[data-v-f3ec936e]{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000000d;border:1px solid #e9ecef;overflow:hidden}.queues-list-header[data-v-f3ec936e]{padding:1.5rem 2rem 1rem;border-bottom:1px solid #e9ecef;background:#f8f9fa}.queues-count[data-v-f3ec936e]{margin:0;color:#495057;font-weight:600;font-size:1rem}.queues-list[data-v-f3ec936e]{max-height:calc(100vh - 260px);overflow-y:auto}.queues-list[data-v-f3ec936e]::-webkit-scrollbar{width:6px}.queues-list[data-v-f3ec936e]::-webkit-scrollbar-track{background:#f8f9fa}.queues-list[data-v-f3ec936e]::-webkit-scrollbar-thumb{background:#ced4da;border-radius:3px}.queues-list[data-v-f3ec936e]::-webkit-scrollbar-thumb:hover{background:#adb5bd}@media (max-width: 768px){.queues-list-header[data-v-f3ec936e]{padding:1rem 1.5rem .75rem}.queues-list[data-v-f3ec936e]{max-height:calc(100vh - 220px)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as I,u as R,a as j,b as G,c as K,e as Y,f as w,r as p,w as S,o as z,g as J,h as f,i as E,j as _,k as y,l as O,P as U,m as t,n as g,C as W,D as X,p as i,q as n,s as D,t as m,F as Z,v as ee,Q as te,x as ae,_ as se}from"./index-C9NdrZBx.js";const ue={key:0,class:"alert alert-warning alert-dismissible fade show mb-4",role:"alert"},le={key:1,class:"alert alert-warning alert-dismissible fade show mb-4",role:"alert"},ne={class:"queues-list-container"},re={class:"queues-list-header"},ie={class:"queues-count"},oe={class:"queues-list"},ce="Queues",de="Manage all available message queues",ve=I({__name:"QueuesView",setup(be){const k=ae(),s=R(),M=j(),{sortedQueues:c,isLoadingQueues:d,queuesError:C,refetchQueues:v}=G(),{createQueue:x,isCreatingQueue:Q,createQueueError:b,createQueueMutation:$}=K(async()=>{await v()}),{deleteQueue:F,isDeletingQueue:L,deleteQueueError:q,deleteQueueMutation:N}=Y(async()=>{await v()}),P=w(()=>c.value.length>0),u=p(!1),l=p(!1),o=p(null),T=w(()=>[{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 V(a,e){k.push({name:"Queue",params:{ns:a,queue:e}})}async function B(a){try{const e={queue:{ns:a.ns,name:a.name},queueType:a.type,queueDeliveryModel:a.deliveryModel};await x({data:e}),u.value=!1}catch(e){console.error("Failed to create queue:",e)}}function A(a,e){o.value={ns:a,name:e},l.value=!0}async function H(){if(o.value)try{await F(o.value),l.value=!1}catch(a){console.error("Failed to delete queue:",a)}}return S(()=>{s.setPageHeader({title:ce,subtitle:de,icon:"bi bi-card-list"}),s.setPageActions(T.value),s.setLoadingState(d.value),C.value?(s.setErrorState(g(C.value)),s.setEmptyState(!1)):!d.value&&!P.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))}),S(()=>{M.clearSelectedQueue()}),z(()=>{v()}),J([{isVisible:u,onEscape:()=>u.value=!1},{isVisible:l,onEscape:()=>l.value=!1}]),(a,e)=>{var h;return i(),f("div",null,[E(U,null,{default:O(()=>[t(b)&&!u.value?(i(),f("div",ue,[e[4]||(e[4]=n("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),D(" "+m(t(g)(t(b)))+" ",1),n("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:e[0]||(e[0]=r=>t($).reset())})])):y("",!0),t(q)&&!l.value?(i(),f("div",le,[e[5]||(e[5]=n("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),D(" "+m(t(g)(t(q)))+" ",1),n("button",{type:"button",class:"btn-close","aria-label":"Close",onClick:e[1]||(e[1]=r=>t(N).reset())})])):y("",!0),n("div",ne,[n("div",re,[n("h5",ie,m(t(c).length)+" Queue"+m(t(c).length!==1?"s":""),1)]),n("div",oe,[(i(!0),f(Z,null,ee(t(c),r=>(i(),_(te,{key:`${r.ns}-${r.name}`,queue:r,onSelect:V,onDelete:A},null,8,["queue"]))),128))])])]),_:1}),E(W,{"is-visible":u.value,"is-creating":t(Q),"create-error":t(b)?`${(h=t(g)(t(b)))==null?void 0:h.message}`:"",onClose:e[2]||(e[2]=r=>u.value=!1),onCreate:B},null,8,["is-visible","is-creating","create-error"]),l.value&&o.value?(i(),_(X,{key:0,"is-visible":l.value,"is-deleting":t(L),queue:o.value,onCancel:e[3]||(e[3]=r=>l.value=!1),onConfirm:H},null,8,["is-visible","is-deleting","queue"])):y("",!0)])}}}),ge=se(ve,[["__scopeId","data-v-f3ec936e"]]);export{ge as default};
|
|
Binary file
|
|
Binary file
|