@gravitee/gamma-lib-observability 2.2.4 → 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.
Files changed (29) hide show
  1. package/INTEGRATION.md +28 -9
  2. package/dist/dashboard-access-provider.js +166 -0
  3. package/dist/dashboards/editor/testing/vanishing-dashboard-harness.d.ts +2 -0
  4. package/dist/dashboards/editor/testing/vanishing-dashboard-harness.d.ts.map +1 -1
  5. package/dist/dashboards/editor/use-dashboard-save.d.ts +8 -4
  6. package/dist/dashboards/editor/use-dashboard-save.d.ts.map +1 -1
  7. package/dist/data-sources/dashboard-errors.d.ts +13 -0
  8. package/dist/data-sources/dashboard-errors.d.ts.map +1 -1
  9. package/dist/data-sources/dashboard-persistence.d.ts +16 -0
  10. package/dist/data-sources/dashboard-persistence.d.ts.map +1 -1
  11. package/dist/data-sources/index.d.ts +1 -1
  12. package/dist/data-sources/index.d.ts.map +1 -1
  13. package/dist/hooks/use-custom-dashboards.d.ts.map +1 -1
  14. package/dist/hooks/use-dashboard-authoring.d.ts +19 -0
  15. package/dist/hooks/use-dashboard-authoring.d.ts.map +1 -0
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3043 -2986
  19. package/dist/providers/dashboard-access-provider.d.ts +38 -0
  20. package/dist/providers/dashboard-access-provider.d.ts.map +1 -0
  21. package/dist/routing/DashboardListPage.d.ts.map +1 -1
  22. package/dist/routing/ObservabilityDashboardPage.d.ts.map +1 -1
  23. package/dist/routing/ObservabilityRoutes.d.ts.map +1 -1
  24. package/dist/routing/dashboard-write-errors.d.ts +12 -0
  25. package/dist/routing/dashboard-write-errors.d.ts.map +1 -0
  26. package/dist/testing/index.d.ts.map +1 -1
  27. package/dist/testing.js +10 -10
  28. package/package.json +1 -1
  29. package/dist/filter-providers-context.js +0 -125
