@powerhousedao/analytics-engine-core 0.3.2 → 0.4.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/AnalyticsSubscriptionManager.d.ts +47 -0
- package/dist/AnalyticsSubscriptionManager.js +161 -0
- package/dist/AnalyticsSubscriptionManager.js.map +1 -0
- package/dist/IAnalyticsStore.d.ts +2 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AnalyticsPath } from "./AnalyticsPath.js";
|
|
2
|
+
import { AnalyticsUpdateCallback } from "./IAnalyticsStore.js";
|
|
3
|
+
export declare class NotificationError extends Error {
|
|
4
|
+
readonly innerErrors: Error[];
|
|
5
|
+
constructor(errors: Error[]);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Manages subscriptions for analytics paths.
|
|
9
|
+
*/
|
|
10
|
+
export declare class AnalyticsSubscriptionManager {
|
|
11
|
+
private _subscriptions;
|
|
12
|
+
/**
|
|
13
|
+
* Subscribe to updates for an analytics path. A subscribed function will be
|
|
14
|
+
* called for:
|
|
15
|
+
*
|
|
16
|
+
* - exact path matches
|
|
17
|
+
* - matching child paths (i.e. an update to /a/b/c will trigger a callback
|
|
18
|
+
* for /a/b/c, /a/b, and /a)
|
|
19
|
+
* - wildcard matches
|
|
20
|
+
*
|
|
21
|
+
* @param path The analytics path to subscribe to.
|
|
22
|
+
* @param callback Function to be called when the path is updated.
|
|
23
|
+
*
|
|
24
|
+
* @returns A function that, when called, unsubscribes from the updates.
|
|
25
|
+
*/
|
|
26
|
+
subscribeToPath(path: AnalyticsPath, callback: AnalyticsUpdateCallback): () => void;
|
|
27
|
+
/**
|
|
28
|
+
* Notifies subscribers about updates to paths.
|
|
29
|
+
*
|
|
30
|
+
* @param paths The paths that were updated.
|
|
31
|
+
*/
|
|
32
|
+
notifySubscribers(paths: AnalyticsPath[]): void;
|
|
33
|
+
/**
|
|
34
|
+
* Normalizes a path string to ensure consistent comparison.
|
|
35
|
+
*/
|
|
36
|
+
private normalizePath;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if a path matches a subscription pattern that may contain wildcards.
|
|
39
|
+
*/
|
|
40
|
+
private pathMatchesWildcardPattern;
|
|
41
|
+
/**
|
|
42
|
+
* Gets all path prefixes for a given path.
|
|
43
|
+
*
|
|
44
|
+
* For example, for '/a/b/c' it returns ['/a', '/a/b', '/a/b/c'].
|
|
45
|
+
*/
|
|
46
|
+
private getPathPrefixes;
|
|
47
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export class NotificationError extends Error {
|
|
2
|
+
innerErrors;
|
|
3
|
+
constructor(errors) {
|
|
4
|
+
super(errors.map((e) => e.message).join("\n"));
|
|
5
|
+
this.name = "NotificationError";
|
|
6
|
+
this.innerErrors = errors;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Manages subscriptions for analytics paths.
|
|
11
|
+
*/
|
|
12
|
+
export class AnalyticsSubscriptionManager {
|
|
13
|
+
_subscriptions = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Subscribe to updates for an analytics path. A subscribed function will be
|
|
16
|
+
* called for:
|
|
17
|
+
*
|
|
18
|
+
* - exact path matches
|
|
19
|
+
* - matching child paths (i.e. an update to /a/b/c will trigger a callback
|
|
20
|
+
* for /a/b/c, /a/b, and /a)
|
|
21
|
+
* - wildcard matches
|
|
22
|
+
*
|
|
23
|
+
* @param path The analytics path to subscribe to.
|
|
24
|
+
* @param callback Function to be called when the path is updated.
|
|
25
|
+
*
|
|
26
|
+
* @returns A function that, when called, unsubscribes from the updates.
|
|
27
|
+
*/
|
|
28
|
+
subscribeToPath(path, callback) {
|
|
29
|
+
const pathString = this.normalizePath(path.toString("/"));
|
|
30
|
+
if (!this._subscriptions.has(pathString)) {
|
|
31
|
+
this._subscriptions.set(pathString, new Set());
|
|
32
|
+
}
|
|
33
|
+
this._subscriptions.get(pathString).add(callback);
|
|
34
|
+
return () => {
|
|
35
|
+
const callbacks = this._subscriptions.get(pathString);
|
|
36
|
+
if (callbacks) {
|
|
37
|
+
callbacks.delete(callback);
|
|
38
|
+
// only remove the path entry if there are no more callbacks
|
|
39
|
+
if (callbacks.size === 0) {
|
|
40
|
+
this._subscriptions.delete(pathString);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Notifies subscribers about updates to paths.
|
|
47
|
+
*
|
|
48
|
+
* @param paths The paths that were updated.
|
|
49
|
+
*/
|
|
50
|
+
notifySubscribers(paths) {
|
|
51
|
+
if (paths.length === 0 || this._subscriptions.size === 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const errors = [];
|
|
55
|
+
for (const path of paths) {
|
|
56
|
+
const pathString = this.normalizePath(path.toString("/"));
|
|
57
|
+
const pathPrefixes = this.getPathPrefixes(pathString);
|
|
58
|
+
const matchingSubscriptions = [];
|
|
59
|
+
// add the exact prefix matches
|
|
60
|
+
pathPrefixes
|
|
61
|
+
.filter((prefix) => this._subscriptions.has(prefix))
|
|
62
|
+
.forEach((prefix) => {
|
|
63
|
+
matchingSubscriptions.push({
|
|
64
|
+
prefix,
|
|
65
|
+
callbacks: this._subscriptions.get(prefix),
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
// check all wildcard patterns
|
|
69
|
+
for (const [subscriptionPath, callbacks,] of this._subscriptions.entries()) {
|
|
70
|
+
// skip if it's already in the exact matches
|
|
71
|
+
if (pathPrefixes.includes(subscriptionPath)) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
// hceck if this subscription path (which might have wildcards) matches the update path
|
|
75
|
+
if (this.pathMatchesWildcardPattern(pathString, subscriptionPath)) {
|
|
76
|
+
matchingSubscriptions.push({
|
|
77
|
+
prefix: subscriptionPath,
|
|
78
|
+
callbacks,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (matchingSubscriptions.length === 0)
|
|
83
|
+
continue;
|
|
84
|
+
// guarantee delivery to all subscribers
|
|
85
|
+
for (const { callbacks } of matchingSubscriptions) {
|
|
86
|
+
for (const callback of callbacks) {
|
|
87
|
+
try {
|
|
88
|
+
callback(path);
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
errors.push(e);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (errors.length > 0) {
|
|
97
|
+
throw new NotificationError(errors);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Normalizes a path string to ensure consistent comparison.
|
|
102
|
+
*/
|
|
103
|
+
normalizePath(path) {
|
|
104
|
+
// Handle potential double slashes by first splitting on slashes and rejoining
|
|
105
|
+
const parts = path.split("/").filter((p) => p.length > 0);
|
|
106
|
+
let normalized = "/" + parts.join("/");
|
|
107
|
+
return normalized;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Checks if a path matches a subscription pattern that may contain wildcards.
|
|
111
|
+
*/
|
|
112
|
+
pathMatchesWildcardPattern(updatePath, subscriptionPath) {
|
|
113
|
+
// Handle the wildcard segment case
|
|
114
|
+
if (subscriptionPath.includes("*")) {
|
|
115
|
+
const updateSegments = updatePath.split("/").filter((s) => s.length > 0);
|
|
116
|
+
const subscriptionSegments = subscriptionPath
|
|
117
|
+
.split("/")
|
|
118
|
+
.filter((s) => s.length > 0);
|
|
119
|
+
// If subscription is longer than the update path, it can't match
|
|
120
|
+
if (subscriptionSegments.length > updateSegments.length) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
// Compare each segment
|
|
124
|
+
for (let i = 0; i < subscriptionSegments.length; i++) {
|
|
125
|
+
const subSegment = subscriptionSegments[i];
|
|
126
|
+
const updateSegment = updateSegments[i];
|
|
127
|
+
// If segment is * or starts with * (wildcard), it matches anything
|
|
128
|
+
if (subSegment === "*" || subSegment.startsWith("*:")) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
// Otherwise, segments should match exactly
|
|
132
|
+
if (subSegment !== updateSegment) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
// If no wildcards, check if subscription is a prefix of the update path
|
|
139
|
+
return (updatePath === subscriptionPath ||
|
|
140
|
+
updatePath.startsWith(subscriptionPath + "/"));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Gets all path prefixes for a given path.
|
|
144
|
+
*
|
|
145
|
+
* For example, for '/a/b/c' it returns ['/a', '/a/b', '/a/b/c'].
|
|
146
|
+
*/
|
|
147
|
+
getPathPrefixes(path) {
|
|
148
|
+
const segments = path.split("/").filter((s) => s.length > 0);
|
|
149
|
+
const prefixes = [];
|
|
150
|
+
let currentPath = "";
|
|
151
|
+
for (const segment of segments) {
|
|
152
|
+
currentPath = currentPath ? `${currentPath}/${segment}` : `/${segment}`;
|
|
153
|
+
prefixes.push(currentPath);
|
|
154
|
+
}
|
|
155
|
+
if (prefixes.length === 0 && path === "/") {
|
|
156
|
+
prefixes.push("/");
|
|
157
|
+
}
|
|
158
|
+
return prefixes;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=AnalyticsSubscriptionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalyticsSubscriptionManager.js","sourceRoot":"","sources":["../src/AnalyticsSubscriptionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export type AnalyticsSeriesInput = {
|
|
|
13
13
|
dimensions: Record<string, AnalyticsPath>;
|
|
14
14
|
dimensionMetadata?: Record<string, string>;
|
|
15
15
|
};
|
|
16
|
+
export type AnalyticsUpdateCallback = (source: AnalyticsPath) => void;
|
|
16
17
|
export interface IAnalyticsStore {
|
|
17
18
|
clearSeriesBySource: (source: AnalyticsPath, cleanUpDimensions?: boolean) => Promise<number>;
|
|
18
19
|
clearEmptyAnalyticsDimensions: () => Promise<number>;
|
|
@@ -20,4 +21,5 @@ export interface IAnalyticsStore {
|
|
|
20
21
|
addSeriesValue: (input: AnalyticsSeriesInput) => Promise<void>;
|
|
21
22
|
addSeriesValues: (inputs: AnalyticsSeriesInput[]) => Promise<void>;
|
|
22
23
|
getDimensions: () => Promise<any>;
|
|
24
|
+
subscribeToSource: (source: AnalyticsPath, callback: AnalyticsUpdateCallback) => () => void;
|
|
23
25
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
export type { IAnalyticsProfiler } from "./AnalyticsProfiler.js";
|
|
2
2
|
export { AnalyticsProfiler, PassthroughAnalyticsProfiler, } from "./AnalyticsProfiler.js";
|
|
3
|
-
export type { IAnalyticsStore, AnalyticsSeriesInput, } from "./IAnalyticsStore.js";
|
|
3
|
+
export type { IAnalyticsStore, AnalyticsSeriesInput, AnalyticsUpdateCallback, } from "./IAnalyticsStore.js";
|
|
4
4
|
export { AnalyticsPath, AnalyticsPathSegment } from "./AnalyticsPath.js";
|
|
5
5
|
export type { AnalyticsQuery, AnalyticsSeriesQuery, AnalyticsSeries, AnalyticsDimension, } from "./AnalyticsQuery.js";
|
|
6
6
|
export { AnalyticsGranularity } from "./AnalyticsQuery.js";
|
|
7
7
|
export { AnalyticsQueryEngine } from "./AnalyticsQueryEngine.js";
|
|
8
8
|
export type { GroupedPeriodResult, GroupedPeriodResults, } from "./AnalyticsDiscretizer.js";
|
|
9
9
|
export { AnalyticsSerializerTypes, AnalyticsPeriod, } from "./AnalyticsPeriod.js";
|
|
10
|
+
export * from "./AnalyticsSubscriptionManager.js";
|
package/dist/index.js
CHANGED
|
@@ -3,4 +3,5 @@ export { AnalyticsPath, AnalyticsPathSegment } from "./AnalyticsPath.js";
|
|
|
3
3
|
export { AnalyticsGranularity } from "./AnalyticsQuery.js";
|
|
4
4
|
export { AnalyticsQueryEngine } from "./AnalyticsQueryEngine.js";
|
|
5
5
|
export { AnalyticsSerializerTypes, AnalyticsPeriod, } from "./AnalyticsPeriod.js";
|
|
6
|
+
export * from "./AnalyticsSubscriptionManager.js";
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAOzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,EACL,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,mCAAmC,CAAC"}
|