This commit is contained in:
Benjamin Toby 2026-03-14 08:49:12 +01:00
parent 971695c6c2
commit c5bbe1361a
52 changed files with 363 additions and 80 deletions

2
dist/web/BUILD_ID vendored
View File

@ -1 +1 @@
Ac6Q3W_cSGiBJUiUxpsfm hp8Dmk2dba-pzMh79OIf7

View File

@ -5,8 +5,8 @@
"devFiles": [], "devFiles": [],
"ampDevFiles": [], "ampDevFiles": [],
"lowPriorityFiles": [ "lowPriorityFiles": [
"static/Ac6Q3W_cSGiBJUiUxpsfm/_buildManifest.js", "static/hp8Dmk2dba-pzMh79OIf7/_buildManifest.js",
"static/Ac6Q3W_cSGiBJUiUxpsfm/_ssgManifest.js" "static/hp8Dmk2dba-pzMh79OIf7/_ssgManifest.js"
], ],
"rootMainFiles": [], "rootMainFiles": [],
"pages": { "pages": {
@ -54,9 +54,9 @@
"static/chunks/433-ace0b205fb566ad3.js", "static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js", "static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/464-f898cadde407dd9f.js", "static/chunks/926-4b397e2b281b7271.js",
"static/chunks/pages/admin-8a0fdb80e9b4248f.js" "static/chunks/pages/admin-914586c03dfda5c1.js"
], ],
"/admin/services": [ "/admin/services": [
"static/chunks/webpack-38cee4c0e358b1a3.js", "static/chunks/webpack-38cee4c0e358b1a3.js",
@ -68,9 +68,9 @@
"static/chunks/433-ace0b205fb566ad3.js", "static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js", "static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/464-f898cadde407dd9f.js", "static/chunks/926-4b397e2b281b7271.js",
"static/chunks/pages/admin/services-68efb2b49e62c913.js" "static/chunks/pages/admin/services-16971626ad193c95.js"
], ],
"/admin/services/[service_name]": [ "/admin/services/[service_name]": [
"static/chunks/webpack-38cee4c0e358b1a3.js", "static/chunks/webpack-38cee4c0e358b1a3.js",
@ -82,9 +82,9 @@
"static/chunks/433-ace0b205fb566ad3.js", "static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js", "static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/464-f898cadde407dd9f.js", "static/chunks/926-4b397e2b281b7271.js",
"static/chunks/pages/admin/services/[service_name]-0049c2898ea64cc0.js" "static/chunks/pages/admin/services/[service_name]-e8b08e5c11b1b12c.js"
], ],
"/admin/settings": [ "/admin/settings": [
"static/chunks/webpack-38cee4c0e358b1a3.js", "static/chunks/webpack-38cee4c0e358b1a3.js",
@ -96,9 +96,21 @@
"static/chunks/433-ace0b205fb566ad3.js", "static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js", "static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/settings-f58d63b2752f72a6.js" "static/chunks/pages/admin/settings-f58d63b2752f72a6.js"
], ],
"/admin/shell": [
"static/chunks/webpack-38cee4c0e358b1a3.js",
"static/chunks/framework-bfa817c72d812316.js",
"static/chunks/main-761b7faf59ba862f.js",
"static/chunks/29107295-2819ba6e51dbf961.js",
"static/chunks/e5d67320-ccbab4288ca637ad.js",
"static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js",
"static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/shell-c4ef7e6bc7ca42e9.js"
],
"/admin/users": [ "/admin/users": [
"static/chunks/webpack-38cee4c0e358b1a3.js", "static/chunks/webpack-38cee4c0e358b1a3.js",
"static/chunks/framework-bfa817c72d812316.js", "static/chunks/framework-bfa817c72d812316.js",
@ -108,7 +120,7 @@
"static/chunks/664-e347d64e56042a02.js", "static/chunks/664-e347d64e56042a02.js",
"static/chunks/433-ace0b205fb566ad3.js", "static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/users-73e9775838b56d95.js" "static/chunks/pages/admin/users-73e9775838b56d95.js"
], ],
"/admin/users/[deployment_user_id]": [ "/admin/users/[deployment_user_id]": [
@ -124,7 +136,7 @@
"static/chunks/281-dcee0c6401936d5e.js", "static/chunks/281-dcee0c6401936d5e.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js", "static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/users/[deployment_user_id]-fb1c3c9148c518cd.js" "static/chunks/pages/admin/users/[deployment_user_id]-fb1c3c9148c518cd.js"
], ],
"/admin/users/add-user": [ "/admin/users/add-user": [
@ -137,7 +149,7 @@
"static/chunks/433-ace0b205fb566ad3.js", "static/chunks/433-ace0b205fb566ad3.js",
"static/chunks/7-f0121001f735b8fe.js", "static/chunks/7-f0121001f735b8fe.js",
"static/chunks/827-7975edcf8481ec69.js", "static/chunks/827-7975edcf8481ec69.js",
"static/chunks/910-215ca9612c9e2400.js", "static/chunks/910-7de3855073c34589.js",
"static/chunks/pages/admin/users/add-user-1db7c9ee89830b5b.js" "static/chunks/pages/admin/users/add-user-1db7c9ee89830b5b.js"
], ],
"/auth/login": [ "/auth/login": [

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
{"version":1,"files":["../../node_modules/styled-jsx/index.js","../../node_modules/styled-jsx/package.json","../../node_modules/styled-jsx/dist/index/index.js","../../node_modules/react/package.json","../../node_modules/react/index.js","../../node_modules/client-only/package.json","../../node_modules/react/cjs/react.production.js","../../node_modules/client-only/index.js","../../node_modules/styled-jsx/style.js","../../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../../node_modules/next/package.json","../../node_modules/next/dist/server/body-streams.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/picocolors.js","../../node_modules/next/dist/shared/lib/constants.js","../../node_modules/next/dist/server/web/utils.js","../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../../node_modules/next/dist/shared/lib/runtime-config.external.js","../../node_modules/next/dist/compiled/lru-cache/package.json","../../node_modules/next/dist/compiled/ws/package.json","../../node_modules/next/dist/compiled/node-html-parser/package.json","../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../node_modules/next/dist/compiled/lru-cache/index.js","../../node_modules/next/dist/compiled/ws/index.js","../../node_modules/next/dist/compiled/node-html-parser/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/@swc/helpers/package.json","../../node_modules/next/dist/client/components/async-local-storage.js","../../node_modules/next/dist/shared/lib/error-source.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../node_modules/next/dist/compiled/debug/package.json","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/compiled/debug/index.js","../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]} {"version":1,"files":["../../node_modules/styled-jsx/index.js","../../node_modules/styled-jsx/package.json","../../node_modules/styled-jsx/dist/index/index.js","../../node_modules/react/package.json","../../node_modules/react/index.js","../../node_modules/client-only/package.json","../../node_modules/react/cjs/react.production.js","../../node_modules/client-only/index.js","../../node_modules/styled-jsx/style.js","../../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../../node_modules/next/package.json","../../node_modules/next/dist/server/body-streams.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/picocolors.js","../../node_modules/next/dist/shared/lib/constants.js","../../node_modules/next/dist/server/web/utils.js","../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../../node_modules/next/dist/shared/lib/runtime-config.external.js","../../node_modules/next/dist/compiled/ws/package.json","../../node_modules/next/dist/compiled/node-html-parser/package.json","../../node_modules/next/dist/compiled/lru-cache/package.json","../../node_modules/@swc/helpers/_/_interop_require_default/package.json","../../node_modules/next/dist/compiled/ws/index.js","../../node_modules/next/dist/compiled/node-html-parser/index.js","../../node_modules/next/dist/compiled/lru-cache/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/@swc/helpers/package.json","../../node_modules/next/dist/client/components/async-local-storage.js","../../node_modules/next/dist/shared/lib/error-source.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../node_modules/next/dist/compiled/debug/package.json","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/compiled/debug/index.js","../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":4,"routes":{},"dynamicRoutes":{},"preview":{"previewModeId":"41e1091eb1109508c747b622a00635b1","previewModeSigningKey":"f6adb768298c87f60e74ea2b05e5275c23880f86ace11d9370b0851a04a2b51b","previewModeEncryptionKey":"4eff9a582f5e38502da59c29d949bca03ecac20f6a34ba771d525f72da7816a0"},"notFoundRoutes":[]} {"version":4,"routes":{},"dynamicRoutes":{},"preview":{"previewModeId":"c4721f018fc5fea1b5afce9998704450","previewModeSigningKey":"8d66936831b01d04f26054b37825829be522efd00da72ffe585055cbcaf33ad3","previewModeEncryptionKey":"27ebfd2d91e169ca30163d491e4ef024a413647900c7dfc786915953ded846e3"},"notFoundRoutes":[]}

View File

@ -1 +1 @@
{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/admin/services/[service_name]","regex":"^/admin/services/([^/]+?)(?:/)?$","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"namedRegex":"^/admin/services/(?<nxtPservice_name>[^/]+?)(?:/)?$"},{"page":"/admin/users/[deployment_user_id]","regex":"^/admin/users/([^/]+?)(?:/)?$","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"namedRegex":"^/admin/users/(?<nxtPdeployment_user_id>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/404","regex":"^/404(?:/)?$","routeKeys":{},"namedRegex":"^/404(?:/)?$"},{"page":"/admin","regex":"^/admin(?:/)?$","routeKeys":{},"namedRegex":"^/admin(?:/)?$"},{"page":"/admin/services","regex":"^/admin/services(?:/)?$","routeKeys":{},"namedRegex":"^/admin/services(?:/)?$"},{"page":"/admin/settings","regex":"^/admin/settings(?:/)?$","routeKeys":{},"namedRegex":"^/admin/settings(?:/)?$"},{"page":"/admin/users","regex":"^/admin/users(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users(?:/)?$"},{"page":"/admin/users/add-user","regex":"^/admin/users/add\\-user(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users/add\\-user(?:/)?$"},{"page":"/auth/login","regex":"^/auth/login(?:/)?$","routeKeys":{},"namedRegex":"^/auth/login(?:/)?$"},{"page":"/auth/logout","regex":"^/auth/logout(?:/)?$","routeKeys":{},"namedRegex":"^/auth/logout(?:/)?$"},{"page":"/auth/signup","regex":"^/auth/signup(?:/)?$","routeKeys":{},"namedRegex":"^/auth/signup(?:/)?$"}],"dataRoutes":[{"page":"/","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/index.json$"},{"page":"/admin","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin.json$"},{"page":"/admin/services","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/services.json$"},{"page":"/admin/services/[service_name]","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/services/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/services/(?<nxtPservice_name>[^/]+?)\\.json$"},{"page":"/admin/settings","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/settings.json$"},{"page":"/admin/users","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/users.json$"},{"page":"/admin/users/add-user","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/users/add-user.json$"},{"page":"/admin/users/[deployment_user_id]","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/users/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/admin/users/(?<nxtPdeployment_user_id>[^/]+?)\\.json$"},{"page":"/auth/login","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/auth/login.json$"},{"page":"/auth/logout","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/auth/logout.json$"},{"page":"/auth/signup","dataRouteRegex":"^/_next/data/Ac6Q3W_cSGiBJUiUxpsfm/auth/signup.json$"}],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]} {"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[{"page":"/admin/services/[service_name]","regex":"^/admin/services/([^/]+?)(?:/)?$","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"namedRegex":"^/admin/services/(?<nxtPservice_name>[^/]+?)(?:/)?$"},{"page":"/admin/users/[deployment_user_id]","regex":"^/admin/users/([^/]+?)(?:/)?$","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"namedRegex":"^/admin/users/(?<nxtPdeployment_user_id>[^/]+?)(?:/)?$"}],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/404","regex":"^/404(?:/)?$","routeKeys":{},"namedRegex":"^/404(?:/)?$"},{"page":"/admin","regex":"^/admin(?:/)?$","routeKeys":{},"namedRegex":"^/admin(?:/)?$"},{"page":"/admin/services","regex":"^/admin/services(?:/)?$","routeKeys":{},"namedRegex":"^/admin/services(?:/)?$"},{"page":"/admin/settings","regex":"^/admin/settings(?:/)?$","routeKeys":{},"namedRegex":"^/admin/settings(?:/)?$"},{"page":"/admin/shell","regex":"^/admin/shell(?:/)?$","routeKeys":{},"namedRegex":"^/admin/shell(?:/)?$"},{"page":"/admin/users","regex":"^/admin/users(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users(?:/)?$"},{"page":"/admin/users/add-user","regex":"^/admin/users/add\\-user(?:/)?$","routeKeys":{},"namedRegex":"^/admin/users/add\\-user(?:/)?$"},{"page":"/auth/login","regex":"^/auth/login(?:/)?$","routeKeys":{},"namedRegex":"^/auth/login(?:/)?$"},{"page":"/auth/logout","regex":"^/auth/logout(?:/)?$","routeKeys":{},"namedRegex":"^/auth/logout(?:/)?$"},{"page":"/auth/signup","regex":"^/auth/signup(?:/)?$","routeKeys":{},"namedRegex":"^/auth/signup(?:/)?$"}],"dataRoutes":[{"page":"/","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/index.json$"},{"page":"/admin","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin.json$"},{"page":"/admin/services","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/services.json$"},{"page":"/admin/services/[service_name]","routeKeys":{"nxtPservice_name":"nxtPservice_name"},"dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/services/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/services/(?<nxtPservice_name>[^/]+?)\\.json$"},{"page":"/admin/settings","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/settings.json$"},{"page":"/admin/shell","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/shell.json$"},{"page":"/admin/users","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users.json$"},{"page":"/admin/users/add-user","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users/add-user.json$"},{"page":"/admin/users/[deployment_user_id]","routeKeys":{"nxtPdeployment_user_id":"nxtPdeployment_user_id"},"dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users/([^/]+?)\\.json$","namedDataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/admin/users/(?<nxtPdeployment_user_id>[^/]+?)\\.json$"},{"page":"/auth/login","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/auth/login.json$"},{"page":"/auth/logout","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/auth/logout.json$"},{"page":"/auth/signup","dataRouteRegex":"^/_next/data/hp8Dmk2dba\\-pzMh79OIf7/auth/signup.json$"}],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":1,"functions":{"/_app":{},"/admin/settings":{},"/admin/users/[deployment_user_id]":{},"/admin":{},"/admin/users/add-user":{},"/admin/services/[service_name]":{},"/admin/services":{},"/auth/login":{},"/admin/users":{},"/auth/logout":{},"/":{},"/auth/signup":{}}} {"version":1,"functions":{"/_app":{},"/admin/services/[service_name]":{},"/admin/services":{},"/admin":{},"/admin/shell":{},"/admin/settings":{},"/admin/users/[deployment_user_id]":{},"/admin/users/add-user":{},"/admin/users":{},"/auth/login":{},"/auth/logout":{},"/":{},"/auth/signup":{}}}

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"/_document":"pages/_document.js","/404":"pages/404.html","/api/admin/download-private-ssh-key":"pages/api/admin/download-private-ssh-key.js","/api/admin/delete-user":"pages/api/admin/delete-user.js","/api/admin/edit-user":"pages/api/admin/edit-user.js","/api/admin/settings":"pages/api/admin/settings.js","/api/auth/login":"pages/api/auth/login.js","/api/hello":"pages/api/hello.js","/api/auth/signup":"pages/api/auth/signup.js","/admin":"pages/admin.js","/_app":"pages/_app.js","/admin/services":"pages/admin/services.js","/admin/services/[service_name]":"pages/admin/services/[service_name].js","/_error":"pages/_error.js","/admin/users/add-user":"pages/admin/users/add-user.js","/admin/users":"pages/admin/users.js","/admin/settings":"pages/admin/settings.js","/admin/users/[deployment_user_id]":"pages/admin/users/[deployment_user_id].js","/":"pages/index.js","/auth/logout":"pages/auth/logout.js","/auth/signup":"pages/auth/signup.js","/auth/login":"pages/auth/login.js"} {"/_error":"pages/_error.js","/_document":"pages/_document.js","/404":"pages/404.html","/api/admin/delete-user":"pages/api/admin/delete-user.js","/api/admin/download-private-ssh-key":"pages/api/admin/download-private-ssh-key.js","/api/admin/edit-user":"pages/api/admin/edit-user.js","/api/admin/settings":"pages/api/admin/settings.js","/api/auth/login":"pages/api/auth/login.js","/api/auth/signup":"pages/api/auth/signup.js","/api/hello":"pages/api/hello.js","/admin":"pages/admin.js","/admin/services":"pages/admin/services.js","/_app":"pages/_app.js","/admin/shell":"pages/admin/shell.js","/admin/services/[service_name]":"pages/admin/services/[service_name].js","/admin/settings":"pages/admin/settings.js","/admin/users/add-user":"pages/admin/users/add-user.js","/admin/users":"pages/admin/users.js","/admin/users/[deployment_user_id]":"pages/admin/users/[deployment_user_id].js","/auth/logout":"pages/auth/logout.js","/auth/login":"pages/auth/login.js","/":"pages/index.js","/auth/signup":"pages/auth/signup.js"}

View File

@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/29107295-2819ba6e51dbf961.js" defer=""></script><script src="/_next/static/chunks/664-e347d64e56042a02.js" defer=""></script><script src="/_next/static/chunks/pages/404-8292e1046538596b.js" defer=""></script><script src="/_next/static/Ac6Q3W_cSGiBJUiUxpsfm/_buildManifest.js" defer=""></script><script src="/_next/static/Ac6Q3W_cSGiBJUiUxpsfm/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><main class="flex flex-col items-center twui-main w-screen h-screen overflow-hidden"><section class="flex flex-col items-center px-4 sm:px-10 py-10 twui-section w-full h-full"><div class="flex w-full max-w-container gap-4 justify-between flex-wrap flex-col xl:flex-row items-start xl:items-center twui-container grid-frame grid-cols-1 h-full"><div class="flex flex-col items-start gap-4 twui-stack w-full justify-between h-full grid-cell"><div class="flex flex-col items-start twui-stack gap-0"><div class="flex flex-row gap-2 flex-wrap items-center twui-row"><div class="flex flex-row gap-2 flex-wrap items-center twui-row p-6"><a aria-label="TurboCI home" class="inline-flex items-center gap-3" href="/"><svg viewBox="0 0 48 48" aria-hidden="true" class="h-10 w-10 shrink-0"><defs><linearGradient id="_R_1am_" x1="9" y1="9" x2="31" y2="34" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#9cf0c0"></stop><stop offset="100%" stop-color="#42d392"></stop></linearGradient><linearGradient id="_R_1amH1_" x1="22" y1="22" x2="36" y2="40" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#2bc67e"></stop><stop offset="100%" stop-color="#1f8458"></stop></linearGradient></defs><path d="M35 6H23.6c-2 0-3.8 1-4.8 2.7L7.5 28.3c-1.4 2.5.4 5.7 3.2 5.7h9.1c2 0 3.8-1 4.8-2.7l11.2-19.6C39.6 9.2 37.8 6 35 6Z" fill="url(#_R_1am_)"></path><path d="M23.9 24h13.4c2.8 0 4.6 3.1 3.2 5.6l-4.1 7.1c-1 1.7-2.8 2.7-4.8 2.7H18.2c-2.8 0-4.6-3.1-3.2-5.6l4.1-7.1c1-1.7 2.8-2.7 4.8-2.7Z" fill="url(#_R_1amH1_)"></path></svg><span class="font-display text-[1.02rem] font-semibold tracking-tight text-foreground">TurboCI</span></a></div><div class="border-slate-200 dark:border-white/10 border-0 border-l h-full min-h-5 twui-divider twui-divider-vertical border-solid"></div></div><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div></div><div class="flex flex-col items-center justify-center gap-4 w-full h-full twui-center p-10"><h2 class="text-2xl md:text-3xl mb-4 twui-headings twui-heading twui-h2">Page Not Found!</h2></div><div class="flex flex-col items-start gap-4 twui-stack"><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div><div class="twui-spacer h-20 w-full"></div></div></div></div></section></main></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"Ac6Q3W_cSGiBJUiUxpsfm","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html> <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/29107295-2819ba6e51dbf961.js" defer=""></script><script src="/_next/static/chunks/664-e347d64e56042a02.js" defer=""></script><script src="/_next/static/chunks/pages/404-8292e1046538596b.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_buildManifest.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><main class="flex flex-col items-center twui-main w-screen h-screen overflow-hidden"><section class="flex flex-col items-center px-4 sm:px-10 py-10 twui-section w-full h-full"><div class="flex w-full max-w-container gap-4 justify-between flex-wrap flex-col xl:flex-row items-start xl:items-center twui-container grid-frame grid-cols-1 h-full"><div class="flex flex-col items-start gap-4 twui-stack w-full justify-between h-full grid-cell"><div class="flex flex-col items-start twui-stack gap-0"><div class="flex flex-row gap-2 flex-wrap items-center twui-row"><div class="flex flex-row gap-2 flex-wrap items-center twui-row p-6"><a aria-label="TurboCI home" class="inline-flex items-center gap-3" href="/"><svg viewBox="0 0 48 48" aria-hidden="true" class="h-10 w-10 shrink-0"><defs><linearGradient id="_R_1am_" x1="9" y1="9" x2="31" y2="34" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#9cf0c0"></stop><stop offset="100%" stop-color="#42d392"></stop></linearGradient><linearGradient id="_R_1amH1_" x1="22" y1="22" x2="36" y2="40" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#2bc67e"></stop><stop offset="100%" stop-color="#1f8458"></stop></linearGradient></defs><path d="M35 6H23.6c-2 0-3.8 1-4.8 2.7L7.5 28.3c-1.4 2.5.4 5.7 3.2 5.7h9.1c2 0 3.8-1 4.8-2.7l11.2-19.6C39.6 9.2 37.8 6 35 6Z" fill="url(#_R_1am_)"></path><path d="M23.9 24h13.4c2.8 0 4.6 3.1 3.2 5.6l-4.1 7.1c-1 1.7-2.8 2.7-4.8 2.7H18.2c-2.8 0-4.6-3.1-3.2-5.6l4.1-7.1c1-1.7 2.8-2.7 4.8-2.7Z" fill="url(#_R_1amH1_)"></path></svg><span class="font-display text-[1.02rem] font-semibold tracking-tight text-foreground">TurboCI</span></a></div><div class="border-slate-200 dark:border-white/10 border-0 border-l h-full min-h-5 twui-divider twui-divider-vertical border-solid"></div></div><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div></div><div class="flex flex-col items-center justify-center gap-4 w-full h-full twui-center p-10"><h2 class="text-2xl md:text-3xl mb-4 twui-headings twui-heading twui-h2">Page Not Found!</h2></div><div class="flex flex-col items-start gap-4 twui-stack"><div class="border-slate-200 dark:border-white/10 border-0 border-t w-full twui-divider twui-divider-horizontal border-solid"></div><div class="twui-spacer h-20 w-full"></div></div></div></div></section></main></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/404","query":{},"buildId":"hp8Dmk2dba-pzMh79OIf7","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>

View File

@ -1 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-10090a8ee211d5fd.js" defer=""></script><script src="/_next/static/Ac6Q3W_cSGiBJUiUxpsfm/_buildManifest.js" defer=""></script><script src="/_next/static/Ac6Q3W_cSGiBJUiUxpsfm/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"Ac6Q3W_cSGiBJUiUxpsfm","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html> <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>500: Internal Server Error</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/08e6997802749ec3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/08e6997802749ec3.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-38cee4c0e358b1a3.js" defer=""></script><script src="/_next/static/chunks/framework-bfa817c72d812316.js" defer=""></script><script src="/_next/static/chunks/main-761b7faf59ba862f.js" defer=""></script><script src="/_next/static/chunks/pages/_app-12c3cc69366c709d.js" defer=""></script><script src="/_next/static/chunks/pages/_error-10090a8ee211d5fd.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_buildManifest.js" defer=""></script><script src="/_next/static/hp8Dmk2dba-pzMh79OIf7/_ssgManifest.js" defer=""></script></head><body class="antialiased"><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"hp8Dmk2dba-pzMh79OIf7","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>

1
dist/web/server/pages/admin/shell.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
self.__BUILD_MANIFEST=function(s,a,e,c,t,i,n,d,u){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,e,a,c,u,t,i,"static/chunks/pages/index-5ce092dbf4b7ea2c.js"],"/404":[s,a,"static/chunks/pages/404-8292e1046538596b.js"],"/_error":["static/chunks/pages/_error-10090a8ee211d5fd.js"],"/admin":[s,e,a,c,t,i,n,d,"static/chunks/pages/admin-8a0fdb80e9b4248f.js"],"/admin/services":[s,e,a,c,t,i,n,d,"static/chunks/pages/admin/services-68efb2b49e62c913.js"],"/admin/services/[service_name]":[s,e,a,c,t,i,n,d,"static/chunks/pages/admin/services/[service_name]-0049c2898ea64cc0.js"],"/admin/settings":[s,e,a,c,t,i,n,"static/chunks/pages/admin/settings-f58d63b2752f72a6.js"],"/admin/users":[s,e,a,c,t,n,"static/chunks/pages/admin/users-73e9775838b56d95.js"],"/admin/users/add-user":[s,e,a,c,t,i,n,"static/chunks/pages/admin/users/add-user-1db7c9ee89830b5b.js"],"/admin/users/[deployment_user_id]":[s,e,"static/chunks/ff39441c-88f593a46cb65964.js","static/chunks/d848df63-a470d32e7be4bfe3.js",a,c,"static/chunks/281-dcee0c6401936d5e.js",t,i,n,"static/chunks/pages/admin/users/[deployment_user_id]-fb1c3c9148c518cd.js"],"/auth/login":[s,e,a,c,u,t,i,"static/chunks/pages/auth/login-3f936f997e58438c.js"],"/auth/logout":[s,a,"static/chunks/pages/auth/logout-c8b207f96be4f684.js"],"/auth/signup":[s,e,a,c,t,i,"static/chunks/pages/auth/signup-5c0f6835749e755e.js"],sortedPages:["/","/404","/_app","/_error","/admin","/admin/services","/admin/services/[service_name]","/admin/settings","/admin/users","/admin/users/add-user","/admin/users/[deployment_user_id]","/auth/login","/auth/logout","/auth/signup"]}}("static/chunks/29107295-2819ba6e51dbf961.js","static/chunks/664-e347d64e56042a02.js","static/chunks/e5d67320-ccbab4288ca637ad.js","static/chunks/433-ace0b205fb566ad3.js","static/chunks/7-f0121001f735b8fe.js","static/chunks/827-7975edcf8481ec69.js","static/chunks/910-215ca9612c9e2400.js","static/chunks/464-f898cadde407dd9f.js","static/chunks/225-f257bb5bd6014d68.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[964],{64830:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin",function(){return s(9854)}])},49533:function(e,n,s){"use strict";s.d(n,{Z:function(){return _}});var r=s(85893),i=s(5606),t=s(60),l=s(67294),c=s(55412),a=s(86609),d=s(94655);function o(e){let{link:n,icon:s,...i}=e;return(0,r.jsx)(a.Z,{href:n.url,...i,...n.linkProps,children:(0,r.jsxs)(d.Z,{children:[(0,r.jsx)("span",{children:n.title}),s||(0,r.jsx)(c.Z,{size:17})]})})}var u=s(56211),v=s(45377),x=s(39483),f=s(25808),m=s(96486),p=s.n(m);function j(e){let{service:n}=e,{pageProps:s,ws:c}=(0,l.useContext)(i.AppContext),{deployment:a}=s,{ready:m,setReady:j}=(0,f.Z)(),_=null==a?void 0:a.services.filter(e=>e.parent_service_name==n.service_name),h=[n,..._||[]],[Z,g]=(0,l.useState)(null==h?void 0:h[0]);h.findIndex(e=>e.service_name==(null==Z?void 0:Z.service_name));let N=null==Z?void 0:Z.servers,[w,C]=(0,l.useState)(null==N?void 0:N[0]),k=(0,l.useRef)(void 0);return(0,l.useEffect)(()=>{var e;C(null==Z?void 0:null===(e=Z.servers)||void 0===e?void 0:e[0])},[Z]),(0,l.useEffect)(()=>{if(j(!1),w&&k.current){var e;e=k.current,c.sendData({event:"client:kill-port",server:w,service:p().omit(n,["servers"]),port:e})}setTimeout(()=>{j(!0)},2e3)},[w]),(0,r.jsxs)(t.Z,{className:"grid-cell",children:[(0,r.jsxs)(t.Z,{className:"grid-cell-content",children:[(0,r.jsxs)(d.Z,{className:"w-full justify-between",children:[(0,r.jsx)(u.Z,{children:n.service_name}),(0,r.jsx)(o,{link:{url:"/admin/services/".concat(n.service_name),title:"View"}})]}),(0,r.jsxs)("code",{children:[n.service_name," service"]})]}),(0,r.jsx)("hr",{}),(0,r.jsxs)(t.Z,{className:"gap-0",children:[(0,r.jsxs)(d.Z,{className:"p-4 grid md:grid-cols-2",children:[(0,r.jsx)(x.Z,{options:h.map((e,n)=>({value:e.service_name,title:"Cluster #".concat(n+1)})),changeHandler:e=>{g(h.find(n=>n.service_name==e))}}),N?(0,r.jsx)(x.Z,{options:N.map(e=>({value:e.private_ip,title:e.private_ip})),changeHandler:e=>{C(N.find(n=>n.private_ip==e))}}):void 0]}),m&&w?(0,r.jsx)(v.Z,{server:w,service:n,portRef:k}):void 0]})]})}function _(){let{pageProps:e}=(0,l.useContext)(i.AppContext),{deployment:n,children_services:s}=e,c=null==n?void 0:n.services.filter(e=>!e.parent_service_name);return(0,r.jsx)(t.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:null==c?void 0:c.map((e,n)=>(0,r.jsx)(j,{service:e},n))})}},9854:function(e,n,s){"use strict";s.r(n),s.d(n,{__N_SSP:function(){return p},default:function(){return j}});var r=s(85893),i=s(5606),t=s(94655),l=s(3668),c=s(60),a=s(67294);function d(){let{pageProps:e}=(0,a.useContext)(i.AppContext),{user:n,deployment:s,deployment_id:d}=e;if(!s)return null;let o=s.services.filter(e=>!e.parent_service_name);return(0,r.jsx)(c.Z,{className:"w-full gap-0",children:(0,r.jsxs)(c.Z,{className:"grid-cell-content",children:[(0,r.jsxs)(l.Z,{children:[o.length," Services"]}),(0,r.jsx)(t.Z,{children:o.map((e,n)=>(0,r.jsx)("a",{href:"/admin/services/".concat(e.service_name),children:(0,r.jsx)("code",{children:e.service_name})},n))})]})})}var o=s(33028),u=s(38249),v=s(60705),x=s(49533);function f(){let{pageProps:e}=(0,a.useContext)(i.AppContext),{user:n,deployment:s,deployment_id:t}=e,l=null==s?void 0:s.deployment_name;return(0,r.jsxs)(a.Fragment,{children:[(0,r.jsx)(o.Z,{title:"".concat((0,u.Z)(l)," Deplyoment Dashboard"),description:(0,r.jsxs)(r.Fragment,{children:["Deployment"," ",(0,r.jsx)("code",{children:null==t?void 0:t.split("-").shift()})," > ",(0,r.jsx)("code",{children:null==s?void 0:s.deployment_name})]})}),(0,r.jsx)(v.Z,{}),(0,r.jsx)(d,{}),(0,r.jsx)(v.Z,{}),(0,r.jsx)(x.Z,{})]})}var m=s(89350),p=!0;function j(){return(0,r.jsx)(m.Z,{children:(0,r.jsx)(f,{})})}}},function(e){e.O(0,[662,75,664,433,7,827,910,464,888,774,179],function(){return e(e.s=64830)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[964],{64830:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin",function(){return s(9854)}])},49533:function(e,n,s){"use strict";s.d(n,{Z:function(){return _}});var r=s(85893),i=s(5606),t=s(60),l=s(67294),c=s(55412),a=s(86609),d=s(94655);function o(e){let{link:n,icon:s,...i}=e;return(0,r.jsx)(a.Z,{href:n.url,...i,...n.linkProps,children:(0,r.jsxs)(d.Z,{children:[(0,r.jsx)("span",{children:n.title}),s||(0,r.jsx)(c.Z,{size:17})]})})}var u=s(56211),v=s(1765),x=s(39483),f=s(25808),m=s(96486),p=s.n(m);function j(e){let{service:n}=e,{pageProps:s,ws:c}=(0,l.useContext)(i.AppContext),{deployment:a}=s,{ready:m,setReady:j}=(0,f.Z)(),_=null==a?void 0:a.services.filter(e=>e.parent_service_name==n.service_name),h=[n,..._||[]],[Z,g]=(0,l.useState)(null==h?void 0:h[0]);h.findIndex(e=>e.service_name==(null==Z?void 0:Z.service_name));let N=null==Z?void 0:Z.servers,[w,C]=(0,l.useState)(null==N?void 0:N[0]),k=(0,l.useRef)(void 0);return(0,l.useEffect)(()=>{var e;C(null==Z?void 0:null===(e=Z.servers)||void 0===e?void 0:e[0])},[Z]),(0,l.useEffect)(()=>{if(j(!1),w&&k.current){var e;e=k.current,c.sendData({event:"client:kill-port",server:w,service:p().omit(n,["servers"]),port:e})}setTimeout(()=>{j(!0)},2e3)},[w]),(0,r.jsxs)(t.Z,{className:"grid-cell",children:[(0,r.jsxs)(t.Z,{className:"grid-cell-content",children:[(0,r.jsxs)(d.Z,{className:"w-full justify-between",children:[(0,r.jsx)(u.Z,{children:n.service_name}),(0,r.jsx)(o,{link:{url:"/admin/services/".concat(n.service_name),title:"View"}})]}),(0,r.jsxs)("code",{children:[n.service_name," service"]})]}),(0,r.jsx)("hr",{}),(0,r.jsxs)(t.Z,{className:"gap-0",children:[(0,r.jsxs)(d.Z,{className:"p-4 grid md:grid-cols-2",children:[(0,r.jsx)(x.Z,{options:h.map((e,n)=>({value:e.service_name,title:"Cluster #".concat(n+1)})),changeHandler:e=>{g(h.find(n=>n.service_name==e))}}),N?(0,r.jsx)(x.Z,{options:N.map(e=>({value:e.private_ip,title:e.private_ip})),changeHandler:e=>{C(N.find(n=>n.private_ip==e))}}):void 0]}),m&&w?(0,r.jsx)(v.Z,{server:w,service:n,portRef:k}):void 0]})]})}function _(){let{pageProps:e}=(0,l.useContext)(i.AppContext),{deployment:n,children_services:s}=e,c=null==n?void 0:n.services.filter(e=>!e.parent_service_name);return(0,r.jsx)(t.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:null==c?void 0:c.map((e,n)=>(0,r.jsx)(j,{service:e},n))})}},9854:function(e,n,s){"use strict";s.r(n),s.d(n,{__N_SSP:function(){return p},default:function(){return j}});var r=s(85893),i=s(5606),t=s(94655),l=s(3668),c=s(60),a=s(67294);function d(){let{pageProps:e}=(0,a.useContext)(i.AppContext),{user:n,deployment:s,deployment_id:d}=e;if(!s)return null;let o=s.services.filter(e=>!e.parent_service_name);return(0,r.jsx)(c.Z,{className:"w-full gap-0",children:(0,r.jsxs)(c.Z,{className:"grid-cell-content",children:[(0,r.jsxs)(l.Z,{children:[o.length," Services"]}),(0,r.jsx)(t.Z,{children:o.map((e,n)=>(0,r.jsx)("a",{href:"/admin/services/".concat(e.service_name),children:(0,r.jsx)("code",{children:e.service_name})},n))})]})})}var o=s(33028),u=s(38249),v=s(60705),x=s(49533);function f(){let{pageProps:e}=(0,a.useContext)(i.AppContext),{user:n,deployment:s,deployment_id:t}=e,l=null==s?void 0:s.deployment_name;return(0,r.jsxs)(a.Fragment,{children:[(0,r.jsx)(o.Z,{title:"".concat((0,u.Z)(l)," Deplyoment Dashboard"),description:(0,r.jsxs)(r.Fragment,{children:["Deployment"," ",(0,r.jsx)("code",{children:null==t?void 0:t.split("-").shift()})," > ",(0,r.jsx)("code",{children:null==s?void 0:s.deployment_name})]})}),(0,r.jsx)(v.Z,{}),(0,r.jsx)(d,{}),(0,r.jsx)(v.Z,{}),(0,r.jsx)(x.Z,{})]})}var m=s(89350),p=!0;function j(){return(0,r.jsx)(m.Z,{children:(0,r.jsx)(f,{})})}}},function(e){e.O(0,[662,75,664,433,7,827,910,926,888,774,179],function(){return e(e.s=64830)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148],{55634:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/services",function(){return s(78701)}])},49533:function(e,n,s){"use strict";s.d(n,{Z:function(){return j}});var i=s(85893),r=s(5606),t=s(60),l=s(67294),c=s(55412),a=s(86609),o=s(94655);function u(e){let{link:n,icon:s,...r}=e;return(0,i.jsx)(a.Z,{href:n.url,...r,...n.linkProps,children:(0,i.jsxs)(o.Z,{children:[(0,i.jsx)("span",{children:n.title}),s||(0,i.jsx)(c.Z,{size:17})]})})}var d=s(56211),v=s(1765),f=s(39483),p=s(25808),x=s(96486),m=s.n(x);function _(e){let{service:n}=e,{pageProps:s,ws:c}=(0,l.useContext)(r.AppContext),{deployment:a}=s,{ready:x,setReady:_}=(0,p.Z)(),j=null==a?void 0:a.services.filter(e=>e.parent_service_name==n.service_name),h=[n,...j||[]],[Z,N]=(0,l.useState)(null==h?void 0:h[0]);h.findIndex(e=>e.service_name==(null==Z?void 0:Z.service_name));let g=null==Z?void 0:Z.servers,[w,C]=(0,l.useState)(null==g?void 0:g[0]),k=(0,l.useRef)(void 0);return(0,l.useEffect)(()=>{var e;C(null==Z?void 0:null===(e=Z.servers)||void 0===e?void 0:e[0])},[Z]),(0,l.useEffect)(()=>{if(_(!1),w&&k.current){var e;e=k.current,c.sendData({event:"client:kill-port",server:w,service:m().omit(n,["servers"]),port:e})}setTimeout(()=>{_(!0)},2e3)},[w]),(0,i.jsxs)(t.Z,{className:"grid-cell",children:[(0,i.jsxs)(t.Z,{className:"grid-cell-content",children:[(0,i.jsxs)(o.Z,{className:"w-full justify-between",children:[(0,i.jsx)(d.Z,{children:n.service_name}),(0,i.jsx)(u,{link:{url:"/admin/services/".concat(n.service_name),title:"View"}})]}),(0,i.jsxs)("code",{children:[n.service_name," service"]})]}),(0,i.jsx)("hr",{}),(0,i.jsxs)(t.Z,{className:"gap-0",children:[(0,i.jsxs)(o.Z,{className:"p-4 grid md:grid-cols-2",children:[(0,i.jsx)(f.Z,{options:h.map((e,n)=>({value:e.service_name,title:"Cluster #".concat(n+1)})),changeHandler:e=>{N(h.find(n=>n.service_name==e))}}),g?(0,i.jsx)(f.Z,{options:g.map(e=>({value:e.private_ip,title:e.private_ip})),changeHandler:e=>{C(g.find(n=>n.private_ip==e))}}):void 0]}),x&&w?(0,i.jsx)(v.Z,{server:w,service:n,portRef:k}):void 0]})]})}function j(){let{pageProps:e}=(0,l.useContext)(r.AppContext),{deployment:n,children_services:s}=e,c=null==n?void 0:n.services.filter(e=>!e.parent_service_name);return(0,i.jsx)(t.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:null==c?void 0:c.map((e,n)=>(0,i.jsx)(_,{service:e},n))})}},78701:function(e,n,s){"use strict";s.r(n),s.d(n,{__N_SSP:function(){return v},default:function(){return f}});var i=s(85893),r=s(67294),t=s(5606),l=s(38249),c=s(60705),a=s(33028),o=s(49533);function u(){let{pageProps:e}=(0,r.useContext)(t.AppContext),{user:n,deployment:s,deployment_id:u}=e,d=null==s?void 0:s.deployment_name;return(0,i.jsxs)(r.Fragment,{children:[(0,i.jsx)(a.Z,{title:"".concat((0,l.Z)(d)," Deplyoment Dashboard"),description:(0,i.jsxs)(i.Fragment,{children:["Deployment"," ",(0,i.jsx)("code",{children:null==u?void 0:u.split("-").shift()})," > ",(0,i.jsx)("code",{children:null==s?void 0:s.deployment_name})]})}),(0,i.jsx)(c.Z,{}),(0,i.jsx)(o.Z,{})]})}var d=s(89350),v=!0;function f(){return(0,i.jsx)(d.Z,{children:(0,i.jsx)(u,{})})}}},function(e){e.O(0,[662,75,664,433,7,827,910,926,888,774,179],function(){return e(e.s=55634)}),_N_E=e.O()}]);

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[148],{55634:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/services",function(){return s(78701)}])},49533:function(e,n,s){"use strict";s.d(n,{Z:function(){return j}});var i=s(85893),r=s(5606),t=s(60),l=s(67294),c=s(55412),a=s(86609),o=s(94655);function u(e){let{link:n,icon:s,...r}=e;return(0,i.jsx)(a.Z,{href:n.url,...r,...n.linkProps,children:(0,i.jsxs)(o.Z,{children:[(0,i.jsx)("span",{children:n.title}),s||(0,i.jsx)(c.Z,{size:17})]})})}var d=s(56211),v=s(45377),f=s(39483),p=s(25808),x=s(96486),m=s.n(x);function _(e){let{service:n}=e,{pageProps:s,ws:c}=(0,l.useContext)(r.AppContext),{deployment:a}=s,{ready:x,setReady:_}=(0,p.Z)(),j=null==a?void 0:a.services.filter(e=>e.parent_service_name==n.service_name),h=[n,...j||[]],[Z,N]=(0,l.useState)(null==h?void 0:h[0]);h.findIndex(e=>e.service_name==(null==Z?void 0:Z.service_name));let g=null==Z?void 0:Z.servers,[w,C]=(0,l.useState)(null==g?void 0:g[0]),k=(0,l.useRef)(void 0);return(0,l.useEffect)(()=>{var e;C(null==Z?void 0:null===(e=Z.servers)||void 0===e?void 0:e[0])},[Z]),(0,l.useEffect)(()=>{if(_(!1),w&&k.current){var e;e=k.current,c.sendData({event:"client:kill-port",server:w,service:m().omit(n,["servers"]),port:e})}setTimeout(()=>{_(!0)},2e3)},[w]),(0,i.jsxs)(t.Z,{className:"grid-cell",children:[(0,i.jsxs)(t.Z,{className:"grid-cell-content",children:[(0,i.jsxs)(o.Z,{className:"w-full justify-between",children:[(0,i.jsx)(d.Z,{children:n.service_name}),(0,i.jsx)(u,{link:{url:"/admin/services/".concat(n.service_name),title:"View"}})]}),(0,i.jsxs)("code",{children:[n.service_name," service"]})]}),(0,i.jsx)("hr",{}),(0,i.jsxs)(t.Z,{className:"gap-0",children:[(0,i.jsxs)(o.Z,{className:"p-4 grid md:grid-cols-2",children:[(0,i.jsx)(f.Z,{options:h.map((e,n)=>({value:e.service_name,title:"Cluster #".concat(n+1)})),changeHandler:e=>{N(h.find(n=>n.service_name==e))}}),g?(0,i.jsx)(f.Z,{options:g.map(e=>({value:e.private_ip,title:e.private_ip})),changeHandler:e=>{C(g.find(n=>n.private_ip==e))}}):void 0]}),x&&w?(0,i.jsx)(v.Z,{server:w,service:n,portRef:k}):void 0]})]})}function j(){let{pageProps:e}=(0,l.useContext)(r.AppContext),{deployment:n,children_services:s}=e,c=null==n?void 0:n.services.filter(e=>!e.parent_service_name);return(0,i.jsx)(t.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:null==c?void 0:c.map((e,n)=>(0,i.jsx)(_,{service:e},n))})}},78701:function(e,n,s){"use strict";s.r(n),s.d(n,{__N_SSP:function(){return v},default:function(){return f}});var i=s(85893),r=s(67294),t=s(5606),l=s(38249),c=s(60705),a=s(33028),o=s(49533);function u(){let{pageProps:e}=(0,r.useContext)(t.AppContext),{user:n,deployment:s,deployment_id:u}=e,d=null==s?void 0:s.deployment_name;return(0,i.jsxs)(r.Fragment,{children:[(0,i.jsx)(a.Z,{title:"".concat((0,l.Z)(d)," Deplyoment Dashboard"),description:(0,i.jsxs)(i.Fragment,{children:["Deployment"," ",(0,i.jsx)("code",{children:null==u?void 0:u.split("-").shift()})," > ",(0,i.jsx)("code",{children:null==s?void 0:s.deployment_name})]})}),(0,i.jsx)(c.Z,{}),(0,i.jsx)(o.Z,{})]})}var d=s(89350),v=!0;function f(){return(0,i.jsx)(d.Z,{children:(0,i.jsx)(u,{})})}}},function(e){e.O(0,[662,75,664,433,7,827,910,464,888,774,179],function(){return e(e.s=55634)}),_N_E=e.O()}]);

View File

@ -1 +0,0 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[329],{89426:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/services/[service_name]",function(){return s(52963)}])},52963:function(e,n,s){"use strict";s.r(n),s.d(n,{__N_SSP:function(){return h},default:function(){return _}});var l=s(85893),r=s(67294),i=s(5606),t=s(38249),c=s(60705),a=s(33028),d=s(60),o=s(94655),u=s(45377);function x(e){let{service:n}=e,{pageProps:s}=(0,r.useContext)(i.AppContext),t=n.servers,[c,a]=(0,r.useState)(null==t?void 0:t[0]),x=null!=t&&!!t.length&&!!(t.length%2);return(0,l.jsx)(d.Z,{className:"w-full grid-cell col-span-1 gap-0",children:(0,l.jsxs)(o.Z,{className:"nested-grid-frame xl:grid-cols-2",children:[null==t?void 0:t.map((e,s)=>(0,l.jsx)(u.Z,{server:e,service:n,wrapperProps:{className:"grid-cell"}},s)),x?(0,l.jsx)("div",{className:"grid-cell"}):null]})})}var v=s(39483),p=s(56211);function m(){let{pageProps:e,ws:n}=(0,r.useContext)(i.AppContext),{service:s,deployment:t,children_services:c}=e,a=[s,...c||[]],[u,m]=(0,r.useState)(s||void 0),j=a.findIndex(e=>(null==e?void 0:e.service_name)==(null==u?void 0:u.service_name))+1;return null==u||u.servers,(0,l.jsx)(d.Z,{className:"w-full nested-grid-frame grid-cols-1",children:(0,l.jsxs)(d.Z,{className:"grid-cell gap-0",children:[(0,l.jsx)(o.Z,{className:"grid-cell-content flex-nowrap",children:(0,l.jsxs)(o.Z,{className:"w-full justify-between",children:[(0,l.jsx)(o.Z,{children:(0,l.jsxs)(p.Z,{children:["Cluster #",j]})}),(0,l.jsx)(o.Z,{children:(0,l.jsx)(v.Z,{options:a.map((e,n)=>({value:null==e?void 0:e.service_name,title:"Cluster #".concat(n+1)})),wrapperWrapperProps:{className:"max-w-[250px]"},changeHandler:e=>{m(void 0),n.sendData({event:"client:kill-all-ports"}),setTimeout(()=>{m(a.find(n=>(null==n?void 0:n.service_name)==e)||void 0)},200)}})})]})}),(0,l.jsx)("hr",{}),u?(0,l.jsx)(x,{service:u}):void 0]})})}function j(){let{pageProps:e}=(0,r.useContext)(i.AppContext),{service:n,deployment:s}=e,d=null==s?void 0:s.deployment_name,o=null==n?void 0:n.service_name;return(0,l.jsxs)(r.Fragment,{children:[(0,l.jsx)(a.Z,{title:"".concat((0,t.Z)(o)," Service"),description:(0,l.jsxs)(l.Fragment,{children:["Deployment ",(0,l.jsx)("code",{children:d})," > ",(0,l.jsx)("code",{children:o})]})}),(0,l.jsx)(c.Z,{}),(0,l.jsx)(m,{})]})}var f=s(89350),h=!0;function _(){return(0,l.jsx)(f.Z,{children:(0,l.jsx)(j,{})})}}},function(e){e.O(0,[662,75,664,433,7,827,910,464,888,774,179],function(){return e(e.s=89426)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[329],{89426:function(e,n,s){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/services/[service_name]",function(){return s(52963)}])},52963:function(e,n,s){"use strict";s.r(n),s.d(n,{__N_SSP:function(){return h},default:function(){return _}});var l=s(85893),r=s(67294),i=s(5606),t=s(38249),c=s(60705),a=s(33028),d=s(60),o=s(94655),u=s(1765);function x(e){let{service:n}=e,{pageProps:s}=(0,r.useContext)(i.AppContext),t=n.servers,[c,a]=(0,r.useState)(null==t?void 0:t[0]),x=null!=t&&!!t.length&&!!(t.length%2);return(0,l.jsx)(d.Z,{className:"w-full grid-cell col-span-1 gap-0",children:(0,l.jsxs)(o.Z,{className:"nested-grid-frame xl:grid-cols-2",children:[null==t?void 0:t.map((e,s)=>(0,l.jsx)(u.Z,{server:e,service:n,wrapperProps:{className:"grid-cell"}},s)),x?(0,l.jsx)("div",{className:"grid-cell"}):null]})})}var v=s(39483),p=s(56211);function m(){let{pageProps:e,ws:n}=(0,r.useContext)(i.AppContext),{service:s,deployment:t,children_services:c}=e,a=[s,...c||[]],[u,m]=(0,r.useState)(s||void 0),j=a.findIndex(e=>(null==e?void 0:e.service_name)==(null==u?void 0:u.service_name))+1;return null==u||u.servers,(0,l.jsx)(d.Z,{className:"w-full nested-grid-frame grid-cols-1",children:(0,l.jsxs)(d.Z,{className:"grid-cell gap-0",children:[(0,l.jsx)(o.Z,{className:"grid-cell-content flex-nowrap",children:(0,l.jsxs)(o.Z,{className:"w-full justify-between",children:[(0,l.jsx)(o.Z,{children:(0,l.jsxs)(p.Z,{children:["Cluster #",j]})}),(0,l.jsx)(o.Z,{children:(0,l.jsx)(v.Z,{options:a.map((e,n)=>({value:null==e?void 0:e.service_name,title:"Cluster #".concat(n+1)})),wrapperWrapperProps:{className:"max-w-[250px]"},changeHandler:e=>{m(void 0),n.sendData({event:"client:kill-all-ports"}),setTimeout(()=>{m(a.find(n=>(null==n?void 0:n.service_name)==e)||void 0)},200)}})})]})}),(0,l.jsx)("hr",{}),u?(0,l.jsx)(x,{service:u}):void 0]})})}function j(){let{pageProps:e}=(0,r.useContext)(i.AppContext),{service:n,deployment:s}=e,d=null==s?void 0:s.deployment_name,o=null==n?void 0:n.service_name;return(0,l.jsxs)(r.Fragment,{children:[(0,l.jsx)(a.Z,{title:"".concat((0,t.Z)(o)," Service"),description:(0,l.jsxs)(l.Fragment,{children:["Deployment ",(0,l.jsx)("code",{children:d})," > ",(0,l.jsx)("code",{children:o})]})}),(0,l.jsx)(c.Z,{}),(0,l.jsx)(m,{})]})}var f=s(89350),h=!0;function _(){return(0,l.jsx)(f.Z,{children:(0,l.jsx)(j,{})})}}},function(e){e.O(0,[662,75,664,433,7,827,910,926,888,774,179],function(){return e(e.s=89426)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[890],{25292:function(e,l,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/shell",function(){return n(30904)}])},40806:function(e,l,n){"use strict";n.d(l,{Z:function(){return x}});var s=n(85893),r=n(93452),t=n(76242),i=n(36969),c=n(25808),a=n(94495),u=n(57493),o=n(94655),d=n(3668),f=n(60),p=n(67294),m=n(98388);function x(e){let{url:l,wrapperProps:n,title:x,...h}=e,{loading:j,setLoading:v}=(0,c.Z)();return(0,s.jsx)(r.Z,{...n,className:(0,m.m6)("p-0",null==n?void 0:n.className),children:(0,s.jsxs)(f.Z,{className:"gap-0",children:[(0,s.jsxs)(o.Z,{className:"p-4 w-full justify-between",children:[(0,s.jsx)(o.Z,{children:x?(0,s.jsx)(p.Fragment,{children:(0,s.jsx)(d.Z,{size:"small",variant:"faded",children:x})}):null}),(0,s.jsxs)(o.Z,{children:[(0,s.jsx)(a.Z,{title:"Open Full Screen",variant:"ghost",className:"p-1!",onClick:()=>{window.open(l,"__blank")},children:(0,s.jsx)(i.Z,{name:"ArrowUpRight",size:20})}),(0,s.jsx)(a.Z,{title:"Refresh Iframe",variant:"ghost",className:"p-1!",loading:j,onClick:()=>{v(!0),setTimeout(()=>{v(!1)},2e3)},loadingProps:{size:"smaller"},children:(0,s.jsx)(i.Z,{name:"RotateCcw",size:18})})]})]}),(0,s.jsx)("hr",{}),j?(0,s.jsx)(u.Z,{className:"w-full p-10 h-[400px]",children:(0,s.jsx)(t.Z,{})}):(0,s.jsx)("iframe",{...h,src:l,className:(0,m.m6)("w-full h-[400px]",h.className)})]})})}},30904:function(e,l,n){"use strict";n.r(l),n.d(l,{__N_SSP:function(){return v},default:function(){return Z}});var s=n(85893),r=n(67294),t=n(5606),i=n(60705),c=n(33028),a=n(60),u=n(71077),o=n(76242),d=n(57493),f=n(40806),p=n(25808);function m(e){let{paradigm:l}=e,{pageProps:n,ws:i}=(0,r.useContext)(t.AppContext),{user:c}=n,m=c.super_admin?"root":c.username,x="pm2-logs"==l?"pm2 logs":c.super_admin?"bash":m?"su - ".concat(m,' -c "bash"'):void 0,{data:h}=(0,u.Z)(),[j,v]=(0,r.useState)(),{refresh:Z,setRefresh:g}=(0,p.Z)(),N=(0,r.useRef)(!1);function w(){(null==j?void 0:j.port)&&i.sendData({event:"client:kill-port",port:j.port})}return(0,r.useEffect)(()=>{if((null==i?void 0:i.socket)&&!N.current)return i.sendData({event:"pm2-logs"==l?"client:relay-pm2-logs":"client:relay-shell",cmd:x}),N.current=!0,function(){w()}},[i,Z]),(0,r.useEffect)(()=>{N.current&&(w(),v(void 0),N.current=!1,g(e=>e+1))},[]),(0,r.useEffect)(()=>{!j&&((null==h?void 0:h.event)=="server:relay-shell"||(null==h?void 0:h.event)=="server:relay-pm2-logs")&&(null==h?void 0:h.ttyd)&&setTimeout(()=>{v(h.ttyd?{...h.ttyd,href:"".concat(window.location.origin).concat(h.ttyd.url)}:void 0)},2e3)},[h]),(0,s.jsxs)(a.Z,{className:"gap-0 w-full",children:[(null==j?void 0:j.url)&&j.port?(0,s.jsx)(a.Z,{className:"gap-0",children:(0,s.jsx)(f.Z,{url:null==j?void 0:j.url,title:"Relay Shell",wrapperProps:{className:"border-none"}})}):(0,s.jsx)(d.Z,{className:"p-10 h-[460px]",children:(0,s.jsx)(o.Z,{})}),(0,s.jsx)("hr",{})]})}function x(){let{pageProps:e}=(0,r.useContext)(t.AppContext),{user:l}=e;return(0,s.jsxs)(a.Z,{className:"w-full nested-grid-frame xl:grid-cols-2",children:[(0,s.jsx)(a.Z,{className:"grid-cell w-full",children:(0,s.jsx)(m,{paradigm:"shell"})}),l.super_admin?(0,s.jsx)(a.Z,{className:"grid-cell w-full",children:(0,s.jsx)(m,{paradigm:"pm2-logs"})}):null]})}function h(){let{pageProps:e}=(0,r.useContext)(t.AppContext);return(0,s.jsxs)(r.Fragment,{children:[(0,s.jsx)(c.Z,{title:"Shell",description:(0,s.jsx)(s.Fragment,{children:"Access the relay server shell"})}),(0,s.jsx)(i.Z,{}),(0,s.jsx)(x,{})]})}var j=n(89350),v=!0;function Z(){return(0,s.jsx)(j.Z,{children:(0,s.jsx)(h,{})})}},93452:function(e,l,n){"use strict";n.d(l,{Z:function(){return t}});var s=n(85893),r=n(98388);function t(e){let{spacing:l,componentRef:n,...t}=e;return(0,s.jsx)("div",{...t,className:(0,r.m6)("relative flex items-center gap-2 border border-solid rounded-default","border-slate-200 dark:border-white/10",l?"normal"==l?"px-3 py-2":"tight"==l?"px-2 py-1":"":"px-3 py-2","twui-border",t.className),ref:n,children:t.children})}},57493:function(e,l,n){"use strict";n.d(l,{Z:function(){return t}});var s=n(85893),r=n(98388);function t(e){let{...l}=e;return(0,s.jsx)("div",{...l,className:(0,r.m6)("flex flex-col items-center justify-center gap-4 p-2 w-full","h-full twui-center",l.className),children:l.children})}},9008:function(e,l,n){e.exports=n(23867)}},function(e){e.O(0,[662,75,664,433,7,910,888,774,179],function(){return e(e.s=25292)}),_N_E=e.O()}]);

View File

@ -0,0 +1 @@
self.__BUILD_MANIFEST=function(s,e,a,c,t,i,d,n,u){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[s,a,e,c,u,t,i,"static/chunks/pages/index-5ce092dbf4b7ea2c.js"],"/404":[s,e,"static/chunks/pages/404-8292e1046538596b.js"],"/_error":["static/chunks/pages/_error-10090a8ee211d5fd.js"],"/admin":[s,a,e,c,t,i,d,n,"static/chunks/pages/admin-914586c03dfda5c1.js"],"/admin/services":[s,a,e,c,t,i,d,n,"static/chunks/pages/admin/services-16971626ad193c95.js"],"/admin/services/[service_name]":[s,a,e,c,t,i,d,n,"static/chunks/pages/admin/services/[service_name]-e8b08e5c11b1b12c.js"],"/admin/settings":[s,a,e,c,t,i,d,"static/chunks/pages/admin/settings-f58d63b2752f72a6.js"],"/admin/shell":[s,a,e,c,t,d,"static/chunks/pages/admin/shell-c4ef7e6bc7ca42e9.js"],"/admin/users":[s,a,e,c,t,d,"static/chunks/pages/admin/users-73e9775838b56d95.js"],"/admin/users/add-user":[s,a,e,c,t,i,d,"static/chunks/pages/admin/users/add-user-1db7c9ee89830b5b.js"],"/admin/users/[deployment_user_id]":[s,a,"static/chunks/ff39441c-88f593a46cb65964.js","static/chunks/d848df63-a470d32e7be4bfe3.js",e,c,"static/chunks/281-dcee0c6401936d5e.js",t,i,d,"static/chunks/pages/admin/users/[deployment_user_id]-fb1c3c9148c518cd.js"],"/auth/login":[s,a,e,c,u,t,i,"static/chunks/pages/auth/login-3f936f997e58438c.js"],"/auth/logout":[s,e,"static/chunks/pages/auth/logout-c8b207f96be4f684.js"],"/auth/signup":[s,a,e,c,t,i,"static/chunks/pages/auth/signup-5c0f6835749e755e.js"],sortedPages:["/","/404","/_app","/_error","/admin","/admin/services","/admin/services/[service_name]","/admin/settings","/admin/shell","/admin/users","/admin/users/add-user","/admin/users/[deployment_user_id]","/auth/login","/auth/logout","/auth/signup"]}}("static/chunks/29107295-2819ba6e51dbf961.js","static/chunks/664-e347d64e56042a02.js","static/chunks/e5d67320-ccbab4288ca637ad.js","static/chunks/433-ace0b205fb566ad3.js","static/chunks/7-f0121001f735b8fe.js","static/chunks/827-7975edcf8481ec69.js","static/chunks/910-7de3855073c34589.js","static/chunks/926-4b397e2b281b7271.js","static/chunks/225-f257bb5bd6014d68.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

7
dist/web/trace vendored

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,117 @@
import Stack from "@/twui/components/layout/Stack";
import { useContext, useEffect, useRef, useState } from "react";
import { AppContext } from "@/src/pages/_app";
import { TtydInfoObject, WebSocketDataType } from "@/src/types";
import useWebSocketEventHandler from "@/twui/components/hooks/useWebSocketEventHandler";
import _ from "lodash";
import Loading from "@/twui/components/elements/Loading";
import Center from "@/twui/components/layout/Center";
import TtydIframe from "@/src/components/general/ttyd-iframe";
import useStatus from "@/twui/components/hooks/useStatus";
type Props = {
paradigm: "shell" | "pm2-logs";
};
export default function RelayShellView({ paradigm }: Props) {
const { pageProps, ws } = useContext(AppContext);
const { user } = pageProps;
const username = user.super_admin ? "root" : user.username;
const cmd =
paradigm == "pm2-logs"
? "pm2 logs"
: user.super_admin
? "bash"
: username
? `su - ${username} -c "bash"`
: undefined;
const { data } = useWebSocketEventHandler<WebSocketDataType>();
const [ttyd, setTtyd] = useState<TtydInfoObject>();
const { refresh, setRefresh } = useStatus();
const WsReqSentRef = useRef(false);
function sendKillPort() {
if (ttyd?.port) {
ws.sendData({
event: "client:kill-port",
port: ttyd.port,
});
}
}
useEffect(() => {
if (!ws?.socket || WsReqSentRef.current) {
return;
}
ws.sendData({
event:
paradigm == "pm2-logs"
? "client:relay-pm2-logs"
: "client:relay-shell",
cmd,
});
WsReqSentRef.current = true;
return function () {
sendKillPort();
};
}, [ws, refresh]);
useEffect(() => {
if (WsReqSentRef.current) {
sendKillPort();
setTtyd(undefined);
WsReqSentRef.current = false;
setRefresh((prev) => prev + 1);
}
}, []);
useEffect(() => {
if (ttyd) return;
if (
(data?.event == "server:relay-shell" ||
data?.event == "server:relay-pm2-logs") &&
data?.ttyd
) {
setTimeout(() => {
setTtyd(
data.ttyd
? {
...data.ttyd,
href: `${window.location.origin}${data.ttyd.url}`,
}
: undefined,
);
}, 2000);
}
}, [data]);
return (
<Stack className="gap-0 w-full">
{ttyd?.url && ttyd.port ? (
<Stack className="gap-0">
<TtydIframe
url={ttyd?.url}
title={`Relay Shell`}
wrapperProps={{
className: "border-none",
}}
/>
</Stack>
) : (
<Center className="p-10 h-[460px]">
<Loading />
</Center>
)}
<hr />
</Stack>
);
}

View File

@ -0,0 +1,22 @@
import { AppContext } from "@/src/pages/_app";
import Stack from "@/twui/components/layout/Stack";
import { useContext } from "react";
import RelayShellView from "../(partials)/shell-view";
export default function RelayShellViewsSection() {
const { pageProps } = useContext(AppContext);
const { user } = pageProps;
return (
<Stack className="w-full nested-grid-frame xl:grid-cols-2">
<Stack className="grid-cell w-full">
<RelayShellView paradigm="shell" />
</Stack>
{user.super_admin ? (
<Stack className="grid-cell w-full">
<RelayShellView paradigm="pm2-logs" />
</Stack>
) : null}
</Stack>
);
}

View File

@ -0,0 +1,20 @@
import { Fragment, useContext } from "react";
import { AppContext } from "@/src/pages/_app";
import Divider from "@/twui/components/layout/Divider";
import AdminHero from "@/src/components/general/admin/hero";
import RelayShellViewsSection from "./(sections)/shell-views";
export default function Main() {
const { pageProps } = useContext(AppContext);
return (
<Fragment>
<AdminHero
title={`Shell`}
description={<>Access the relay server shell</>}
/>
<Divider />
<RelayShellViewsSection />
</Fragment>
);
}

View File

@ -0,0 +1,48 @@
import {
NSQLITE_TURBOCI_ADMIN_USERS_PORTS,
NSQLiteTables,
} from "@/src/db/types";
import { TtydInfoObject, User } from "@/src/types";
import getNextAvailablePort from "@/src/utils/grab-next-available-port";
import grabTtydCmd from "@/src/utils/grab-ttyd-cmd";
import grabConnectedWebsocketUserdata from "@/src/websocket/(utils)/grab-connected-websocket-user-data";
import BunSQLite from "@moduletrace/bun-sqlite";
import { exec } from "child_process";
type Params = {
user: User;
cmd: string;
};
export default async function grabTtydInfo({
user,
cmd,
}: Params): Promise<TtydInfoObject> {
const available_port = await getNextAvailablePort();
let url = `/ttyd/${available_port}`;
const ttyd_cmd = grabTtydCmd({
cmd,
port: available_port,
});
const ttyd_exec = exec(ttyd_cmd.cmd);
await Bun.sleep(2000);
const connected_user_data = grabConnectedWebsocketUserdata({ user });
await BunSQLite.insert<
NSQLITE_TURBOCI_ADMIN_USERS_PORTS,
(typeof NSQLiteTables)[number]
>({
data: [{ user_id: user.id, port: available_port }],
table: "users_ports",
});
connected_user_data.child_processes.push(ttyd_exec);
connected_user_data.ports.push(available_port);
return { port: available_port, url };
}

View File

@ -1,21 +1,10 @@
import {
NSQLITE_TURBOCI_ADMIN_USERS_PORTS,
NSQLiteTables,
} from "@/src/db/types";
import { PrivateServerTtydParadigms, TtydInfoObject, User } from "@/src/types"; import { PrivateServerTtydParadigms, TtydInfoObject, User } from "@/src/types";
import { import {
NormalizedServerObject, NormalizedServerObject,
ParsedDeploymentServiceConfig, ParsedDeploymentServiceConfig,
} from "@/src/types/turboci"; } from "@/src/types/turboci";
import grabDirNames from "@/src/utils/grab-dir-names";
import getNextAvailablePort from "@/src/utils/grab-next-available-port";
import grabSSHPrefix from "@/src/utils/grab-ssh-prefix"; import grabSSHPrefix from "@/src/utils/grab-ssh-prefix";
import grabTtydCmd from "@/src/utils/grab-ttyd-cmd"; import grabTtydInfo from "./grab-ttyd-info";
import grabConnectedWebsocketUserdata from "@/src/websocket/(utils)/grab-connected-websocket-user-data";
import BunSQLite from "@moduletrace/bun-sqlite";
import { exec } from "child_process";
const { TURBOCI_SSH_KEY_FILE } = grabDirNames();
type Params = { type Params = {
user: User; user: User;
@ -44,46 +33,15 @@ export default async function grabTtydServerInfo({
); );
} }
const available_port = await getNextAvailablePort();
let url = `/ttyd/${available_port}`;
let cmd = ``; let cmd = ``;
cmd += ` ${grabSSHPrefix()}`; cmd += ` ${grabSSHPrefix()}`;
// if (paradigm == "logs") {
// } else {
// cmd += ` ssh -i ${TURBOCI_SSH_KEY_FILE}`;
// }
cmd += ` root@${server?.private_ip}`; cmd += ` root@${server?.private_ip}`;
if (paradigm == "logs" && final_log) { if (paradigm == "logs" && final_log) {
cmd += ` ${final_log}`; cmd += ` ${final_log}`;
} }
const ttyd_cmd = grabTtydCmd({ return await grabTtydInfo({ cmd, user });
cmd,
port: available_port,
});
const ttyd_exec = exec(ttyd_cmd.cmd);
await Bun.sleep(2000);
const connected_user_data = grabConnectedWebsocketUserdata({ user });
await BunSQLite.insert<
NSQLITE_TURBOCI_ADMIN_USERS_PORTS,
(typeof NSQLiteTables)[number]
>({
data: [{ user_id: user.id, port: available_port }],
table: "users_ports",
});
connected_user_data.child_processes.push(ttyd_exec);
connected_user_data.ports.push(available_port);
return { port: available_port, url };
} }

View File

@ -24,10 +24,19 @@ export function AdminAsideLinks({ user }: Params) {
url: "/admin/users", url: "/admin/users",
} }
: undefined, : undefined,
{
title: "Shell",
url: "/admin/shell",
},
{ {
title: "Settings", title: "Settings",
url: "/admin/settings", url: "/admin/settings",
}, },
{ divider: true },
{
title: "Logout",
url: "/auth/logout",
},
]; ];
return links; return links;

View File

@ -0,0 +1,18 @@
import Main from "@/src/components/pages/admin/shell";
import defaultAdminProps from "@/src/functions/pages/admin/default-admin-props";
import Layout from "@/src/layouts/admin";
import { GetServerSideProps } from "next";
export default function AdminDeploymentUsers() {
return (
<Layout>
<Main />
</Layout>
);
}
export const getServerSideProps: GetServerSideProps = async (ctx) => {
return await defaultAdminProps({
ctx,
});
};

View File

@ -79,6 +79,8 @@ export const WebSocketEvents = [
"client:kill-port", "client:kill-port",
"client:kill-all-ports", "client:kill-all-ports",
"client:service-server-shell", "client:service-server-shell",
"client:relay-shell",
"client:relay-pm2-logs",
"server:ping", "server:ping",
"server:error", "server:error",
@ -90,6 +92,8 @@ export const WebSocketEvents = [
"server:killed-port", "server:killed-port",
"server:killed-all-ports", "server:killed-all-ports",
"server:service-server-shell", "server:service-server-shell",
"server:relay-shell",
"server:relay-pm2-logs",
] as const; ] as const;
export type WebSocketDataType = { export type WebSocketDataType = {

View File

@ -0,0 +1,22 @@
import { WebSocketMessageParam } from "@/src/types";
import sendData from "../(utils)/send-data";
import sendError from "../(utils)/send-error";
import grabTtydInfo from "@/src/functions/ttyd/grab-ttyd-info";
export default async function socketClientRelayPm2Logs({
ws,
data,
}: WebSocketMessageParam) {
try {
const user = ws.data.user;
const ttyd = await grabTtydInfo({ cmd: `pm2 logs`, user });
sendData(ws, {
event: "server:relay-pm2-logs",
ttyd,
});
} catch (error: any) {
sendError(ws, "Relay Shell Error! " + error.message);
}
}

View File

@ -0,0 +1,27 @@
import { WebSocketMessageParam } from "@/src/types";
import sendData from "../(utils)/send-data";
import sendError from "../(utils)/send-error";
import grabTtydInfo from "@/src/functions/ttyd/grab-ttyd-info";
export default async function socketClientRelayShell({
ws,
data,
}: WebSocketMessageParam) {
try {
const user = ws.data.user;
const cmd = data?.cmd;
if (!cmd) {
throw new Error(`No Command Passed`);
}
const ttyd = await grabTtydInfo({ cmd, user });
sendData(ws, {
event: "server:relay-shell",
ttyd,
});
} catch (error: any) {
sendError(ws, "Relay Shell Error! " + error.message);
}
}

View File

@ -11,6 +11,8 @@ import socketClientServiceServerLogs from "./events/client-service-server-logs";
import socketClientKillPort from "./events/client-kill-port"; import socketClientKillPort from "./events/client-kill-port";
import socketClientServiceServerShell from "./events/client-service-server-shell"; import socketClientServiceServerShell from "./events/client-service-server-shell";
import socketClientKillAllPorts from "./events/client-kill-all-ports"; import socketClientKillAllPorts from "./events/client-kill-all-ports";
import socketClientRelayShell from "./events/client-relay-shell";
import socketClientRelayPm2Logs from "./events/client-relay-pm2-logs";
type Param = { type Param = {
ws: ServerWebSocket<WebSocketData>; ws: ServerWebSocket<WebSocketData>;
@ -41,6 +43,7 @@ export default async function socketMessage({ ws, message }: Param) {
}); });
await socketClientPing(websocketMessageParams); await socketClientPing(websocketMessageParams);
break; break;
case "client:service-server-logs": case "client:service-server-logs":
debugLog({ debugLog({
log: `${userRef} Getting Service Server Logs ...`, log: `${userRef} Getting Service Server Logs ...`,
@ -49,6 +52,7 @@ export default async function socketMessage({ ws, message }: Param) {
}); });
await socketClientServiceServerLogs(websocketMessageParams); await socketClientServiceServerLogs(websocketMessageParams);
break; break;
case "client:service-server-shell": case "client:service-server-shell":
debugLog({ debugLog({
log: `${userRef} Getting Service Server Shell ...`, log: `${userRef} Getting Service Server Shell ...`,
@ -57,6 +61,25 @@ export default async function socketMessage({ ws, message }: Param) {
}); });
await socketClientServiceServerShell(websocketMessageParams); await socketClientServiceServerShell(websocketMessageParams);
break; break;
case "client:relay-shell":
debugLog({
log: `${userRef} Getting Relay Server Shell ...`,
addTime: true,
label,
});
await socketClientRelayShell(websocketMessageParams);
break;
case "client:relay-pm2-logs":
debugLog({
log: `${userRef} Getting Relay pm2 Logs ...`,
addTime: true,
label,
});
await socketClientRelayPm2Logs(websocketMessageParams);
break;
case "client:kill-port": case "client:kill-port":
debugLog({ debugLog({
log: `${userRef} Killing Port ${data.port} ...`, log: `${userRef} Killing Port ${data.port} ...`,
@ -65,6 +88,7 @@ export default async function socketMessage({ ws, message }: Param) {
}); });
await socketClientKillPort(websocketMessageParams); await socketClientKillPort(websocketMessageParams);
break; break;
case "client:kill-all-ports": case "client:kill-all-ports":
debugLog({ debugLog({
log: `${userRef} Killing All Ports ...`, log: `${userRef} Killing All Ports ...`,