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.
Files changed (37) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +22 -0
  3. package/README.md +115 -0
  4. package/dist/browser/assets/QueuesView-BOytmHBz.css +1 -0
  5. package/dist/browser/assets/QueuesView-DVkPAdhy.js +1 -0
  6. package/dist/browser/assets/bootstrap-icons-BeopsB42.woff +0 -0
  7. package/dist/browser/assets/bootstrap-icons-mSm7cUeB.woff2 +0 -0
  8. package/dist/browser/assets/index-C9NdrZBx.js +43 -0
  9. package/dist/browser/assets/index-DZKBl9eI.css +9 -0
  10. package/dist/browser/favicon.ico +0 -0
  11. package/dist/browser/index.html +23 -0
  12. package/dist/node/cjs/index.d.ts +3 -0
  13. package/dist/node/cjs/index.d.ts.map +1 -0
  14. package/dist/node/cjs/index.js +3 -0
  15. package/dist/node/cjs/index.js.map +1 -0
  16. package/dist/node/cjs/node-utils/dist-path.d.ts +2 -0
  17. package/dist/node/cjs/node-utils/dist-path.d.ts.map +1 -0
  18. package/dist/node/cjs/node-utils/dist-path.js +7 -0
  19. package/dist/node/cjs/node-utils/dist-path.js.map +1 -0
  20. package/dist/node/cjs/package.json +3 -0
  21. package/dist/node/cjs/src/config/types/index.d.ts +5 -0
  22. package/dist/node/cjs/src/config/types/index.d.ts.map +1 -0
  23. package/dist/node/cjs/src/config/types/index.js +2 -0
  24. package/dist/node/cjs/src/config/types/index.js.map +1 -0
  25. package/dist/node/esm/index.d.ts +3 -0
  26. package/dist/node/esm/index.d.ts.map +1 -0
  27. package/dist/node/esm/index.js +3 -0
  28. package/dist/node/esm/index.js.map +1 -0
  29. package/dist/node/esm/node-utils/dist-path.d.ts +2 -0
  30. package/dist/node/esm/node-utils/dist-path.d.ts.map +1 -0
  31. package/dist/node/esm/node-utils/dist-path.js +7 -0
  32. package/dist/node/esm/node-utils/dist-path.js.map +1 -0
  33. package/dist/node/esm/src/config/types/index.d.ts +5 -0
  34. package/dist/node/esm/src/config/types/index.d.ts.map +1 -0
  35. package/dist/node/esm/src/config/types/index.js +2 -0
  36. package/dist/node/esm/src/config/types/index.js.map +1 -0
  37. 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};