@contractspec/example.analytics-dashboard 1.57.0 → 1.58.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/dist/browser/dashboard/dashboard.enum.js +34 -0
- package/dist/browser/dashboard/dashboard.operation.js +289 -0
- package/dist/browser/dashboard/dashboard.presentation.js +197 -0
- package/dist/browser/dashboard/dashboard.schema.js +126 -0
- package/dist/browser/dashboard/dashboard.test-spec.js +213 -0
- package/dist/browser/dashboard/index.js +299 -0
- package/dist/browser/dashboard.feature.js +84 -0
- package/dist/browser/datasource/posthog-datasource.js +289 -0
- package/dist/browser/docs/analytics-dashboard.docblock.js +103 -0
- package/dist/browser/docs/index.js +103 -0
- package/dist/browser/events.js +81 -0
- package/dist/browser/example.js +42 -0
- package/dist/browser/handlers/analytics.handlers.js +278 -0
- package/dist/browser/handlers/index.js +571 -0
- package/dist/browser/handlers/query.handlers.js +294 -0
- package/dist/browser/index.js +1677 -0
- package/dist/browser/query/index.js +159 -0
- package/dist/browser/query/query.enum.js +11 -0
- package/dist/browser/query/query.operation.js +154 -0
- package/dist/browser/query/query.presentation.js +119 -0
- package/dist/browser/query/query.schema.js +70 -0
- package/dist/browser/query/query.test-spec.js +113 -0
- package/dist/browser/query-engine/index.js +491 -0
- package/dist/browser/seeders/index.js +20 -0
- package/dist/browser/ui/AnalyticsDashboard.js +394 -0
- package/dist/browser/ui/hooks/index.js +69 -0
- package/dist/browser/ui/hooks/useAnalyticsData.js +66 -0
- package/dist/browser/ui/index.js +671 -0
- package/dist/browser/ui/renderers/analytics.markdown.js +275 -0
- package/dist/browser/ui/renderers/index.js +275 -0
- package/dist/dashboard/dashboard.enum.d.ts +3 -8
- package/dist/dashboard/dashboard.enum.d.ts.map +1 -1
- package/dist/dashboard/dashboard.enum.js +31 -39
- package/dist/dashboard/dashboard.operation.d.ts +444 -450
- package/dist/dashboard/dashboard.operation.d.ts.map +1 -1
- package/dist/dashboard/dashboard.operation.js +284 -207
- package/dist/dashboard/dashboard.presentation.d.ts +3 -8
- package/dist/dashboard/dashboard.presentation.d.ts.map +1 -1
- package/dist/dashboard/dashboard.presentation.js +193 -85
- package/dist/dashboard/dashboard.schema.d.ts +289 -294
- package/dist/dashboard/dashboard.schema.d.ts.map +1 -1
- package/dist/dashboard/dashboard.schema.js +119 -228
- package/dist/dashboard/dashboard.test-spec.d.ts +4 -9
- package/dist/dashboard/dashboard.test-spec.d.ts.map +1 -1
- package/dist/dashboard/dashboard.test-spec.js +209 -228
- package/dist/dashboard/index.d.ts +7 -4
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +299 -4
- package/dist/dashboard.feature.d.ts +1 -6
- package/dist/dashboard.feature.d.ts.map +1 -1
- package/dist/dashboard.feature.js +83 -175
- package/dist/datasource/posthog-datasource.d.ts +15 -19
- package/dist/datasource/posthog-datasource.d.ts.map +1 -1
- package/dist/datasource/posthog-datasource.js +274 -238
- package/dist/docs/analytics-dashboard.docblock.d.ts +2 -1
- package/dist/docs/analytics-dashboard.docblock.d.ts.map +1 -0
- package/dist/docs/analytics-dashboard.docblock.js +45 -56
- package/dist/docs/index.d.ts +2 -1
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +104 -1
- package/dist/events.d.ts +109 -115
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +74 -120
- package/dist/example.d.ts +2 -6
- package/dist/example.d.ts.map +1 -1
- package/dist/example.js +41 -55
- package/dist/handlers/analytics.handlers.d.ts +110 -109
- package/dist/handlers/analytics.handlers.d.ts.map +1 -1
- package/dist/handlers/analytics.handlers.js +267 -298
- package/dist/handlers/index.d.ts +3 -3
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +571 -3
- package/dist/handlers/query.handlers.d.ts +7 -11
- package/dist/handlers/query.handlers.d.ts.map +1 -1
- package/dist/handlers/query.handlers.js +292 -7
- package/dist/index.d.ts +12 -13
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1678 -14
- package/dist/node/dashboard/dashboard.enum.js +34 -0
- package/dist/node/dashboard/dashboard.operation.js +289 -0
- package/dist/node/dashboard/dashboard.presentation.js +197 -0
- package/dist/node/dashboard/dashboard.schema.js +126 -0
- package/dist/node/dashboard/dashboard.test-spec.js +213 -0
- package/dist/node/dashboard/index.js +299 -0
- package/dist/node/dashboard.feature.js +84 -0
- package/dist/node/datasource/posthog-datasource.js +289 -0
- package/dist/node/docs/analytics-dashboard.docblock.js +103 -0
- package/dist/node/docs/index.js +103 -0
- package/dist/node/events.js +81 -0
- package/dist/node/example.js +42 -0
- package/dist/node/handlers/analytics.handlers.js +278 -0
- package/dist/node/handlers/index.js +571 -0
- package/dist/node/handlers/query.handlers.js +294 -0
- package/dist/node/index.js +1677 -0
- package/dist/node/query/index.js +159 -0
- package/dist/node/query/query.enum.js +11 -0
- package/dist/node/query/query.operation.js +154 -0
- package/dist/node/query/query.presentation.js +119 -0
- package/dist/node/query/query.schema.js +70 -0
- package/dist/node/query/query.test-spec.js +113 -0
- package/dist/node/query-engine/index.js +491 -0
- package/dist/node/seeders/index.js +20 -0
- package/dist/node/ui/AnalyticsDashboard.js +394 -0
- package/dist/node/ui/hooks/index.js +69 -0
- package/dist/node/ui/hooks/useAnalyticsData.js +66 -0
- package/dist/node/ui/index.js +671 -0
- package/dist/node/ui/renderers/analytics.markdown.js +275 -0
- package/dist/node/ui/renderers/index.js +275 -0
- package/dist/query/index.d.ts +7 -4
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +159 -4
- package/dist/query/query.enum.d.ts +1 -6
- package/dist/query/query.enum.d.ts.map +1 -1
- package/dist/query/query.enum.js +10 -14
- package/dist/query/query.operation.d.ts +148 -154
- package/dist/query/query.operation.d.ts.map +1 -1
- package/dist/query/query.operation.js +151 -109
- package/dist/query/query.presentation.d.ts +2 -7
- package/dist/query/query.presentation.d.ts.map +1 -1
- package/dist/query/query.presentation.js +116 -56
- package/dist/query/query.schema.d.ts +121 -126
- package/dist/query/query.schema.d.ts.map +1 -1
- package/dist/query/query.schema.js +66 -152
- package/dist/query/query.test-spec.d.ts +2 -7
- package/dist/query/query.test-spec.d.ts.map +1 -1
- package/dist/query/query.test-spec.js +111 -121
- package/dist/query-engine/index.d.ts +84 -88
- package/dist/query-engine/index.d.ts.map +1 -1
- package/dist/query-engine/index.js +489 -188
- package/dist/seeders/index.d.ts +4 -8
- package/dist/seeders/index.d.ts.map +1 -1
- package/dist/seeders/index.js +18 -16
- package/dist/ui/AnalyticsDashboard.d.ts +1 -6
- package/dist/ui/AnalyticsDashboard.d.ts.map +1 -1
- package/dist/ui/AnalyticsDashboard.js +389 -259
- package/dist/ui/hooks/index.d.ts +2 -2
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +69 -4
- package/dist/ui/hooks/useAnalyticsData.d.ts +16 -20
- package/dist/ui/hooks/useAnalyticsData.d.ts.map +1 -1
- package/dist/ui/hooks/useAnalyticsData.js +63 -69
- package/dist/ui/index.d.ts +7 -6
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +671 -5
- package/dist/ui/renderers/analytics.markdown.d.ts +13 -14
- package/dist/ui/renderers/analytics.markdown.d.ts.map +1 -1
- package/dist/ui/renderers/analytics.markdown.js +266 -254
- package/dist/ui/renderers/index.d.ts +2 -2
- package/dist/ui/renderers/index.d.ts.map +1 -0
- package/dist/ui/renderers/index.js +275 -2
- package/package.json +328 -67
- package/dist/dashboard/dashboard.enum.js.map +0 -1
- package/dist/dashboard/dashboard.operation.js.map +0 -1
- package/dist/dashboard/dashboard.presentation.js.map +0 -1
- package/dist/dashboard/dashboard.schema.js.map +0 -1
- package/dist/dashboard/dashboard.test-spec.js.map +0 -1
- package/dist/dashboard.feature.js.map +0 -1
- package/dist/datasource/posthog-datasource.js.map +0 -1
- package/dist/docs/analytics-dashboard.docblock.js.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/example.js.map +0 -1
- package/dist/handlers/analytics.handlers.js.map +0 -1
- package/dist/handlers/query.handlers.js.map +0 -1
- package/dist/query/query.enum.js.map +0 -1
- package/dist/query/query.operation.js.map +0 -1
- package/dist/query/query.presentation.js.map +0 -1
- package/dist/query/query.schema.js.map +0 -1
- package/dist/query/query.test-spec.js.map +0 -1
- package/dist/query-engine/index.js.map +0 -1
- package/dist/seeders/index.js.map +0 -1
- package/dist/ui/AnalyticsDashboard.js.map +0 -1
- package/dist/ui/hooks/useAnalyticsData.js.map +0 -1
- package/dist/ui/renderers/analytics.markdown.js.map +0 -1
package/dist/events.js
CHANGED
|
@@ -1,128 +1,82 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/events.ts
|
|
3
|
+
import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
|
|
1
4
|
import { defineEvent } from "@contractspec/lib.contracts";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
title: {
|
|
14
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
15
|
-
isOptional: false
|
|
16
|
-
},
|
|
17
|
-
orgId: {
|
|
18
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
19
|
-
isOptional: false
|
|
20
|
-
},
|
|
21
|
-
createdBy: {
|
|
22
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
23
|
-
isOptional: false
|
|
24
|
-
},
|
|
25
|
-
timestamp: {
|
|
26
|
-
type: ScalarTypeEnum.DateTime(),
|
|
27
|
-
isOptional: false
|
|
28
|
-
}
|
|
29
|
-
}
|
|
5
|
+
var DashboardEventPayload = defineSchemaModel({
|
|
6
|
+
name: "DashboardEventPayload",
|
|
7
|
+
description: "Payload for dashboard events",
|
|
8
|
+
fields: {
|
|
9
|
+
dashboardId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
10
|
+
title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
11
|
+
orgId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
12
|
+
createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
13
|
+
timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
14
|
+
}
|
|
30
15
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
isOptional: false
|
|
42
|
-
},
|
|
43
|
-
widgetType: {
|
|
44
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
45
|
-
isOptional: false
|
|
46
|
-
},
|
|
47
|
-
orgId: {
|
|
48
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
49
|
-
isOptional: false
|
|
50
|
-
},
|
|
51
|
-
timestamp: {
|
|
52
|
-
type: ScalarTypeEnum.DateTime(),
|
|
53
|
-
isOptional: false
|
|
54
|
-
}
|
|
55
|
-
}
|
|
16
|
+
var WidgetEventPayload = defineSchemaModel({
|
|
17
|
+
name: "WidgetEventPayload",
|
|
18
|
+
description: "Payload for widget events",
|
|
19
|
+
fields: {
|
|
20
|
+
widgetId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
21
|
+
dashboardId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
22
|
+
widgetType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
23
|
+
orgId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
24
|
+
timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
25
|
+
}
|
|
56
26
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
},
|
|
69
|
-
queryType: {
|
|
70
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
71
|
-
isOptional: false
|
|
72
|
-
},
|
|
73
|
-
orgId: {
|
|
74
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
75
|
-
isOptional: false
|
|
76
|
-
},
|
|
77
|
-
createdBy: {
|
|
78
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
79
|
-
isOptional: false
|
|
80
|
-
},
|
|
81
|
-
timestamp: {
|
|
82
|
-
type: ScalarTypeEnum.DateTime(),
|
|
83
|
-
isOptional: false
|
|
84
|
-
}
|
|
85
|
-
}
|
|
27
|
+
var QueryEventPayload = defineSchemaModel({
|
|
28
|
+
name: "QueryEventPayload",
|
|
29
|
+
description: "Payload for query events",
|
|
30
|
+
fields: {
|
|
31
|
+
queryId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
32
|
+
name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
33
|
+
queryType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
34
|
+
orgId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
35
|
+
createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
36
|
+
timestamp: { type: ScalarTypeEnum.DateTime(), isOptional: false }
|
|
37
|
+
}
|
|
86
38
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
39
|
+
var DashboardCreatedEvent = defineEvent({
|
|
40
|
+
meta: {
|
|
41
|
+
key: "analytics.dashboard.created",
|
|
42
|
+
version: "1.0.0",
|
|
43
|
+
description: "A dashboard was created.",
|
|
44
|
+
stability: "stable",
|
|
45
|
+
owners: ["@analytics-team"],
|
|
46
|
+
tags: ["dashboard"]
|
|
47
|
+
},
|
|
48
|
+
payload: DashboardEventPayload
|
|
97
49
|
});
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
50
|
+
var WidgetAddedEvent = defineEvent({
|
|
51
|
+
meta: {
|
|
52
|
+
key: "analytics.widget.added",
|
|
53
|
+
version: "1.0.0",
|
|
54
|
+
description: "A widget was added to a dashboard.",
|
|
55
|
+
stability: "stable",
|
|
56
|
+
owners: ["@analytics-team"],
|
|
57
|
+
tags: ["dashboard"]
|
|
58
|
+
},
|
|
59
|
+
payload: WidgetEventPayload
|
|
108
60
|
});
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
61
|
+
var QueryCreatedEvent = defineEvent({
|
|
62
|
+
meta: {
|
|
63
|
+
key: "analytics.query.created",
|
|
64
|
+
version: "1.0.0",
|
|
65
|
+
description: "A query was created.",
|
|
66
|
+
stability: "stable",
|
|
67
|
+
owners: ["@analytics-team"],
|
|
68
|
+
tags: ["dashboard"]
|
|
69
|
+
},
|
|
70
|
+
payload: QueryEventPayload
|
|
119
71
|
});
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
72
|
+
var AnalyticsDashboardEvents = {
|
|
73
|
+
DashboardCreatedEvent,
|
|
74
|
+
WidgetAddedEvent,
|
|
75
|
+
QueryCreatedEvent
|
|
76
|
+
};
|
|
77
|
+
export {
|
|
78
|
+
WidgetAddedEvent,
|
|
79
|
+
QueryCreatedEvent,
|
|
80
|
+
DashboardCreatedEvent,
|
|
81
|
+
AnalyticsDashboardEvents
|
|
124
82
|
};
|
|
125
|
-
|
|
126
|
-
//#endregion
|
|
127
|
-
export { AnalyticsDashboardEvents, DashboardCreatedEvent, QueryCreatedEvent, WidgetAddedEvent };
|
|
128
|
-
//# sourceMappingURL=events.js.map
|
package/dist/example.d.ts
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
//#region src/example.d.ts
|
|
4
|
-
declare const example: _contractspec_lib_contracts0.ExampleSpec;
|
|
5
|
-
//#endregion
|
|
6
|
-
export { example as default };
|
|
1
|
+
declare const example: import("@contractspec/lib.contracts").ExampleSpec;
|
|
2
|
+
export default example;
|
|
7
3
|
//# sourceMappingURL=example.d.ts.map
|
package/dist/example.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example.d.ts","
|
|
1
|
+
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO,mDAoCX,CAAC;AAEH,eAAe,OAAO,CAAC"}
|
package/dist/example.js
CHANGED
|
@@ -1,57 +1,43 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/example.ts
|
|
1
3
|
import { defineExample } from "@contractspec/lib.contracts";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
sandbox: {
|
|
38
|
-
enabled: true,
|
|
39
|
-
modes: [
|
|
40
|
-
"playground",
|
|
41
|
-
"specs",
|
|
42
|
-
"builder",
|
|
43
|
-
"markdown",
|
|
44
|
-
"evolution"
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
studio: {
|
|
48
|
-
enabled: true,
|
|
49
|
-
installable: true
|
|
50
|
-
},
|
|
51
|
-
mcp: { enabled: true }
|
|
52
|
-
}
|
|
4
|
+
var example = defineExample({
|
|
5
|
+
meta: {
|
|
6
|
+
key: "analytics-dashboard",
|
|
7
|
+
version: "1.0.0",
|
|
8
|
+
title: "Analytics Dashboard",
|
|
9
|
+
description: "Tenant-scoped dashboards, widgets, query builder, and scheduled reports (spec-first widgets/queries).",
|
|
10
|
+
kind: "template",
|
|
11
|
+
visibility: "public",
|
|
12
|
+
stability: "experimental",
|
|
13
|
+
owners: ["@platform.core"],
|
|
14
|
+
tags: ["analytics", "dashboards", "bi", "queries"]
|
|
15
|
+
},
|
|
16
|
+
docs: {
|
|
17
|
+
rootDocId: "docs.examples.analytics-dashboard",
|
|
18
|
+
goalDocId: "docs.examples.analytics-dashboard.goal",
|
|
19
|
+
usageDocId: "docs.examples.analytics-dashboard.usage",
|
|
20
|
+
constraintsDocId: "docs.examples.analytics-dashboard.constraints"
|
|
21
|
+
},
|
|
22
|
+
entrypoints: {
|
|
23
|
+
packageName: "@contractspec/example.analytics-dashboard",
|
|
24
|
+
feature: "./feature",
|
|
25
|
+
contracts: "./contracts",
|
|
26
|
+
presentations: "./presentations",
|
|
27
|
+
handlers: "./handlers",
|
|
28
|
+
docs: "./docs"
|
|
29
|
+
},
|
|
30
|
+
surfaces: {
|
|
31
|
+
templates: true,
|
|
32
|
+
sandbox: {
|
|
33
|
+
enabled: true,
|
|
34
|
+
modes: ["playground", "specs", "builder", "markdown", "evolution"]
|
|
35
|
+
},
|
|
36
|
+
studio: { enabled: true, installable: true },
|
|
37
|
+
mcp: { enabled: true }
|
|
38
|
+
}
|
|
53
39
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
40
|
+
var example_default = example;
|
|
41
|
+
export {
|
|
42
|
+
example_default as default
|
|
43
|
+
};
|
|
@@ -1,121 +1,122 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-local Analytics Dashboard handlers
|
|
3
|
+
*
|
|
4
|
+
* Database-backed handlers for the analytics-dashboard template.
|
|
5
|
+
*/
|
|
6
|
+
import type { DatabasePort } from '@contractspec/lib.runtime-sandbox';
|
|
7
|
+
export interface Dashboard {
|
|
8
|
+
id: string;
|
|
9
|
+
projectId: string;
|
|
10
|
+
organizationId: string;
|
|
11
|
+
name: string;
|
|
12
|
+
slug: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
status: 'DRAFT' | 'PUBLISHED' | 'ARCHIVED';
|
|
15
|
+
refreshInterval: 'NONE' | 'MINUTE' | 'FIVE_MINUTES' | 'FIFTEEN_MINUTES' | 'HOUR' | 'DAY';
|
|
16
|
+
isPublic: boolean;
|
|
17
|
+
shareToken?: string;
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
updatedAt: Date;
|
|
17
20
|
}
|
|
18
|
-
interface Widget {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
export interface Widget {
|
|
22
|
+
id: string;
|
|
23
|
+
dashboardId: string;
|
|
24
|
+
name: string;
|
|
25
|
+
type: 'LINE_CHART' | 'BAR_CHART' | 'PIE_CHART' | 'AREA_CHART' | 'SCATTER_PLOT' | 'METRIC' | 'TABLE' | 'HEATMAP' | 'FUNNEL' | 'MAP' | 'TEXT' | 'EMBED';
|
|
26
|
+
gridX: number;
|
|
27
|
+
gridY: number;
|
|
28
|
+
gridWidth: number;
|
|
29
|
+
gridHeight: number;
|
|
30
|
+
queryId?: string;
|
|
31
|
+
config?: Record<string, unknown>;
|
|
32
|
+
createdAt: Date;
|
|
33
|
+
updatedAt: Date;
|
|
31
34
|
}
|
|
32
|
-
interface Query {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
export interface Query {
|
|
36
|
+
id: string;
|
|
37
|
+
projectId: string;
|
|
38
|
+
organizationId: string;
|
|
39
|
+
name: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
type: 'SQL' | 'METRIC' | 'AGGREGATION' | 'CUSTOM';
|
|
42
|
+
definition: Record<string, unknown>;
|
|
43
|
+
sql?: string;
|
|
44
|
+
cacheTtlSeconds: number;
|
|
45
|
+
isShared: boolean;
|
|
46
|
+
createdAt: Date;
|
|
47
|
+
updatedAt: Date;
|
|
45
48
|
}
|
|
46
|
-
interface CreateDashboardInput {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
export interface CreateDashboardInput {
|
|
50
|
+
name: string;
|
|
51
|
+
slug: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
refreshInterval?: Dashboard['refreshInterval'];
|
|
51
54
|
}
|
|
52
|
-
interface AddWidgetInput {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
export interface AddWidgetInput {
|
|
56
|
+
dashboardId: string;
|
|
57
|
+
name: string;
|
|
58
|
+
type: Widget['type'];
|
|
59
|
+
gridX?: number;
|
|
60
|
+
gridY?: number;
|
|
61
|
+
gridWidth?: number;
|
|
62
|
+
gridHeight?: number;
|
|
63
|
+
queryId?: string;
|
|
64
|
+
config?: Record<string, unknown>;
|
|
62
65
|
}
|
|
63
|
-
interface CreateQueryInput {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
export interface CreateQueryInput {
|
|
67
|
+
name: string;
|
|
68
|
+
description?: string;
|
|
69
|
+
type: Query['type'];
|
|
70
|
+
definition: Record<string, unknown>;
|
|
71
|
+
sql?: string;
|
|
72
|
+
cacheTtlSeconds?: number;
|
|
73
|
+
isShared?: boolean;
|
|
71
74
|
}
|
|
72
|
-
interface ListDashboardsInput {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
export interface ListDashboardsInput {
|
|
76
|
+
projectId: string;
|
|
77
|
+
status?: Dashboard['status'] | 'all';
|
|
78
|
+
search?: string;
|
|
79
|
+
limit?: number;
|
|
80
|
+
offset?: number;
|
|
78
81
|
}
|
|
79
|
-
interface ListDashboardsOutput {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
+
export interface ListDashboardsOutput {
|
|
83
|
+
dashboards: Dashboard[];
|
|
84
|
+
total: number;
|
|
82
85
|
}
|
|
83
|
-
interface ListQueriesInput {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
export interface ListQueriesInput {
|
|
87
|
+
projectId: string;
|
|
88
|
+
type?: Query['type'] | 'all';
|
|
89
|
+
isShared?: boolean;
|
|
90
|
+
search?: string;
|
|
91
|
+
limit?: number;
|
|
92
|
+
offset?: number;
|
|
90
93
|
}
|
|
91
|
-
interface ListQueriesOutput {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
export interface ListQueriesOutput {
|
|
95
|
+
queries: Query[];
|
|
96
|
+
total: number;
|
|
94
97
|
}
|
|
95
|
-
declare function createAnalyticsHandlers(db: DatabasePort): {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
98
|
+
export declare function createAnalyticsHandlers(db: DatabasePort): {
|
|
99
|
+
listDashboards: (input: ListDashboardsInput) => Promise<ListDashboardsOutput>;
|
|
100
|
+
createDashboard: (input: CreateDashboardInput, context: {
|
|
101
|
+
projectId: string;
|
|
102
|
+
organizationId: string;
|
|
103
|
+
}) => Promise<Dashboard>;
|
|
104
|
+
getDashboard: (input: {
|
|
105
|
+
dashboardId?: string;
|
|
106
|
+
slug?: string;
|
|
107
|
+
shareToken?: string;
|
|
108
|
+
}) => Promise<Dashboard | null>;
|
|
109
|
+
updateDashboard: (dashboardId: string, updates: Partial<Pick<Dashboard, "name" | "description" | "status" | "refreshInterval" | "isPublic">>) => Promise<Dashboard>;
|
|
110
|
+
getWidgets: (dashboardId: string) => Promise<Widget[]>;
|
|
111
|
+
addWidget: (input: AddWidgetInput) => Promise<Widget>;
|
|
112
|
+
updateWidget: (widgetId: string, updates: Partial<Pick<Widget, "name" | "gridX" | "gridY" | "gridWidth" | "gridHeight" | "queryId" | "config">>) => Promise<Widget>;
|
|
113
|
+
deleteWidget: (widgetId: string) => Promise<void>;
|
|
114
|
+
listQueries: (input: ListQueriesInput) => Promise<ListQueriesOutput>;
|
|
115
|
+
createQuery: (input: CreateQueryInput, context: {
|
|
116
|
+
projectId: string;
|
|
117
|
+
organizationId: string;
|
|
118
|
+
}) => Promise<Query>;
|
|
119
|
+
getQuery: (queryId: string) => Promise<Query | null>;
|
|
117
120
|
};
|
|
118
|
-
type AnalyticsHandlers = ReturnType<typeof createAnalyticsHandlers>;
|
|
119
|
-
//#endregion
|
|
120
|
-
export { AddWidgetInput, AnalyticsHandlers, CreateDashboardInput, CreateQueryInput, Dashboard, ListDashboardsInput, ListDashboardsOutput, ListQueriesInput, ListQueriesOutput, Query, Widget, createAnalyticsHandlers };
|
|
121
|
+
export type AnalyticsHandlers = ReturnType<typeof createAnalyticsHandlers>;
|
|
121
122
|
//# sourceMappingURL=analytics.handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.handlers.d.ts","
|
|
1
|
+
{"version":3,"file":"analytics.handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/analytics.handlers.ts"],"names":[],"mappings":"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"}
|