@dudousxd/nestjs-telescope-ui 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +771 -0
- package/README.md +35 -0
- package/dist/client/console-url.d.ts +11 -0
- package/dist/client/console-url.d.ts.map +1 -0
- package/dist/client/console-url.js +21 -0
- package/dist/client/console-url.js.map +1 -0
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/telescope-client.d.ts +82 -11
- package/dist/client/telescope-client.d.ts.map +1 -1
- package/dist/client/telescope-client.js +101 -54
- package/dist/client/telescope-client.js.map +1 -1
- package/dist/client/types.d.ts +431 -30
- package/dist/client/types.d.ts.map +1 -1
- package/dist/react/components/batch-timeline.js +2 -2
- package/dist/react/components/batch-timeline.js.map +1 -1
- package/dist/react/components/cache-badge.d.ts +14 -6
- package/dist/react/components/cache-badge.d.ts.map +1 -1
- package/dist/react/components/cache-badge.js +26 -12
- package/dist/react/components/cache-badge.js.map +1 -1
- package/dist/react/components/charts/area-chart-card.d.ts +11 -3
- package/dist/react/components/charts/area-chart-card.d.ts.map +1 -1
- package/dist/react/components/charts/area-chart-card.js +33 -6
- package/dist/react/components/charts/area-chart-card.js.map +1 -1
- package/dist/react/components/charts/bar-chart-card.d.ts +18 -7
- package/dist/react/components/charts/bar-chart-card.d.ts.map +1 -1
- package/dist/react/components/charts/bar-chart-card.js +18 -9
- package/dist/react/components/charts/bar-chart-card.js.map +1 -1
- package/dist/react/components/charts/breakdown-card.d.ts +17 -0
- package/dist/react/components/charts/breakdown-card.d.ts.map +1 -0
- package/dist/react/components/charts/breakdown-card.js +43 -0
- package/dist/react/components/charts/breakdown-card.js.map +1 -0
- package/dist/react/components/charts/chart-card.d.ts +7 -0
- package/dist/react/components/charts/chart-card.d.ts.map +1 -1
- package/dist/react/components/charts/chart-card.js +10 -3
- package/dist/react/components/charts/chart-card.js.map +1 -1
- package/dist/react/components/charts/chart-selection.d.ts +44 -0
- package/dist/react/components/charts/chart-selection.d.ts.map +1 -0
- package/dist/react/components/charts/chart-selection.js +36 -0
- package/dist/react/components/charts/chart-selection.js.map +1 -0
- package/dist/react/components/charts/chart-theme.d.ts +62 -19
- package/dist/react/components/charts/chart-theme.d.ts.map +1 -1
- package/dist/react/components/charts/chart-theme.js +72 -13
- package/dist/react/components/charts/chart-theme.js.map +1 -1
- package/dist/react/components/charts/distribution-chart-card.d.ts +17 -0
- package/dist/react/components/charts/distribution-chart-card.d.ts.map +1 -0
- package/dist/react/components/charts/distribution-chart-card.js +46 -0
- package/dist/react/components/charts/distribution-chart-card.js.map +1 -0
- package/dist/react/components/charts/gauge-card.d.ts +12 -0
- package/dist/react/components/charts/gauge-card.d.ts.map +1 -0
- package/dist/react/components/charts/gauge-card.js +17 -0
- package/dist/react/components/charts/gauge-card.js.map +1 -0
- package/dist/react/components/charts/index.d.ts +1 -0
- package/dist/react/components/charts/index.d.ts.map +1 -1
- package/dist/react/components/charts/index.js +1 -0
- package/dist/react/components/charts/index.js.map +1 -1
- package/dist/react/components/charts/stacked-area-chart-card.d.ts +17 -3
- package/dist/react/components/charts/stacked-area-chart-card.d.ts.map +1 -1
- package/dist/react/components/charts/stacked-area-chart-card.js +31 -8
- package/dist/react/components/charts/stacked-area-chart-card.js.map +1 -1
- package/dist/react/components/entries-table.d.ts.map +1 -1
- package/dist/react/components/entries-table.js +17 -3
- package/dist/react/components/entries-table.js.map +1 -1
- package/dist/react/components/entry-detail.d.ts +2 -0
- package/dist/react/components/entry-detail.d.ts.map +1 -1
- package/dist/react/components/entry-detail.js +186 -20
- package/dist/react/components/entry-detail.js.map +1 -1
- package/dist/react/components/entry-insights.d.ts.map +1 -1
- package/dist/react/components/entry-insights.js +28 -17
- package/dist/react/components/entry-insights.js.map +1 -1
- package/dist/react/components/entry-types.d.ts +29 -0
- package/dist/react/components/entry-types.d.ts.map +1 -1
- package/dist/react/components/entry-types.js +60 -0
- package/dist/react/components/entry-types.js.map +1 -1
- package/dist/react/components/export-json-toolbar.js +2 -2
- package/dist/react/components/export-json-toolbar.js.map +1 -1
- package/dist/react/components/extensions/panel-column-menu.d.ts +19 -0
- package/dist/react/components/extensions/panel-column-menu.d.ts.map +1 -0
- package/dist/react/components/extensions/panel-column-menu.js +47 -0
- package/dist/react/components/extensions/panel-column-menu.js.map +1 -0
- package/dist/react/components/extensions/panel-renderer.d.ts +46 -0
- package/dist/react/components/extensions/panel-renderer.d.ts.map +1 -0
- package/dist/react/components/extensions/panel-renderer.js +122 -0
- package/dist/react/components/extensions/panel-renderer.js.map +1 -0
- package/dist/react/components/extensions/panel-table-header.d.ts +18 -0
- package/dist/react/components/extensions/panel-table-header.d.ts.map +1 -0
- package/dist/react/components/extensions/panel-table-header.js +82 -0
- package/dist/react/components/extensions/panel-table-header.js.map +1 -0
- package/dist/react/components/extensions/panel-table.d.ts +27 -0
- package/dist/react/components/extensions/panel-table.d.ts.map +1 -0
- package/dist/react/components/extensions/panel-table.js +87 -0
- package/dist/react/components/extensions/panel-table.js.map +1 -0
- package/dist/react/components/extensions/stat-card.d.ts +18 -0
- package/dist/react/components/extensions/stat-card.d.ts.map +1 -0
- package/dist/react/components/extensions/stat-card.js +44 -0
- package/dist/react/components/extensions/stat-card.js.map +1 -0
- package/dist/react/components/extensions/table-columns.d.ts +32 -0
- package/dist/react/components/extensions/table-columns.d.ts.map +1 -0
- package/dist/react/components/extensions/table-columns.js +51 -0
- package/dist/react/components/extensions/table-columns.js.map +1 -0
- package/dist/react/components/extensions/table-features.d.ts +47 -0
- package/dist/react/components/extensions/table-features.d.ts.map +1 -0
- package/dist/react/components/extensions/table-features.js +45 -0
- package/dist/react/components/extensions/table-features.js.map +1 -0
- package/dist/react/components/extensions/table-query.d.ts +53 -0
- package/dist/react/components/extensions/table-query.d.ts.map +1 -0
- package/dist/react/components/extensions/table-query.js +51 -0
- package/dist/react/components/extensions/table-query.js.map +1 -0
- package/dist/react/components/flamegraph-view.d.ts +18 -0
- package/dist/react/components/flamegraph-view.d.ts.map +1 -0
- package/dist/react/components/flamegraph-view.js +48 -0
- package/dist/react/components/flamegraph-view.js.map +1 -0
- package/dist/react/components/flamegraph.d.ts +34 -0
- package/dist/react/components/flamegraph.d.ts.map +1 -0
- package/dist/react/components/flamegraph.js +54 -0
- package/dist/react/components/flamegraph.js.map +1 -0
- package/dist/react/components/inertia-badge.d.ts +33 -0
- package/dist/react/components/inertia-badge.d.ts.map +1 -0
- package/dist/react/components/inertia-badge.js +72 -0
- package/dist/react/components/inertia-badge.js.map +1 -0
- package/dist/react/components/inertia-body.d.ts +11 -0
- package/dist/react/components/inertia-body.d.ts.map +1 -0
- package/dist/react/components/inertia-body.js +127 -0
- package/dist/react/components/inertia-body.js.map +1 -0
- package/dist/react/components/official-event.d.ts +16 -0
- package/dist/react/components/official-event.d.ts.map +1 -0
- package/dist/react/components/official-event.js +88 -0
- package/dist/react/components/official-event.js.map +1 -0
- package/dist/react/components/pulse-panel.d.ts.map +1 -1
- package/dist/react/components/pulse-panel.js +6 -6
- package/dist/react/components/pulse-panel.js.map +1 -1
- package/dist/react/components/queues/EnqueueJobForm.d.ts.map +1 -1
- package/dist/react/components/queues/EnqueueJobForm.js +2 -1
- package/dist/react/components/queues/EnqueueJobForm.js.map +1 -1
- package/dist/react/components/queues/JobActions.d.ts.map +1 -1
- package/dist/react/components/queues/JobActions.js +11 -9
- package/dist/react/components/queues/JobActions.js.map +1 -1
- package/dist/react/components/queues/JobDetailDrawer.d.ts.map +1 -1
- package/dist/react/components/queues/JobDetailDrawer.js +8 -13
- package/dist/react/components/queues/JobDetailDrawer.js.map +1 -1
- package/dist/react/components/queues/JobTable.d.ts.map +1 -1
- package/dist/react/components/queues/JobTable.js +0 -0
- package/dist/react/components/queues/JobTable.js.map +1 -1
- package/dist/react/components/queues/QueueList.d.ts.map +1 -1
- package/dist/react/components/queues/QueueList.js +6 -6
- package/dist/react/components/queues/QueueList.js.map +1 -1
- package/dist/react/components/queues/QueueStateTabs.d.ts.map +1 -1
- package/dist/react/components/queues/QueueStateTabs.js +9 -7
- package/dist/react/components/queues/QueueStateTabs.js.map +1 -1
- package/dist/react/components/queues/queue-format.d.ts +5 -1
- package/dist/react/components/queues/queue-format.d.ts.map +1 -1
- package/dist/react/components/queues/queue-format.js +11 -7
- package/dist/react/components/queues/queue-format.js.map +1 -1
- package/dist/react/components/queues-panel.js +1 -1
- package/dist/react/components/queues-panel.js.map +1 -1
- package/dist/react/components/request-timeline.d.ts.map +1 -1
- package/dist/react/components/request-timeline.js +2 -2
- package/dist/react/components/request-timeline.js.map +1 -1
- package/dist/react/components/retention-indicator.d.ts.map +1 -1
- package/dist/react/components/retention-indicator.js +1 -1
- package/dist/react/components/retention-indicator.js.map +1 -1
- package/dist/react/components/sparkline.d.ts.map +1 -1
- package/dist/react/components/sparkline.js +1 -1
- package/dist/react/components/sparkline.js.map +1 -1
- package/dist/react/components/tag-autocomplete.d.ts +21 -4
- package/dist/react/components/tag-autocomplete.d.ts.map +1 -1
- package/dist/react/components/tag-autocomplete.js +57 -29
- package/dist/react/components/tag-autocomplete.js.map +1 -1
- package/dist/react/components/to-csv.d.ts +25 -0
- package/dist/react/components/to-csv.d.ts.map +1 -0
- package/dist/react/components/to-csv.js +78 -0
- package/dist/react/components/to-csv.js.map +1 -0
- package/dist/react/components/user-tag.d.ts +15 -0
- package/dist/react/components/user-tag.d.ts.map +1 -1
- package/dist/react/components/user-tag.js +19 -0
- package/dist/react/components/user-tag.js.map +1 -1
- package/dist/react/components/waterfall-view.d.ts +13 -0
- package/dist/react/components/waterfall-view.d.ts.map +1 -0
- package/dist/react/components/waterfall-view.js +58 -0
- package/dist/react/components/waterfall-view.js.map +1 -0
- package/dist/react/components/window-select.d.ts.map +1 -1
- package/dist/react/components/window-select.js +6 -2
- package/dist/react/components/window-select.js.map +1 -1
- package/dist/react/index.d.ts +7 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +11 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/ui/badge.d.ts +16 -0
- package/dist/react/ui/badge.d.ts.map +1 -0
- package/dist/react/ui/badge.js +28 -0
- package/dist/react/ui/badge.js.map +1 -0
- package/dist/react/ui/button.d.ts +17 -0
- package/dist/react/ui/button.d.ts.map +1 -0
- package/dist/react/ui/button.js +35 -0
- package/dist/react/ui/button.js.map +1 -0
- package/dist/react/ui/chart.d.ts +116 -0
- package/dist/react/ui/chart.d.ts.map +1 -0
- package/dist/react/ui/chart.js +191 -0
- package/dist/react/ui/chart.js.map +1 -0
- package/dist/react/ui/cn.d.ts +8 -0
- package/dist/react/ui/cn.d.ts.map +1 -0
- package/dist/react/ui/cn.js +11 -0
- package/dist/react/ui/cn.js.map +1 -0
- package/dist/react/ui/dialog.d.ts +26 -0
- package/dist/react/ui/dialog.d.ts.map +1 -0
- package/dist/react/ui/dialog.js +40 -0
- package/dist/react/ui/dialog.js.map +1 -0
- package/dist/react/ui/index.d.ts +24 -0
- package/dist/react/ui/index.d.ts.map +1 -0
- package/dist/react/ui/index.js +24 -0
- package/dist/react/ui/index.js.map +1 -0
- package/dist/react/ui/input.d.ts +3 -0
- package/dist/react/ui/input.d.ts.map +1 -0
- package/dist/react/ui/input.js +8 -0
- package/dist/react/ui/input.js.map +1 -0
- package/dist/react/ui/select.d.ts +20 -0
- package/dist/react/ui/select.d.ts.map +1 -0
- package/dist/react/ui/select.js +27 -0
- package/dist/react/ui/select.js.map +1 -0
- package/dist/react/ui/table.d.ts +27 -0
- package/dist/react/ui/table.d.ts.map +1 -0
- package/dist/react/ui/table.js +22 -0
- package/dist/react/ui/table.js.map +1 -0
- package/dist/react/ui/tabs.d.ts +12 -0
- package/dist/react/ui/tabs.d.ts.map +1 -0
- package/dist/react/ui/tabs.js +20 -0
- package/dist/react/ui/tabs.js.map +1 -0
- package/dist/react/ui/tooltip.d.ts +10 -0
- package/dist/react/ui/tooltip.d.ts.map +1 -0
- package/dist/react/ui/tooltip.js +12 -0
- package/dist/react/ui/tooltip.js.map +1 -0
- package/dist/react/use-telescope-queries.d.ts +129 -130
- package/dist/react/use-telescope-queries.d.ts.map +1 -1
- package/dist/react/use-telescope-queries.js +146 -1
- package/dist/react/use-telescope-queries.js.map +1 -1
- package/dist/react/use-telescope-stream.d.ts +10 -0
- package/dist/react/use-telescope-stream.d.ts.map +1 -0
- package/dist/react/use-telescope-stream.js +40 -0
- package/dist/react/use-telescope-stream.js.map +1 -0
- package/dist/server/index.d.ts +3 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/telescope-ui.controller.d.ts.map +1 -1
- package/dist/server/telescope-ui.controller.js +3 -1
- package/dist/server/telescope-ui.controller.js.map +1 -1
- package/dist/server/telescope-ui.module.d.ts +28 -1
- package/dist/server/telescope-ui.module.d.ts.map +1 -1
- package/dist/server/telescope-ui.module.js +48 -4
- package/dist/server/telescope-ui.module.js.map +1 -1
- package/dist/server/telescope-ui.options.d.ts +63 -0
- package/dist/server/telescope-ui.options.d.ts.map +1 -1
- package/dist/server/telescope-ui.options.js.map +1 -1
- package/dist/spa/assets/index-BfyQ_2IN.css +1 -0
- package/dist/spa/assets/index-EBJiTdQF.js +159 -0
- package/dist/spa/index.html +2 -2
- package/package.json +75 -36
- package/skills/telescope-ui-dashboard/SKILL.md +203 -0
- package/dist/react/components/type-tabs.d.ts +0 -5
- package/dist/react/components/type-tabs.d.ts.map +0 -1
- package/dist/react/components/type-tabs.js +0 -8
- package/dist/react/components/type-tabs.js.map +0 -1
- package/dist/spa/assets/index-CCzTpxj3.css +0 -1
- package/dist/spa/assets/index-w0XTI5OM.js +0 -135
package/README.md
CHANGED
|
@@ -22,6 +22,41 @@ Open `/telescope`. The dashboard polls `/telescope/api/*` and shows captured
|
|
|
22
22
|
entries (type tabs + live polling) and, on an entry, the correlated batch — the
|
|
23
23
|
request and everything it caused.
|
|
24
24
|
|
|
25
|
+
### Protecting the page
|
|
26
|
+
|
|
27
|
+
`authorize` decides who may open the page, the same option (and usually the
|
|
28
|
+
same value) as on `TelescopeModule`:
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
TelescopeUiModule.forRoot({
|
|
32
|
+
authorize: (ctx) => ctx.switchToHttp().getRequest().user?.isAdmin === true,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// or mount it yourself: routes: false + your own subclass. List
|
|
36
|
+
// @UseConsoleAuthorize() ABOVE your auth guard so the guard runs first;
|
|
37
|
+
// with no argument it runs TelescopeModule.forRoot({ authorize }).
|
|
38
|
+
@Controller('ops/telescope')
|
|
39
|
+
@UseConsoleAuthorize()
|
|
40
|
+
@UseGuards(AuthGuard)
|
|
41
|
+
class ConsolePage extends TelescopeUiController {}
|
|
42
|
+
// imports: [TelescopeUiModule.forRoot({ path: 'ops/telescope', routes: false })]
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
A denied navigation gets an "Access denied" page (403), a "Sign in required"
|
|
46
|
+
page (401), or a 302 when the check returns `{ redirectTo: '/login' }`. A full-page navigation carries your cookies,
|
|
47
|
+
not an `Authorization` header, so check a session here. In the running
|
|
48
|
+
dashboard, a 401 with `redirectTo` from the API is followed and a 403 shows an
|
|
49
|
+
access-denied screen. Set `path` to the mount: the page rebases its asset URLs
|
|
50
|
+
on it.
|
|
51
|
+
|
|
52
|
+
Without `authorize` the page is open outside production; with
|
|
53
|
+
`NODE_ENV === 'production'` it answers 403 and one warning is logged at boot.
|
|
54
|
+
`decorators` (e.g. `[UseGuards(AuthenticationGuard)]`) still run first. See
|
|
55
|
+
[Protecting the routes](../../README.md#protecting-the-routes).
|
|
56
|
+
|
|
57
|
+
To link to the console from your app, `telescopeConsoleUrl(basePath)` (from
|
|
58
|
+
`@dudousxd/nestjs-telescope-ui/client`) gives its URL.
|
|
59
|
+
|
|
25
60
|
## Build your own (composable)
|
|
26
61
|
|
|
27
62
|
The same pieces are exported so you can drop them into your own admin:
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the console SPA is served, for a link from YOUR app (e.g. an admin
|
|
3
|
+
* page's "Open Telescope" anchor).
|
|
4
|
+
*
|
|
5
|
+
* Telescope's mount is configured as `path` (no leading slash, e.g. `'telescope'`); this accepts either
|
|
6
|
+
* form and normalizes it. Access is whatever your `decorators` (or your own controllers) decide:
|
|
7
|
+
* a plain navigation carries your app's cookies, so a cookie-session authentication strategy covers it.
|
|
8
|
+
*/
|
|
9
|
+
/** Where the console SPA itself is served. */
|
|
10
|
+
export declare function telescopeConsoleUrl(basePath?: string): string;
|
|
11
|
+
//# sourceMappingURL=console-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-url.d.ts","sourceRoot":"","sources":["../../src/client/console-url.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAEhF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the console SPA is served, for a link from YOUR app (e.g. an admin
|
|
3
|
+
* page's "Open Telescope" anchor).
|
|
4
|
+
*
|
|
5
|
+
* Telescope's mount is configured as `path` (no leading slash, e.g. `'telescope'`); this accepts either
|
|
6
|
+
* form and normalizes it. Access is whatever your `decorators` (or your own controllers) decide:
|
|
7
|
+
* a plain navigation carries your app's cookies, so a cookie-session authentication strategy covers it.
|
|
8
|
+
*/
|
|
9
|
+
/** The mount default; matches `TelescopeUiModule.forRoot()`'s own default. */
|
|
10
|
+
const DEFAULT_BASE_PATH = '/telescope';
|
|
11
|
+
function normalizeBasePath(basePath) {
|
|
12
|
+
const trimmed = basePath.trim().replace(/\/+$/, '');
|
|
13
|
+
if (trimmed === '')
|
|
14
|
+
return '';
|
|
15
|
+
return trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
|
|
16
|
+
}
|
|
17
|
+
/** Where the console SPA itself is served. */
|
|
18
|
+
export function telescopeConsoleUrl(basePath = DEFAULT_BASE_PATH) {
|
|
19
|
+
return normalizeBasePath(basePath) || '/';
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=console-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-url.js","sourceRoot":"","sources":["../../src/client/console-url.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8EAA8E;AAC9E,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAEvC,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,mBAAmB,CAAC,WAAmB,iBAAiB;IACtE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;AAC5C,CAAC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export
|
|
1
|
+
export { telescopeConsoleUrl } from './console-url.js';
|
|
2
|
+
export { TELESCOPE_ACCESS_DENIED_EVENT, createTelescopeClient, readAccessDenial, } from './telescope-client.js';
|
|
3
|
+
export type { BulkActionName, JobActionName, TagPageOptions, TelescopeAccessDenial, TelescopeClient, TelescopeClientOptions, } from './telescope-client.js';
|
|
3
4
|
export type * from './types.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,mBAAmB,YAAY,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
// The console's URL for a link from the host app. Re-exported here because `./client` resolves to
|
|
2
|
+
// this file — see the package's `exports` map.
|
|
3
|
+
export { telescopeConsoleUrl } from './console-url.js';
|
|
4
|
+
export { TELESCOPE_ACCESS_DENIED_EVENT, createTelescopeClient, readAccessDenial, } from './telescope-client.js';
|
|
2
5
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,+CAA+C;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AiUsageReport, CachedDiagnosis, CpuProfileContent, DiagnoseResult, EntriesQuery, Entry, EntryWithBatch, ExplainResult, JobPage, Page, ProfilerStatus, PrunesInfo, PulseReport, QueueCapabilities, QueueCounts, QueueJobDetail, QueueMetricsReport, QueueState, QueueSummary, RetentionInfo, ScheduledTask, ServerStats, ServerStatsHistory, StatsResult, TagCount, TelescopeHealth, TelescopeMeta, TimeseriesQuery, TimeseriesReport, TracesResult, Waterfall } from './types.js';
|
|
2
2
|
declare global {
|
|
3
3
|
interface Window {
|
|
4
4
|
/**
|
|
@@ -15,23 +15,74 @@ export interface TelescopeClientOptions {
|
|
|
15
15
|
baseUrl?: string;
|
|
16
16
|
/** Fetch implementation (injectable for tests). Default global fetch. */
|
|
17
17
|
fetch?: typeof globalThis.fetch;
|
|
18
|
+
/**
|
|
19
|
+
* Called when the console's `authorize` refuses a call (a 401/403 whose body
|
|
20
|
+
* is `{ error: 'unauthenticated' | 'forbidden' }`). Default: follow
|
|
21
|
+
* `redirectTo` with a full navigation, otherwise dispatch
|
|
22
|
+
* {@link TELESCOPE_ACCESS_DENIED_EVENT} on `window` (the dashboard shows its
|
|
23
|
+
* access-denied screen).
|
|
24
|
+
*/
|
|
25
|
+
onAccessDenied?: (denial: TelescopeAccessDenial) => void;
|
|
26
|
+
}
|
|
27
|
+
/** A refusal from the console's `authorize`. */
|
|
28
|
+
export interface TelescopeAccessDenial {
|
|
29
|
+
status: 401 | 403;
|
|
30
|
+
reason: 'unauthenticated' | 'forbidden';
|
|
31
|
+
redirectTo?: string;
|
|
18
32
|
}
|
|
33
|
+
/** The `window` event the default {@link TelescopeClientOptions.onAccessDenied} dispatches. */
|
|
34
|
+
export declare const TELESCOPE_ACCESS_DENIED_EVENT = "telescope:access-denied";
|
|
35
|
+
/** Reads the guard's denial body (`{ error, redirectTo? }`) from a 401/403, if it is one. */
|
|
36
|
+
export declare function readAccessDenial(response: Response): Promise<TelescopeAccessDenial | null>;
|
|
19
37
|
export type JobActionName = 'retry' | 'remove' | 'promote';
|
|
20
38
|
export type BulkActionName = 'retry-all' | 'redrive';
|
|
39
|
+
/** One page of a tag picker's list. See {@link TelescopeClient.tags}. */
|
|
40
|
+
export interface TagPageOptions {
|
|
41
|
+
search?: string;
|
|
42
|
+
limit?: number;
|
|
43
|
+
offset?: number;
|
|
44
|
+
}
|
|
21
45
|
export interface TelescopeClient {
|
|
46
|
+
/** The resolved API base URL (e.g. `/telescope/api`). Used by hooks that need to construct URLs directly (e.g. SSE EventSource). */
|
|
47
|
+
readonly baseUrl: string;
|
|
22
48
|
entries(query?: EntriesQuery): Promise<Page<Entry>>;
|
|
23
49
|
entry(id: string): Promise<EntryWithBatch>;
|
|
24
50
|
pulse(window?: string): Promise<PulseReport>;
|
|
25
51
|
queues(window?: string): Promise<QueueMetricsReport>;
|
|
26
52
|
timeseries(query?: TimeseriesQuery): Promise<TimeseriesReport>;
|
|
27
53
|
traces(window?: string, limit?: number): Promise<TracesResult>;
|
|
54
|
+
/** Nested span waterfall for one trace (`GET traces/:traceId/waterfall`). */
|
|
55
|
+
waterfall(traceId: string): Promise<Waterfall>;
|
|
28
56
|
stats(type: string, window: string): Promise<StatsResult>;
|
|
29
|
-
|
|
57
|
+
/** The AI screen: spend, agent runs and unpriced calls over a window (`GET ai`). */
|
|
58
|
+
ai(window?: string, opts?: {
|
|
59
|
+
buckets?: number;
|
|
60
|
+
top?: number;
|
|
61
|
+
limit?: number;
|
|
62
|
+
}): Promise<AiUsageReport>;
|
|
63
|
+
/**
|
|
64
|
+
* Tag counts, most-used first. `prefix` is the control's fixed scope (`user:`); `search` is what
|
|
65
|
+
* was typed into it and matches anywhere in the tag. Both the search and the page happen on the
|
|
66
|
+
* SERVER — a picker that narrowed its own fetched page could only ever find what the bound
|
|
67
|
+
* already let through.
|
|
68
|
+
*/
|
|
69
|
+
tags(prefix?: string, opts?: TagPageOptions): Promise<TagCount[]>;
|
|
30
70
|
meta(): Promise<TelescopeMeta>;
|
|
71
|
+
/**
|
|
72
|
+
* Fetches data for an extension dashboard panel from a registered provider:
|
|
73
|
+
* `GET ext/:ext/data/:provider`. The optional `query` is serialized to the
|
|
74
|
+
* query string (panel `data.query`). Returns the raw provider payload as
|
|
75
|
+
* `unknown` — the panel renderer (Task 8) narrows it per panel `kind`.
|
|
76
|
+
*/
|
|
77
|
+
extData(ext: string, provider: string, query?: Record<string, unknown>): Promise<unknown>;
|
|
31
78
|
serverStats(): Promise<ServerStats>;
|
|
79
|
+
/** CPU/mem history ring buffer for the resource-history card. */
|
|
80
|
+
serverStatsHistory(): Promise<ServerStatsHistory>;
|
|
32
81
|
health(): Promise<TelescopeHealth>;
|
|
33
82
|
/** Retention/prune status for the Overview retention card. */
|
|
34
83
|
retention(): Promise<RetentionInfo>;
|
|
84
|
+
/** Prune-run activity + retention config for the Prunes screen (`GET /prunes`). */
|
|
85
|
+
prunes(): Promise<PrunesInfo>;
|
|
35
86
|
/** Runs on-demand prune (gated server-side by the default-deny mutation guard). */
|
|
36
87
|
prune(): Promise<{
|
|
37
88
|
pruned: number;
|
|
@@ -41,6 +92,35 @@ export interface TelescopeClient {
|
|
|
41
92
|
* threw) are EXPECTED outcomes surfaced as `{ ok: false }`, not thrown.
|
|
42
93
|
*/
|
|
43
94
|
explain(entryId: string): Promise<ExplainResult>;
|
|
95
|
+
/**
|
|
96
|
+
* Diagnoses a captured exception (or client_exception) entry with AI. 404 (AI
|
|
97
|
+
* off / bad entry) and 502 (diagnoser failed) are EXPECTED outcomes surfaced as
|
|
98
|
+
* `{ ok: false }`, not thrown. `force` bypasses the per-family cache.
|
|
99
|
+
*/
|
|
100
|
+
diagnose(entryId: string, force?: boolean): Promise<DiagnoseResult>;
|
|
101
|
+
/**
|
|
102
|
+
* Reads the ALREADY-cached AI diagnosis for an exception entry's family, if any
|
|
103
|
+
* (the read-only `GET /exceptions/:id/diagnosis`). NEVER triggers a diagnosis —
|
|
104
|
+
* a cache miss (204) or 404 (AI off / bad entry) both resolve to `null`, so the
|
|
105
|
+
* detail page can show an auto-mode result on open without paying for a model
|
|
106
|
+
* call. Never throws on those expected outcomes.
|
|
107
|
+
*/
|
|
108
|
+
cachedDiagnosis(entryId: string): Promise<CachedDiagnosis>;
|
|
109
|
+
/** CPU profiler runtime status (`GET /profiles/status`). */
|
|
110
|
+
profilerStatus(): Promise<ProfilerStatus>;
|
|
111
|
+
/** List captured CPU profiles, newest-first, WITHOUT their frame trees (`GET /profiles`). */
|
|
112
|
+
profiles(limit?: number): Promise<Page<Entry>>;
|
|
113
|
+
/** Fetch one profile's full frame tree (`GET /profiles/:id`). */
|
|
114
|
+
profile(id: string): Promise<Entry & {
|
|
115
|
+
content: CpuProfileContent;
|
|
116
|
+
}>;
|
|
117
|
+
/**
|
|
118
|
+
* Arm an on-demand capture of the next `count` requests (optionally only those
|
|
119
|
+
* matching `label`). Gated server-side by the default-deny mutation guard.
|
|
120
|
+
*/
|
|
121
|
+
armProfile(count: number, label?: string): Promise<{
|
|
122
|
+
pendingManual: number;
|
|
123
|
+
}>;
|
|
44
124
|
liveQueues(): Promise<{
|
|
45
125
|
queues: QueueSummary[];
|
|
46
126
|
capabilities: QueueCapabilities;
|
|
@@ -69,15 +149,6 @@ export interface TelescopeClient {
|
|
|
69
149
|
}): Promise<{
|
|
70
150
|
id: string | null;
|
|
71
151
|
}>;
|
|
72
|
-
/** Dashboard auth: cookie-backed session, gated behind `dashboardAuth`. */
|
|
73
|
-
auth: {
|
|
74
|
-
/** `GET /auth/me`: 200 user / 401-with-modes / 404 (auth disabled). */
|
|
75
|
-
me(): Promise<AuthMeResult>;
|
|
76
|
-
/** `POST /auth/login`: 204 ok / 401 invalid credentials. */
|
|
77
|
-
login(username: string, password: string): Promise<LoginResult>;
|
|
78
|
-
/** `POST /auth/logout`: clears the session cookie. */
|
|
79
|
-
logout(): Promise<void>;
|
|
80
|
-
};
|
|
81
152
|
}
|
|
82
153
|
export declare function createTelescopeClient(options?: TelescopeClientOptions): TelescopeClient;
|
|
83
154
|
//# sourceMappingURL=telescope-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telescope-client.d.ts","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"telescope-client.d.ts","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/** The `window` event the default {@link TelescopeClientOptions.onAccessDenied} dispatches. */
|
|
2
|
+
export const TELESCOPE_ACCESS_DENIED_EVENT = 'telescope:access-denied';
|
|
3
|
+
/** Reads the guard's denial body (`{ error, redirectTo? }`) from a 401/403, if it is one. */
|
|
4
|
+
export async function readAccessDenial(response) {
|
|
5
|
+
if (response.status !== 401 && response.status !== 403)
|
|
6
|
+
return null;
|
|
7
|
+
// Read a copy so the caller can still read the body.
|
|
8
|
+
const copy = typeof response.clone === 'function' ? response.clone() : response;
|
|
9
|
+
const body = await Promise.resolve()
|
|
10
|
+
.then(() => copy.json())
|
|
11
|
+
.catch(() => null);
|
|
12
|
+
if (body === null || typeof body !== 'object' || !('error' in body))
|
|
13
|
+
return null;
|
|
14
|
+
const { error } = body;
|
|
15
|
+
if (error !== 'unauthenticated' && error !== 'forbidden')
|
|
16
|
+
return null;
|
|
17
|
+
const redirectTo = body.redirectTo;
|
|
18
|
+
return {
|
|
19
|
+
status: response.status,
|
|
20
|
+
reason: error,
|
|
21
|
+
...(typeof redirectTo === 'string' ? { redirectTo } : {}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function defaultOnAccessDenied(denial) {
|
|
25
|
+
if (typeof window === 'undefined')
|
|
26
|
+
return;
|
|
27
|
+
if (denial.redirectTo !== undefined) {
|
|
28
|
+
window.location.assign(denial.redirectTo);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
window.dispatchEvent(new CustomEvent(TELESCOPE_ACCESS_DENIED_EVENT, { detail: denial }));
|
|
3
32
|
}
|
|
4
33
|
/** Derives the API base from the server-injected mount base, falling back to the default. */
|
|
5
34
|
function defaultBaseUrl() {
|
|
@@ -8,7 +37,17 @@ function defaultBaseUrl() {
|
|
|
8
37
|
}
|
|
9
38
|
export function createTelescopeClient(options = {}) {
|
|
10
39
|
const baseUrl = (options.baseUrl ?? defaultBaseUrl()).replace(/\/$/, '');
|
|
11
|
-
const
|
|
40
|
+
const rawFetch = options.fetch ?? globalThis.fetch;
|
|
41
|
+
const onAccessDenied = options.onAccessDenied ?? defaultOnAccessDenied;
|
|
42
|
+
// Every call goes through here, so a refusal from the console's `authorize`
|
|
43
|
+
// reaches `onAccessDenied` whichever endpoint hit it.
|
|
44
|
+
const doFetch = async (input, init) => {
|
|
45
|
+
const response = await rawFetch(input, init);
|
|
46
|
+
const denial = await readAccessDenial(response);
|
|
47
|
+
if (denial)
|
|
48
|
+
onAccessDenied(denial);
|
|
49
|
+
return response;
|
|
50
|
+
};
|
|
12
51
|
async function get(path, params) {
|
|
13
52
|
let url = `${baseUrl}${path}`;
|
|
14
53
|
if (params) {
|
|
@@ -47,9 +86,9 @@ export function createTelescopeClient(options = {}) {
|
|
|
47
86
|
throw new Error(`Telescope API ${path} failed: ${response.status}`);
|
|
48
87
|
return (await response.json());
|
|
49
88
|
}
|
|
50
|
-
// Status-aware variants for
|
|
51
|
-
// outcomes (
|
|
52
|
-
//
|
|
89
|
+
// Status-aware variants for endpoints whose error statuses are expected
|
|
90
|
+
// outcomes (e.g. explain's 404 = feature off) rather than errors — so they
|
|
91
|
+
// must NOT throw the way `get`/`post` do.
|
|
53
92
|
async function rawGet(path) {
|
|
54
93
|
return doFetch(`${baseUrl}${path}`);
|
|
55
94
|
}
|
|
@@ -60,43 +99,16 @@ export function createTelescopeClient(options = {}) {
|
|
|
60
99
|
...(body !== undefined ? { body: JSON.stringify(body) } : {}),
|
|
61
100
|
});
|
|
62
101
|
}
|
|
63
|
-
async function
|
|
64
|
-
const response = await
|
|
102
|
+
async function explain(entryId) {
|
|
103
|
+
const response = await rawPost('/queries/explain', { entryId });
|
|
65
104
|
if (response.ok) {
|
|
66
105
|
const body = (await response.json());
|
|
67
|
-
return {
|
|
68
|
-
}
|
|
69
|
-
// 404 => dashboardAuth not configured: proceed as today (no auth screens).
|
|
70
|
-
if (response.status === 404)
|
|
71
|
-
return { status: 'disabled' };
|
|
72
|
-
// 401 (or anything else) => unauthenticated; read the offered modes.
|
|
73
|
-
const body = await readModesBody(response);
|
|
74
|
-
return { status: 'unauthenticated', modes: body };
|
|
75
|
-
}
|
|
76
|
-
async function readModesBody(response) {
|
|
77
|
-
const parsed = await response
|
|
78
|
-
.json()
|
|
79
|
-
.then((value) => value)
|
|
80
|
-
.catch(() => null);
|
|
81
|
-
if (parsed !== null &&
|
|
82
|
-
typeof parsed === 'object' &&
|
|
83
|
-
'auth' in parsed &&
|
|
84
|
-
parsed.auth !== null &&
|
|
85
|
-
typeof parsed.auth === 'object' &&
|
|
86
|
-
'modes' in parsed.auth &&
|
|
87
|
-
Array.isArray(parsed.auth.modes)) {
|
|
88
|
-
return parsed.auth.modes.filter(isAuthMode);
|
|
106
|
+
return { ok: true, plan: body.plan };
|
|
89
107
|
}
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
async function authLogin(username, password) {
|
|
93
|
-
const response = await rawPost('/auth/login', { username, password });
|
|
94
|
-
if (response.ok)
|
|
95
|
-
return { ok: true };
|
|
96
|
-
const message = await readLoginMessage(response);
|
|
108
|
+
const message = await readExplainMessage(response);
|
|
97
109
|
return { ok: false, message };
|
|
98
110
|
}
|
|
99
|
-
async function
|
|
111
|
+
async function readExplainMessage(response) {
|
|
100
112
|
const parsed = await response
|
|
101
113
|
.json()
|
|
102
114
|
.then((value) => value)
|
|
@@ -107,21 +119,31 @@ export function createTelescopeClient(options = {}) {
|
|
|
107
119
|
typeof parsed.message === 'string') {
|
|
108
120
|
return parsed.message;
|
|
109
121
|
}
|
|
110
|
-
return
|
|
111
|
-
}
|
|
112
|
-
async function authLogout() {
|
|
113
|
-
await rawPost('/auth/logout');
|
|
122
|
+
return `EXPLAIN failed (${response.status})`;
|
|
114
123
|
}
|
|
115
|
-
async function
|
|
116
|
-
const
|
|
124
|
+
async function diagnose(entryId, force = false) {
|
|
125
|
+
const query = force ? '?force=true' : '';
|
|
126
|
+
const response = await rawPost(`/exceptions/${encodeURIComponent(entryId)}/diagnose${query}`);
|
|
117
127
|
if (response.ok) {
|
|
118
128
|
const body = (await response.json());
|
|
119
|
-
return { ok: true,
|
|
129
|
+
return { ok: true, markdown: body.markdown, cached: body.cached };
|
|
120
130
|
}
|
|
121
|
-
const message = await
|
|
131
|
+
const message = await readDiagnoseMessage(response);
|
|
122
132
|
return { ok: false, message };
|
|
123
133
|
}
|
|
124
|
-
async function
|
|
134
|
+
async function cachedDiagnosis(entryId) {
|
|
135
|
+
const response = await rawGet(`/exceptions/${encodeURIComponent(entryId)}/diagnosis`);
|
|
136
|
+
// 204 (nothing cached) and 404 (AI off / bad entry) are EXPECTED "nothing to
|
|
137
|
+
// show" outcomes — resolve to null rather than throwing. A 204 has no JSON
|
|
138
|
+
// body, so guard on status before parsing.
|
|
139
|
+
if (response.status === 204 || response.status === 404)
|
|
140
|
+
return null;
|
|
141
|
+
if (!response.ok)
|
|
142
|
+
return null;
|
|
143
|
+
const body = (await response.json());
|
|
144
|
+
return { markdown: body.markdown, cached: true };
|
|
145
|
+
}
|
|
146
|
+
async function readDiagnoseMessage(response) {
|
|
125
147
|
const parsed = await response
|
|
126
148
|
.json()
|
|
127
149
|
.then((value) => value)
|
|
@@ -132,9 +154,10 @@ export function createTelescopeClient(options = {}) {
|
|
|
132
154
|
typeof parsed.message === 'string') {
|
|
133
155
|
return parsed.message;
|
|
134
156
|
}
|
|
135
|
-
return `
|
|
157
|
+
return `Diagnosis failed (${response.status})`;
|
|
136
158
|
}
|
|
137
159
|
return {
|
|
160
|
+
baseUrl,
|
|
138
161
|
entries: (query = {}) => get('/entries', {
|
|
139
162
|
type: query.type,
|
|
140
163
|
tag: query.tag,
|
|
@@ -155,14 +178,43 @@ export function createTelescopeClient(options = {}) {
|
|
|
155
178
|
tag: query.tag,
|
|
156
179
|
}),
|
|
157
180
|
traces: (window, limit) => get('/traces', { window, limit }),
|
|
181
|
+
waterfall: (traceId) => get(`/traces/${encodeURIComponent(traceId)}/waterfall`),
|
|
158
182
|
stats: (type, window) => get('/stats', { type, window }),
|
|
159
|
-
|
|
183
|
+
ai: (window, opts) => get('/ai', {
|
|
184
|
+
window,
|
|
185
|
+
buckets: opts?.buckets,
|
|
186
|
+
top: opts?.top,
|
|
187
|
+
limit: opts?.limit,
|
|
188
|
+
}),
|
|
189
|
+
tags: (prefix, opts) => get('/tags', {
|
|
190
|
+
prefix,
|
|
191
|
+
search: opts?.search?.trim() || undefined,
|
|
192
|
+
limit: opts?.limit,
|
|
193
|
+
offset: opts?.offset,
|
|
194
|
+
}),
|
|
160
195
|
meta: () => get('/meta'),
|
|
196
|
+
extData: (ext, provider, query) => {
|
|
197
|
+
const qs = query && Object.keys(query).length
|
|
198
|
+
? `?${new URLSearchParams(query).toString()}`
|
|
199
|
+
: '';
|
|
200
|
+
return get(`/ext/${encodeURIComponent(ext)}/data/${encodeURIComponent(provider)}${qs}`);
|
|
201
|
+
},
|
|
161
202
|
serverStats: () => get('/server-stats'),
|
|
203
|
+
serverStatsHistory: () => get('/server-stats/history'),
|
|
162
204
|
health: () => get('/health'),
|
|
163
205
|
retention: () => get('/retention'),
|
|
206
|
+
prunes: () => get('/prunes'),
|
|
164
207
|
prune: () => post('/retention/prune'),
|
|
165
208
|
explain,
|
|
209
|
+
diagnose,
|
|
210
|
+
cachedDiagnosis,
|
|
211
|
+
profilerStatus: () => get('/profiles/status'),
|
|
212
|
+
profiles: (limit) => get('/profiles', { limit }),
|
|
213
|
+
profile: (id) => get(`/profiles/${encodeURIComponent(id)}`),
|
|
214
|
+
armProfile: (count, label) => post('/profiles/arm', undefined, {
|
|
215
|
+
count,
|
|
216
|
+
...(label ? { label } : {}),
|
|
217
|
+
}),
|
|
166
218
|
liveQueues: () => get('/queues/live'),
|
|
167
219
|
schedulesLive: () => get('/schedules/live'),
|
|
168
220
|
queueCounts: (driver, queue) => get(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/counts`),
|
|
@@ -175,11 +227,6 @@ export function createTelescopeClient(options = {}) {
|
|
|
175
227
|
queueJobAction: (driver, queue, id, action) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/jobs/${encodeURIComponent(id)}/${encodeURIComponent(action)}`),
|
|
176
228
|
queueAction: (driver, queue, action, opts = {}) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/actions/${encodeURIComponent(action)}`, { state: opts.state }),
|
|
177
229
|
queueEnqueue: (driver, queue, body) => post(`/queues/live/${encodeURIComponent(driver)}/${encodeURIComponent(queue)}/enqueue`, undefined, body),
|
|
178
|
-
auth: {
|
|
179
|
-
me: authMe,
|
|
180
|
-
login: authLogin,
|
|
181
|
-
logout: authLogout,
|
|
182
|
-
},
|
|
183
230
|
};
|
|
184
231
|
}
|
|
185
232
|
//# sourceMappingURL=telescope-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telescope-client.js","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"telescope-client.js","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
|