@dudousxd/nestjs-telescope-ui 2.0.1 → 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 CHANGED
@@ -1,5 +1,28 @@
1
1
  # @dudousxd/nestjs-telescope-ui
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#183](https://github.com/DavideCarvalho/nestjs-telescope/pull/183) [`1a1d056`](https://github.com/DavideCarvalho/nestjs-telescope/commit/1a1d0560b680349d4e1ce142a61910ddebcb9ae2) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - One `authorize` option decides who may use the console.
8
+
9
+ - `TelescopeModule.forRoot({ authorize })` covers the API, the live stream and the MCP endpoint; `mcpAuthorize` replaces it on MCP alone. `TelescopeUiModule.forRoot({ authorize })` covers the page and its assets, and `TelescopeOtelMetricsModule.forExporter(exporter, { authorize })` covers `GET /metrics`. With `forRootAsync`, `authorize` can come from the factory.
10
+ - `authorize` takes a function `(ctx) => result`, an `@Injectable()` class implementing `ConsoleAuthorizer`, a lazy `() => import(...)`, `{ policy, ability }` for `@nestjs/authorization` (now an optional peer), or a gate name resolved by `@dudousxd/nestjs-authz`.
11
+ - It returns `true`/`false`, `{ allowed }`, `{ allowed: false, reason: 'unauthenticated' }` or `{ redirectTo }`. Denials answer `403 { error: 'forbidden' }` or `401 { error: 'unauthenticated' }`; `redirectTo` gives a 302 for a page navigation and a 401 with `redirectTo` for an API call. A throw denies. A denied page navigation gets an "Access denied" page (403) or a "Sign in required" page (401).
12
+ - New `authorizeByToken({ token })` checks `Authorization: Bearer <token>` in constant time, for coding agents on MCP and Prometheus on `/metrics`. `@UseConsoleAuthorize()` protects controllers you mount yourself with `routes: false`: with no argument it runs `TelescopeModule`'s `authorize`; list it above your authentication guard so that guard runs first. `ConsoleAuthorizeGuard` (or `ConsoleAuthorizeGuard.for({ authorize })`) and `ConsoleAuthorizeFilter` are the guard and the denial filter on their own.
13
+ - The dashboard follows `redirectTo` from a 401 and shows an access-denied screen on a 403. `createTelescopeClient` takes an `onAccessDenied` callback.
14
+
15
+ **Breaking:**
16
+
17
+ - With no `authorize`, the console is open outside production and answers 403 to every request in production, with one warning at boot (also with `routes: false`). The production boot refusal ("refusing to mount undecorated routes with NODE_ENV=production") is removed, and `decorators` no longer count as protection on their own: keep authentication in `decorators` and move the authorization check to `authorize`.
18
+ - `assertConsoleProtected`, `CONSOLE_DECORATORS_EXAMPLE` and `ConsoleProtectionHint` are removed.
19
+ - otel: `requireProtectionInProduction` is removed. `/metrics` follows the console's rule, so it answers 403 in production until you set `authorize`. **If a Prometheus scraper reads `/metrics` without credentials today, it starts getting 403 after this upgrade:** set `authorize: authorizeByToken({ token: process.env.METRICS_TOKEN })` and give the scraper that bearer token, or `authorize: () => true` to keep `/metrics` open when the network already restricts it.
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies [[`1a1d056`](https://github.com/DavideCarvalho/nestjs-telescope/commit/1a1d0560b680349d4e1ce142a61910ddebcb9ae2)]:
24
+ - @dudousxd/nestjs-telescope@3.0.0
25
+
3
26
  ## 2.0.1
4
27
 
5
28
  ### Patch Changes
package/README.md CHANGED
@@ -24,30 +24,34 @@ request and everything it caused.
24
24
 
25
25
  ### Protecting the page
26
26
 
27
- The page is protected with NestJS's own tools, like the API. Two ways:
27
+ `authorize` decides who may open the page, the same option (and usually the
28
+ same value) as on `TelescopeModule`:
28
29
 
29
30
  ```ts
30
- // 1. decorators on the mounted controller (forRootAsync: a static top-level option)
31
31
  TelescopeUiModule.forRoot({
32
- decorators: [UseGuards(AuthenticationGuard), Can(ConsolePolicy, 'view')],
32
+ authorize: (ctx) => ctx.switchToHttp().getRequest().user?.isAdmin === true,
33
33
  });
34
34
 
35
- // 2. mount it yourself: routes: false + your own subclass (it carries no guard of its own)
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 }).
36
38
  @Controller('ops/telescope')
37
- @UseGuards(AuthenticationGuard)
38
- @Can(ConsolePolicy, 'view')
39
+ @UseConsoleAuthorize()
40
+ @UseGuards(AuthGuard)
39
41
  class ConsolePage extends TelescopeUiController {}
40
42
  // imports: [TelescopeUiModule.forRoot({ path: 'ops/telescope', routes: false })]
41
43
  ```
42
44
 
43
- A full-page navigation carries your cookies, not an `Authorization` header, so
44
- the authentication strategy here must read a cookie session. Set `path` to the
45
- mount: the page rebases its asset URLs on it. Give `TelescopeModule` the same
46
- protection for the API.
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.
47
51
 
48
- With `NODE_ENV === 'production'`, mounting the page with no `decorators` (an
49
- empty array counts as none) fails the boot; `routes: false` always boots.
50
- Outside production an undecorated page mounts open. See
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
51
55
  [Protecting the routes](../../README.md#protecting-the-routes).
52
56
 
53
57
  To link to the console from your app, `telescopeConsoleUrl(basePath)` (from
@@ -1,5 +1,5 @@
1
1
  export { telescopeConsoleUrl } from './console-url.js';
2
- export { createTelescopeClient } from './telescope-client.js';
3
- export type { BulkActionName, JobActionName, TagPageOptions, TelescopeClient, TelescopeClientOptions, } from './telescope-client.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';
4
4
  export type * from './types.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,mBAAmB,YAAY,CAAC"}
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"}
@@ -1,5 +1,5 @@
1
1
  // The console's URL for a link from the host app. Re-exported here because `./client` resolves to
2
2
  // this file — see the package's `exports` map.
3
3
  export { telescopeConsoleUrl } from './console-url.js';
4
- export { createTelescopeClient } from './telescope-client.js';
4
+ export { TELESCOPE_ACCESS_DENIED_EVENT, createTelescopeClient, readAccessDenial, } from './telescope-client.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
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"}
@@ -15,7 +15,25 @@ 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';
21
39
  /** One page of a tag picker's list. See {@link TelescopeClient.tags}. */
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-client.d.ts","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telescope-client.d.ts","sourceRoot":"","sources":["../../src/client/telescope-client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,35 @@
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 }));
32
+ }
1
33
  /** Derives the API base from the server-injected mount base, falling back to the default. */
