@gravitee/gamma-lib-observability 2.2.1 → 2.2.2-fix-obs-61-stop-false-editor-conflicts.0deb9bf
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/INTEGRATION.md +34 -2
- package/dist/dashboards/editor/DashboardEditorPage.d.ts.map +1 -1
- package/dist/data-sources/dashboard-persistence.d.ts +20 -0
- package/dist/data-sources/dashboard-persistence.d.ts.map +1 -1
- package/dist/data-sources/dashboard-revision-store.d.ts +112 -0
- package/dist/data-sources/dashboard-revision-store.d.ts.map +1 -0
- package/dist/data-sources/http-dashboard-persistence.d.ts +29 -19
- package/dist/data-sources/http-dashboard-persistence.d.ts.map +1 -1
- package/dist/data-sources/index.d.ts +1 -0
- package/dist/data-sources/index.d.ts.map +1 -1
- package/dist/hooks/use-custom-dashboards.d.ts +15 -0
- package/dist/hooks/use-custom-dashboards.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1971 -1891
- package/dist/providers/http-provider.d.ts +22 -0
- package/dist/providers/http-provider.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/routing/ObservabilityRoutes.d.ts.map +1 -1
- package/package.json +1 -1
package/INTEGRATION.md
CHANGED
|
@@ -253,6 +253,8 @@ The `http` config is applied to **every** internally-built source. Resolution or
|
|
|
253
253
|
2. Nearest `HttpProvider` ancestor
|
|
254
254
|
3. Bare `fetch` (no auth) — only when neither of the above is provided
|
|
255
255
|
|
|
256
|
+
> **Do not memoize this object yourself.** Passing a fresh literal on every render is the intended usage. The library keeps whatever has to stay stable internally, while re-reading `fetch` and re-evaluating the `headers` factory on every request. A host-side `useMemo` with a dependency array that misses the closure producing your token would freeze a rotating token instead, which is the failure this arrangement exists to avoid.
|
|
257
|
+
|
|
256
258
|
> Per-source option bags (`createHttpDataSource(baseUrl, options)`, `createHttpLogsSource(baseUrl, options)`) still exist for advanced overrides (see [Advanced Topics](#advanced-topics)), but the `http` prop is the recommended centralized pattern — supply it once and you are done.
|
|
257
259
|
|
|
258
260
|
---
|
|
@@ -1023,8 +1025,9 @@ interface DashboardPersistence {
|
|
|
1023
1025
|
createDashboard(dashboard: Dashboard, signal?: AbortSignal): Promise<Dashboard>;
|
|
1024
1026
|
updateDashboard(dashboard: Dashboard, signal?: AbortSignal, options?: { force?: boolean }): Promise<Dashboard>;
|
|
1025
1027
|
deleteDashboard(id: string, signal?: AbortSignal): Promise<void>;
|
|
1026
|
-
/**
|
|
1028
|
+
/** Both optional, and only for a store that guards concurrent edits. */
|
|
1027
1029
|
adoptCurrentRevision?(dashboardId: string): void;
|
|
1030
|
+
takeReadRevision?(dashboardId: string): void;
|
|
1028
1031
|
}
|
|
1029
1032
|
```
|
|
1030
1033
|
|
|
@@ -1047,7 +1050,36 @@ Creation and update are separate operations rather than one `save`: the caller a
|
|
|
1047
1050
|
|
|
1048
1051
|
A store with no optimistic locking never throws the conflict, so both members are inert there: `force` has nothing to force, and `adoptCurrentRevision` can be omitted.
|
|
1049
1052
|
|
|
1050
|
-
|
|
1053
|
+
**Which revision a save is checked against.** A read never moves the caller onto the revision it reports, because a store cannot tell the read that fills a fresh editor from the refetch running behind one already open, and the second must leave that editor's base where it is. Whoever is about to edit what a read returned says so with `takeReadRevision(id)`, and the editor does exactly that when it seeds a draft. Without it, opening the editor on a dashboard that moved since it was listed is refused as a conflict against a version identical to the one on screen, which teaches authors to dismiss the one warning that must be believed.
|
|
1054
|
+
|
|
1055
|
+
Do not call it on a refetch behind a draft already open. Both this and `adoptCurrentRevision` fail closed: forgetting either costs a conflict the author can resolve, never a silent overwrite. If you drive the editor's screens yourself, `useTakeReadDashboardRevision()` is the hook that reaches the port.
|
|
1056
|
+
|
|
1057
|
+
The HTTP adapter tracks revisions itself, from the response `ETag` (falling back to the body's `version` when a cross-origin deployment does not expose the header), and quotes it back in `If-Match` on every update. What a listing reports never becomes takeable: an editor opening straight after a list can still be showing content read before it, so only the read of that one dashboard can move its base.
|
|
1058
|
+
|
|
1059
|
+
**That memory outlives the adapter.** The revisions live in a `DashboardRevisionStore`, not on the adapter, because their lifetime is a correctness property rather than a caching detail: lose them and the next save reads the dashboard back, claims whatever revision is current at that moment, and silently overwrites the edit that landed in between. React documents memoization as an optimization it is free to discard, so a `useMemo` cannot hold something that must not be lost.
|
|
1060
|
+
|
|
1061
|
+
`ObservabilityRoutes` handles this for the adapter it builds, holding one store per `baseUrl` in state. An adapter you build yourself gets a private store by default, which is correct as long as you build it once and keep it. If it may be rebuilt, own the store and pass it in:
|
|
1062
|
+
|
|
1063
|
+
```tsx
|
|
1064
|
+
import {
|
|
1065
|
+
createDashboardRevisionStore,
|
|
1066
|
+
createHttpDashboardPersistence,
|
|
1067
|
+
useStableHttpOptions,
|
|
1068
|
+
} from '@gravitee/gamma-lib-observability';
|
|
1069
|
+
|
|
1070
|
+
// Held in state, whose lifetime React guarantees, and replaced when the
|
|
1071
|
+
// environment changes so no revision survives the switch.
|
|
1072
|
+
const [scope, setScope] = useState(() => ({ baseUrl, store: createDashboardRevisionStore() }));
|
|
1073
|
+
if (scope.baseUrl !== baseUrl) setScope({ baseUrl, store: createDashboardRevisionStore() });
|
|
1074
|
+
|
|
1075
|
+
const http = useStableHttpOptions({ credentials: 'include' });
|
|
1076
|
+
const persistence = useMemo(
|
|
1077
|
+
() => createHttpDashboardPersistence(baseUrl, { ...http, revisionStore: scope.store }),
|
|
1078
|
+
[baseUrl, http, scope],
|
|
1079
|
+
);
|
|
1080
|
+
```
|
|
1081
|
+
|
|
1082
|
+
Saving a dashboard the store never saw is still handled rather than refused: the current revision is read back so the request states a precondition the server checks. That leaves a narrow window an edit can slip through unseen, so it logs a warning. Nothing in the library reaches that path, and seeing it means a store was lost or never shared.
|
|
1051
1083
|
|
|
1052
1084
|
### Custom data source
|
|
1053
1085
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardEditorPage.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/DashboardEditorPage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DashboardEditorPage.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/DashboardEditorPage.tsx"],"names":[],"mappings":"AAwEA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,EAAE,wBAAwB,2CAYjF"}
|
|
@@ -56,5 +56,25 @@ export interface DashboardPersistence {
|
|
|
56
56
|
* one would let a draft be saved over an edit nobody ever looked at.
|
|
57
57
|
*/
|
|
58
58
|
adoptCurrentRevision?(dashboardId: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Records that the caller now holds the content of the last read of this
|
|
61
|
+
* dashboard, and is editing from it. The next save is checked against that
|
|
62
|
+
* revision rather than whichever older one the caller happened to be left
|
|
63
|
+
* with, which is what stops an editor opened on the current version from
|
|
64
|
+
* being refused a conflict against itself.
|
|
65
|
+
*
|
|
66
|
+
* This is the counterpart of {@link adoptCurrentRevision} for the ordinary
|
|
67
|
+
* way into the editor, and it exists for the same reason: an implementation
|
|
68
|
+
* cannot tell a refetch running behind a live draft from the read that seeds
|
|
69
|
+
* a fresh one, and only the caller can. Call it when a draft is seeded, with
|
|
70
|
+
* the content the draft was seeded from still on screen. Never on a refetch
|
|
71
|
+
* behind a draft already open, which would re-base that draft on an edit its
|
|
72
|
+
* author has not seen.
|
|
73
|
+
*
|
|
74
|
+
* Optional for the same reason as {@link adoptCurrentRevision}: a store
|
|
75
|
+
* without optimistic locking has no revision to move. Forgetting it costs a
|
|
76
|
+
* conflict the author can resolve, never a silent overwrite.
|
|
77
|
+
*/
|
|
78
|
+
takeReadRevision?(dashboardId: string): void;
|
|
59
79
|
}
|
|
60
80
|
//# sourceMappingURL=dashboard-persistence.d.ts.map
|
|
@@ -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,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;
|
|
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,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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which revision of each dashboard a caller is working from, and which one a
|
|
3
|
+
* refused save has offered them.
|
|
4
|
+
*
|
|
5
|
+
* <h3>Why this is not just a field on the adapter</h3>
|
|
6
|
+
* This is the optimistic-locking protection itself: the validator quoted back
|
|
7
|
+
* as `If-Match` on the next save. Forget it and the save reads the dashboard
|
|
8
|
+
* back, claims whatever revision is current at that moment, and destroys the
|
|
9
|
+
* edit that landed in between, with no conflict raised and nothing for either
|
|
10
|
+
* author to see.
|
|
11
|
+
*
|
|
12
|
+
* That makes its lifetime a correctness property rather than a caching detail,
|
|
13
|
+
* and a `useMemo` cannot express it: React documents memoization as an
|
|
14
|
+
* optimization it is free to discard, so a revision map living inside a
|
|
15
|
+
* memoized adapter can be emptied by React alone, without anything in the
|
|
16
|
+
* application changing. Holding it separately lets the owner give it a
|
|
17
|
+
* lifetime React actually guarantees, and lets the adapter be rebuilt as often
|
|
18
|
+
* as its inputs require without ever costing an edit.
|
|
19
|
+
*
|
|
20
|
+
* The scope of one store is one dashboards endpoint. A store must never be
|
|
21
|
+
* shared across environments, and must not outlive the one it belongs to:
|
|
22
|
+
* dashboards are per-environment, and a revision from another environment is
|
|
23
|
+
* meaningless at best.
|
|
24
|
+
*
|
|
25
|
+
* <h3>Read and write are not the same event</h3>
|
|
26
|
+
* A write always moves the caller onto the revision it produced, because that
|
|
27
|
+
* is what the caller now holds. A read only fills a blank. The asymmetry is
|
|
28
|
+
* the whole point: an editor holds a draft seeded from an earlier read while a
|
|
29
|
+
* refetch runs behind it, and moving the revision on that refetch would let
|
|
30
|
+
* the draft be saved against a revision it was never based on, silently
|
|
31
|
+
* overwriting the edit that produced it. The cost of erring this way is a save
|
|
32
|
+
* refused as a conflict when the author was in fact already current. They are
|
|
33
|
+
* shown the current version and can overwrite in one request: visible and
|
|
34
|
+
* recoverable, where the reverse is neither.
|
|
35
|
+
*
|
|
36
|
+
* <h3>Seeing a revision, and taking it</h3>
|
|
37
|
+
* That leaves reads that *are* the caller taking the content: the one seeding
|
|
38
|
+
* a fresh editor. Refusing to move for those refuses every first save made
|
|
39
|
+
* after the dashboard moved since it was listed, and a conflict the author
|
|
40
|
+
* cannot have caused is worse than no warning at all, because it is the same
|
|
41
|
+
* dialog the real conflict uses.
|
|
42
|
+
*
|
|
43
|
+
* So a read records what it saw without moving anyone, and taking it is a
|
|
44
|
+
* separate act. Two revisions can be on offer at once and they are kept apart:
|
|
45
|
+
* the one a read reported ({@link sight} / {@link take}) and the one a refused
|
|
46
|
+
* save reported ({@link offer} / {@link adopt}). Merging them would let a
|
|
47
|
+
* refetch landing between a refusal and the author's answer replace the version
|
|
48
|
+
* the dialog is showing, so "take their version" would move them onto an edit
|
|
49
|
+
* nobody has looked at.
|
|
50
|
+
*
|
|
51
|
+
* Both stay fail-closed: a caller that never says it took anything keeps the
|
|
52
|
+
* revision it already had, which costs a conflict, never an overwrite.
|
|
53
|
+
*/
|
|
54
|
+
export interface DashboardRevisionStore {
|
|
55
|
+
/** The validator to quote for a save, or `undefined` when none is known. */
|
|
56
|
+
current(dashboardId: string): string | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Records the revision a write just produced. Always moves, and settles the
|
|
59
|
+
* race any outstanding offer belonged to: keeping that offer would let a
|
|
60
|
+
* later "take their version" move the caller back onto a revision older than
|
|
61
|
+
* the one they just wrote.
|
|
62
|
+
*/
|
|
63
|
+
refresh(dashboardId: string, validator: string | null): void;
|
|
64
|
+
/**
|
|
65
|
+
* Records the revision a *listing* reported. Fills a blank and leaves an
|
|
66
|
+
* existing entry alone, for the reason given on this interface.
|
|
67
|
+
*
|
|
68
|
+
* A listing is never takeable. What it reports is the revision of a dashboard
|
|
69
|
+
* nobody is looking at yet, and an editor opening straight afterwards can
|
|
70
|
+
* still be showing older content held per dashboard elsewhere. Taking the
|
|
71
|
+
* listing's revision would move the base past the content on screen, which is
|
|
72
|
+
* the overwrite all of this exists to prevent. Use {@link sight} for a read
|
|
73
|
+
* whose content the caller can actually go on to edit.
|
|
74
|
+
*/
|
|
75
|
+
seed(dashboardId: string, validator: string | null): void;
|
|
76
|
+
/**
|
|
77
|
+
* Records the revision a read of this one dashboard reported: seen, and
|
|
78
|
+
* available to be {@link take}n by whoever goes on to hold that content.
|
|
79
|
+
* Fills a blank exactly like {@link seed}, and moves no one on its own.
|
|
80
|
+
*/
|
|
81
|
+
sight(dashboardId: string, validator: string | null): void;
|
|
82
|
+
/**
|
|
83
|
+
* Moves the caller onto the revision the last {@link sight}ed read reported,
|
|
84
|
+
* which is the one they have just been handed and are about to edit.
|
|
85
|
+
*
|
|
86
|
+
* Nothing sighted is not an error: no read of this dashboard has landed, so
|
|
87
|
+
* the remembered revision is still the best thing known, and leaving it is
|
|
88
|
+
* what keeps a forgotten call cheap.
|
|
89
|
+
*/
|
|
90
|
+
take(dashboardId: string): void;
|
|
91
|
+
/**
|
|
92
|
+
* Records the revision a refused save reported: seen, but not taken. It is
|
|
93
|
+
* kept apart from {@link current} because the author has been *told* about
|
|
94
|
+
* that revision, not moved onto it.
|
|
95
|
+
*/
|
|
96
|
+
offer(dashboardId: string, validator: string | null): void;
|
|
97
|
+
/**
|
|
98
|
+
* Moves the caller onto the offered revision, which is the one they have
|
|
99
|
+
* just been shown and taken. Nothing to adopt is not an error: no save was
|
|
100
|
+
* refused, so the remembered revision is still the one the caller is on.
|
|
101
|
+
*/
|
|
102
|
+
adopt(dashboardId: string): void;
|
|
103
|
+
/** Drops everything known about a dashboard that no longer exists. */
|
|
104
|
+
forget(dashboardId: string): void;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* A store for one dashboards endpoint. Give it a lifetime that matches that
|
|
108
|
+
* endpoint: long enough to outlive any adapter built against it, short enough
|
|
109
|
+
* that switching environment starts from nothing.
|
|
110
|
+
*/
|
|
111
|
+
export declare function createDashboardRevisionStore(): DashboardRevisionStore;
|
|
112
|
+
//# sourceMappingURL=dashboard-revision-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-revision-store.d.ts","sourceRoot":"","sources":["../../src/data-sources/dashboard-revision-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE7D;;;;;;;;;;OAUG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1D;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE3D;;;;;;;OAOG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAE3D;;;;OAIG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,sEAAsE;IACtE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,sBAAsB,CA8DrE"}
|
|
@@ -1,23 +1,36 @@
|
|
|
1
1
|
import { HttpOptions } from '../providers/http-provider';
|
|
2
2
|
import { Dashboard } from '../types/domain';
|
|
3
3
|
import { DashboardPersistence, UpdateDashboardOptions } from './dashboard-persistence';
|
|
4
|
+
import { DashboardRevisionStore } from './dashboard-revision-store';
|
|
4
5
|
export interface HttpDashboardPersistenceOptions extends HttpOptions {
|
|
5
6
|
/**
|
|
6
7
|
* Path appended to `baseUrl` for the dashboards collection.
|
|
7
8
|
* @default '/observability/dashboards'
|
|
8
9
|
*/
|
|
9
10
|
readonly dashboardsPath?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Where this adapter remembers which revision each dashboard is being edited
|
|
13
|
+
* from. Pass one in to give that memory a lifetime longer than the adapter's,
|
|
14
|
+
* which is what a caller rebuilding the adapter has to do: see
|
|
15
|
+
* {@link DashboardRevisionStore} for why losing it costs an edit.
|
|
16
|
+
*
|
|
17
|
+
* Defaults to a private store, so an adapter that is built once and kept is
|
|
18
|
+
* correct without the caller thinking about it.
|
|
19
|
+
*/
|
|
20
|
+
readonly revisionStore?: DashboardRevisionStore;
|
|
10
21
|
}
|
|
11
22
|
/**
|
|
12
23
|
* The port's optional revision handling, honoured rather than ignored: this
|
|
13
24
|
* adapter guards concurrent edits, so `force` sends `If-Match: *` (the
|
|
14
|
-
* dashboard must still exist, so an overwrite never resurrects a deleted one)
|
|
15
|
-
*
|
|
16
|
-
*
|
|
25
|
+
* dashboard must still exist, so an overwrite never resurrects a deleted one),
|
|
26
|
+
* `adoptCurrentRevision` is what moves the caller onto the revision a refused
|
|
27
|
+
* save reported, and `takeReadRevision` what moves them onto the one the last
|
|
28
|
+
* read reported.
|
|
17
29
|
*/
|
|
18
30
|
export interface HttpDashboardPersistence extends DashboardPersistence {
|
|
19
31
|
updateDashboard(dashboard: Dashboard, signal?: AbortSignal, options?: UpdateDashboardOptions): Promise<Dashboard>;
|
|
20
32
|
adoptCurrentRevision(dashboardId: string): void;
|
|
33
|
+
takeReadRevision(dashboardId: string): void;
|
|
21
34
|
}
|
|
22
35
|
export type { UpdateDashboardOptions };
|
|
23
36
|
/**
|
|
@@ -26,23 +39,20 @@ export type { UpdateDashboardOptions };
|
|
|
26
39
|
*
|
|
27
40
|
* <h3>Revisions</h3>
|
|
28
41
|
* The API guards concurrent edits with `ETag` / `If-Match`, and its revision
|
|
29
|
-
* counter has no home in the lib's `Dashboard
|
|
30
|
-
* the same contract whatever backs it.
|
|
31
|
-
*
|
|
32
|
-
* and
|
|
33
|
-
*
|
|
42
|
+
* counter has no home in the lib's `Dashboard`, deliberately, so the port stays
|
|
43
|
+
* the same contract whatever backs it. The validator naming the revision the
|
|
44
|
+
* caller is working from is kept in a {@link DashboardRevisionStore} instead,
|
|
45
|
+
* and quoted back on the next save. `If-Match` is always sent, so the API's 428
|
|
46
|
+
* is unreachable from here.
|
|
47
|
+
*
|
|
48
|
+
* That store is where the read-versus-write asymmetry is explained, and why its
|
|
49
|
+
* lifetime belongs to the caller rather than to this adapter. Pass one in when
|
|
50
|
+
* this adapter may be rebuilt.
|
|
34
51
|
*
|
|
35
|
-
* A
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* while TanStack Query refetches behind it, and adopting that refetch's revision
|
|
40
|
-
* would let the draft be saved with a validator naming a revision it was never
|
|
41
|
-
* based on — silently overwriting the edit that produced it, which is the one
|
|
42
|
-
* outcome the whole mechanism exists to prevent. The cost of the other direction
|
|
43
|
-
* is a save refused as a conflict while the author was in fact already looking
|
|
44
|
-
* at the current revision: they are shown it and can overwrite in one request.
|
|
45
|
-
* Visible and recoverable, where the reverse is neither.
|
|
52
|
+
* A read never moves the caller onto the revision it reports, because the same
|
|
53
|
+
* call is both the read that seeds a fresh editor and the refetch running
|
|
54
|
+
* behind one already open. Whoever is about to edit what a read returned says
|
|
55
|
+
* so with `takeReadRevision`.
|
|
46
56
|
*
|
|
47
57
|
* The `ETag` header is preferred and the body's `version` is the fallback: a
|
|
48
58
|
* cross-origin deployment that does not expose `ETag` still yields a usable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-dashboard-persistence.d.ts","sourceRoot":"","sources":["../../src/data-sources/http-dashboard-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-dashboard-persistence.d.ts","sourceRoot":"","sources":["../../src/data-sources/http-dashboard-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAgC,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAkBvG,MAAM,WAAW,+BAAgC,SAAQ,WAAW;IAClE;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAyB,SAAQ,oBAAoB;IACpE,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAClH,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,+BAA+B,GACxC,wBAAwB,CAyQ1B"}
|
|
@@ -3,6 +3,7 @@ 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
5
|
export { DashboardConflictError, DashboardForbiddenError, DashboardNotFoundError, DashboardPersistenceError, } from './dashboard-errors';
|
|
6
|
+
export { createDashboardRevisionStore, type DashboardRevisionStore } from './dashboard-revision-store';
|
|
6
7
|
export { createHttpDashboardPersistence, type HttpDashboardPersistence, type HttpDashboardPersistenceOptions, type UpdateDashboardOptions, } from './http-dashboard-persistence';
|
|
7
8
|
export { createHttpDataSource, type HttpDataSourceOptions } from './http-data-source';
|
|
8
9
|
export { createHttpFilterSource, type FilterSource } from './http-filter-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,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,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"}
|
|
@@ -31,5 +31,20 @@ export declare function useOverwriteDashboardMutation(): import('@tanstack/react
|
|
|
31
31
|
* No request is made: the refusal already carried the whole dashboard.
|
|
32
32
|
*/
|
|
33
33
|
export declare function useAdoptServerDashboard(): (dashboard: Dashboard) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Tells the persistence that this caller now holds what the last read of a
|
|
36
|
+
* dashboard returned, and is editing from it, so the next save is checked
|
|
37
|
+
* against that revision instead of an older one left over from a listing or an
|
|
38
|
+
* earlier visit. Without it, opening the editor on a dashboard that moved since
|
|
39
|
+
* it was listed is refused as a conflict against a version identical to the one
|
|
40
|
+
* on screen.
|
|
41
|
+
*
|
|
42
|
+
* Call it when a draft is seeded, never on a refetch behind a draft already
|
|
43
|
+
* open: the persistence cannot tell those apart, and moving the base under a
|
|
44
|
+
* live draft is what would let it overwrite an edit its author never saw.
|
|
45
|
+
*
|
|
46
|
+
* No request is made, and no cache is touched: the content is already in hand.
|
|
47
|
+
*/
|
|
48
|
+
export declare function useTakeReadDashboardRevision(): (dashboardId: string) => void;
|
|
34
49
|
export declare function useDeleteDashboardMutation(): import('@tanstack/react-query').UseMutationResult<void, Error, string, unknown>;
|
|
35
50
|
//# sourceMappingURL=use-custom-dashboards.d.ts.map
|
|
@@ -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;AAsBD,wBAAgB,0BAA0B,oFAgBzC"}
|
|
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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { DEFAULT_CAPABILITIES, DEFAULT_MEASURE, FILTER_OPERATORS, isBarWidget, i
|
|
|
7
7
|
export type { AttributeValue, FacetBucket, Measure, MetricResult, PayloadLog, Span, SpanEvent, SpanKind, SpanStatus, TimeSeriesGroup, TimeSeriesPoint, TraceDetail, TraceSummary, } from './types';
|
|
8
8
|
export type { FacetMetricRequest, FacetsRequest, LogsQuery, LogColumnDefinition, MeasuresRequest, MetricRequest, TimeSeriesRequest, TraceQuery, } from './types';
|
|
9
9
|
export type { DashboardPersistence, FetchTraceByIdParams, LogsDataSource, LogsQueryResult, MetricsDataSource, TracesDataSource, TracesQueryResult, } from './data-sources';
|
|
10
|
-
export { CapabilityProvider, DashboardPersistenceProvider, HttpProvider, LiveRefreshProvider, LogsDataSourceProvider, MetricsDataSourceProvider, TracesDataSourceProvider, useCapabilities, useCapability, useDashboardPersistence, useOptionalDashboardPersistence, useHttpOptions, useLiveRefresh, useLogsDataSource, useMetricsDataSource, useOptionalLiveRefresh, useOptionalLogsDataSource, useOptionalMetricsDataSource, useOptionalTracesDataSource, useTracesDataSource, DEFAULT_REFRESH_INTERVAL_MS, } from './providers';
|
|
10
|
+
export { CapabilityProvider, DashboardPersistenceProvider, HttpProvider, LiveRefreshProvider, LogsDataSourceProvider, MetricsDataSourceProvider, TracesDataSourceProvider, useCapabilities, useCapability, useDashboardPersistence, useOptionalDashboardPersistence, useHttpOptions, useLiveRefresh, useLogsDataSource, useMetricsDataSource, useOptionalLiveRefresh, useOptionalLogsDataSource, useOptionalMetricsDataSource, useOptionalTracesDataSource, useStableHttpOptions, useTracesDataSource, DEFAULT_REFRESH_INTERVAL_MS, } from './providers';
|
|
11
11
|
export type { CapabilityProviderProps, DashboardPersistenceProviderProps, HttpOptions, HttpProviderProps, LiveRefreshConfig, LiveRefreshProviderProps, LiveRefreshState, LogsDataSourceProviderProps, MetricsDataSourceProviderProps, TracesDataSourceProviderProps, } from './providers';
|
|
12
12
|
export { DEFAULT_STALE_TIME, observabilityQueryKeys, useFacetsQuery, useInfiniteOptions, useLogDetailQuery, useLogsPagedQuery, useLogsQuery, useMeasuresQuery, useTimeSeriesQuery, useTraceDetailQuery, useTracesPagedQuery, } from './hooks';
|
|
13
13
|
export type { InfiniteOptionsLoader, InfiniteOptionsLoaderParams, InfiniteOptionsLoaderResult, UseInfiniteOptionsParams, UseInfiniteOptionsResult, UseFacetsQueryParams, UseLogDetailQueryParams, UseLogDetailQueryResult, UseLogsPagedQueryParams, UseLogsPagedQueryResult, UseLogsQueryParams, UseMeasuresQueryParams, UseTimeSeriesQueryParams, UseTraceDetailQueryParams, UseTraceDetailQueryResult, UseTracesPagedQueryParams, UseTracesPagedQueryResult, } from './hooks';
|
|
@@ -37,7 +37,7 @@ export { ContextFiltersProvider, useContextFilters } from './routing';
|
|
|
37
37
|
export type { BreadcrumbSegment, ContextFiltersProviderProps, DashboardFeatureConfig, ExternalDashboardLink, FeatureKey, LogDetailMode, LogsFeatureConfig, NavGroup, NavItem, ObservabilityFeatures, ObservabilityFeaturesConfig, ObservabilityRoutesProps, TracingFeatureConfig, TracingScreenProps, } from './routing';
|
|
38
38
|
export { buildObservabilityBaseUrl, type BuildObservabilityBaseUrlOptions } from './build-observability-base-url';
|
|
39
39
|
export { buildTracesBaseUrl, type BuildTracesBaseUrlOptions } from './build-traces-base-url';
|
|
40
|
-
export { createHttpDashboardPersistence, type HttpDashboardPersistence, type HttpDashboardPersistenceOptions, type UpdateDashboardOptions, } from './data-sources';
|
|
40
|
+
export { createDashboardRevisionStore, createHttpDashboardPersistence, type DashboardRevisionStore, type HttpDashboardPersistence, type HttpDashboardPersistenceOptions, type UpdateDashboardOptions, } from './data-sources';
|
|
41
41
|
export { createHttpDataSource, type HttpDataSourceOptions } from './data-sources';
|
|
42
42
|
export { createHttpFilterSource, type FilterSource } from './data-sources';
|
|
43
43
|
export { createHttpLogsSource, type HttpLogsSourceOptions } from './data-sources';
|
|
@@ -46,7 +46,7 @@ export { createHttpTracesSource, type HttpTracesSourceOptions } from './data-sou
|
|
|
46
46
|
export { useStableTimeRange } from './hooks/use-stable-time-range';
|
|
47
47
|
export { createLocalStorageDashboardPersistence, type LocalStorageDashboardPersistenceOptions, } from './persistence/local-storage-dashboard-persistence';
|
|
48
48
|
export { DashboardConflictError, DashboardForbiddenError, DashboardNotFoundError, DashboardPersistenceError, } from './data-sources';
|
|
49
|
-
export { useAdoptServerDashboard, useCustomDashboardQuery, useCustomDashboardsQuery, useDeleteDashboardMutation, useCreateDashboardMutation, useOverwriteDashboardMutation, useUpdateDashboardMutation, } from './hooks/use-custom-dashboards';
|
|
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';
|
|
52
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"AACA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,eAAe,EACf,aAAa,EACb,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,cAAc,EACd,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,+BAA+B,EAC/B,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,uBAAuB,EACvB,iCAAiC,EACjC,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEpH,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,oCAAoC,EACpC,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,YAAY,GACb,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACZ,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,EACL,gBAAgB,EAChB,gCAAgC,EAChC,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,GACT,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,GACd,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,EAC/B,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,iCAAiC,EACjC,gCAAgC,GACjC,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,kCAAkC,EAClC,uBAAuB,EACvB,0BAA0B,EAC1B,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEtE,YAAY,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,yBAAyB,EAAE,KAAK,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAG7F,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EACL,sCAAsC,EACtC,KAAK,uCAAuC,GAC7C,MAAM,mDAAmD,CAAC;AAG3D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAG5C,YAAY,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC"}
|