@d-dash/core 0.1.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/README.md +46 -0
- package/dist/adapters.d.ts +125 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +2 -0
- package/dist/adapters.js.map +1 -0
- package/dist/dashboard-runtime.d.ts +96 -0
- package/dist/dashboard-runtime.d.ts.map +1 -0
- package/dist/dashboard-runtime.js +238 -0
- package/dist/dashboard-runtime.js.map +1 -0
- package/dist/errors.d.ts +15 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +1 -0
- package/dist/execution.d.ts +37 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +210 -0
- package/dist/execution.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +11 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +2 -0
- package/dist/json.js.map +1 -0
- package/dist/migrations.d.ts +21 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +26 -0
- package/dist/migrations.js.map +1 -0
- package/dist/registry.d.ts +30 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +78 -0
- package/dist/registry.js.map +1 -0
- package/dist/runtime.d.ts +68 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +102 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +75 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/validation.d.ts +33 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +203 -0
- package/dist/validation.js.map +1 -0
- package/package.json +44 -0
package/README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# @d-dash/core
|
|
2
|
+
|
|
3
|
+
Headless runtime contracts and orchestration for d-dash.
|
|
4
|
+
|
|
5
|
+
## What this package provides
|
|
6
|
+
|
|
7
|
+
- Persisted dashboard schema contracts
|
|
8
|
+
- Runtime-resolved execution contracts
|
|
9
|
+
- Adapter interfaces (datasource, visualization, grid)
|
|
10
|
+
- Registry and validation APIs
|
|
11
|
+
- Dashboard runtime orchestration APIs
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @d-dash/core
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { createAdapterRegistry, createDashboardRuntime } from "@d-dash/core";
|
|
23
|
+
|
|
24
|
+
const registry = createAdapterRegistry();
|
|
25
|
+
const runtime = createDashboardRuntime({ registry });
|
|
26
|
+
|
|
27
|
+
const validation = runtime.validateDashboard(dashboard);
|
|
28
|
+
if (!validation.ok) {
|
|
29
|
+
throw new Error("Invalid dashboard");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const session = runtime.createSession(dashboard);
|
|
33
|
+
|
|
34
|
+
const unbind = await runtime.bindLayoutResize({
|
|
35
|
+
session,
|
|
36
|
+
gridId: "gridstack",
|
|
37
|
+
gridTarget,
|
|
38
|
+
resolveTargetByWidgetId(widgetId) {
|
|
39
|
+
return widgetTargetById[widgetId];
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// call unbind() on teardown
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
See root documentation for full integration details.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { DDashError } from "./errors";
|
|
2
|
+
import type { JsonObject } from "./json";
|
|
3
|
+
import type { MetricDefinition, VisualizationKind } from "./schema";
|
|
4
|
+
import type { ResolvedTimeRange, RuntimeContext } from "./runtime";
|
|
5
|
+
/** Scalar value types supported in DataField arrays. */
|
|
6
|
+
export type ScalarValue = string | number | boolean | null;
|
|
7
|
+
/** Supported DataField value type tags. */
|
|
8
|
+
export type DataFieldType = "time" | "number" | "string" | "boolean";
|
|
9
|
+
/** Single typed field within a DataFrame payload. */
|
|
10
|
+
export type DataField = {
|
|
11
|
+
name: string;
|
|
12
|
+
type: DataFieldType;
|
|
13
|
+
values: ScalarValue[];
|
|
14
|
+
labels?: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
/** Normalized table-like data payload exchanged across runtime and adapters. */
|
|
17
|
+
export type DataFrame = {
|
|
18
|
+
fields: DataField[];
|
|
19
|
+
};
|
|
20
|
+
/** Request envelope passed to datasource adapters for widget queries. */
|
|
21
|
+
export type DatasourceQueryRequest = {
|
|
22
|
+
metric: string;
|
|
23
|
+
timeRange: ResolvedTimeRange;
|
|
24
|
+
filters?: JsonObject;
|
|
25
|
+
};
|
|
26
|
+
/** Successful datasource query result envelope. */
|
|
27
|
+
export type DatasourceQuerySuccess = {
|
|
28
|
+
status: "success";
|
|
29
|
+
frames: DataFrame[];
|
|
30
|
+
warnings?: string[];
|
|
31
|
+
};
|
|
32
|
+
/** Partially successful datasource query result envelope. */
|
|
33
|
+
export type DatasourceQueryPartial = {
|
|
34
|
+
status: "partial";
|
|
35
|
+
frames: DataFrame[];
|
|
36
|
+
warnings?: string[];
|
|
37
|
+
error: DDashError;
|
|
38
|
+
};
|
|
39
|
+
/** Failed datasource query result envelope. */
|
|
40
|
+
export type DatasourceQueryError = {
|
|
41
|
+
status: "error";
|
|
42
|
+
frames: DataFrame[];
|
|
43
|
+
warnings?: string[];
|
|
44
|
+
error: DDashError;
|
|
45
|
+
};
|
|
46
|
+
/** Union of all datasource query result envelope variants. */
|
|
47
|
+
export type DatasourceQueryResult = DatasourceQuerySuccess | DatasourceQueryPartial | DatasourceQueryError;
|
|
48
|
+
/** Capability flags declared by datasource adapters. */
|
|
49
|
+
export type DatasourceCapabilities = {
|
|
50
|
+
supportsStreaming?: boolean;
|
|
51
|
+
supportsAdHocFilters?: boolean;
|
|
52
|
+
supportsMetadataDiscovery?: boolean;
|
|
53
|
+
};
|
|
54
|
+
/** Datasource adapter public contract implemented by plugins. */
|
|
55
|
+
export interface DatasourceAdapter {
|
|
56
|
+
readonly id: string;
|
|
57
|
+
readonly capabilities?: DatasourceCapabilities;
|
|
58
|
+
/** Optional metadata discovery API for known metrics. */
|
|
59
|
+
getMetrics?(): Promise<MetricDefinition[]>;
|
|
60
|
+
/** Execute a datasource query and return normalized result envelopes. */
|
|
61
|
+
query(request: DatasourceQueryRequest, context: RuntimeContext): Promise<DatasourceQueryResult>;
|
|
62
|
+
}
|
|
63
|
+
/** Capability flags declared by visualization adapters. */
|
|
64
|
+
export type VisualizationCapabilities = {
|
|
65
|
+
supportsTimeSeries?: boolean;
|
|
66
|
+
supportsStat?: boolean;
|
|
67
|
+
supportsTable?: boolean;
|
|
68
|
+
supportsTextWidget?: boolean;
|
|
69
|
+
supportsHtmlWidget?: boolean;
|
|
70
|
+
supportsTheming?: boolean;
|
|
71
|
+
supportsResize?: boolean;
|
|
72
|
+
};
|
|
73
|
+
/** Render request envelope passed to visualization adapters. */
|
|
74
|
+
export type VisualizationRenderRequest = {
|
|
75
|
+
kind: VisualizationKind;
|
|
76
|
+
frames: DataFrame[];
|
|
77
|
+
options?: JsonObject;
|
|
78
|
+
context: RuntimeContext;
|
|
79
|
+
};
|
|
80
|
+
/** Visualization adapter public contract implemented by plugins. */
|
|
81
|
+
export interface VisualizationAdapter<TTarget = unknown> {
|
|
82
|
+
readonly type: VisualizationKind;
|
|
83
|
+
readonly capabilities?: VisualizationCapabilities;
|
|
84
|
+
/** Optional setup phase invoked before first render. */
|
|
85
|
+
init?(target: TTarget): Promise<void> | void;
|
|
86
|
+
/** Required render method for widget output. */
|
|
87
|
+
render(request: VisualizationRenderRequest, target: TTarget): Promise<void> | void;
|
|
88
|
+
/** Optional resize hook invoked by host/grid lifecycle. */
|
|
89
|
+
resize?(target: TTarget): Promise<void> | void;
|
|
90
|
+
/** Optional cleanup hook invoked during teardown. */
|
|
91
|
+
destroy?(target: TTarget): Promise<void> | void;
|
|
92
|
+
}
|
|
93
|
+
/** Capability flags declared by grid adapters. */
|
|
94
|
+
export type GridCapabilities = {
|
|
95
|
+
supportsDrag?: boolean;
|
|
96
|
+
supportsResize?: boolean;
|
|
97
|
+
supportsResponsiveBreakpoints?: boolean;
|
|
98
|
+
};
|
|
99
|
+
/** Layout mutation payload forwarded to grid adapters. */
|
|
100
|
+
export type GridLayoutChange = {
|
|
101
|
+
widgetId: string;
|
|
102
|
+
x: number;
|
|
103
|
+
y: number;
|
|
104
|
+
w: number;
|
|
105
|
+
h: number;
|
|
106
|
+
};
|
|
107
|
+
/** Callback invoked when grid layout changes are emitted by a grid adapter. */
|
|
108
|
+
export type GridLayoutChangeHandler = (changes: GridLayoutChange[]) => void;
|
|
109
|
+
/** Grid adapter public contract implemented by plugins. */
|
|
110
|
+
export interface GridAdapter<TTarget = unknown> {
|
|
111
|
+
readonly id: string;
|
|
112
|
+
readonly capabilities?: GridCapabilities;
|
|
113
|
+
/** Initialize grid runtime for the provided host target. */
|
|
114
|
+
init(target: TTarget): Promise<void> | void;
|
|
115
|
+
/**
|
|
116
|
+
* Optional subscription API for host/runtime orchestration.
|
|
117
|
+
* Returns an unsubscribe function.
|
|
118
|
+
*/
|
|
119
|
+
subscribeLayoutChanges?(target: TTarget, handler: GridLayoutChangeHandler): (() => void) | Promise<() => void>;
|
|
120
|
+
/** Apply normalized layout changes for widgets. */
|
|
121
|
+
applyLayout(changes: GridLayoutChange[], target: TTarget): Promise<void> | void;
|
|
122
|
+
/** Release all grid resources and listeners. */
|
|
123
|
+
destroy(target: TTarget): Promise<void> | void;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { DatasourceQueryResult } from "./adapters";
|
|
2
|
+
import type { DDashError } from "./errors";
|
|
3
|
+
import type { AdapterRegistry } from "./registry";
|
|
4
|
+
import { type ResolvedTimeRange, type RuntimeContext } from "./runtime.js";
|
|
5
|
+
import type { MetricDefinition, PersistedDashboard, PersistedWidget } from "./schema";
|
|
6
|
+
import { type DashboardValidationOptions, type ValidationResult } from "./validation.js";
|
|
7
|
+
/** Discriminated union of observable events emitted during widget execution. */
|
|
8
|
+
export type RuntimeEvent = {
|
|
9
|
+
type: "widget.execute.started";
|
|
10
|
+
widgetId: string;
|
|
11
|
+
dashboardId: string;
|
|
12
|
+
} | {
|
|
13
|
+
type: "widget.execute.completed";
|
|
14
|
+
widgetId: string;
|
|
15
|
+
dashboardId: string;
|
|
16
|
+
durationMs: number;
|
|
17
|
+
status: "success" | "partial" | "error";
|
|
18
|
+
} | {
|
|
19
|
+
type: "widget.execute.failed";
|
|
20
|
+
widgetId: string;
|
|
21
|
+
dashboardId: string;
|
|
22
|
+
durationMs: number;
|
|
23
|
+
error: unknown;
|
|
24
|
+
};
|
|
25
|
+
export type RuntimeEventHandler = (event: RuntimeEvent) => void;
|
|
26
|
+
/** Options for creating dashboard runtime orchestration. */
|
|
27
|
+
export type DashboardRuntimeOptions = {
|
|
28
|
+
registry: AdapterRegistry;
|
|
29
|
+
now?: () => number;
|
|
30
|
+
/** Optional observer called for each widget execution lifecycle event. */
|
|
31
|
+
onEvent?: RuntimeEventHandler;
|
|
32
|
+
};
|
|
33
|
+
/** Execution session state derived from a validated dashboard. */
|
|
34
|
+
export type DashboardSession = {
|
|
35
|
+
dashboard: PersistedDashboard;
|
|
36
|
+
dashboardTimeRange: ResolvedTimeRange;
|
|
37
|
+
widgets: PersistedWidget[];
|
|
38
|
+
};
|
|
39
|
+
/** Inputs for executing a single widget in a session. */
|
|
40
|
+
export type ExecuteSessionWidgetInput<TTarget = unknown> = {
|
|
41
|
+
session: DashboardSession;
|
|
42
|
+
widgetId: string;
|
|
43
|
+
target: TTarget;
|
|
44
|
+
context: RuntimeContext;
|
|
45
|
+
};
|
|
46
|
+
/** Inputs for executing all widgets in a session. */
|
|
47
|
+
export type ExecuteAllWidgetsInput<TTarget = unknown> = {
|
|
48
|
+
session: DashboardSession;
|
|
49
|
+
targetByWidgetId: Record<string, TTarget>;
|
|
50
|
+
context: RuntimeContext;
|
|
51
|
+
};
|
|
52
|
+
/** Widget execution result tuple for batch execution APIs. */
|
|
53
|
+
export type ExecuteWidgetResult = {
|
|
54
|
+
widgetId: string;
|
|
55
|
+
result: DatasourceQueryResult;
|
|
56
|
+
};
|
|
57
|
+
/** Preflight result for adapter availability checks. */
|
|
58
|
+
export type DashboardPreflightResult = {
|
|
59
|
+
ok: boolean;
|
|
60
|
+
missingDatasources: string[];
|
|
61
|
+
missingVisualizations: string[];
|
|
62
|
+
};
|
|
63
|
+
/** Inputs for applying persisted dashboard layout through a grid adapter. */
|
|
64
|
+
export type ApplyDashboardLayoutInput<TTarget = unknown> = {
|
|
65
|
+
session: DashboardSession;
|
|
66
|
+
gridId: string;
|
|
67
|
+
target: TTarget;
|
|
68
|
+
};
|
|
69
|
+
/** Inputs for binding grid layout-change events to visualization resize hooks. */
|
|
70
|
+
export type BindLayoutResizeInput<TGridTarget = unknown, TWidgetTarget = unknown> = {
|
|
71
|
+
session: DashboardSession;
|
|
72
|
+
gridId: string;
|
|
73
|
+
gridTarget: TGridTarget;
|
|
74
|
+
targetByWidgetId?: Record<string, TWidgetTarget>;
|
|
75
|
+
resolveTargetByWidgetId?: (widgetId: string) => TWidgetTarget | undefined;
|
|
76
|
+
};
|
|
77
|
+
/** Structured runtime error union thrown by dashboard runtime APIs. */
|
|
78
|
+
export type DashboardRuntimeError = DDashError & {
|
|
79
|
+
code: "SCHEMA_INVALID" | "RUNTIME_WIDGET_NOT_FOUND" | "RUNTIME_TARGET_MISSING";
|
|
80
|
+
};
|
|
81
|
+
/** Public dashboard runtime API surface. */
|
|
82
|
+
export type DashboardRuntime = {
|
|
83
|
+
validateDashboard(dashboard: PersistedDashboard, options?: Omit<DashboardValidationOptions, "knownDatasources" | "knownVisualizations">): ValidationResult;
|
|
84
|
+
validateDashboardWithRegistryMetrics(dashboard: PersistedDashboard, options?: Omit<DashboardValidationOptions, "knownDatasources" | "knownVisualizations" | "knownMetrics">): Promise<ValidationResult>;
|
|
85
|
+
preflightDashboard(dashboard: PersistedDashboard): DashboardPreflightResult;
|
|
86
|
+
applyDashboardLayout<TTarget = unknown>(input: ApplyDashboardLayoutInput<TTarget>): Promise<void>;
|
|
87
|
+
bindLayoutResize<TGridTarget = unknown, TWidgetTarget = unknown>(input: BindLayoutResizeInput<TGridTarget, TWidgetTarget>): Promise<() => void>;
|
|
88
|
+
createSession(dashboard: PersistedDashboard): DashboardSession;
|
|
89
|
+
createSessionWithRegistryMetrics(dashboard: PersistedDashboard, options?: Omit<DashboardValidationOptions, "knownDatasources" | "knownVisualizations" | "knownMetrics">): Promise<DashboardSession>;
|
|
90
|
+
executeWidget<TTarget = unknown>(input: ExecuteSessionWidgetInput<TTarget>): Promise<DatasourceQueryResult>;
|
|
91
|
+
executeAllWidgets<TTarget = unknown>(input: ExecuteAllWidgetsInput<TTarget>): Promise<ExecuteWidgetResult[]>;
|
|
92
|
+
discoverMetrics(datasourceId?: string): Promise<MetricDefinition[]>;
|
|
93
|
+
};
|
|
94
|
+
/** Creates dashboard runtime orchestrator bound to adapter registry and clock/event hooks. */
|
|
95
|
+
export declare function createDashboardRuntime(options: DashboardRuntimeOptions): DashboardRuntime;
|
|
96
|
+
//# sourceMappingURL=dashboard-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-runtime.d.ts","sourceRoot":"","sources":["../src/dashboard-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { executeWidget as executeWidgetOperation } from "./execution.js";
|
|
2
|
+
import { resolveDashboardTimeRange, } from "./runtime.js";
|
|
3
|
+
import { toSchemaValidationError, validatePersistedDashboard, } from "./validation.js";
|
|
4
|
+
/** Creates dashboard runtime orchestrator bound to adapter registry and clock/event hooks. */
|
|
5
|
+
export function createDashboardRuntime(options) {
|
|
6
|
+
const getNow = options.now ?? Date.now;
|
|
7
|
+
return {
|
|
8
|
+
validateDashboard(dashboard, userOptions = {}) {
|
|
9
|
+
return validatePersistedDashboard(dashboard, {
|
|
10
|
+
...userOptions,
|
|
11
|
+
knownDatasources: options.registry.listDatasourceIds(),
|
|
12
|
+
knownVisualizations: options.registry.listVisualizationKinds(),
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
async validateDashboardWithRegistryMetrics(dashboard, userOptions = {}) {
|
|
16
|
+
const knownMetrics = await this.discoverMetrics();
|
|
17
|
+
return validatePersistedDashboard(dashboard, {
|
|
18
|
+
...userOptions,
|
|
19
|
+
knownDatasources: options.registry.listDatasourceIds(),
|
|
20
|
+
knownVisualizations: options.registry.listVisualizationKinds(),
|
|
21
|
+
knownMetrics,
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
preflightDashboard(dashboard) {
|
|
25
|
+
const registeredDatasources = new Set(options.registry.listDatasourceIds());
|
|
26
|
+
const registeredVisualizations = new Set(options.registry.listVisualizationKinds());
|
|
27
|
+
const missingDatasourceSet = new Set();
|
|
28
|
+
const missingVisualizationSet = new Set();
|
|
29
|
+
for (const widget of dashboard.widgets) {
|
|
30
|
+
if (!registeredDatasources.has(widget.datasource)) {
|
|
31
|
+
missingDatasourceSet.add(widget.datasource);
|
|
32
|
+
}
|
|
33
|
+
if (!registeredVisualizations.has(widget.visualization.type)) {
|
|
34
|
+
missingVisualizationSet.add(widget.visualization.type);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const missingDatasources = Array.from(missingDatasourceSet);
|
|
38
|
+
const missingVisualizations = Array.from(missingVisualizationSet);
|
|
39
|
+
return {
|
|
40
|
+
ok: missingDatasources.length === 0 && missingVisualizations.length === 0,
|
|
41
|
+
missingDatasources,
|
|
42
|
+
missingVisualizations,
|
|
43
|
+
};
|
|
44
|
+
},
|
|
45
|
+
async applyDashboardLayout(input) {
|
|
46
|
+
const adapter = options.registry.requireGrid(input.gridId);
|
|
47
|
+
// Build a widgetId lookup keyed by layoutId so layout items map to widget identifiers.
|
|
48
|
+
const widgetByLayoutId = new Map();
|
|
49
|
+
for (const widget of input.session.widgets) {
|
|
50
|
+
widgetByLayoutId.set(widget.layoutId, widget.id);
|
|
51
|
+
}
|
|
52
|
+
const changes = [];
|
|
53
|
+
for (const item of input.session.dashboard.layout) {
|
|
54
|
+
const widgetId = widgetByLayoutId.get(item.id);
|
|
55
|
+
if (!widgetId) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
changes.push({
|
|
59
|
+
widgetId,
|
|
60
|
+
x: item.x,
|
|
61
|
+
y: item.y,
|
|
62
|
+
w: item.w,
|
|
63
|
+
h: item.h,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
await adapter.applyLayout(changes, input.target);
|
|
67
|
+
},
|
|
68
|
+
async bindLayoutResize(input) {
|
|
69
|
+
const grid = options.registry.requireGrid(input.gridId);
|
|
70
|
+
if (!grid.subscribeLayoutChanges) {
|
|
71
|
+
return () => { };
|
|
72
|
+
}
|
|
73
|
+
const resolveTargetByWidgetId = input.resolveTargetByWidgetId ??
|
|
74
|
+
((widgetId) => input.targetByWidgetId?.[widgetId]);
|
|
75
|
+
const widgetById = new Map();
|
|
76
|
+
for (const widget of input.session.widgets) {
|
|
77
|
+
widgetById.set(widget.id, widget);
|
|
78
|
+
}
|
|
79
|
+
const unsubscribe = await grid.subscribeLayoutChanges(input.gridTarget, (changes) => {
|
|
80
|
+
// Resize each affected widget once per grid event batch.
|
|
81
|
+
const touchedWidgetIds = new Set(changes.map((change) => change.widgetId));
|
|
82
|
+
for (const widgetId of touchedWidgetIds) {
|
|
83
|
+
const widget = widgetById.get(widgetId);
|
|
84
|
+
if (!widget) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const target = resolveTargetByWidgetId(widget.id);
|
|
88
|
+
if (target === undefined) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const adapter = options.registry.requireVisualization(widget.visualization.type);
|
|
92
|
+
adapter.resize?.(target);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return unsubscribe;
|
|
96
|
+
},
|
|
97
|
+
createSession(dashboard) {
|
|
98
|
+
const validation = this.validateDashboard(dashboard);
|
|
99
|
+
return buildSessionFromValidatedDashboard(validation, dashboard, getNow);
|
|
100
|
+
},
|
|
101
|
+
async createSessionWithRegistryMetrics(dashboard, userOptions = {}) {
|
|
102
|
+
const validation = await this.validateDashboardWithRegistryMetrics(dashboard, userOptions);
|
|
103
|
+
return buildSessionFromValidatedDashboard(validation, dashboard, getNow);
|
|
104
|
+
},
|
|
105
|
+
async executeWidget(input) {
|
|
106
|
+
const widget = input.session.widgets.find((candidate) => candidate.id === input.widgetId);
|
|
107
|
+
if (!widget) {
|
|
108
|
+
throw new DashboardRuntimeException("RUNTIME_WIDGET_NOT_FOUND", `Widget '${input.widgetId}' not found in session.`, { widgetId: input.widgetId });
|
|
109
|
+
}
|
|
110
|
+
const dashboardId = input.session.dashboard.dashboardId;
|
|
111
|
+
const widgetId = input.widgetId;
|
|
112
|
+
const emit = options.onEvent;
|
|
113
|
+
emit?.({ type: "widget.execute.started", widgetId, dashboardId });
|
|
114
|
+
const startMs = Date.now();
|
|
115
|
+
try {
|
|
116
|
+
const result = await executeWidgetOperation({
|
|
117
|
+
registry: options.registry,
|
|
118
|
+
dashboardId,
|
|
119
|
+
widget,
|
|
120
|
+
dashboardTimeRange: input.session.dashboardTimeRange,
|
|
121
|
+
context: input.context,
|
|
122
|
+
target: input.target,
|
|
123
|
+
});
|
|
124
|
+
emit?.({
|
|
125
|
+
type: "widget.execute.completed",
|
|
126
|
+
widgetId,
|
|
127
|
+
dashboardId,
|
|
128
|
+
durationMs: Date.now() - startMs,
|
|
129
|
+
status: result.status,
|
|
130
|
+
});
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
emit?.({
|
|
135
|
+
type: "widget.execute.failed",
|
|
136
|
+
widgetId,
|
|
137
|
+
dashboardId,
|
|
138
|
+
durationMs: Date.now() - startMs,
|
|
139
|
+
error,
|
|
140
|
+
});
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
async executeAllWidgets(input) {
|
|
145
|
+
const results = [];
|
|
146
|
+
for (const widget of input.session.widgets) {
|
|
147
|
+
const target = input.targetByWidgetId[widget.id];
|
|
148
|
+
if (target === undefined) {
|
|
149
|
+
throw new DashboardRuntimeException("RUNTIME_TARGET_MISSING", `Missing render target for widget '${widget.id}'.`, { widgetId: widget.id });
|
|
150
|
+
}
|
|
151
|
+
const result = await this.executeWidget({
|
|
152
|
+
session: input.session,
|
|
153
|
+
widgetId: widget.id,
|
|
154
|
+
target,
|
|
155
|
+
context: input.context,
|
|
156
|
+
});
|
|
157
|
+
results.push({
|
|
158
|
+
widgetId: widget.id,
|
|
159
|
+
result,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return results;
|
|
163
|
+
},
|
|
164
|
+
async discoverMetrics(datasourceId) {
|
|
165
|
+
if (datasourceId) {
|
|
166
|
+
const adapter = options.registry.requireDatasource(datasourceId);
|
|
167
|
+
if (!adapter.getMetrics) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
const metrics = await adapter.getMetrics();
|
|
171
|
+
return dedupeMetrics(metrics);
|
|
172
|
+
}
|
|
173
|
+
const allMetrics = [];
|
|
174
|
+
const datasourceIds = options.registry.listDatasourceIds();
|
|
175
|
+
for (const id of datasourceIds) {
|
|
176
|
+
const adapter = options.registry.requireDatasource(id);
|
|
177
|
+
if (!adapter.getMetrics) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const metrics = await adapter.getMetrics();
|
|
181
|
+
for (const metric of metrics) {
|
|
182
|
+
allMetrics.push(metric);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return dedupeMetrics(allMetrics);
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function buildSessionFromValidatedDashboard(validation, dashboard, getNow) {
|
|
190
|
+
const schemaError = toSchemaValidationError(validation);
|
|
191
|
+
if (schemaError) {
|
|
192
|
+
throw new DashboardRuntimeException("SCHEMA_INVALID", schemaError.message, {
|
|
193
|
+
issues: validation.issues.map((issue) => ({
|
|
194
|
+
code: issue.code,
|
|
195
|
+
path: issue.path,
|
|
196
|
+
message: issue.message,
|
|
197
|
+
})),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
if (dashboard.timeRange.type === "inherit") {
|
|
201
|
+
throw new DashboardRuntimeException("SCHEMA_INVALID", "Dashboard timeRange cannot use inherit.", {
|
|
202
|
+
path: "timeRange",
|
|
203
|
+
type: "inherit",
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
dashboard,
|
|
208
|
+
dashboardTimeRange: resolveDashboardTimeRange(dashboard.timeRange, {
|
|
209
|
+
now: getNow(),
|
|
210
|
+
}),
|
|
211
|
+
widgets: dashboard.widgets,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
class DashboardRuntimeException extends Error {
|
|
215
|
+
code;
|
|
216
|
+
details;
|
|
217
|
+
retriable = false;
|
|
218
|
+
constructor(code, message, details) {
|
|
219
|
+
super(message);
|
|
220
|
+
this.name = "DashboardRuntimeException";
|
|
221
|
+
this.code = code;
|
|
222
|
+
this.details = details;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
function dedupeMetrics(metrics) {
|
|
226
|
+
const seen = new Set();
|
|
227
|
+
const deduped = [];
|
|
228
|
+
for (const metric of metrics) {
|
|
229
|
+
const key = `${metric.datasource}::${metric.id}`;
|
|
230
|
+
if (seen.has(key)) {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
seen.add(key);
|
|
234
|
+
deduped.push(metric);
|
|
235
|
+
}
|
|
236
|
+
return deduped;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=dashboard-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-runtime.js","sourceRoot":"","sources":["../src/dashboard-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { JsonObject } from "./json";
|
|
2
|
+
/** Stable machine-readable error codes used in public d-dash contracts. */
|
|
3
|
+
export type DDashErrorCode = "SCHEMA_INVALID" | "SCHEMA_UNSUPPORTED_VERSION" | "RUNTIME_WIDGET_NOT_FOUND" | "RUNTIME_TARGET_MISSING" | "REGISTRY_DUPLICATE_ADAPTER" | "REGISTRY_ADAPTER_NOT_FOUND" | "TIME_RANGE_RESOLVE_FAILED" | "CAPABILITY_MISMATCH" | "DATASOURCE_HTTP_ERROR" | "DATASOURCE_PARTIAL" | "DATASOURCE_QUERY_FAILED" | "VISUALIZATION_RENDER_FAILED" | "GRID_LAYOUT_FAILED";
|
|
4
|
+
/** Standard structured error envelope used across runtime and adapters. */
|
|
5
|
+
export type DDashError = {
|
|
6
|
+
/** Stable machine-readable error code. */
|
|
7
|
+
code: DDashErrorCode;
|
|
8
|
+
/** Human-readable summary suitable for logs and UIs. */
|
|
9
|
+
message: string;
|
|
10
|
+
/** Optional structured diagnostics for operators and tooling. */
|
|
11
|
+
details?: JsonObject;
|
|
12
|
+
/** Optional retryability hint for callers/orchestrators. */
|
|
13
|
+
retriable?: boolean;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,4BAA4B,GAC5B,0BAA0B,GAC1B,wBAAwB,GACxB,4BAA4B,GAC5B,4BAA4B,GAC5B,2BAA2B,GAC3B,qBAAqB,GACrB,uBAAuB,GACvB,oBAAoB,GACpB,yBAAyB,GACzB,6BAA6B,GAC7B,oBAAoB,CAAC;AAEzB,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IACvB,0CAA0C;IAC1C,IAAI,EAAE,cAAc,CAAC;IACrB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { DataFrame, DatasourceQueryResult } from "./adapters";
|
|
2
|
+
import type { AdapterRegistry } from "./registry";
|
|
3
|
+
import { type ResolvedTimeRange, type ResolvedWidgetExecutionRequest, type RuntimeContext } from "./runtime.js";
|
|
4
|
+
import type { PersistedWidget } from "./schema";
|
|
5
|
+
/** Inputs required to build a resolved widget execution request. */
|
|
6
|
+
export type BuildWidgetExecutionRequestInput = {
|
|
7
|
+
dashboardId: string;
|
|
8
|
+
widget: PersistedWidget;
|
|
9
|
+
dashboardTimeRange: ResolvedTimeRange;
|
|
10
|
+
context: RuntimeContext;
|
|
11
|
+
now?: number;
|
|
12
|
+
};
|
|
13
|
+
/** Inputs required to execute a visualization render call. */
|
|
14
|
+
export type ExecuteWidgetRenderInput<TTarget = unknown> = {
|
|
15
|
+
request: ResolvedWidgetExecutionRequest;
|
|
16
|
+
frames: DataFrame[];
|
|
17
|
+
target: TTarget;
|
|
18
|
+
};
|
|
19
|
+
/** Full inputs required for query + render orchestration of a widget. */
|
|
20
|
+
export type ExecuteWidgetInput<TTarget = unknown> = {
|
|
21
|
+
registry: AdapterRegistry;
|
|
22
|
+
dashboardId: string;
|
|
23
|
+
widget: PersistedWidget;
|
|
24
|
+
dashboardTimeRange: ResolvedTimeRange;
|
|
25
|
+
context: RuntimeContext;
|
|
26
|
+
target: TTarget;
|
|
27
|
+
now?: number;
|
|
28
|
+
};
|
|
29
|
+
/** Executes datasource query for a resolved widget request. */
|
|
30
|
+
export declare function executeWidgetQuery(registry: AdapterRegistry, request: ResolvedWidgetExecutionRequest): Promise<DatasourceQueryResult>;
|
|
31
|
+
/** Executes visualization render for a resolved widget request and frames. */
|
|
32
|
+
export declare function executeWidgetRender<TTarget = unknown>(registry: AdapterRegistry, input: ExecuteWidgetRenderInput<TTarget>): Promise<void>;
|
|
33
|
+
/** Executes full widget flow: build request, query datasource, and render when data exists. */
|
|
34
|
+
export declare function executeWidget<TTarget = unknown>(input: ExecuteWidgetInput<TTarget>): Promise<DatasourceQueryResult>;
|
|
35
|
+
/** Builds a resolved widget execution request from persisted widget and runtime context. */
|
|
36
|
+
export declare function buildWidgetExecutionRequest(input: BuildWidgetExecutionRequestInput): ResolvedWidgetExecutionRequest;
|
|
37
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,8BAA8B,EACnC,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,oEAAoE;AACpE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8DAA8D;AAC9D,MAAM,MAAM,wBAAwB,CAAC,OAAO,GAAG,OAAO,IAAI;IACxD,OAAO,EAAE,8BAA8B,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,kBAAkB,CAAC,OAAO,GAAG,OAAO,IAAI;IAClD,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,+DAA+D;AAC/D,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CAyBhC;AAED,8EAA8E;AAC9E,wBAAsB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACzD,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,+FAA+F;AAC/F,wBAAsB,aAAa,CAAC,OAAO,GAAG,OAAO,EACnD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAsBhC;AAED,4FAA4F;AAC5F,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GACtC,8BAA8B,CAiBhC"}
|