2
34
  function defaultBaseUrl() {
3
35
  const base = (typeof window !== 'undefined' && window.__TELESCOPE_BASE__) || '/telescope';
@@ -5,7 +37,17 @@ function defaultBaseUrl() {
5
37
  }
6
38
  export function createTelescopeClient(options = {}) {
7
39
  const baseUrl = (options.baseUrl ?? defaultBaseUrl()).replace(/\/$/, '');
8
- const doFetch = options.fetch ?? globalThis.fetch;
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
+ };
9
51
  async function get(path, params) {
10
52
  let url = `${baseUrl}${path}`;
11
53
  if (params) {
@@ -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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"}
@@ -1,4 +1,5 @@
1
1
  export { TelescopeUiModule } from './telescope-ui.module.js';
2
2
  export { TelescopeUiController } from './telescope-ui.controller.js';
3
3
  export { TELESCOPE_UI_OPTIONS, type TelescopeUiModuleOptions } from './telescope-ui.options.js';
4
+ export { ConsoleAccessDenied, ConsoleAuthorizeFilter, ConsoleAuthorizeGuard, ConsolePage, UseConsoleAuthorize, authorizeByToken, normalizeConsoleResult, resolveConsoleAuthorize, type ConsoleAuthorize, type ConsoleAuthorizeResult, type ConsoleAuthorizer, type ConsoleAuthorizerClass, type ConsoleDecide, type ConsoleDecision, type ConsolePolicyCheck, type UseConsoleAuthorizeOptions, } from '@dudousxd/nestjs-telescope';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAGhG,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,4BAA4B,CAAC"}
@@ -1,4 +1,7 @@
1
1
  export { TelescopeUiModule } from './telescope-ui.module.js';
2
2
  export { TelescopeUiController } from './telescope-ui.controller.js';
3
3
  export { TELESCOPE_UI_OPTIONS } from './telescope-ui.options.js';
4
+ // The console access contract, re-exported from core so the UI's `authorize`
5
+ // can be written from this entry point.
6
+ export { ConsoleAccessDenied, ConsoleAuthorizeFilter, ConsoleAuthorizeGuard, ConsolePage, UseConsoleAuthorize, authorizeByToken, normalizeConsoleResult, resolveConsoleAuthorize, } from '@dudousxd/nestjs-telescope';
4
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,2BAA2B,CAAC;AAChG,6EAA6E;AAC7E,wCAAwC;AACxC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GASxB,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-ui.controller.d.ts","sourceRoot":"","sources":["../../src/server/telescope-ui.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAOL,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAiChG,qBACa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAEY,OAAO,EAAE,wBAAwB;IAY3E,KAAK,IAAI,MAAM;IAYf,KAAK,CAAgB,IAAI,EAAE,MAAM,GAAG,cAAc;CAcnD"}
1
+ {"version":3,"file":"telescope-ui.controller.d.ts","sourceRoot":"","sources":["../../src/server/telescope-ui.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAOL,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAkChG,qBAEa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAEY,OAAO,EAAE,wBAAwB;IAY3E,KAAK,IAAI,MAAM;IAYf,KAAK,CAAgB,IAAI,EAAE,MAAM,GAAG,cAAc;CAcnD"}
@@ -13,7 +13,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  import { existsSync, readFileSync } from 'node:fs';
14
14
  import { basename, extname, join, resolve, sep } from 'node:path';
15
15
  import { fileURLToPath } from 'node:url';
16
- import { normalizeTelescopePath } from '@dudousxd/nestjs-telescope';
16
+ import { ConsolePage, normalizeTelescopePath } from '@dudousxd/nestjs-telescope';
17
17
  import { Controller, Get, Header, Inject, NotFoundException, Param, StreamableFile, } from '@nestjs/common';
18
18
  import { TELESCOPE_UI_OPTIONS } from './telescope-ui.options.js';
19
19
  /** dist/server/telescope-ui.controller.js -> ../spa */
@@ -44,6 +44,7 @@ function rewriteAssetBase(html, path) {
44
44
  }
45
45
  return `${injectedBase}${rebased}`;
46
46
  }
47
+ // A denied browser navigation gets a page (or a redirect), not JSON.
47
48
  let TelescopeUiController = class TelescopeUiController {
48
49
  assetsDir;
49
50
  path;
@@ -97,6 +98,7 @@ __decorate([
97
98
  __metadata("design:returntype", StreamableFile)
98
99
  ], TelescopeUiController.prototype, "asset", null);
99
100
  TelescopeUiController = __decorate([
101
+ ConsolePage(),
100
102
  Controller(),
101
103
  __param(0, Inject(TELESCOPE_UI_OPTIONS)),
102
104
  __metadata("design:paramtypes", [Object])
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-ui.controller.js","sourceRoot":"","sources":["../../src/server/telescope-ui.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACL,UAAU,EACV,GAAG,EACH,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,KAAK,EACL,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAiC,MAAM,2BAA2B,CAAC;AAEhG,uDAAuD;AACvD,SAAS,gBAAgB;IACvB,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,aAAa,GAA2B;IAC5C,KAAK,EAAE,gCAAgC;IACvC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,iCAAiC;IACzC,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,IAAY,EAAE,IAAY;IAClD,MAAM,YAAY,GAAG,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC;IACnG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IAC5D,+EAA+E;IAC/E,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,YAAY,SAAS,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,YAAY,GAAG,OAAO,EAAE,CAAC;AACrC,CAAC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACf,SAAS,CAAS;IAClB,IAAI,CAAS;IAE9B,YAA0C,OAAiC;QACzE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,8EAA8E;IAC9E,+EAA+E;IAC/E,6EAA6E;IAC7E,wCAAwC;IAIxC,KAAK;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,iBAAiB,CAAC,mDAAmD,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,gBAAgB,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,4EAA4E;IAC5E,iFAAiF;IAGjF,KAAK,CAAgB,IAAY;QAC/B,8EAA8E;QAC9E,8EAA8E;QAC9E,mFAAmF;QACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,IAAI;YAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,iBAAiB,EAAE,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,0BAA0B,CAAC;QACxE,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF,CAAA;AA1BC;IAHC,GAAG,EAAE;IACL,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;IAClD,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;;;;kDAOpD;AAMD;IAFC,GAAG,CAAC,cAAc,CAAC;IACnB,MAAM,CAAC,eAAe,EAAE,qCAAqC,CAAC;IACxD,WAAA,KAAK,CAAC,MAAM,CAAC,CAAA;;;oCAAgB,cAAc;kDAajD;AAzCU,qBAAqB;IADjC,UAAU,EAAE;IAKE,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;;GAJ9B,qBAAqB,CA0CjC"}
1
+ {"version":3,"file":"telescope-ui.controller.js","sourceRoot":"","sources":["../../src/server/telescope-ui.controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-ui.module.d.ts","sourceRoot":"","sources":["../../src/server/telescope-ui.module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAO1B,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,yBAAyB,EAE/B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAgBhG,qBACa,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,aAAa;IAUrE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;QAC1B,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,wBAAwB,CAAC,GAAG,wBAAwB,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,cAAc,GAAG,yBAAyB,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACnC;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;;;WAKG;QACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;QAC9B;;;;;WAKG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,aAAa;CAwBlB"}
1
+ {"version":3,"file":"telescope-ui.module.d.ts","sourceRoot":"","sources":["../../src/server/telescope-ui.module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAO1B,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,yBAAyB,EAE/B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAyBhG,qBACa,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,aAAa;IAUrE,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE;QAC1B,UAAU,EAAE,CACV,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,wBAAwB,CAAC,GAAG,wBAAwB,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,cAAc,GAAG,yBAAyB,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;QACnC;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;;;;WAKG;QACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;QAC9B;;;;;WAKG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,aAAa;CAwBlB"}
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  var TelescopeUiModule_1;
8
8
  import 'reflect-metadata';
9
- import { CONSOLE_DECORATORS_EXAMPLE, assertConsoleProtected, dynamicController, normalizeTelescopePath, } from '@dudousxd/nestjs-telescope';
9
+ import { UseConsoleAuthorize, consoleAuthorizeMissingWarning, dynamicController, normalizeTelescopePath, } from '@dudousxd/nestjs-telescope';
10
10
  import { Module, } from '@nestjs/common';
11
11
  import { TelescopeUiController } from './telescope-ui.controller.js';
12
12
  import { TELESCOPE_UI_OPTIONS } from './telescope-ui.options.js';
@@ -15,12 +15,18 @@ function uiControllers(options) {
15
15
  if (options.routes === false)
16
16
  return [];
17
17
  const path = normalizeTelescopePath(options.path);
18
- assertConsoleProtected(options.decorators, {
19
- module: 'TelescopeUiModule',
20
- decoratorsExample: `TelescopeUiModule.forRoot({ ${CONSOLE_DECORATORS_EXAMPLE} })`,
21
- selfMountExample: `TelescopeUiModule.forRoot({ routes: false }) + @Controller('${path}') @Can(ConsolePolicy, 'view') class ConsolePage extends TelescopeUiController {}`,
18
+ // `authorize` is read from the resolved options at init (it may come from an
19
+ // async factory); the guard runs after the host's `decorators`.
20
+ const access = UseConsoleAuthorize({
21
+ from: {
22
+ token: TELESCOPE_UI_OPTIONS,
23
+ select: (resolved) => resolved.authorize,
24
+ },
25
+ warn: true,
26
+ missingWarning: consoleAuthorizeMissingWarning('@dudousxd/nestjs-telescope-ui', 'TelescopeUiModule.forRoot()'),
27
+ loggerContext: 'TelescopeUiModule',
22
28
  });
23
- return [dynamicController(TelescopeUiController, path, options.decorators)];
29
+ return [dynamicController(TelescopeUiController, path, [...(options.decorators ?? []), access])];
24
30
  }
25
31
  let TelescopeUiModule = TelescopeUiModule_1 = class TelescopeUiModule {
26
32
  static forRoot(options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-ui.module.js","sourceRoot":"","sources":["../../src/server/telescope-ui.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,MAAM,GAGP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,2BAA2B,CAAC;AAEhG,6EAA6E;AAC7E,SAAS,aAAa,CACpB,OAAyE;IAEzE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE;QACzC,MAAM,EAAE,mBAAmB;QAC3B,iBAAiB,EAAE,+BAA+B,0BAA0B,KAAK;QACjF,gBAAgB,EAAE,+DAA+D,IAAI,mFAAmF;KACzK,CAAC,CAAC;IACH,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9E,CAAC;AAGM,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,UAAoC,EAAE;QACnD,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;YACnC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACjE,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,MA2BnB;QACC,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC;YAClC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,wEAAwE;oBACxE,sEAAsE;oBACtE,iEAAiE;oBACjE,+DAA+D;oBAC/D,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAqC,EAAE,CAAC,CAAC;wBAC5E,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC9B,IAAI;qBACL,CAAC;oBACF,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;iBAC5B;aACF;YACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;CACF,CAAA;AA9DY,iBAAiB;IAD7B,MAAM,CAAC,EAAE,CAAC;GACE,iBAAiB,CA8D7B"}
1
+ {"version":3,"file":"telescope-ui.module.js","sourceRoot":"","sources":["../../src/server/telescope-ui.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,MAAM,GAGP,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,2BAA2B,CAAC;AAEhG,6EAA6E;AAC7E,SAAS,aAAa,CACpB,OAAyE;IAEzE,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,6EAA6E;IAC7E,gEAAgE;IAChE,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,IAAI,EAAE;YACJ,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAE,QAAqC,CAAC,SAAS;SACvE;QACD,IAAI,EAAE,IAAI;QACV,cAAc,EAAE,8BAA8B,CAC5C,+BAA+B,EAC/B,6BAA6B,CAC9B;QACD,aAAa,EAAE,mBAAmB;KACnC,CAAC,CAAC;IACH,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC;AAGM,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,UAAoC,EAAE;QACnD,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;YACnC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACjE,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,MA2BnB;QACC,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC;YAClC,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,wEAAwE;oBACxE,sEAAsE;oBACtE,iEAAiE;oBACjE,+DAA+D;oBAC/D,UAAU,EAAE,KAAK,EAAE,GAAG,IAAe,EAAqC,EAAE,CAAC,CAAC;wBAC5E,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;wBAC9B,IAAI;qBACL,CAAC;oBACF,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;iBAC5B;aACF;YACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;SAChC,CAAC;IACJ,CAAC;CACF,CAAA;AA9DY,iBAAiB;IAD7B,MAAM,CAAC,EAAE,CAAC;GACE,iBAAiB,CA8D7B"}
@@ -1,3 +1,4 @@
1
+ import type { ConsoleAuthorize } from '@dudousxd/nestjs-telescope';
1
2
  import type { DynamicModule } from '@nestjs/common';
2
3
  export declare const TELESCOPE_UI_OPTIONS: unique symbol;
3
4
  export interface TelescopeUiModuleOptions {
@@ -9,24 +10,35 @@ export interface TelescopeUiModuleOptions {
9
10
  * before. Must match the core `TelescopeModule.forRoot({ path })`.
10
11
  */
11
12
  path?: string;
13
+ /**
14
+ * Who may open the dashboard page and its assets. The same contract (and
15
+ * usually the same value) as `TelescopeModule.forRoot({ authorize })`:
16
+ * a function, an `@Injectable()` class implementing `ConsoleAuthorizer`, a
17
+ * lazy `() => import(...)`, `{ policy, ability }` for `@nestjs/authorization`,
18
+ * a gate name from `@dudousxd/nestjs-authz`, or `authorizeByToken(...)`.
19
+ *
20
+ * A denied browser navigation gets an "Access denied" page (403), a "Sign in
21
+ * required" page (401), or a 302 to `redirectTo` when the check returns
22
+ * `{ redirectTo: '/login' }`. Page
23
+ * navigations carry cookies, not an `Authorization` header, so check a
24
+ * session here rather than a token.
25
+ *
26
+ * Omitted: open outside production; with `NODE_ENV === 'production'` every
27
+ * request answers 403, and one warning is logged at boot. With
28
+ * `forRootAsync` it can come from the factory.
29
+ */
30
+ authorize?: ConsoleAuthorize;
12
31
  /**
13
32
  * Class decorators applied to the dashboard's page + asset controller
14
33
  * (`TelescopeUiController`), the same shape as `@nestjs/mcp`'s `decorators`,
15
- * e.g. `[UseGuards(AuthenticationGuard), Can(ConsolePolicy, 'view')]` with
16
- * `@nestjs/authentication` + `@nestjs/authorization`. Pass the same list to
17
- * `TelescopeModule.forRoot({ decorators })` (core) so the API matches. Full-page
18
- * navigations carry cookies, not an `Authorization` header, so the
19
- * authentication strategy here must read a cookie session.
20
- *
21
- * PRODUCTION RULE: with `NODE_ENV === 'production'`, mounting the page with no
22
- * `decorators` (an empty array counts as none) fails the boot; protect it with
23
- * `decorators` or mount it yourself with {@link routes}`: false`. Outside
24
- * production an undecorated page mounts open.
34
+ * e.g. `[UseGuards(AuthenticationGuard)]` so `request.user` is set before
35
+ * {@link authorize} runs. Decorators alone do not configure access: without
36
+ * `authorize` the page still answers 403 in production.
25
37
  *
26
38
  * The controller is also marked open to `@nestjs/authorization`'s
27
- * deny-by-default global `AuthorizationGuard` (as `@Can.Anyone()` would), so an
28
- * undecorated dev page keeps loading when that package is adopted. A
29
- * `Can(...)` passed here is still enforced. Applied to a fresh subclass per
39
+ * deny-by-default global `AuthorizationGuard` (as `@Can.Anyone()` would), so
40
+ * that guard does not lock the page out; `authorize` decides. A `Can(...)`
41
+ * passed here is still enforced. Applied to a fresh subclass per
30
42
  * registration, so nothing leaks between `forRoot` calls. With `forRootAsync`,
31
43
  * pass it as the static top-level option.
32
44
  */
@@ -34,19 +46,23 @@ export interface TelescopeUiModuleOptions {
34
46
  /**
35
47
  * `false` mounts NO controller; serve the page from a controller of your own
36
48
  * by extending the exported `TelescopeUiController` (its `TELESCOPE_UI_OPTIONS`
37
- * dependency is exported by the module), protected with ordinary Nest
38
- * decorators. The base class carries no guard, so yours are the whole gate:
49
+ * dependency is exported by the module), protected with
50
+ * `@UseConsoleAuthorize()`. With no argument it runs
51
+ * `TelescopeModule.forRoot({ authorize })`; pass `{ authorize }` for a
52
+ * different check. List it ABOVE your authentication guard, so that guard
53
+ * runs first and sets `request.user`:
39
54
  *
40
55
  * ```ts
41
56
  * @Controller('ops/telescope')
42
- * @Can(ConsolePolicy, 'view')
57
+ * @UseConsoleAuthorize()
58
+ * @UseGuards(AuthGuard)
43
59
  * class ConsolePage extends TelescopeUiController {}
44
60
  * ```
45
61
  *
46
62
  * Named `routes`, not `path: false`, because `path` keeps a job without
47
63
  * routes: the page rewrites its asset URLs against it, so set it to where you
48
- * mount the controller (and to core's `path`). `decorators` only applies to
49
- * the mounted controller and is ignored here. With `forRootAsync`, pass it as
64
+ * mount the controller (and to core's `path`). `decorators` and `authorize`
65
+ * only apply to the mounted controller and are ignored here. With `forRootAsync`, pass it as
50
66
  * the static top-level `routes`. Default `true`.
51
67
  */
52
68
  routes?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-ui.options.d.ts","sourceRoot":"","sources":["../../src/server/telescope-ui.options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACpC"}
1
+ {"version":3,"file":"telescope-ui.options.d.ts","sourceRoot":"","sources":["../../src/server/telescope-ui.options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,oBAAoB,eAAiC,CAAC;AAEnE,MAAM,WAAW,wBAAwB;IACvC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"telescope-ui.options.js","sourceRoot":"","sources":["../../src/server/telescope-ui.options.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"telescope-ui.options.js","sourceRoot":"","sources":["../../src/server/telescope-ui.options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC"}