@d-dash/builder 0.0.1

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.
@@ -0,0 +1,39 @@
1
+ import type { PersistedDashboard, PersistedWidget, PersistedVariable, LayoutItem, PersistedTimeRange, VisualizationKind, JsonObject } from "@d-dash/core";
2
+ export declare class WidgetBuilder {
3
+ private _id;
4
+ private _layoutId;
5
+ private _datasource;
6
+ private _query;
7
+ private _visualization;
8
+ private _display?;
9
+ private _timeRange?;
10
+ private _options?;
11
+ constructor(id: string, layoutId: string);
12
+ datasource(datasource: string): this;
13
+ query(metric: string, filters?: JsonObject): this;
14
+ visualization(type: VisualizationKind): this;
15
+ display(title: string, description?: string): this;
16
+ timeRange(timeRange: PersistedTimeRange): this;
17
+ options(options: JsonObject): this;
18
+ build(): PersistedWidget;
19
+ }
20
+ export declare class DashboardBuilder {
21
+ private _dashboardId;
22
+ private _meta;
23
+ private _timeRange;
24
+ private _layout;
25
+ private _widgets;
26
+ private _variables;
27
+ constructor(dashboardId: string);
28
+ title(title: string): this;
29
+ description(description: string): this;
30
+ tags(tags: string[]): this;
31
+ folder(folder: string): this;
32
+ tenant(tenant: string): this;
33
+ timeRange(timeRange: PersistedTimeRange): this;
34
+ addVariable(variable: PersistedVariable): this;
35
+ addWidget(widget: PersistedWidget | WidgetBuilder): this;
36
+ addLayoutItem(item: LayoutItem): this;
37
+ build(): PersistedDashboard;
38
+ }
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,UAAU,EAIV,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACX,MAAM,cAAc,CAAC;AAEtB,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAa;gBAElB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAKxC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAKjD,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAK5C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlD,SAAS,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAK9C,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAKlC,KAAK,IAAI,eAAe;CAgBzB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,UAAU,CAA6D;IAC/E,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,UAAU,CAA2B;gBAEjC,WAAW,EAAE,MAAM;IAI/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKtC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAK1B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,SAAS,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAK9C,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAK9C,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,GAAG,IAAI;IASxD,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAKrC,KAAK,IAAI,kBAAkB;CAoB5B"}
package/dist/index.js ADDED
@@ -0,0 +1,123 @@
1
+ export class WidgetBuilder {
2
+ _id;
3
+ _layoutId;
4
+ _datasource;
5
+ _query;
6
+ _visualization;
7
+ _display;
8
+ _timeRange;
9
+ _options;
10
+ constructor(id, layoutId) {
11
+ this._id = id;
12
+ this._layoutId = layoutId;
13
+ }
14
+ datasource(datasource) {
15
+ this._datasource = datasource;
16
+ return this;
17
+ }
18
+ query(metric, filters) {
19
+ this._query = { metric, filters };
20
+ return this;
21
+ }
22
+ visualization(type) {
23
+ this._visualization = { type };
24
+ return this;
25
+ }
26
+ display(title, description) {
27
+ this._display = { title, description };
28
+ return this;
29
+ }
30
+ timeRange(timeRange) {
31
+ this._timeRange = timeRange;
32
+ return this;
33
+ }
34
+ options(options) {
35
+ this._options = options;
36
+ return this;
37
+ }
38
+ build() {
39
+ if (!this._datasource || !this._query || !this._visualization) {
40
+ throw new Error("Widget is missing required fields (datasource, query, visualization).");
41
+ }
42
+ return {
43
+ id: this._id,
44
+ layoutId: this._layoutId,
45
+ datasource: this._datasource,
46
+ query: this._query,
47
+ visualization: this._visualization,
48
+ display: this._display,
49
+ timeRange: this._timeRange,
50
+ options: this._options,
51
+ };
52
+ }
53
+ }
54
+ export class DashboardBuilder {
55
+ _dashboardId;
56
+ _meta = { title: "" };
57
+ _timeRange = { type: "relative", value: "now-6h" };
58
+ _layout = [];
59
+ _widgets = [];
60
+ _variables = [];
61
+ constructor(dashboardId) {
62
+ this._dashboardId = dashboardId;
63
+ }
64
+ title(title) {
65
+ this._meta.title = title;
66
+ return this;
67
+ }
68
+ description(description) {
69
+ this._meta.description = description;
70
+ return this;
71
+ }
72
+ tags(tags) {
73
+ this._meta.tags = tags;
74
+ return this;
75
+ }
76
+ folder(folder) {
77
+ this._meta.folder = folder;
78
+ return this;
79
+ }
80
+ tenant(tenant) {
81
+ this._meta.tenant = tenant;
82
+ return this;
83
+ }
84
+ timeRange(timeRange) {
85
+ this._timeRange = timeRange;
86
+ return this;
87
+ }
88
+ addVariable(variable) {
89
+ this._variables.push(variable);
90
+ return this;
91
+ }
92
+ addWidget(widget) {
93
+ if (widget instanceof WidgetBuilder) {
94
+ this._widgets.push(widget.build());
95
+ }
96
+ else {
97
+ this._widgets.push(widget);
98
+ }
99
+ return this;
100
+ }
101
+ addLayoutItem(item) {
102
+ this._layout.push(item);
103
+ return this;
104
+ }
105
+ build() {
106
+ if (!this._meta.title) {
107
+ throw new Error("Dashboard must have a title.");
108
+ }
109
+ const dashboard = {
110
+ schemaVersion: 1,
111
+ dashboardId: this._dashboardId,
112
+ meta: this._meta,
113
+ timeRange: this._timeRange,
114
+ layout: this._layout,
115
+ widgets: this._widgets,
116
+ };
117
+ if (this._variables.length > 0) {
118
+ dashboard.variables = this._variables;
119
+ }
120
+ return dashboard;
121
+ }
122
+ }
123
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@d-dash/builder",
3
+ "version": "0.0.1",
4
+ "description": "Fluent TypeScript SDK for building d-dash dashboards programmatically",
5
+ "license": "LGPL-3.0-or-later",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/thienvu18/d-dash.git",
9
+ "directory": "packages/builder"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/thienvu18/d-dash/issues"
13
+ },
14
+ "homepage": "https://github.com/thienvu18/d-dash/tree/main/packages/builder#readme",
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ }
23
+ },
24
+ "scripts": {
25
+ "build": "tsc -p tsconfig.json",
26
+ "test": "npm run build && node --test $(find tests -name '*.spec.js')"
27
+ },
28
+ "keywords": [
29
+ "dashboard",
30
+ "runtime",
31
+ "sdk",
32
+ "builder",
33
+ "d-dash"
34
+ ],
35
+ "dependencies": {
36
+ "@d-dash/core": "^0.3.0"
37
+ },
38
+ "files": [
39
+ "dist",
40
+ "README.md"
41
+ ],
42
+ "engines": {
43
+ "node": ">=18"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ }
48
+ }