@dunx/dashboard 2.2.0 → 2.3.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/api/types.d.ts +1 -1
- package/dist/{chunk-xg5554k6.js → chunk-xps6r8jv.js} +2 -2
- package/dist/{chunk-xg5554k6.js.map → chunk-xps6r8jv.js.map} +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/ui.js +7 -7
- package/dist/ui.js.map +2 -2
- package/package.json +3 -3
package/dist/api/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { ProbeState } from '../contracts.js';
|
|
|
5
5
|
* Everything the page reads, declared once.
|
|
6
6
|
*
|
|
7
7
|
* `internal/dashboard-ui` imports these by relative path from this file, exactly
|
|
8
|
-
*
|
|
8
|
+
* the way `internal/dashboard-ui` imports these from this package's source - so
|
|
9
9
|
* the wire format has one declaration and the frontend cannot drift from the
|
|
10
10
|
* handler that fills it. The node types are re-exported rather than restated for
|
|
11
11
|
* the same reason: they are `@dunx/core`'s and `@dunx/http`'s, and a copy shaped
|
|
@@ -103,5 +103,5 @@ var snapshotOf = (root, options) => ({
|
|
|
103
103
|
|
|
104
104
|
export { __decoratorStart, __decoratorMetadata, __runInitializers, __decorateElement, __require, metaOf, snapshotOf };
|
|
105
105
|
|
|
106
|
-
//# debugId=
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# debugId=D21070FBD0B8DA7064756E2164756E21
|
|
107
|
+
//# sourceMappingURL=chunk-xps6r8jv.js.map
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
"import { modulesOf, providersOf, type ModuleRef } from '@dunx/core';\nimport { gatewaysOf, isGateway, routesOf } from '@dunx/http';\nimport type { DashboardOptions } from '../options.js';\nimport type { ConfigEntry, Meta, Snapshot } from './types.js';\n\n/**\n * The static half of the page, built from the same readers `@dunx/mcp` answers\n * with. Nothing here constructs anything: `providersOf` and `routesOf` walk\n * prototypes, so this would answer identically before the app booted.\n *\n * That is the deliberate inversion of MCP's rule. MCP refuses runtime questions\n * because booting an app to answer them would open databases and bind sockets;\n * this package is *already inside* a booted app, so the reason does not apply and\n * the live panels ask the container directly. Splitting it per panel rather than\n * per package is what stops this file growing a `boot()`.\n */\n\nconst typeOf = (value: unknown): string => {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n return typeof value;\n};\n\n/**\n * Keys, types, and a value only where the app's `reveal` predicate said so.\n *\n * Sorted, because a config panel is read by scanning for a key rather than in\n * declaration order, and `validate` returns whatever object literal order the app\n * happened to write.\n */\nexport const configEntries = (\n values: object,\n reveal: DashboardOptions['reveal'],\n): readonly ConfigEntry[] =>\n Object.entries(values)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, value]: [string, unknown]) => ({\n key,\n type: typeOf(value),\n ...(reveal(key, value) ? { value } : {}),\n }));\n\nexport const metaOf = (options: DashboardOptions): Meta => ({\n title: options.title,\n basePath: options.path,\n openApiPath: options.openApiPath,\n pollMs: options.pollMs,\n queuesPath: `${options.path}/queues`,\n});\n\nexport const snapshotOf = (\n root: ModuleRef,\n options: DashboardOptions,\n): Snapshot => ({\n meta: metaOf(options),\n routes: routesOf(root),\n gateways: gatewaysOf(root),\n // Core cannot import `@dunx/http`, so the gateway marker arrives as an option.\n // Without it a gateway would be listed as an ordinary provider here while the\n // gateways panel showed it as one, and the two panels would disagree.\n modules: modulesOf(root, { isGateway }),\n providers: providersOf(root, { isGateway }),\n // Absent when the app passed no `config`, which the panel reports as such - a\n // different fact from a configuration with no keys in it.\n config:\n options.config === undefined\n ? undefined\n : configEntries(options.config.values, options.reveal),\n});\n"
|
|
6
6
|
],
|
|
7
7
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAgBA,IAAM,SAAS,CAAC,UAA2B;AAAA,EACzC,IAAI,UAAU;AAAA,IAAM,OAAO;AAAA,EAC3B,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EACjC,OAAO,OAAO;AAAA;AAUT,IAAM,gBAAgB,CAC3B,QACA,WAEA,OAAO,QAAQ,MAAM,EAClB,KAAK,EAAE,KAAK,OAAO,EAAE,cAAc,CAAC,CAAC,EACrC,IAAI,EAAE,KAAK,YAA+B;AAAA,EACzC;AAAA,EACA,MAAM,OAAO,KAAK;AAAA,KACd,OAAO,KAAK,KAAK,IAAI,EAAE,MAAM,IAAI,CAAC;AACxC,EAAE;AAEC,IAAM,SAAS,CAAC,aAAqC;AAAA,EAC1D,OAAO,QAAQ;AAAA,EACf,UAAU,QAAQ;AAAA,EAClB,aAAa,QAAQ;AAAA,EACrB,QAAQ,QAAQ;AAAA,EAChB,YAAY,GAAG,QAAQ;AACzB;AAEO,IAAM,aAAa,CACxB,MACA,aACc;AAAA,EACd,MAAM,OAAO,OAAO;AAAA,EACpB,QAAQ,SAAS,IAAI;AAAA,EACrB,UAAU,WAAW,IAAI;AAAA,EAIzB,SAAS,UAAU,MAAM,EAAE,UAAU,CAAC;AAAA,EACtC,WAAW,YAAY,MAAM,EAAE,UAAU,CAAC;AAAA,EAG1C,QACE,QAAQ,WAAW,YACf,YACA,cAAc,QAAQ,OAAO,QAAQ,QAAQ,MAAM;AAC3D;",
|
|
8
|
-
"debugId": "
|
|
8
|
+
"debugId": "D21070FBD0B8DA7064756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
__require,
|
|
7
7
|
__runInitializers,
|
|
8
8
|
snapshotOf
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-xps6r8jv.js";
|
|
10
10
|
|
|
11
11
|
// src/module.ts
|
|
12
12
|
import {
|
|
@@ -464,12 +464,12 @@ __runInitializers(_init, 1, DashboardModule);
|
|
|
464
464
|
__decoratorMetadata(_init, DashboardModule);
|
|
465
465
|
let _DashboardModule = DashboardModule;
|
|
466
466
|
export {
|
|
467
|
-
|
|
468
|
-
handleDashboard,
|
|
469
|
-
DashboardOptions,
|
|
467
|
+
DashboardMiddleware,
|
|
470
468
|
DashboardModule,
|
|
471
|
-
|
|
469
|
+
DashboardOptions,
|
|
470
|
+
handleDashboard,
|
|
471
|
+
normalizeMount
|
|
472
472
|
};
|
|
473
473
|
|
|
474
|
-
//# debugId=
|
|
474
|
+
//# debugId=CFA504A7E130188D64756E2164756E21
|
|
475
475
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
"import type { ModuleRef } from '@dunx/core';\nimport { boardNames, matchBoard, type Board } from './board.js';\nimport { redisReport } from './api/redis.js';\nimport { runtimeReport } from './api/runtime.js';\nimport { snapshotOf } from './api/snapshot.js';\nimport type { DashboardOptions } from './options.js';\n\n/**\n * What the mount answers, and nothing else. A path outside it never reaches here -\n * the middleware calls `next()` - which is what keeps the app's own routes and its\n * 404 behaving exactly as before.\n *\n * Three kinds of thing live under the mount:\n *\n * - `/` and any other non-`api`, non-`queues` path serve the page, so a client-side\n * route survives a reload.\n * - `/api/*` are dunx's own JSON endpoints. Every panel has one, and they are\n * supported rather than an implementation detail of the page - `curl` is a real\n * way to read this.\n * - `/queues/*` is **bull-board's**, dispatched against its own route table. dunx\n * renders no queue UI; see `board.ts`.\n */\n\nconst json = (body: unknown, status = 200): Response =>\n Response.json(body, {\n status,\n // The page and its data are the same origin and the same process; a cached\n // runtime report is a lie with a timestamp on it.\n headers: { 'cache-control': 'no-store' },\n });\n\n/** The one shape every failure inside the mount takes. */\nconst fail = (status: number, error: string): Response =>\n json({ error }, status);\n\nexport interface RouterDeps {\n readonly root: ModuleRef;\n readonly options: DashboardOptions;\n readonly startedAt: number;\n /** The HTML page, built lazily so importing this package does not load it. */\n readonly page: () => Promise<string>;\n /** bull-board, built lazily so an app that never opens it holds no socket. */\n readonly board: () => Promise<Board>;\n}\n\nconst handleApi = async (\n deps: RouterDeps,\n method: string,\n segments: readonly string[],\n): Promise<Response> => {\n if (method !== 'GET') return fail(405, `${method} is not allowed here`);\n\n switch (segments[0]) {\n case 'snapshot':\n return json(snapshotOf(deps.root, deps.options));\n case 'runtime':\n return json(await runtimeReport(deps.options, deps.startedAt));\n case 'redis':\n return json(\n deps.options.redis === undefined\n ? { configured: false }\n : await redisReport(deps.options.redis, deps.options.probeTimeoutMs),\n );\n case 'queues': {\n // Names only, read straight off the options - **not** through `deps.board()`,\n // which would open a connection per queue. The page polls this to decide\n // whether to offer the link, and a poll must not have side effects.\n const { names, unavailable } = boardNames(deps.options);\n return json({\n queues: names,\n ...(unavailable === undefined ? {} : { unavailable }),\n });\n }\n default:\n return fail(404, 'no such dashboard endpoint');\n }\n};\n\n/**\n * `rest` is the path with the mount already stripped: `''` for the page itself,\n * `api/runtime` for a data call, `queues/...` for bull-board.\n */\nexport const handleDashboard = async (\n deps: RouterDeps,\n request: Request,\n rest: string,\n): Promise<Response> => {\n const segments = rest.split('/').filter(Boolean);\n const { method } = request;\n\n if (segments[0] === 'api') {\n try {\n return await handleApi(deps, method, segments.slice(1));\n } catch (error) {\n // Nothing inside the mount may throw into the app's error mapper: a\n // dashboard read that failed is a dashboard problem, and a 500 shaped like\n // the app's own errors would send someone looking in the wrong place.\n return fail(500, error instanceof Error ? error.message : String(error));\n }\n }\n\n if (segments[0] === 'queues') {\n const board = await deps.board();\n if (board.routes === undefined) {\n return fail(503, board.unavailable ?? 'no queue board');\n }\n const match = matchBoard(\n board.routes,\n method,\n new URL(request.url).pathname,\n );\n if (match !== undefined) {\n // bull-board reads `request.params`, which `Bun.serve` fills in when it\n // does the matching. This dispatch is manual, so the field has to be put\n // there or every `:queueName` route answers QUEUE_NOT_FOUND.\n Object.defineProperty(request, 'params', {\n value: match.params,\n configurable: true,\n });\n return match.handler(request);\n }\n\n // Nothing in its table, so it is one of bull-board's own client-side routes -\n // `/queue/emails?status=failed` is rendered by its router, not its server.\n // Its entry route serves those, which is the same thing the dashboard's mount\n // does for its own panels. Only for a GET: a write to a path nothing declares\n // is a real 404.\n if (method === 'GET' && board.entry) return board.entry(request);\n return fail(404, 'no such bull-board route');\n }\n\n if (method !== 'GET') return fail(405, `${method} is not allowed here`);\n\n return new Response(await deps.page(), {\n headers: {\n 'content-type': 'text/html; charset=utf-8',\n 'cache-control': 'no-store',\n },\n });\n};\n"
|
|
13
13
|
],
|
|
14
14
|
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
15
|
+
"debugId": "CFA504A7E130188D64756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|