package/INTEGRATION.md CHANGED
@@ -861,13 +861,19 @@ const capabilities: DashboardCapabilities = {
861
861
 
862
862
  | Capability | Effect |
863
863
  | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
864
- | `observability.dashboards.read` | Shows dashboard pages. Templates with `requiredCapabilities` are hidden when `false`. |
864
+ | `observability.dashboards.read` | Shows the dashboards section (list, dashboard pages, editor routes), when dashboards are enabled. Templates with `requiredCapabilities` are hidden when a listed capability is `false`. |
865
865
  | `observability.dashboards.write` | Enables creating, editing, duplicating and deleting custom dashboards. Without it, templates **and** saved custom dashboards are still listed and viewable, just read-only. Storage must also be in scope, see [Dashboard storage](#dashboard-storage-dashboardpersistence). |
866
- | `observability.logs.read` | Shows logs explorer page. |
866
+ | `observability.logs.read` | Shows the logs explorer and log detail routes, when logs are enabled. |
867
867
  | `observability.traces.read` | Shows the traces explorer and trace detail routes, when tracing is enabled. |
868
868
 
869
+ Every declared key is enforced: a section is on screen when its feature flag **and** its read capability both hold, and the catch-all redirect only targets sections that are actually mounted. Capabilities gate `ObservabilityRoutes`; components imported and mounted directly (`DashboardView`, `WidgetItem`, `LogsExplorerPage`, `TracingScreen`, …) are the host's own composition and are not gated, except where a prop says so (`DashboardView`'s `editable` requires the write capability).
870
+
869
871
  **Default behavior:** When no `CapabilityProvider` is present, all capabilities default to `false` (secure default). For initial integration without RBAC, pass all relevant capabilities as `true`.
870
872
 
873
+ > **Migration note (breaking, v3).** Before v3, `observability.logs.read` and `observability.dashboards.read` were declared and documented but never read as route gates: the logs and dashboards sections were mounted on their feature flags alone. They now gate their routes exactly as `observability.traces.read` always has. A host that enables these features without declaring the read capabilities (or without any `CapabilityProvider`) loses the sections on upgrade — declare the keys `true` to keep the previous behavior. Capabilities describe what the host allows; per-user backend refusals are handled separately, see [Backend refusals](#backend-refusals-403).
874
+ >
875
+ > The sidebar entries from `defineObservabilityFeatures().navGroup` are built from the feature config alone — capabilities live in React context and are not visible there. A host that disables a capability should filter the matching nav item itself; a link left in place degrades safely (it lands on the first visible section).
876
+
871
877
  ---
872
878
 
873
879
  ## Advanced Topics
@@ -1033,14 +1039,27 @@ interface DashboardPersistence {
1033
1039
 
1034
1040
  Creation and update are separate operations rather than one `save`: the caller always knows which it means, and a server-backed store maps them to endpoints guarded by different permissions. Implementations own `createdAt` and `updatedAt` and stamp them themselves.
1035
1041
 
1036
- **Failures are typed**, so a screen can tell one outcome from another. Only the editor's save path discriminates them today; everywhere else, and for a store that throws plain `Error`s, a failure lands on the generic error toast. A failed _load_ renders the "may have been deleted" panel whatever the error class was.
1042
+ **Failures are typed**, so a screen can tell one outcome from another. The screens read the `status` carried by the error rather than testing classes, so an error that is structurally one of these (a `status: 404` or `status: 403` field) works across bundling boundaries; a store that throws plain `Error`s opts out of all of it and lands every failure on the generic error toast. The same predicates the screens use, `isDashboardGone(error)` and `isDashboardForbidden(error)`, are exported for hosts composing their own screens from the hooks prefer them over `instanceof` on the classes, which fails when two copies of the library end up on one disk.
1043
+
1044
+ | Thrown | Meaning | What the UI does with it |
1045
+ | --------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
1046
+ | `DashboardConflictError` | The dashboard moved since it was read | Opens the conflict dialog on the editor's save |
1047
+ | `DashboardNotFoundError` | No such dashboard in this environment | On a load, the "may have been deleted" panel with "Try again". On a write to an existing dashboard, the editor's deleted step |
1048
+ | `DashboardForbiddenError` | The caller may not perform this verb | Degrades the screen instead of erroring — see [Backend refusals](#backend-refusals-403) |
1049
+ | `DashboardPersistenceError` | Anything else | Error toast on writes; the editor's failed first load offers "Try again". The listing has no error state today: custom rows are absent, templates stay |
1050
+
1051
+ ### Backend refusals (403)
1052
+
1053
+ Capabilities say what the host allows in general; the backend's ACLs decide per user, and the lib learns about them only by being refused. A `DashboardForbiddenError` (or any rejection carrying `status: 403`) from the persistence therefore degrades the screens rather than erroring:
1054
+
1055
+ - **Listing refused** — the dashboards list keeps the built-in templates, read-only: no error screen, no "New dashboard", no authoring row actions. Custom rows already fetched before the refusal are withdrawn too — a revoked permission stops showing what it used to allow. With a single visible template the list is skipped and the user lands on it directly.
1056
+ - **Reading one dashboard refused** — the dashboard page and the editor say "You don't have permission …" instead of the not-found state, which would blame the wrong cause.
1057
+ - **A write refused** — the editor keeps the author's draft on screen and names the refusal; nothing was written, so nothing is closed or lost. The refusal is remembered for the rest of the section's lifetime and withdraws the authoring affordances ("New dashboard", Edit, Duplicate, Delete) on the list and dashboard pages; a later successful write clears that memory, so permissions granted back mid-session take effect without a reload.
1058
+ - **A refusal on a background refetch** behind an open editor changes nothing on screen: an author's unsaved work survives a permission flip mid-edit.
1059
+
1060
+ Refusals are remembered **per verb family** (read, write), not per operation: one refused delete withdraws every authoring affordance — create, edit and delete alike — until some write succeeds or the section remounts. If your ACL model routinely grants partial write sets, expect that coarseness.
1037
1061
 
1038
- | Thrown | Meaning | What the UI does with it today |
1039
- | --------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------ |
1040
- | `DashboardConflictError` | The dashboard moved since it was read | Opens the conflict dialog on the editor's save |
1041
- | `DashboardNotFoundError` | No such dashboard in this environment | On a forced overwrite, switches that dialog to its deleted step. On any other write, the error toast |
1042
- | `DashboardForbiddenError` | The caller may not perform this verb | Nothing specific yet: the error toast. Exported so a host can tell a refusal apart from a real failure |
1043
- | `DashboardPersistenceError` | Anything else | Error toast |
1062
+ A store that enforces permissions must reject with `DashboardForbiddenError` (or a `status: 403` error) for the degradation to engage — see the port's documentation. Only a 403 earns the quiet degradation: any other listing failure is a fault, not a designed experience (its current silence on the list is a known gap).
1044
1063
 
1045
1064
  **Concurrent edits.** `DashboardConflictError` carries `currentDashboard`, the dashboard as it now stands in the store, and the editor renders it from there rather than fetching again. The author then picks one of three resolutions, and each comes back to this port:
1046
1065
 
@@ -0,0 +1,166 @@
1
+ import { createContext as e, useCallback as t, useContext as n, useMemo as r, useState as i } from "react";
2
+ import { jsx as a } from "react/jsx-runtime";
3
+ //#region src/types/domain.ts
4
+ var o = [
5
+ "eq",
6
+ "neq",
7
+ "contains",
8
+ "not_contains",
9
+ "starts_with",
10
+ "ends_with",
11
+ "gt",
12
+ "gte",
13
+ "lt",
14
+ "lte",
15
+ "in",
16
+ "not_in",
17
+ "exists",
18
+ "not_exists"
19
+ ], s = {
20
+ "observability.dashboards.read": !1,
21
+ "observability.dashboards.write": !1,
22
+ "observability.logs.read": !1,
23
+ "observability.traces.read": !1
24
+ }, c = e(null);
25
+ function l({ capabilities: e, children: t }) {
26
+ return /* @__PURE__ */ a(c.Provider, {
27
+ value: e,
28
+ children: t
29
+ });
30
+ }
31
+ function u() {
32
+ return n(c) || s;
33
+ }
34
+ function d(e) {
35
+ return u()[e];
36
+ }
37
+ //#endregion
38
+ //#region src/providers/dashboard-persistence-provider.tsx
39
+ var f = e(null);
40
+ function p({ persistence: e, children: t }) {
41
+ return /* @__PURE__ */ a(f.Provider, {
42
+ value: e,
43
+ children: t
44
+ });
45
+ }
46
+ function m() {
47
+ return n(f);
48
+ }
49
+ function h() {
50
+ let e = n(f);
51
+ if (!e) throw Error("[gamma-lib-observability] useDashboardPersistence must be used within a <DashboardPersistenceProvider>. Wrap your component tree with <DashboardPersistenceProvider persistence={yourImpl}>.");
52
+ return e;
53
+ }
54
+ //#endregion
55
+ //#region src/providers/logs-data-source-provider.tsx
56
+ var g = e(null);
57
+ function _({ dataSource: e, children: t }) {
58
+ return /* @__PURE__ */ a(g.Provider, {
59
+ value: e,
60
+ children: t
61
+ });
62
+ }
63
+ function v() {
64
+ let e = n(g);
65
+ if (!e) throw Error("[gamma-lib-observability] useLogsDataSource must be used within a <LogsDataSourceProvider>. Wrap your component tree with <LogsDataSourceProvider dataSource={yourImpl}>.");
66
+ return e;
67
+ }
68
+ function y() {
69
+ return n(g);
70
+ }
71
+ //#endregion
72
+ //#region src/providers/metrics-data-source-provider.tsx
73
+ var b = e(null);
74
+ function x({ dataSource: e, children: t }) {
75
+ return /* @__PURE__ */ a(b.Provider, {
76
+ value: e,
77
+ children: t
78
+ });
79
+ }
80
+ function S() {
81
+ let e = n(b);
82
+ if (!e) throw Error("[gamma-lib-observability] useMetricsDataSource must be used within a <MetricsDataSourceProvider>. Wrap your component tree with <MetricsDataSourceProvider dataSource={yourImpl}>.");
83
+ return e;
84
+ }
85
+ function C() {
86
+ return n(b);
87
+ }
88
+ //#endregion
89
+ //#region src/providers/traces-data-source-provider.tsx
90
+ var w = e(null);
91
+ function T({ dataSource: e, children: t }) {
92
+ return /* @__PURE__ */ a(w.Provider, {
93
+ value: e,
94
+ children: t
95
+ });
96
+ }
97
+ function E() {
98
+ let e = n(w);
99
+ if (!e) throw Error("[gamma-lib-observability] useTracesDataSource must be used within a <TracesDataSourceProvider>. Wrap your component tree with <TracesDataSourceProvider dataSource={yourImpl}>.");
100
+ return e;
101
+ }
102
+ function D() {
103
+ return n(w);
104
+ }
105
+ //#endregion
106
+ //#region src/filters/filter-providers-context.tsx
107
+ var O = e(null);
108
+ function k({ providers: e, children: t }) {
109
+ let n = r(() => e, [e]);
110
+ return /* @__PURE__ */ a(O.Provider, {
111
+ value: n,
112
+ children: t
113
+ });
114
+ }
115
+ function A() {
116
+ let e = n(O);
117
+ if (!e) throw Error("[gamma-lib-observability] useFilterProviders must be used within a <FilterProvidersProvider>. Wrap your component tree with <FilterProvidersProvider providers={[...]}>.");
118
+ return e;
119
+ }
120
+ function j(e) {
121
+ let t = A();
122
+ if (e) return t.find((t) => t.field === e);
123
+ }
124
+ //#endregion
125
+ //#region src/providers/dashboard-access-provider.tsx
126
+ var M = e({
127
+ readRefused: !1,
128
+ writeRefused: !1,
129
+ reportRefused: () => {},
130
+ reportGranted: () => {}
131
+ });
132
+ function N({ children: e }) {
133
+ let [n, o] = i({
134
+ read: !1,
135
+ write: !1
136
+ }), s = t((e) => {
137
+ o((t) => t[e] ? t : {
138
+ ...t,
139
+ [e]: !0
140
+ });
141
+ }, []), c = t((e) => {
142
+ o((t) => t[e] ? {
143
+ ...t,
144
+ [e]: !1
145
+ } : t);
146
+ }, []), l = r(() => ({
147
+ readRefused: n.read,
148
+ writeRefused: n.write,
149
+ reportRefused: s,
150
+ reportGranted: c
151
+ }), [
152
+ n.read,
153
+ n.write,
154
+ s,
155
+ c
156
+ ]);
157
+ return /* @__PURE__ */ a(M.Provider, {
158
+ value: l,
159
+ children: e
160
+ });
161
+ }
162
+ function P() {
163
+ return n(M);
164
+ }
165
+ //#endregion
166
+ export { o as S, m as _, A as a, d as b, E as c, C as d, _ as f, h as g, p as h, j as i, x as l, y as m, P as n, T as o, v as p, k as r, D as s, N as t, S as u, l as v, s as x, u as y };
@@ -37,6 +37,8 @@ export declare function createVanishingPersistence(): {
37
37
  deleteRemotely: () => void;
38
38
  /** The server is merely unreachable, which says nothing about the dashboard. */
39
39
  breakReads: () => void;
40
+ /** The permission is revoked mid-session: every read from now on is 403. */
41
+ refuseReads: () => void;
40
42
  };
41
43
  export type VanishingServer = ReturnType<typeof createVanishingPersistence>;
42
44
  export declare function renderEditor(persistence: DashboardPersistence): void;
@@ -1 +1 @@
1
- {"version":3,"file":"vanishing-dashboard-harness.d.ts","sourceRoot":"","sources":["../../../../src/dashboards/editor/testing/vanishing-dashboard-harness.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAIxF,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI9E;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,KAAK,EAAE,qBAInB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,SAQlB,CAAC;AAEF,eAAO,MAAM,OAAO,+BAA+B,CAAC;AAEpD,eAAO,MAAM,cAAc,QAAoC,CAAC;AAChE,eAAO,MAAM,aAAa,4BAA4B,CAAC;AACvD,mFAAmF;AACnF,eAAO,MAAM,aAAa,QAAsC,CAAC;AACjE,8EAA8E;AAC9E,eAAO,MAAM,eAAe,QAA6C,CAAC;AAC1E,yEAAyE;AACzE,eAAO,MAAM,WAAW,QAA6C,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,0BAA0B;;;;IA6BtC,wEAAwE;;IAExE,gFAAgF;;EAKnF;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAQ5E,wBAAgB,YAAY,CAAC,WAAW,EAAE,oBAAoB,QAgB7D;AAED,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC;AAE7B,+EAA+E;AAC/E,wBAAgB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,gBAK5B;AAED,oEAAoE;AACpE,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,SAAU,iBAK1D;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,IAAI,iBAG1D;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,iBAGxD;AAED,oEAAoE;AACpE,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,iBAIvD;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,iBAO3D"}
1
+ {"version":3,"file":"vanishing-dashboard-harness.d.ts","sourceRoot":"","sources":["../../../../src/dashboards/editor/testing/vanishing-dashboard-harness.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAIxF,OAAO,KAAK,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAI9E;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,KAAK,EAAE,qBAInB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,SAQlB,CAAC;AAEF,eAAO,MAAM,OAAO,+BAA+B,CAAC;AAEpD,eAAO,MAAM,cAAc,QAAoC,CAAC;AAChE,eAAO,MAAM,aAAa,4BAA4B,CAAC;AACvD,mFAAmF;AACnF,eAAO,MAAM,aAAa,QAAsC,CAAC;AACjE,8EAA8E;AAC9E,eAAO,MAAM,eAAe,QAA6C,CAAC;AAC1E,yEAAyE;AACzE,eAAO,MAAM,WAAW,QAA6C,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,0BAA0B;;;;IA6BtC,wEAAwE;;IAExE,gFAAgF;;IAIhF,4EAA4E;;EAK/E;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAQ5E,wBAAgB,YAAY,CAAC,WAAW,EAAE,oBAAoB,QAgB7D;AAED,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC;AAE7B,+EAA+E;AAC/E,wBAAgB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,gBAK5B;AAED,oEAAoE;AACpE,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,SAAU,iBAK1D;AAED;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,IAAI,iBAG1D;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,iBAGxD;AAED,oEAAoE;AACpE,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,iBAIvD;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,iBAO3D"}
@@ -4,10 +4,10 @@ import { Dashboard } from '../../types/domain';
4
4
  * screen's vocabulary rather than as an error to sniff.
5
5
  *
6
6
  * A closed union on purpose: the editor answers every one of these in a single
7
- * exhaustive switch, so the day a write can come back another way (OBS-62's
8
- * `forbidden` is next), the compiler walks the author to the one place that
9
- * decides what the screen does about it. Three hand-written `onError` handlers
10
- * is how the last rule ended up applied to one of them.
7
+ * exhaustive switch, so the day a write can come back another way, the
8
+ * compiler walks the author to the one place that decides what the screen does
9
+ * about it. Three hand-written `onError` handlers is how the last rule ended
10
+ * up applied to one of them.
11
11
  */
12
12
  export type DashboardSaveOutcome = {
13
13
  readonly kind: 'saved';
@@ -21,6 +21,10 @@ export type DashboardSaveOutcome = {
21
21
  /** The dashboard this write aimed at no longer exists. */
22
22
  | {
23
23
  readonly kind: 'gone';
24
+ }
25
+ /** The user may not write. Nothing moved, and retrying will not help. */
26
+ | {
27
+ readonly kind: 'forbidden';
24
28
  } | {
25
29
  readonly kind: 'failed';
26
30
  readonly error: Error;
@@ -1 +1 @@
1
- {"version":3,"file":"use-dashboard-save.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/use-dashboard-save.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAE;AAC3D,yEAAyE;GACvE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE;AAC3D,0DAA0D;GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;IACjE,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;IACzF,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;IAC9F,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;CACpG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAyCxE"}
1
+ {"version":3,"file":"use-dashboard-save.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/use-dashboard-save.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAAE;AAC3D,yEAAyE;GACvE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;CAAE;AAC3D,0DAA0D;GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3B,yEAAyE;GACvE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;IACjE,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;IACzF,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;IAC9F,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,KAAK,IAAI,CAAC;CACpG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CA4CxE"}
@@ -52,4 +52,17 @@ export declare class DashboardConflictError extends DashboardPersistenceError {
52
52
  * exists to prevent, so the status is what is trusted.
53
53
  */
54
54
  export declare function isDashboardGone(error: unknown): boolean;
55
+ /**
56
+ * Whether a failure says the caller may not do this, as opposed to the
57
+ * dashboard not being there or the server misbehaving.
58
+ *
59
+ * Same instrument as {@link isDashboardGone}, for the same reason: the status
60
+ * is what is trusted, so an adapter compiled against another copy of this
61
+ * library still gets its refusals recognised. Screens degrade on this answer —
62
+ * a refused read keeps the read-only template experience on screen, a refused
63
+ * write names the refusal and withdraws the authoring affordances — so
64
+ * mistaking a refusal for an unexplained failure would put an error screen
65
+ * where a quieter one belongs.
66
+ */
67
+ export declare function isDashboardForbidden(error: unknown): boolean;
55
68
  //# sourceMappingURL=dashboard-errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-errors.d.ts","sourceRoot":"","sources":["../../src/data-sources/dashboard-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAED,sEAAsE;AACtE,qBAAa,uBAAwB,SAAQ,yBAAyB;gBACxD,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,yBAAyB;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKjD;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,yBAAyB;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC;gBAEzB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM;CAMlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD"}
1
+ {"version":3,"file":"dashboard-errors.d.ts","sourceRoot":"","sources":["../../src/data-sources/dashboard-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK5C;AAED,sEAAsE;AACtE,qBAAa,uBAAwB,SAAQ,yBAAyB;gBACxD,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,yBAAyB;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAKjD;AAED;;;;;;;GAOG;AACH,qBAAa,sBAAuB,SAAQ,yBAAyB;IACnE,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC;gBAEzB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM;CAMlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE5D"}
@@ -26,6 +26,22 @@ export interface UpdateDashboardOptions {
26
26
  * callers pass whatever they were last given and read the returned dashboard
27
27
  * back. A client-side stamp would be overwritten anyway, and would destroy the
28
28
  * only field a remote implementation could use to detect a concurrent edit.
29
+ *
30
+ * An implementation that enforces permissions **must reject with
31
+ * `DashboardForbiddenError`** (or any error carrying `status: 403`) when the
32
+ * caller lacks the right for that operation — on reads and writes alike. The
33
+ * screens degrade on that answer: a refused read keeps the read-only template
34
+ * experience with no error screen, a refused write keeps the author's draft,
35
+ * names the refusal, and withdraws the authoring affordances. Rejecting with a
36
+ * plain `Error` instead turns each of those into a generic failure, with
37
+ * nothing failing to say so. A store that has no permissions — the bundled
38
+ * localStorage one — simply never rejects this way.
39
+ *
40
+ * Refusals are interpreted **per verb, not per resource**: a 403 on one
41
+ * dashboard is remembered as "this user may not read/write dashboards" until
42
+ * a later success on the same verb says otherwise. A store whose permissions
43
+ * are per dashboard will over-withdraw between those two points; that model
44
+ * is deliberately out of scope here.
29
45
  */
30
46
  export interface DashboardPersistence {
31
47
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-persistence.d.ts","sourceRoot":"","sources":["../../src/data-sources/dashboard-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACrE,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5D,8EAA8E;IAC9E,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF;;;;;;;;OAQG;IACH,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C"}
1
+ {"version":3,"file":"dashboard-persistence.d.ts","sourceRoot":"","sources":["../../src/data-sources/dashboard-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACrE,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5D,8EAA8E;IAC9E,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF;;;;;;;;OAQG;IACH,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;;;;;;;;;;OAWG;IACH,oBAAoB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CAAC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9C"}
@@ -2,7 +2,7 @@ export type { DashboardPersistence } from './dashboard-persistence';
2
2
  export type { LogsDataSource, LogsQueryResult } from './logs-data-source';
3
3
  export type { MetricsDataSource } from './metrics-data-source';
4
4
  export type { FetchTraceByIdParams, TracesDataSource, TracesQueryResult } from './traces-data-source';
5
- export { DashboardConflictError, DashboardForbiddenError, DashboardNotFoundError, DashboardPersistenceError, } from './dashboard-errors';
5
+ export { DashboardConflictError, DashboardForbiddenError, DashboardNotFoundError, DashboardPersistenceError, isDashboardForbidden, isDashboardGone, } from './dashboard-errors';
6
6
  export { createDashboardRevisionStore, type DashboardRevisionStore } from './dashboard-revision-store';
7
7
  export { createHttpDashboardPersistence, type HttpDashboardPersistence, type HttpDashboardPersistenceOptions, type UpdateDashboardOptions, } from './http-dashboard-persistence';
8
8
  export { createHttpDataSource, type HttpDataSourceOptions } from './http-data-source';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-sources/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,4BAA4B,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,EACL,8BAA8B,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAAE,KAAK,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-sources/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,4BAA4B,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACvG,OAAO,EACL,8BAA8B,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,4BAA4B,EAAE,KAAK,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-custom-dashboards.d.ts","sourceRoot":"","sources":["../../src/hooks/use-custom-dashboards.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD;;;;GAIG;AACH,wBAAgB,wBAAwB,gFAavC;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,6EAmB7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,4FAEzC;AAED,wBAAgB,0BAA0B,4FAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,4FAI5C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAS5E;AAsBD,wBAAgB,0BAA0B,oFAgBzC"}
1
+ {"version":3,"file":"use-custom-dashboards.d.ts","sourceRoot":"","sources":["../../src/hooks/use-custom-dashboards.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAqBjD;;;;GAIG;AACH,wBAAgB,wBAAwB,gFAiBvC;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,6EAuB7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,4FAEzC;AAED,wBAAgB,0BAA0B,4FAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,4FAI5C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAS5E;AAgCD,wBAAgB,0BAA0B,oFAuBzC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Whether this screen may offer authoring affordances — "New dashboard",
3
+ * Edit, Duplicate, Delete — as one answer instead of a test per surface.
4
+ *
5
+ * Three things have to hold at once: the host declared the write capability,
6
+ * a persistence is in scope to write to, and the backend has not refused this
7
+ * user. The refusal side is what OBS-62 added: the capability says what the
8
+ * host believes, the 403 says what is true, and an affordance that survives
9
+ * the refusal it just met only offers the same failure again. A refused
10
+ * *read* withdraws authoring too — a user who may not read custom dashboards
11
+ * gets the read-only template experience, not a "New dashboard" button whose
12
+ * result they could never see.
13
+ *
14
+ * Deliberately not consulted by the editor route guard: this can flip while
15
+ * an editor is open (the save that got refused), and a guard reacting to it
16
+ * would unmount the editor over the author's unsaved work.
17
+ */
18
+ export declare function useCanAuthorDashboards(): boolean;
19
+ //# sourceMappingURL=use-dashboard-authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dashboard-authoring.d.ts","sourceRoot":"","sources":["../../src/hooks/use-dashboard-authoring.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD"}
package/dist/index.d.ts CHANGED
@@ -45,7 +45,7 @@ export { createHttpTracesFilterSource, type TracesFilterSourceOptions } from './
45
45
  export { createHttpTracesSource, type HttpTracesSourceOptions } from './data-sources';
46
46
  export { useStableTimeRange } from './hooks/use-stable-time-range';
47
47
  export { createLocalStorageDashboardPersistence, type LocalStorageDashboardPersistenceOptions, } from './persistence/local-storage-dashboard-persistence';
48
- export { DashboardConflictError, DashboardForbiddenError, DashboardNotFoundError, DashboardPersistenceError, } from './data-sources';
48
+ export { DashboardConflictError, DashboardForbiddenError, DashboardNotFoundError, DashboardPersistenceError, isDashboardForbidden, isDashboardGone, } from './data-sources';
49
49
  export { useAdoptServerDashboard, useCustomDashboardQuery, useCustomDashboardsQuery, useDeleteDashboardMutation, useCreateDashboardMutation, useOverwriteDashboardMutation, useTakeReadDashboardRevision, useUpdateDashboardMutation, } from './hooks/use-custom-dashboards';
50
50
  export { parseDashboardJson, serializeDashboard, type DashboardJsonParseResult, } from './dashboards/editor/dashboard-json';
51
51
  export type { EditableDashboardFields } from './dashboards/editor/dashboard-editor-state';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}