@stacksjs/ts-cloud 0.9.4 → 0.11.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/dist/aws/index.js +1 -1
- package/dist/bin/chunk-0djsffn6.js +1 -0
- package/dist/bin/chunk-0t3sev1j.js +1 -0
- package/dist/bin/chunk-0y89hs67.js +6 -0
- package/dist/bin/chunk-21gggxvf.js +2 -0
- package/dist/bin/chunk-26cj89s6.js +1 -0
- package/dist/bin/chunk-35xstvnq.js +1 -0
- package/dist/bin/chunk-41yqpdv7.js +2 -0
- package/dist/bin/chunk-4a85nk2q.js +92 -0
- package/dist/bin/{chunk-rxcvf10f.js → chunk-4a97kbk1.js} +129 -129
- package/dist/bin/chunk-4kbhbfq8.js +34 -0
- package/dist/bin/chunk-4vdv41nh.js +70 -0
- package/dist/bin/chunk-67jsyn0g.js +111 -0
- package/dist/bin/chunk-6tct7e89.js +1 -0
- package/dist/bin/chunk-6vjrts39.js +1 -0
- package/dist/bin/chunk-7v5ff3vc.js +1 -0
- package/dist/bin/chunk-80nra92y.js +1 -0
- package/dist/bin/chunk-9mydnqr6.js +2 -0
- package/dist/bin/chunk-9rsn48qg.js +3 -0
- package/dist/bin/chunk-a2t1e5yb.js +1 -0
- package/dist/bin/chunk-akbfefwq.js +1 -0
- package/dist/bin/chunk-b704nznp.js +1 -0
- package/dist/bin/chunk-c1j9v7ee.js +2 -0
- package/dist/bin/chunk-cjz36ths.js +1 -0
- package/dist/bin/chunk-cxd5cevb.js +2 -0
- package/dist/bin/chunk-dbv8w56s.js +50 -0
- package/dist/bin/chunk-dxchg0g1.js +1 -0
- package/dist/bin/{chunk-tx0tqq2k.js → chunk-e1bfd1yv.js} +6 -6
- package/dist/bin/chunk-fpcghdr3.js +585 -0
- package/dist/bin/chunk-ftse39wf.js +9 -0
- package/dist/bin/chunk-g0ewbkbq.js +1 -0
- package/dist/bin/chunk-gskbezam.js +141 -0
- package/dist/bin/chunk-gvs85t2j.js +1 -0
- package/dist/bin/chunk-hej39dwr.js +2 -0
- package/dist/bin/chunk-jce28gnz.js +2 -0
- package/dist/bin/chunk-kbtrr0c3.js +1 -0
- package/dist/bin/chunk-khrye4x9.js +1 -0
- package/dist/bin/{chunk-mh0kdzqp.js → chunk-ks4ewy1s.js} +1 -1
- package/dist/bin/chunk-mbnwt3r5.js +2 -0
- package/dist/bin/chunk-md2k3n21.js +37 -0
- package/dist/bin/chunk-memfxrcn.js +1 -0
- package/dist/bin/chunk-mwgxyc0z.js +44 -0
- package/dist/bin/chunk-neampxq1.js +4 -0
- package/dist/bin/chunk-nkpf91d3.js +1 -0
- package/dist/bin/chunk-nmkm1f68.js +2 -0
- package/dist/bin/chunk-nyc2jxd8.js +2 -0
- package/dist/bin/chunk-pqr8jqnd.js +1 -0
- package/dist/bin/chunk-q182t9ba.js +3 -0
- package/dist/bin/chunk-r6x7beew.js +60 -0
- package/dist/bin/chunk-rfqk5xym.js +1 -0
- package/dist/bin/{chunk-etrb03mt.js → chunk-ww770qpn.js} +30 -30
- package/dist/bin/chunk-wy20ztb6.js +1 -0
- package/dist/bin/chunk-wzepfqf4.js +512 -0
- package/dist/bin/chunk-xcqmwphz.js +1 -0
- package/dist/bin/chunk-xev7qr2h.js +3 -0
- package/dist/bin/chunk-y3rm37z1.js +6 -0
- package/dist/bin/chunk-zejwh9cy.js +6 -0
- package/dist/bin/chunk-zwwnt4x1.js +1 -0
- package/dist/bin/cli.js +431 -418
- package/dist/bin/dashboard-server.js +1 -1
- package/dist/{chunk-dskvqt67.js → chunk-0hj552t7.js} +127 -127
- package/dist/chunk-1ypkh8g6.js +5 -0
- package/dist/chunk-2m09t0c0.js +60 -0
- package/dist/chunk-7fkyfh65.js +1 -0
- package/dist/chunk-7xpxzbkr.js +442 -0
- package/dist/chunk-8e0az001.js +2 -0
- package/dist/chunk-b10cbk8z.js +44 -0
- package/dist/chunk-gk58959n.js +6 -0
- package/dist/chunk-h1rc94df.js +114 -0
- package/dist/chunk-hbhxk5a0.js +4 -0
- package/dist/chunk-hz7k9ymh.js +1 -0
- package/dist/chunk-kj7gzdj6.js +1 -0
- package/dist/chunk-ky5c6t5y.js +2 -0
- package/dist/chunk-mch30cyc.js +1 -0
- package/dist/chunk-n04a3bgf.js +1 -0
- package/dist/chunk-nnqxmh7f.js +34 -0
- package/dist/chunk-p6vszgc2.js +92 -0
- package/dist/chunk-q2njk4hx.js +141 -0
- package/dist/chunk-qjk1v1gs.js +50 -0
- package/dist/chunk-qtp90j44.js +2 -0
- package/dist/chunk-r5natbed.js +37 -0
- package/dist/chunk-rcxq9aaa.js +704 -0
- package/dist/{chunk-gahsdmxf.js → chunk-s3rpd72x.js} +52 -52
- package/dist/{chunk-xt3s24vr.js → chunk-spx89gaw.js} +1 -1
- package/dist/chunk-t0kh8haz.js +2 -0
- package/dist/chunk-vz95qy3n.js +1 -0
- package/dist/deploy/attach-credentials.d.ts +4 -8
- package/dist/deploy/index.js +1 -1
- package/dist/dns/cloudflare.d.ts +27 -0
- package/dist/dns/godaddy.d.ts +18 -1
- package/dist/dns/index.d.ts +2 -0
- package/dist/dns/index.js +1 -1
- package/dist/dns/zone-migration.d.ts +92 -0
- package/dist/dns/zone-migration.test.d.ts +1 -0
- package/dist/drivers/hetzner/driver.d.ts +8 -1
- package/dist/drivers/index.js +1 -1
- package/dist/drivers/shared/app-updates.d.ts +36 -0
- package/dist/drivers/shared/compute-provision.d.ts +14 -2
- package/dist/drivers/shared/db-provision.d.ts +3 -2
- package/dist/drivers/shared/mail-provision.d.ts +116 -0
- package/dist/drivers/shared/mail-provision.test.d.ts +1 -0
- package/dist/drivers/shared/managed-services-probe.d.ts +47 -0
- package/dist/drivers/shared/managed-services-probe.test.d.ts +1 -0
- package/dist/drivers/shared/package-manager.d.ts +1 -0
- package/dist/drivers/shared/remote-failure.d.ts +21 -0
- package/dist/drivers/shared/remote-failure.test.d.ts +1 -0
- package/dist/drivers/shared/sqlite-shared-path.d.ts +50 -0
- package/dist/drivers/shared/sqlite-shared-path.test.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +92 -89
- package/dist/operations/plan.d.ts +136 -0
- package/dist/operations/plan.test.d.ts +1 -0
- package/dist/operations/server-rename.d.ts +84 -0
- package/dist/operations/server-rename.test.d.ts +1 -0
- package/dist/operations/site-move.d.ts +263 -0
- package/dist/operations/site-move.test.d.ts +1 -0
- package/dist/protection/index.js +1 -1
- package/dist/push/index.js +1 -1
- package/dist/spend/index.js +1 -1
- package/dist/ui/404.html +1 -1
- package/dist/ui/accept-invitation.html +1 -1
- package/dist/ui/access-denied.html +1 -1
- package/dist/ui/account/automation.html +6 -6
- package/dist/ui/account/security.html +2 -2
- package/dist/ui/applications/compose.html +6 -6
- package/dist/ui/applications/new.html +2 -2
- package/dist/ui/data/backups.html +80 -80
- package/dist/ui/data/services.html +78 -78
- package/dist/ui/data/volumes.html +50 -50
- package/dist/ui/index.html +50 -50
- package/dist/ui/infrastructure/topology.html +118 -118
- package/dist/ui/integrations.html +2 -2
- package/dist/ui/operations/alerts.html +48 -48
- package/dist/ui/operations/configuration.html +6 -6
- package/dist/ui/operations/jobs.html +75 -75
- package/dist/ui/operations/maintenance.html +6 -6
- package/dist/ui/operations/observability.html +82 -82
- package/dist/ui/operations/previews.html +6 -6
- package/dist/ui/operations/queue.html +6 -6
- package/dist/ui/operations/regions.html +6 -6
- package/dist/ui/operations/releases.html +6 -6
- package/dist/ui/operations/spend.html +54 -54
- package/dist/ui/operations/workloads.html +104 -104
- package/dist/ui/security.html +2 -2
- package/dist/ui/server/actions.html +56 -56
- package/dist/ui/server/activity.html +1 -1
- package/dist/ui/server/capacity.html +6 -6
- package/dist/ui/server/database.html +106 -106
- package/dist/ui/server/deployments.html +50 -50
- package/dist/ui/server/diagnostics.html +2 -2
- package/dist/ui/server/firewall.html +76 -76
- package/dist/ui/server/fleet.html +34 -34
- package/dist/ui/server/logs.html +24 -24
- package/dist/ui/server/metrics.html +112 -112
- package/dist/ui/server/security.html +2 -2
- package/dist/ui/server/services.html +27 -27
- package/dist/ui/server/sites.html +120 -120
- package/dist/ui/server/ssh-keys.html +52 -52
- package/dist/ui/server/team.html +144 -144
- package/dist/ui/server/terminal.html +15 -15
- package/dist/ui/serverless/alarms.html +52 -52
- package/dist/ui/serverless/assets.html +27 -27
- package/dist/ui/serverless/cost.html +2 -2
- package/dist/ui/serverless/data.html +36 -36
- package/dist/ui/serverless/deployments.html +27 -27
- package/dist/ui/serverless/firewall.html +1 -1
- package/dist/ui/serverless/functions.html +40 -40
- package/dist/ui/serverless/logs.html +24 -24
- package/dist/ui/serverless/metrics.html +2 -2
- package/dist/ui/serverless/queues.html +48 -48
- package/dist/ui/serverless/secrets.html +51 -51
- package/dist/ui/serverless/traces.html +6 -6
- package/dist/ui/serverless.html +53 -53
- package/dist/ui-src/src/charts.ts +17499 -12662
- package/dist/ui-src/src/topology.ts +2 -2
- package/package.json +3 -3
- package/dist/bin/chunk-00kg80qg.js +0 -1
- package/dist/bin/chunk-09nwf2gy.js +0 -34
- package/dist/bin/chunk-1k5kszjp.js +0 -111
- package/dist/bin/chunk-21e0mavm.js +0 -1
- package/dist/bin/chunk-271gk1n2.js +0 -6
- package/dist/bin/chunk-2empps47.js +0 -2
- package/dist/bin/chunk-38pq971s.js +0 -2
- package/dist/bin/chunk-3gykfyq4.js +0 -37
- package/dist/bin/chunk-3vqfexc4.js +0 -70
- package/dist/bin/chunk-4vrqm9h0.js +0 -2
- package/dist/bin/chunk-598yf4bs.js +0 -1
- package/dist/bin/chunk-5ectjq0b.js +0 -1
- package/dist/bin/chunk-5erkxpt7.js +0 -512
- package/dist/bin/chunk-5mrtzemj.js +0 -1
- package/dist/bin/chunk-5n9fmabb.js +0 -1
- package/dist/bin/chunk-9knpg30y.js +0 -1
- package/dist/bin/chunk-9pvsff8g.js +0 -1
- package/dist/bin/chunk-ax9mr6wm.js +0 -44
- package/dist/bin/chunk-axhnkn5g.js +0 -2
- package/dist/bin/chunk-c1vcdgvr.js +0 -1
- package/dist/bin/chunk-ctd2vg9w.js +0 -2
- package/dist/bin/chunk-dbgffky8.js +0 -1
- package/dist/bin/chunk-ddk4rt4j.js +0 -6
- package/dist/bin/chunk-dwr30vbv.js +0 -1
- package/dist/bin/chunk-e0rkrq70.js +0 -1
- package/dist/bin/chunk-e3xrwh9z.js +0 -1
- package/dist/bin/chunk-fhc6ntvd.js +0 -2
- package/dist/bin/chunk-fpm59y25.js +0 -6
- package/dist/bin/chunk-fvbxvq6b.js +0 -1
- package/dist/bin/chunk-fy8j3y8p.js +0 -92
- package/dist/bin/chunk-fz21b57w.js +0 -1
- package/dist/bin/chunk-gavvf0pg.js +0 -141
- package/dist/bin/chunk-ggn7ax8p.js +0 -4
- package/dist/bin/chunk-gpe2prkm.js +0 -1
- package/dist/bin/chunk-h5pa5men.js +0 -2
- package/dist/bin/chunk-hm08xdxf.js +0 -2
- package/dist/bin/chunk-hzgz13nf.js +0 -1
- package/dist/bin/chunk-j703btc5.js +0 -50
- package/dist/bin/chunk-k9t9wvms.js +0 -1
- package/dist/bin/chunk-m669wtgr.js +0 -1
- package/dist/bin/chunk-m7dgskt1.js +0 -1
- package/dist/bin/chunk-mr0atd2s.js +0 -2
- package/dist/bin/chunk-mz0wbbsj.js +0 -3
- package/dist/bin/chunk-ngcyftm2.js +0 -1
- package/dist/bin/chunk-p66ptpmr.js +0 -2
- package/dist/bin/chunk-qk9qgepa.js +0 -1
- package/dist/bin/chunk-rytk89az.js +0 -60
- package/dist/bin/chunk-tga3hhwk.js +0 -6
- package/dist/bin/chunk-vek8a0w6.js +0 -1
- package/dist/bin/chunk-vm3q5gf2.js +0 -3
- package/dist/bin/chunk-y7s5r8y6.js +0 -3
- package/dist/bin/chunk-yv9sth30.js +0 -1
- package/dist/bin/chunk-zmegvjp8.js +0 -581
- package/dist/chunk-0ccta6z6.js +0 -6
- package/dist/chunk-0k1cs6pp.js +0 -1
- package/dist/chunk-1egjn203.js +0 -704
- package/dist/chunk-2wx29qga.js +0 -5
- package/dist/chunk-5m5rqmv7.js +0 -1
- package/dist/chunk-8ea5022g.js +0 -114
- package/dist/chunk-8xqn3c0w.js +0 -2
- package/dist/chunk-b4esxhmw.js +0 -2
- package/dist/chunk-b8e5wzwn.js +0 -44
- package/dist/chunk-bggt4n6e.js +0 -2
- package/dist/chunk-cwkg37rs.js +0 -37
- package/dist/chunk-gnv3r2jg.js +0 -1
- package/dist/chunk-hg3c48cp.js +0 -34
- package/dist/chunk-m5azeva3.js +0 -2
- package/dist/chunk-r3qf56b3.js +0 -92
- package/dist/chunk-sdqa9ghv.js +0 -141
- package/dist/chunk-svrvvcm7.js +0 -1
- package/dist/chunk-v0p3hpc3.js +0 -60
- package/dist/chunk-wdzjbecg.js +0 -50
- package/dist/chunk-ww8k3g7j.js +0 -1
- package/dist/chunk-xmqfc62w.js +0 -1
- package/dist/chunk-xrebj679.js +0 -435
- package/dist/chunk-y21zk0pn.js +0 -4
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="
|
|
2
|
-
function
|
|
1
|
+
<!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt3juhhnpsmm4f"><meta name="title" content="stx Project"><meta name="description" content="A website built with stx templating engine"><meta property="og:title" content="stx Project"><meta property="og:description" content="A website built with stx templating engine"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="stx Project"><meta name="twitter:description" content="A website built with stx templating engine"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud · Persistent volumes</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <script data-stx-scoped>
|
|
2
|
+
function __stx_setup_1787353031346_4() {
|
|
3
3
|
const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
|
|
4
4
|
|
|
5
|
-
var volumes = undefined;
|
|
6
|
-
var tone = undefined;
|
|
7
|
-
var snapshot = undefined;
|
|
8
|
-
var restore = undefined;
|
|
9
|
-
var resize = undefined;
|
|
10
|
-
var remove = undefined;
|
|
11
|
-
var refresh = undefined;
|
|
12
|
-
var pollingState = undefined;
|
|
13
|
-
var pollingError = undefined;
|
|
14
|
-
var operationFor = undefined;
|
|
15
|
-
var mutate = undefined;
|
|
16
|
-
var load = undefined;
|
|
17
|
-
var lastUpdatedAt = undefined;
|
|
18
|
-
var filtered = undefined;
|
|
19
|
-
var discover = undefined;
|
|
20
|
-
var detach = undefined;
|
|
21
|
-
var create = undefined;
|
|
22
|
-
var bytes = undefined;
|
|
23
|
-
var body = undefined;
|
|
24
|
-
var attach = undefined;
|
|
25
|
-
var api = undefined;
|
|
26
5
|
var adopt = undefined;
|
|
6
|
+
var api = undefined;
|
|
7
|
+
var attach = undefined;
|
|
8
|
+
var body = undefined;
|
|
9
|
+
var bytes = undefined;
|
|
10
|
+
var create = undefined;
|
|
11
|
+
var detach = undefined;
|
|
12
|
+
var discover = undefined;
|
|
13
|
+
var filtered = undefined;
|
|
14
|
+
var lastUpdatedAt = undefined;
|
|
15
|
+
var load = undefined;
|
|
16
|
+
var mutate = undefined;
|
|
17
|
+
var operationFor = undefined;
|
|
18
|
+
var pollingError = undefined;
|
|
19
|
+
var pollingState = undefined;
|
|
20
|
+
var refresh = undefined;
|
|
21
|
+
var remove = undefined;
|
|
22
|
+
var resize = undefined;
|
|
23
|
+
var restore = undefined;
|
|
24
|
+
var snapshot = undefined;
|
|
25
|
+
var tone = undefined;
|
|
26
|
+
var volumes = undefined;
|
|
27
27
|
var __stxBundle_87f7d53bdfa9 = (function() {
|
|
28
28
|
|
|
29
29
|
function servedWithoutApi(error) {
|
|
@@ -193,35 +193,35 @@ function bytes(value) {
|
|
|
193
193
|
function operationFor(item) {
|
|
194
194
|
return operations().find((value) => value.operation?.input?.volumeId === item.id && ["queued", "running"].includes(value.operation?.state));
|
|
195
195
|
}
|
|
196
|
-
return { "
|
|
196
|
+
return { "adopt": adopt, "api": api, "attach": attach, "body": body, "bytes": bytes, "create": create, "detach": detach, "discover": discover, "filtered": filtered, "lastUpdatedAt": lastUpdatedAt, "load": load, "mutate": mutate, "operationFor": operationFor, "pollingError": pollingError, "pollingState": pollingState, "refresh": refresh, "remove": remove, "resize": resize, "restore": restore, "snapshot": snapshot, "tone": tone, "volumes": volumes };
|
|
197
197
|
})();
|
|
198
|
-
volumes = __stxBundle_87f7d53bdfa9["volumes"];
|
|
199
|
-
tone = __stxBundle_87f7d53bdfa9["tone"];
|
|
200
|
-
snapshot = __stxBundle_87f7d53bdfa9["snapshot"];
|
|
201
|
-
restore = __stxBundle_87f7d53bdfa9["restore"];
|
|
202
|
-
resize = __stxBundle_87f7d53bdfa9["resize"];
|
|
203
|
-
remove = __stxBundle_87f7d53bdfa9["remove"];
|
|
204
|
-
refresh = __stxBundle_87f7d53bdfa9["refresh"];
|
|
205
|
-
pollingState = __stxBundle_87f7d53bdfa9["pollingState"];
|
|
206
|
-
pollingError = __stxBundle_87f7d53bdfa9["pollingError"];
|
|
207
|
-
operationFor = __stxBundle_87f7d53bdfa9["operationFor"];
|
|
208
|
-
mutate = __stxBundle_87f7d53bdfa9["mutate"];
|
|
209
|
-
load = __stxBundle_87f7d53bdfa9["load"];
|
|
210
|
-
lastUpdatedAt = __stxBundle_87f7d53bdfa9["lastUpdatedAt"];
|
|
211
|
-
filtered = __stxBundle_87f7d53bdfa9["filtered"];
|
|
212
|
-
discover = __stxBundle_87f7d53bdfa9["discover"];
|
|
213
|
-
detach = __stxBundle_87f7d53bdfa9["detach"];
|
|
214
|
-
create = __stxBundle_87f7d53bdfa9["create"];
|
|
215
|
-
bytes = __stxBundle_87f7d53bdfa9["bytes"];
|
|
216
|
-
body = __stxBundle_87f7d53bdfa9["body"];
|
|
217
|
-
attach = __stxBundle_87f7d53bdfa9["attach"];
|
|
218
|
-
api = __stxBundle_87f7d53bdfa9["api"];
|
|
219
198
|
adopt = __stxBundle_87f7d53bdfa9["adopt"];
|
|
220
|
-
|
|
199
|
+
api = __stxBundle_87f7d53bdfa9["api"];
|
|
200
|
+
attach = __stxBundle_87f7d53bdfa9["attach"];
|
|
201
|
+
body = __stxBundle_87f7d53bdfa9["body"];
|
|
202
|
+
bytes = __stxBundle_87f7d53bdfa9["bytes"];
|
|
203
|
+
create = __stxBundle_87f7d53bdfa9["create"];
|
|
204
|
+
detach = __stxBundle_87f7d53bdfa9["detach"];
|
|
205
|
+
discover = __stxBundle_87f7d53bdfa9["discover"];
|
|
206
|
+
filtered = __stxBundle_87f7d53bdfa9["filtered"];
|
|
207
|
+
lastUpdatedAt = __stxBundle_87f7d53bdfa9["lastUpdatedAt"];
|
|
208
|
+
load = __stxBundle_87f7d53bdfa9["load"];
|
|
209
|
+
mutate = __stxBundle_87f7d53bdfa9["mutate"];
|
|
210
|
+
operationFor = __stxBundle_87f7d53bdfa9["operationFor"];
|
|
211
|
+
pollingError = __stxBundle_87f7d53bdfa9["pollingError"];
|
|
212
|
+
pollingState = __stxBundle_87f7d53bdfa9["pollingState"];
|
|
213
|
+
refresh = __stxBundle_87f7d53bdfa9["refresh"];
|
|
214
|
+
remove = __stxBundle_87f7d53bdfa9["remove"];
|
|
215
|
+
resize = __stxBundle_87f7d53bdfa9["resize"];
|
|
216
|
+
restore = __stxBundle_87f7d53bdfa9["restore"];
|
|
217
|
+
snapshot = __stxBundle_87f7d53bdfa9["snapshot"];
|
|
218
|
+
tone = __stxBundle_87f7d53bdfa9["tone"];
|
|
219
|
+
volumes = __stxBundle_87f7d53bdfa9["volumes"];
|
|
220
|
+
return { adopt, api, attach, body, bytes, create, detach, discover, filtered, lastUpdatedAt, load, mutate, operationFor, pollingError, pollingState, refresh, remove, resize, restore, snapshot, tone, volumes, __stxBundle_87f7d53bdfa9 };
|
|
221
221
|
}
|
|
222
|
-
window.__stx_latestSetup=
|
|
223
|
-
if(window.stx)window.stx._latestSetup=
|
|
224
|
-
</script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="
|
|
222
|
+
window.__stx_latestSetup=__stx_setup_1787353031346_4;
|
|
223
|
+
if(window.stx)window.stx._latestSetup=__stx_setup_1787353031346_4;
|
|
224
|
+
</script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.906ee17c.css"></head><body data-stx="__stx_setup_1787353031346_4"><a data-stx-scope="stx_scope_nav_6" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>Project</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment & secrets</a><a class="" href="/data/backups?env=production">Backups & recovery</a><a class="active" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="active" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>Project</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
|
|
225
225
|
(function() {
|
|
226
226
|
var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
|
|
227
227
|
var __destroyHooks = [];
|
|
@@ -572,6 +572,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1787110569424_0;
|
|
|
572
572
|
|
|
573
573
|
|
|
574
574
|
try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
|
|
575
|
-
window.stx._scopes['
|
|
575
|
+
window.stx._scopes['stx_scope_nav_6'] = __scopeRegistration;
|
|
576
576
|
})();
|
|
577
577
|
</script> <main class="volume-wrap wrap" id="main-content"><div class="crumbs">Infrastructure <span class="sep">/</span> Persistent volumes</div><header class="page"><div><h1>Persistent volumes</h1><p>Storage with stable identity, explicit consumers, recovery status, capability-aware operations, and safe retirement.</p></div><div class="header-actions" x-cloak><span class="pill" :class="pollingState()==='live'?'ok':'warn'" x-cloak>{{ pollingState() }}</span><small x-cloak>{{ lastUpdatedAt()?.toLocaleTimeString()||'connecting' }}</small><button class="btn ghost sm" @click="discover()">Discover orphans</button><button class="btn sm" @click="createOpen.set(!createOpen())" x-cloak>{{ createOpen()?'Close':'New volume' }}</button></div></header><p class="notice" role="status" @show="!!notice()" x-cloak>{{ notice() }}</p><p class="bad notice" role="alert" @show="!!error()||!!pollingError()" x-cloak>{{ error()||pollingError() }}</p><section class="summary"><article class="panel"><b>Volumes</b><strong x-cloak>{{ volumes().length }}</strong><small>release-independent</small></article><article class="panel"><b>Attached</b><strong x-cloak>{{ volumes().filter(item=>item.attachments.some(m=>m.observedState==='attached')).length }}</strong><small>active consumers</small></article><article class="panel"><b>Protected</b><strong x-cloak>{{ volumes().filter(item=>item.backupState==='protected').length }}</strong><small>recent verified backup</small></article><article class="panel"><b>Orphans</b><strong x-cloak>{{ volumes().filter(item=>item.orphaned).length }}</strong><small>adopt, attach, snapshot, or delete</small></article></section><form class="create-volume panel" @show="createOpen()" @submit="create($event)" x-cloak><div class="wide"><h2>Create persistent volume</h2><p class="note">The identity remains stable through releases. Provider limits are shown before unsupported operations can be submitted.</p></div><label>Name<input name="name" pattern="[a-z0-9][a-z0-9_.-]{1,62}" required placeholder="uploads"></label><label x-cloak>Driver<select name="driver" required><template :for="driver in providers()"><option :value="driver.provider+'|'+driver.type">{{ driver.provider }} · {{ driver.type }}</option></template></select></label><label>Capacity bytes<input name="capacityBytes" type="number" min="1" placeholder="optional"></label><label>Filesystem<input name="filesystem" placeholder="provider default"></label><label class="check"><input name="encrypted" type="checkbox"> Encrypted where supported</label><button class="btn" type="submit" :disabled="busy()">Queue create</button></form><section class="filters panel" x-cloak><input type="search" aria-label="Search volumes" placeholder="Search volume, driver, or state" @input="search.set($event.currentTarget.value)"><span x-cloak>{{ filtered().length }} shown</span></section><div class="volume-workspace" :class="{detail:!!selected()}" x-cloak><section class="volume-cards" x-cloak><template :for="item in filtered()"><article class="panel volume-card" :class="{selected:selected()?.id===item.id}" x-cloak><div class="volume-head" x-cloak><div x-cloak><span class="pill" :class="tone(item.status)" x-cloak>{{ item.status }}</span><span class="pill" x-cloak>{{ item.provider }} · {{ item.type }}</span><h2 x-cloak>{{ item.name }}</h2></div><button class="btn ghost sm" @click="selected.set(item)">Details</button></div><div class="volume-facts"><div><small>Capacity / usage</small><b x-cloak>{{ bytes(item.usedBytes) }} / {{ bytes(item.capacityBytes) }}</b><span x-cloak>{{ item.usagePercent==null?'usage unavailable':item.usagePercent+'%' }}</span></div><div><small>Consumers</small><b x-cloak>{{ item.attachments.filter(m=>m.observedState==='attached').length }}</b><span x-cloak>{{ item.attachments.map(m=>m.targetPath).join(', ')||'detached' }}</span></div><div><small>Recovery</small><b x-cloak>{{ item.backupState }}</b><span x-cloak>{{ item.snapshots.length }} snapshots · {{ item.lastBackupAt||'never backed up' }}</span></div></div><p class="notice warn" @show="!!operationFor(item)" x-cloak>{{ operationFor(item)?.operation?.kind }} · {{ operationFor(item)?.operation?.state }}</p><div class="actions" @show="item.orphaned" x-cloak><button class="btn sm" @click="adopt(item)">Adopt safely</button></div></article></template><div class="empty panel" @show="!filtered().length" x-cloak><strong>No persistent volumes</strong><span>Create one or discover provider resources without deleting anything automatically.</span></div></section><aside class="panel volume-detail" @show="!!selected()" x-cloak><div class="detail-head"><div><small>Selected volume</small><h2 x-cloak>{{ selected()?.name }}</h2></div><button class="btn ghost sm" @click="selected.set(null)">Close</button></div><div class="capabilities"><h3>Capabilities</h3><template :for="entry in Object.entries(selected()?.capabilities||{})"><p x-cloak><b x-cloak>{{ entry[0] }}</b><span :class="entry[1].supported?'ok-text':'muted'" x-cloak>{{ entry[1].supported?'supported':entry[1].reason }}</span></p></template></div><div class="detail-actions"><button class="btn sm" @click="mountOpen.set(!mountOpen())" :disabled="!selected()?.capabilities?.attach?.supported">Attach</button><button class="btn ghost sm" @click="resize()" :disabled="!selected()?.capabilities?.resize?.supported">Resize</button><button class="btn ghost sm" @click="snapshot()" :disabled="!selected()?.capabilities?.snapshot?.supported">Snapshot</button><a class="btn ghost sm" href="/data/backups">Backups</a><button class="btn danger sm" @click="remove()" :disabled="selected()?.attachments.some(item=>item.observedState==='attached')">Delete</button></div><form class="mount-form" @show="mountOpen()" @submit="attach($event)" x-cloak><h3>Mount editor</h3><label x-cloak>Workload<select name="resourceId" required><template :for="resource in resources()"><option :value="resource.id">{{ resource.name }} · {{ resource.kind }}</option></template></select></label><label>Target path<input name="targetPath" required placeholder="/app/uploads"></label><label>UID<input name="uid" type="number" min="0"></label><label>GID<input name="gid" type="number" min="0"></label><label>Mode<input name="mode" pattern="0?[0-7]{3}" placeholder="0750"></label><label>Propagation<select name="propagation"><option>private</option><option>rprivate</option><option>shared</option><option>rshared</option></select></label><label class="check"><input name="readOnly" type="checkbox"> Read only</label><button class="btn" type="submit">Validate and attach</button></form><section><h3>Consumers</h3><template :for="mount in selected()?.attachments||[]"><article class="mount-row" x-cloak><div x-cloak><b x-cloak>{{ resources().find(item=>item.id===mount.resourceId)?.name||mount.resourceId }}</b><code x-cloak>{{ mount.targetPath }}</code><small x-cloak>{{ mount.readOnly?'read only':'read/write' }} · {{ mount.observedState }}</small></div><button class="btn danger sm" @click="detach(mount)" :disabled="mount.observedState!=='attached'">Drain & detach</button></article></template><p class="muted" @show="!selected()?.attachments?.length" x-cloak>No workloads consume this volume.</p></section><section><h3>Recovery points</h3><template :for="snapshot in selected()?.snapshots||[]"><p x-cloak><b x-cloak>{{ snapshot.status }}</b> {{ snapshot.name }} <button class="btn ghost sm" @click="restore(snapshot)" :disabled="!selected()?.capabilities?.restore?.supported">Restore replacement</button></p></template><template :for="point in recoveryPoints().filter(item=>item.resourceId===selected()?.resourceId)"><p x-cloak><b x-cloak>{{ point.verificationState }}</b> {{ point.pointInTime }}</p></template><p class="muted" @show="!selected()?.snapshots?.length" x-cloak>Link a backup policy for verified recovery and restore drills.</p></section></aside></div></main><style> .volume-wrap{padding-bottom:5rem}.header-actions,.actions,.detail-actions{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin:1rem 0}.summary article{display:grid;gap:.3rem}.summary strong{font-size:1.8rem}.create-volume,.mount-form{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;margin:1rem 0}.wide{grid-column:1/-1}.create-volume label,.mount-form label{display:grid;gap:.35rem}.filters{display:flex;gap:1rem;align-items:center;margin:1rem 0}.filters input{flex:1}.volume-workspace{display:grid}.volume-workspace.detail{grid-template-columns:minmax(0,1fr) minmax(320px,430px);gap:1rem}.volume-cards{display:grid;gap:1rem}.volume-card{display:grid;gap:1rem}.volume-head,.detail-head{display:flex;justify-content:space-between;gap:1rem}.volume-head h2{margin:.5rem 0 0}.volume-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.volume-facts div{display:grid;gap:.25rem}.volume-detail{position:sticky;top:1rem;align-self:start;display:grid;gap:1.25rem}.capabilities p,.mount-row{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--border);padding:.55rem 0}.mount-row div{display:grid;gap:.25rem}.ok-text{color:var(--success)}.muted{color:var(--muted)}@media(max-width:900px){.summary{grid-template-columns:repeat(2,1fr)}.volume-workspace.detail{grid-template-columns:1fr}.volume-detail{position:static}.volume-facts{grid-template-columns:1fr}}@media(max-width:560px){.summary,.create-volume,.mount-form{grid-template-columns:1fr}.wide{grid-column:auto}} </style></body></html>
|
package/dist/ui/index.html
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="
|
|
2
|
-
function
|
|
1
|
+
<!DOCTYPE html><html lang="en" data-theme="dark"><head><meta charset="UTF-8"><meta name="stx-build" content="mt3juhhnpsmm4f"><meta name="title" content="ts-cloud - Dashboard"><meta name="description" content="ts-cloud server & deployment dashboard"><meta property="og:title" content="ts-cloud - Dashboard"><meta property="og:description" content="ts-cloud server & deployment dashboard"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="ts-cloud - Dashboard"><meta name="twitter:description" content="ts-cloud server & deployment dashboard"> <script data-stx-runtime src="/_stx/runtime.c696d17a.js"></script> <script data-stx-composables src="/_stx/chunk.5ddb5087.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ts-cloud - Dashboard</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect x='3' y='3' width='26' height='26' rx='8' fill='%235a8be0'/%3E%3C/svg%3E"><link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_stx/style.448ab192.css"><meta name="description" content="ts-cloud server & deployment dashboard"> <script data-stx-scoped>
|
|
2
|
+
function __stx_setup_1787353034130_31() {
|
|
3
3
|
const { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
|
|
4
4
|
|
|
5
5
|
var initialData = null;
|
|
6
6
|
|
|
7
|
-
var svcTone = undefined;
|
|
8
|
-
var servicesC = undefined;
|
|
9
|
-
var pollingState = undefined;
|
|
10
|
-
var pollingError = undefined;
|
|
11
|
-
var pctOf = undefined;
|
|
12
|
-
var pTone = undefined;
|
|
13
|
-
var pDisp = undefined;
|
|
14
|
-
var overallWordC = undefined;
|
|
15
|
-
var overallC = undefined;
|
|
16
|
-
var n = undefined;
|
|
17
|
-
var memSub = undefined;
|
|
18
|
-
var memP = undefined;
|
|
19
|
-
var loadP = undefined;
|
|
20
|
-
var liveData = undefined;
|
|
21
|
-
var indicator = undefined;
|
|
22
|
-
var gbVal = undefined;
|
|
23
|
-
var diskP = undefined;
|
|
24
|
-
var data = undefined;
|
|
25
|
-
var cpuSub = undefined;
|
|
26
|
-
var cpuP = undefined;
|
|
27
|
-
var barStyle = undefined;
|
|
28
7
|
var barCss = undefined;
|
|
8
|
+
var barStyle = undefined;
|
|
9
|
+
var cpuP = undefined;
|
|
10
|
+
var cpuSub = undefined;
|
|
11
|
+
var data = undefined;
|
|
12
|
+
var diskP = undefined;
|
|
13
|
+
var gbVal = undefined;
|
|
14
|
+
var indicator = undefined;
|
|
15
|
+
var liveData = undefined;
|
|
16
|
+
var loadP = undefined;
|
|
17
|
+
var memP = undefined;
|
|
18
|
+
var memSub = undefined;
|
|
19
|
+
var n = undefined;
|
|
20
|
+
var overallC = undefined;
|
|
21
|
+
var overallWordC = undefined;
|
|
22
|
+
var pDisp = undefined;
|
|
23
|
+
var pTone = undefined;
|
|
24
|
+
var pctOf = undefined;
|
|
25
|
+
var pollingError = undefined;
|
|
26
|
+
var pollingState = undefined;
|
|
27
|
+
var servicesC = undefined;
|
|
28
|
+
var svcTone = undefined;
|
|
29
29
|
var __stxBundle_87ebf77e804c = (function() {
|
|
30
30
|
|
|
31
31
|
function servedWithoutApi(error) {
|
|
@@ -135,35 +135,35 @@ var { pollingState, pollingError } = usePolling(async () => {
|
|
|
135
135
|
data.set(await response.json());
|
|
136
136
|
}, 1e4);
|
|
137
137
|
var indicator = derived(() => pollingState() === "stale" ? "stale" : liveData() ? "live" : "snapshot");
|
|
138
|
-
return { "
|
|
138
|
+
return { "barCss": barCss, "barStyle": barStyle, "cpuP": cpuP, "cpuSub": cpuSub, "data": data, "diskP": diskP, "gbVal": gbVal, "indicator": indicator, "liveData": liveData, "loadP": loadP, "memP": memP, "memSub": memSub, "n": n, "overallC": overallC, "overallWordC": overallWordC, "pDisp": pDisp, "pTone": pTone, "pctOf": pctOf, "pollingError": pollingError, "pollingState": pollingState, "servicesC": servicesC, "svcTone": svcTone };
|
|
139
139
|
})();
|
|
140
|
-
svcTone = __stxBundle_87ebf77e804c["svcTone"];
|
|
141
|
-
servicesC = __stxBundle_87ebf77e804c["servicesC"];
|
|
142
|
-
pollingState = __stxBundle_87ebf77e804c["pollingState"];
|
|
143
|
-
pollingError = __stxBundle_87ebf77e804c["pollingError"];
|
|
144
|
-
pctOf = __stxBundle_87ebf77e804c["pctOf"];
|
|
145
|
-
pTone = __stxBundle_87ebf77e804c["pTone"];
|
|
146
|
-
pDisp = __stxBundle_87ebf77e804c["pDisp"];
|
|
147
|
-
overallWordC = __stxBundle_87ebf77e804c["overallWordC"];
|
|
148
|
-
overallC = __stxBundle_87ebf77e804c["overallC"];
|
|
149
|
-
n = __stxBundle_87ebf77e804c["n"];
|
|
150
|
-
memSub = __stxBundle_87ebf77e804c["memSub"];
|
|
151
|
-
memP = __stxBundle_87ebf77e804c["memP"];
|
|
152
|
-
loadP = __stxBundle_87ebf77e804c["loadP"];
|
|
153
|
-
liveData = __stxBundle_87ebf77e804c["liveData"];
|
|
154
|
-
indicator = __stxBundle_87ebf77e804c["indicator"];
|
|
155
|
-
gbVal = __stxBundle_87ebf77e804c["gbVal"];
|
|
156
|
-
diskP = __stxBundle_87ebf77e804c["diskP"];
|
|
157
|
-
data = __stxBundle_87ebf77e804c["data"];
|
|
158
|
-
cpuSub = __stxBundle_87ebf77e804c["cpuSub"];
|
|
159
|
-
cpuP = __stxBundle_87ebf77e804c["cpuP"];
|
|
160
|
-
barStyle = __stxBundle_87ebf77e804c["barStyle"];
|
|
161
140
|
barCss = __stxBundle_87ebf77e804c["barCss"];
|
|
162
|
-
|
|
141
|
+
barStyle = __stxBundle_87ebf77e804c["barStyle"];
|
|
142
|
+
cpuP = __stxBundle_87ebf77e804c["cpuP"];
|
|
143
|
+
cpuSub = __stxBundle_87ebf77e804c["cpuSub"];
|
|
144
|
+
data = __stxBundle_87ebf77e804c["data"];
|
|
145
|
+
diskP = __stxBundle_87ebf77e804c["diskP"];
|
|
146
|
+
gbVal = __stxBundle_87ebf77e804c["gbVal"];
|
|
147
|
+
indicator = __stxBundle_87ebf77e804c["indicator"];
|
|
148
|
+
liveData = __stxBundle_87ebf77e804c["liveData"];
|
|
149
|
+
loadP = __stxBundle_87ebf77e804c["loadP"];
|
|
150
|
+
memP = __stxBundle_87ebf77e804c["memP"];
|
|
151
|
+
memSub = __stxBundle_87ebf77e804c["memSub"];
|
|
152
|
+
n = __stxBundle_87ebf77e804c["n"];
|
|
153
|
+
overallC = __stxBundle_87ebf77e804c["overallC"];
|
|
154
|
+
overallWordC = __stxBundle_87ebf77e804c["overallWordC"];
|
|
155
|
+
pDisp = __stxBundle_87ebf77e804c["pDisp"];
|
|
156
|
+
pTone = __stxBundle_87ebf77e804c["pTone"];
|
|
157
|
+
pctOf = __stxBundle_87ebf77e804c["pctOf"];
|
|
158
|
+
pollingError = __stxBundle_87ebf77e804c["pollingError"];
|
|
159
|
+
pollingState = __stxBundle_87ebf77e804c["pollingState"];
|
|
160
|
+
servicesC = __stxBundle_87ebf77e804c["servicesC"];
|
|
161
|
+
svcTone = __stxBundle_87ebf77e804c["svcTone"];
|
|
162
|
+
return { barCss, barStyle, cpuP, cpuSub, data, diskP, gbVal, indicator, liveData, loadP, memP, memSub, n, overallC, overallWordC, pDisp, pTone, pctOf, pollingError, pollingState, servicesC, svcTone, __stxBundle_87ebf77e804c };
|
|
163
163
|
}
|
|
164
|
-
window.__stx_latestSetup=
|
|
165
|
-
if(window.stx)window.stx._latestSetup=
|
|
166
|
-
</script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx="
|
|
164
|
+
window.__stx_latestSetup=__stx_setup_1787353034130_31;
|
|
165
|
+
if(window.stx)window.stx._latestSetup=__stx_setup_1787353034130_31;
|
|
166
|
+
</script> <style data-stx-cloak>[x-cloak]{display:none !important}</style><link data-crosswind="generated" rel="stylesheet" href="/_stx/crosswind.b7a99a5c.css"></head><body data-stx="__stx_setup_1787353034130_31"><a data-stx-scope="stx_scope_nav_46" class="skip-link" href="#main-content">Skip to content</a><button class="nav-toggle-button" type="button" aria-label="Open navigation" aria-controls="primary-navigation" aria-expanded="false"><span></span><span></span><span></span></button><button class="nav-scrim" type="button" aria-label="Close navigation"></button><aside class="app-sidebar" id="primary-navigation" aria-label="Primary navigation"><a class="brand" href="/?env=production"><span class="dot"></span><span>ts-cloud</span></a><div class="sidebar-context"><span class="context-label">Project</span><strong>stacks-production-app</strong></div><div class="environment-picker" aria-label="Environment"><span class="context-label">Environment</span><details><summary class="environment-current production"><span>PROD</span><strong>production</strong></summary></details></div><button class="command-trigger" type="button" aria-keyshortcuts="Meta+K Control+K"><span>Search resources</span><kbd>⌘ K</kbd></button><div class="nav-groups"><section class="nav-group"><h2>Overview</h2><a class="active" href="/?env=production">Dashboard</a><a href="/server/activity?env=production">Activity</a></section><section class="nav-group"><h2>Applications</h2><a class="" href="/server/sites?env=production">Services</a><a class="" href="/server/deployments?env=production">Deployments</a><a class="" href="/server/logs?env=production">Logs</a><a class="" href="/integrations?env=production">Git integrations</a><a class="" href="/applications/new?env=production">Create application</a><a class="" href="/applications/compose?env=production">Compose applications</a></section><section class="nav-group"><h2>Operations</h2><a class="" href="/operations/queue?env=production">Deployment queue</a><a class="" href="/operations/previews?env=production">Preview environments</a><a class="" href="/operations/releases?env=production">Releases & promotion</a><a class="" href="/operations/regions?env=production">Regions & failover</a><a class="" href="/operations/maintenance?env=production">Maintenance & DR</a><a class="" href="/operations/workloads?env=production">Workloads</a><a class="" href="/operations/observability?env=production">Observability</a><a class="" href="/operations/alerts?env=production">Alerts & health</a><a class="" href="/operations/spend?env=production">Spend & budgets</a><a href="/server/metrics?env=production">Metrics</a><a href="/server/services?env=production">Runtime services</a><a class="" href="/operations/jobs?env=production">Workers & schedules</a><a class="" href="/operations/configuration?env=production">Environment & secrets</a><a class="" href="/data/backups?env=production">Backups & recovery</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/actions?env=production">Run operations</a></section><section class="nav-group"><h2>Infrastructure</h2><a class="" href="/infrastructure/topology?env=production">Infrastructure map</a><a class="" href="/data/services?env=production">Data services</a><a class="" href="/data/volumes?env=production">Persistent volumes</a><a href="/server/firewall?env=production">Network & firewall</a><a href="/server/ssh-keys?env=production">SSH keys</a><a class="" href="/server/fleet?env=production">Fleet inventory</a><a class="" href="/server/capacity?env=production">Capacity & placement</a><a href="/security?env=production">Security posture</a><a href="/server/terminal?env=production">Terminal</a></section><section class="nav-group"><h2>Organization</h2><a class="" href="/server/team?env=production">People & access</a><a class="" href="/account/automation?env=production">API & automation</a></section><section class="nav-group"><h2>Account</h2><a class="" href="/account/security?env=production">Sign-in & security</a></section></div><form method="post" action="/api/logout" class="signout"><button type="submit">Sign out</button></form></aside><dialog class="command-palette" aria-labelledby="command-title"><div class="command-search"><span aria-hidden="true">⌕</span><input type="search" placeholder="Search services, domains, deployments…" aria-label="Search resources" autocomplete="off"><button type="button" class="command-close" aria-label="Close search">Esc</button></div><h2 id="command-title" class="sr-only">Search resources and navigation</h2><div class="command-status" role="status">Start typing to search this project.</div><section class="saved-views" aria-labelledby="saved-views-title"><div class="saved-views-heading"><h3 id="saved-views-title">Saved views</h3><form class="save-view-form"><label class="sr-only" for="save-view-name">Saved view name</label><input id="save-view-name" maxlength="64" placeholder="Name this view" autocomplete="off"><button type="submit">Save current filters</button></form></div><div class="saved-view-list"></div></section><form class="tag-result-form"><label for="tag-result-name">Tag selected resource</label><input id="tag-result-name" maxlength="32" placeholder="customer-facing" pattern="[A-Za-z0-9][A-Za-z0-9 -]{0,31}" autocomplete="off"><input class="tag-color" type="color" value="#5a8be0" aria-label="Tag color"><button type="submit">Add tag</button></form><div class="command-results" role="listbox" aria-label="Search results"></div><footer><span>↑ ↓ navigate</span><span>Enter open</span><span>Esc close</span></footer></dialog><div class="context-bar" aria-label="Current scope"><div class="context-path"><div class="context-breadcrumb"><span>stacks-production-app</span><i>/</i><strong>production</strong></div><div class="context-filters" aria-label="Active filters"></div></div><span class="scope-safety production">Production scope</span></div> <script data-stx-scoped data-stx-run="always">
|
|
167
167
|
(function() {
|
|
168
168
|
var { batch, computed, configureFetch, defineEmits, defineExpose, definePageMeta, defineProps, defineSlots, defineStore, derived, effect, goBack, goForward, inject, invalidateRoute, isDerived, isSignal, navigate, nextTick, onBeforeMount, onBeforeUnmount, onDestroy, onMount, onMounted, onUnmounted, peek, provide, reactive, ref, refresh, registerStoresClient, setRouteParams, state, untrack, useAsync, useClickOutside, useColorMode, useCookie, useCounter, useDark, useDebounce, useDebouncedValue, useEventListener, useFetch, useFocus, useHead, useId, useInterval, useLocalStorage, useMediaQuery, useMutation, useOptimistic, usePreferredContrast, usePreferredDark, usePreferredLight, usePreferredReducedMotion, useQuery, useReactiveProp, useRef, useRoute, useRouteParam, useRouteParams, useScrollLock, useSearchParams, useSeoMeta, useSessionStorage, useSlots, useStore, useThrottle, useTimeout, useToggle, useWebSocket, watch, watchEffect, watchMultiple, withDefaults } = window.stx;
|
|
169
169
|
var __destroyHooks = [];
|
|
@@ -514,6 +514,6 @@ if(window.stx)window.stx._latestSetup=__stx_setup_1787110573869_32;
|
|
|
514
514
|
|
|
515
515
|
|
|
516
516
|
try { if (typeof __stxScopeRenames !== 'undefined' && __stxScopeRenames) { for (var __stxRK in __stxScopeRenames) __scopeRegistration[__stxRK] = __stxScopeRenames[__stxRK]; } } catch (e) { /* no renames */ }
|
|
517
|
-
window.stx._scopes['
|
|
517
|
+
window.stx._scopes['stx_scope_nav_46'] = __scopeRegistration;
|
|
518
518
|
})();
|
|
519
519
|
</script> <div class="wrap"><header class="page"><div><h1>Server Dashboard</h1><p>Hetzner · fsn1 · Linux</p><div class="server-line"><span>IP <b>-</b></span><span>Uptime <b>-</b></span><span>CPUs <b>4</b></span><span class="pill" :class="overallC()" x-cloak>{{ overallWordC() }}</span></div></div><div class="header-actions" x-cloak><span class="env" :class="{ bad: pollingState() === 'stale' }" :title="pollingState() === 'stale' ? pollingError() : 'Auto-refreshing every 10s'" x-cloak>{{ indicator() }}</span><a class="btn ghost" href="/server/actions">Operations</a></div></header><div class="grid cards"><a class="panel" href="/server/metrics"><h3>CPU utilization</h3><div class="stat" x-cloak>{{ pDisp(cpuP()) }}<small x-cloak>{{ cpuSub() }}</small></div><div :class="barCss(cpuP())"><i :style="barStyle(cpuP())"></i></div></a><a class="panel" href="/server/metrics"><h3>Memory</h3><div class="stat" x-cloak>{{ pDisp(memP()) }}<small x-cloak>{{ memSub() }}</small></div><div :class="barCss(memP())"><i :style="barStyle(memP())"></i></div></a><a class="panel" href="/server/metrics"><h3>Disk</h3><div class="stat" x-cloak>{{ pDisp(diskP()) }}<small></small></div><div :class="barCss(diskP())"><i :style="barStyle(diskP())"></i></div></a><a class="panel" href="/data/backups"><h3>Backups</h3><div class="stat">0 MB</div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">Last not configured</p></a></div><div class="grid cards-3" style="margin-top:16px;"><a class="panel" href="/server/security"><h3>Security</h3><div class="stat"><span class="pill ok">configured</span></div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">0 listeners · 0 certs</p></a><a class="panel" href="/server/diagnostics"><h3>Diagnostics</h3><div class="stat">0<small> fail</small></div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">0 warnings</p></a><a class="panel" href="/server/activity"><h3>Activity</h3><div class="stat">0</div><p style="color: var(--txt2); font-size: 13px; margin-top: 8px;">deploys, warnings, key changes</p></a></div><div class="section"><h2>Resource Shape <a class="more" href="/server/metrics">Open health →</a></h2><div class="chart-panel panel"><svg class="chart resource-chart" viewBox="0 0 640 210" role="img" aria-label="Server resource chart"><rect x="1" y="1" width="638" height="208" rx="14" class="chart-shell"></rect><line x1="38" x2="620" y1="166" y2="166" class="chart-grid"></line><text x="28" y="170" text-anchor="end" class="chart-axis">0</text><line x1="38" x2="620" y1="129" y2="129" class="chart-grid"></line><text x="28" y="133" text-anchor="end" class="chart-axis">25</text><line x1="38" x2="620" y1="92" y2="92" class="chart-grid"></line><text x="28" y="96" text-anchor="end" class="chart-axis">50</text><line x1="38" x2="620" y1="55" y2="55" class="chart-grid"></line><text x="28" y="59" text-anchor="end" class="chart-axis">75</text><line x1="38" x2="620" y1="18" y2="18" class="chart-grid"></line><text x="28" y="22" text-anchor="end" class="chart-axis">100</text><g class="bar-mark ok"><rect x="61.59459459459464" y="149.72" width="141.56756756756755" height="16.28" rx="7"></rect><text x="132.37837837837841" y="141.72" text-anchor="middle" class="chart-value">11%</text><text x="132.37837837837841" y="190" text-anchor="middle" class="chart-label">CPU</text><title>11% busy · 0.42 load / 4 vCPU</title></g><g class="bar-mark ok"><rect x="258.21621621621625" y="118.64" width="141.56756756756755" height="47.36" rx="7"></rect><text x="329" y="110.64" text-anchor="middle" class="chart-value">32%</text><text x="329" y="190" text-anchor="middle" class="chart-label">Memory</text><title>2.4 / 7.7 GB</title></g><g class="bar-mark ok"><rect x="454.83783783783787" y="109.76" width="141.56756756756755" height="56.239999999999995" rx="7"></rect><text x="525.6216216216217" y="101.76" text-anchor="middle" class="chart-value">38%</text><text x="525.6216216216217" y="190" text-anchor="middle" class="chart-label">Disk</text><title>0 / 0 GB</title></g></svg></div></div><div class="section"><h2>Services <span class="more"><a href="/server/services">View all →</a><a href="/server/logs">Logs →</a><a href="/server/security">Security →</a></span></h2><div class="panel" x-cloak><div class="svc" x-cloak><template :for="svc in servicesC()"><div class="item" x-cloak>{{ svc.name }} <span class="pill" :class="svcTone(svc.status)" x-cloak>{{ svc.status }}</span></div></template></div><div class="compact empty" @show="servicesC().length === 0" x-cloak><strong>No managed services</strong><span>Configured services will appear after the next successful server probe.</span></div></div></div><div class="section"><h2>SSH Keys <a class="more" href="/server/ssh-keys">Manage →</a></h2><div class="panel"><div class="compact empty"><strong>No SSH keys configured</strong><span>Add keys from the management page and apply them on the next deploy.</span></div><p class="note">SSH keys are managed in <span class="mono">infrastructure.compute.sshKeys</span> in your cloud config and applied on the next <span class="mono">cloud deploy</span>.</p></div></div><div class="section"><h2>Sites <a class="more" href="/server/sites">View all →</a></h2><div class="panel"><table><thead><tr><th scope="col">Site</th><th scope="col">Project</th><th scope="col">Route</th><th scope="col">Response</th><th scope="col">TLS</th><th scope="col">Deploy</th><th scope="col">Status</th></tr></thead><tbody><tr><td><b>main</b></td><td><span class="tag">stacks</span></td><td><a href="https://stacksjs.com" class="mono">stacksjs.com</a></td><td class="mono">pending</td><td><span class="warn pill">https</span></td><td style="color: var(--txt2)">service</td><td><span class="pill ok">live</span></td></tr><tr><td><b>api</b></td><td><span class="tag">stacks</span></td><td><span class="mono">internal</span></td><td class="mono">pending</td><td><span class="warn pill">loopback</span></td><td style="color: var(--txt2)">service</td><td><span class="pill ok">live</span></td></tr><tr><td><b>docs</b></td><td><span class="tag">stacks</span></td><td><a href="https://stacksjs.com/docs" class="mono">stacksjs.com/docs</a></td><td class="mono">pending</td><td><span class="warn pill">https</span></td><td style="color: var(--txt2)">server static</td><td><span class="pill ok">live</span></td></tr><tr><td><b>blog</b></td><td><span class="tag">stacks</span></td><td><a href="https://stacksjs.com/blog" class="mono">stacksjs.com/blog</a></td><td class="mono">pending</td><td><span class="warn pill">https</span></td><td style="color: var(--txt2)">server static</td><td><span class="pill ok">live</span></td></tr><tr><td><b>public</b></td><td><span class="tag">stacks</span></td><td><a href="https://stacksjs.com" class="mono">stacksjs.com</a></td><td class="mono">pending</td><td><span class="warn pill">https</span></td><td style="color: var(--txt2)">server static</td><td><span class="pill warn">shadowed</span></td></tr><tr><td><b>verygoodadblock</b></td><td><span class="tag">stacks</span></td><td><a href="https://verygoodadblock.org" class="mono">verygoodadblock.org</a></td><td class="mono">pending</td><td><span class="warn pill">https</span></td><td style="color: var(--txt2)">server static</td><td><span class="pill ok">live</span></td></tr></tbody></table></div></div><div class="cols section"><div><h2>Recent Deployments <a class="more" href="/server/deployments">View all →</a></h2><div class="panel"><svg class="chart deployment-chart disabled" viewBox="0 0 640 164" role="img" aria-label="No deployment history"><rect x="1" y="1" width="638" height="162" rx="14" class="chart-shell"></rect><text x="320" y="76" text-anchor="middle" class="chart-empty-title">No deploy records yet</text><text x="320" y="100" text-anchor="middle" class="chart-empty-sub">Deploy again and this timeline will fill in automatically.</text></svg><div class="compact empty"><strong>No recent deployments</strong><span>No deployment history has been recorded yet.</span></div></div></div><div><h2>Queues & Scheduler <a class="more" href="/server/workers">Details →</a></h2><div class="panel"><div class="kv"><span>queue:default ×2</span><span class="pill ok">running</span></div><div class="kv"><span>queue:emails ×1</span><span class="pill ok">running</span></div><div class="kv"><span>scheduler</span><span class="ok pill">on · 36s ago</span></div></div><div style="height: 16px"></div><h2>Backups <a class="more" href="/data/backups">Details →</a></h2><div class="panel"><div class="kv"><span>destination</span><span class="mono">off</span></div><div class="kv"><span>retention</span><span>0 copies</span></div><div class="kv"><span>last run</span><span style="color: var(--txt2)">not configured</span></div></div></div></div></div></body></html>
|