@x12i/memorix-service 3.9.2 → 3.11.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/analytics/content-allow.d.ts +17 -0
- package/dist/analytics/content-allow.d.ts.map +1 -0
- package/dist/analytics/content-allow.js +39 -0
- package/dist/analytics/content-allow.js.map +1 -0
- package/dist/analytics/definition.d.ts +179 -0
- package/dist/analytics/definition.d.ts.map +1 -0
- package/dist/analytics/definition.js +524 -0
- package/dist/analytics/definition.js.map +1 -0
- package/dist/analytics/engine.d.ts +63 -0
- package/dist/analytics/engine.d.ts.map +1 -0
- package/dist/analytics/engine.js +181 -0
- package/dist/analytics/engine.js.map +1 -0
- package/dist/analytics/host.d.ts +15 -0
- package/dist/analytics/host.d.ts.map +1 -0
- package/dist/analytics/host.js +143 -0
- package/dist/analytics/host.js.map +1 -0
- package/dist/analytics/index-store.d.ts +98 -0
- package/dist/analytics/index-store.d.ts.map +1 -0
- package/dist/analytics/index-store.js +295 -0
- package/dist/analytics/index-store.js.map +1 -0
- package/dist/analytics/materializer.d.ts +88 -0
- package/dist/analytics/materializer.d.ts.map +1 -0
- package/dist/analytics/materializer.js +364 -0
- package/dist/analytics/materializer.js.map +1 -0
- package/dist/analytics/pipeline-port.d.ts +10 -0
- package/dist/analytics/pipeline-port.d.ts.map +1 -0
- package/dist/analytics/pipeline-port.js +42 -0
- package/dist/analytics/pipeline-port.js.map +1 -0
- package/dist/analytics/projector.d.ts +60 -0
- package/dist/analytics/projector.d.ts.map +1 -0
- package/dist/analytics/projector.js +270 -0
- package/dist/analytics/projector.js.map +1 -0
- package/dist/analytics/property-index.d.ts +87 -0
- package/dist/analytics/property-index.d.ts.map +1 -0
- package/dist/analytics/property-index.js +537 -0
- package/dist/analytics/property-index.js.map +1 -0
- package/dist/analytics/state.d.ts +83 -0
- package/dist/analytics/state.d.ts.map +1 -0
- package/dist/analytics/state.js +273 -0
- package/dist/analytics/state.js.map +1 -0
- package/dist/analytics/tracker.d.ts +215 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +1515 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +6 -0
- package/dist/app.js.map +1 -1
- package/dist/content-census-countex.d.ts +15 -0
- package/dist/content-census-countex.d.ts.map +1 -0
- package/dist/content-census-countex.js +18 -0
- package/dist/content-census-countex.js.map +1 -0
- package/dist/datasource-backfill.d.ts +2 -0
- package/dist/datasource-backfill.d.ts.map +1 -1
- package/dist/datasource-backfill.js +5 -1
- package/dist/datasource-backfill.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/openapi/openapi.json +955 -210
- package/dist/platform.d.ts +6 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +69 -4
- package/dist/platform.js.map +1 -1
- package/dist/routes/analytics-counters.d.ts +8 -0
- package/dist/routes/analytics-counters.d.ts.map +1 -0
- package/dist/routes/analytics-counters.js +100 -0
- package/dist/routes/analytics-counters.js.map +1 -0
- package/dist/routes/analytics-indexes.d.ts +8 -0
- package/dist/routes/analytics-indexes.d.ts.map +1 -0
- package/dist/routes/analytics-indexes.js +80 -0
- package/dist/routes/analytics-indexes.js.map +1 -0
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +22 -0
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/datasource-backfill.d.ts.map +1 -1
- package/dist/routes/datasource-backfill.js +8 -1
- package/dist/routes/datasource-backfill.js.map +1 -1
- package/openapi/openapi.json +955 -210
- package/package.json +5 -5
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content types a registered counter may write and read on an existing object type.
|
|
3
|
+
* The pack allow-list is unchanged. Only `target.contentType` is added, and only
|
|
4
|
+
* while a non-error counter still materializes into it.
|
|
5
|
+
*/
|
|
6
|
+
type ObjectTypeMeta = {
|
|
7
|
+
contentTypes: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare function replaceAnalyticsContentGrants(orgId: string, grants: Array<{
|
|
10
|
+
objectType?: string;
|
|
11
|
+
contentType?: string;
|
|
12
|
+
}>): void;
|
|
13
|
+
export declare function grantedContentTypes(orgId: string, objectType: string): string[];
|
|
14
|
+
/** Append granted content types. The pack's list, including its first type, stays in front. */
|
|
15
|
+
export declare function mergeGrantedContentTypes<M extends ObjectTypeMeta>(orgId: string, objectType: string, meta: M | null): M | null;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=content-allow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-allow.d.ts","sourceRoot":"","sources":["../../src/analytics/content-allow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,cAAc,GAAG;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAIjD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,CAAC;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC3D,IAAI,CAeN;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAG/E;AAED,+FAA+F;AAC/F,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,cAAc,EAC/D,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,CAAC,GAAG,IAAI,GACb,CAAC,GAAG,IAAI,CAKV"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content types a registered counter may write and read on an existing object type.
|
|
3
|
+
* The pack allow-list is unchanged. Only `target.contentType` is added, and only
|
|
4
|
+
* while a non-error counter still materializes into it.
|
|
5
|
+
*/
|
|
6
|
+
const byOrg = new Map();
|
|
7
|
+
export function replaceAnalyticsContentGrants(orgId, grants) {
|
|
8
|
+
const map = new Map();
|
|
9
|
+
for (const grant of grants) {
|
|
10
|
+
const objectType = grant.objectType?.trim() ?? "";
|
|
11
|
+
const contentType = grant.contentType?.trim() ?? "";
|
|
12
|
+
if (!objectType || !contentType)
|
|
13
|
+
continue;
|
|
14
|
+
let set = map.get(objectType);
|
|
15
|
+
if (!set) {
|
|
16
|
+
set = new Set();
|
|
17
|
+
map.set(objectType, set);
|
|
18
|
+
}
|
|
19
|
+
set.add(contentType);
|
|
20
|
+
}
|
|
21
|
+
if (map.size === 0)
|
|
22
|
+
byOrg.delete(orgId);
|
|
23
|
+
else
|
|
24
|
+
byOrg.set(orgId, map);
|
|
25
|
+
}
|
|
26
|
+
export function grantedContentTypes(orgId, objectType) {
|
|
27
|
+
const set = byOrg.get(orgId)?.get(objectType);
|
|
28
|
+
return set ? [...set] : [];
|
|
29
|
+
}
|
|
30
|
+
/** Append granted content types. The pack's list, including its first type, stays in front. */
|
|
31
|
+
export function mergeGrantedContentTypes(orgId, objectType, meta) {
|
|
32
|
+
if (!meta)
|
|
33
|
+
return null;
|
|
34
|
+
const extra = grantedContentTypes(orgId, objectType).filter((ct) => !meta.contentTypes.includes(ct));
|
|
35
|
+
if (extra.length === 0)
|
|
36
|
+
return meta;
|
|
37
|
+
return { ...meta, contentTypes: [...meta.contentTypes, ...extra] };
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=content-allow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-allow.js","sourceRoot":"","sources":["../../src/analytics/content-allow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoC,CAAC;AAE1D,MAAM,UAAU,6BAA6B,CAC3C,KAAa,EACb,MAA4D;IAE5D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW;YAAE,SAAS;QAC1C,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;QAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;QACnC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,UAAkB;IACnE,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7B,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,UAAkB,EAClB,IAAc;IAEd,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACrG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
export type AnalyticsPredicate = {
|
|
2
|
+
property: string;
|
|
3
|
+
equals?: unknown;
|
|
4
|
+
in?: unknown[];
|
|
5
|
+
exists?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type AnalyticsWhere = AnalyticsPredicate | AnalyticsPredicate[];
|
|
8
|
+
export type AnalyticsWindow = "24h" | "7d" | "30d";
|
|
9
|
+
export type CounterScopeProperty = {
|
|
10
|
+
key: string;
|
|
11
|
+
abstractType: string;
|
|
12
|
+
property: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* A selecting node names one population. `abstractType` is the projected abstract.
|
|
16
|
+
* `objectType` + `contentType` are the stored records; `property` is then a path on
|
|
17
|
+
* the record (`data.decision`), not an abstract property.
|
|
18
|
+
*/
|
|
19
|
+
export type CounterRecordSelector = {
|
|
20
|
+
abstractType?: string;
|
|
21
|
+
objectType?: string;
|
|
22
|
+
contentType?: string;
|
|
23
|
+
};
|
|
24
|
+
export type CounterMeasure = CounterRecordSelector & {
|
|
25
|
+
key: string;
|
|
26
|
+
kind: "count" | "distinct" | "sum" | "mean" | "max";
|
|
27
|
+
property?: string;
|
|
28
|
+
where?: AnalyticsWhere;
|
|
29
|
+
windows?: AnalyticsWindow[];
|
|
30
|
+
};
|
|
31
|
+
export type CounterGroup = CounterRecordSelector & {
|
|
32
|
+
key: string;
|
|
33
|
+
property: string;
|
|
34
|
+
buckets?: string[];
|
|
35
|
+
subject?: string;
|
|
36
|
+
where?: AnalyticsWhere;
|
|
37
|
+
split?: {
|
|
38
|
+
key: string;
|
|
39
|
+
property: string;
|
|
40
|
+
buckets: string[];
|
|
41
|
+
missing?: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export type CounterSplit = CounterRecordSelector & {
|
|
45
|
+
key: string;
|
|
46
|
+
property: string;
|
|
47
|
+
buckets: string[];
|
|
48
|
+
totalKey: string;
|
|
49
|
+
subsetKey: string;
|
|
50
|
+
subset: AnalyticsPredicate;
|
|
51
|
+
};
|
|
52
|
+
export type CounterUnwind = {
|
|
53
|
+
key: string;
|
|
54
|
+
abstractType: string;
|
|
55
|
+
arrayProperty: string;
|
|
56
|
+
columns: Array<{
|
|
57
|
+
key: string;
|
|
58
|
+
path: string;
|
|
59
|
+
}>;
|
|
60
|
+
aggregates?: Array<{
|
|
61
|
+
key: string;
|
|
62
|
+
kind: "count" | "sum" | "max" | "distinct" | "group-count";
|
|
63
|
+
path?: string;
|
|
64
|
+
buckets?: string[];
|
|
65
|
+
}>;
|
|
66
|
+
};
|
|
67
|
+
export type CounterLeaders = {
|
|
68
|
+
key: string;
|
|
69
|
+
abstractType: string;
|
|
70
|
+
idProperty: string;
|
|
71
|
+
labelProperty: string;
|
|
72
|
+
limit?: number;
|
|
73
|
+
countOf?: {
|
|
74
|
+
abstractType: string;
|
|
75
|
+
property: string;
|
|
76
|
+
where?: AnalyticsWhere;
|
|
77
|
+
};
|
|
78
|
+
sort?: Array<{
|
|
79
|
+
property: string;
|
|
80
|
+
direction?: "asc" | "desc";
|
|
81
|
+
}>;
|
|
82
|
+
columns?: Array<{
|
|
83
|
+
key: string;
|
|
84
|
+
kind: "value" | "count" | "max" | "sum" | "distinct";
|
|
85
|
+
property?: string;
|
|
86
|
+
}>;
|
|
87
|
+
};
|
|
88
|
+
export type CounterDefinition = {
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
scope?: [CounterScopeProperty, CounterScopeProperty];
|
|
92
|
+
clock?: {
|
|
93
|
+
abstractType: string;
|
|
94
|
+
property: string;
|
|
95
|
+
};
|
|
96
|
+
target: {
|
|
97
|
+
objectType: string;
|
|
98
|
+
contentType: string;
|
|
99
|
+
recordId: string;
|
|
100
|
+
};
|
|
101
|
+
history?: {
|
|
102
|
+
recordId: string;
|
|
103
|
+
limit?: number;
|
|
104
|
+
};
|
|
105
|
+
measures?: CounterMeasure[];
|
|
106
|
+
groups?: CounterGroup[];
|
|
107
|
+
ratios?: Array<{
|
|
108
|
+
key: string;
|
|
109
|
+
numerator: string;
|
|
110
|
+
denominator: string;
|
|
111
|
+
}>;
|
|
112
|
+
derived?: Array<{
|
|
113
|
+
key: string;
|
|
114
|
+
op: "sum" | "difference" | "ratio";
|
|
115
|
+
terms: string[];
|
|
116
|
+
}>;
|
|
117
|
+
splits?: CounterSplit[];
|
|
118
|
+
unwinds?: CounterUnwind[];
|
|
119
|
+
leaders?: CounterLeaders[];
|
|
120
|
+
coverage?: Array<{
|
|
121
|
+
key: string;
|
|
122
|
+
abstractType: string;
|
|
123
|
+
where?: AnalyticsWhere;
|
|
124
|
+
expected: number | {
|
|
125
|
+
measure: string;
|
|
126
|
+
};
|
|
127
|
+
}>;
|
|
128
|
+
deltas?: Array<{
|
|
129
|
+
key: string;
|
|
130
|
+
measure: string;
|
|
131
|
+
}>;
|
|
132
|
+
transitions?: Array<{
|
|
133
|
+
key: string;
|
|
134
|
+
abstractType: string;
|
|
135
|
+
property: string;
|
|
136
|
+
identityProperty?: string;
|
|
137
|
+
}>;
|
|
138
|
+
trends?: Array<{
|
|
139
|
+
key: string;
|
|
140
|
+
label: string;
|
|
141
|
+
measure: string;
|
|
142
|
+
windows: Array<"snapshots" | "7d" | "30d">;
|
|
143
|
+
}>;
|
|
144
|
+
};
|
|
145
|
+
export declare const PSEUDO_PROPERTIES: Set<string>;
|
|
146
|
+
export declare function whereList(where: AnalyticsWhere | undefined): AnalyticsPredicate[];
|
|
147
|
+
/** Abstract types whose subjects feed this definition, in declaration order. */
|
|
148
|
+
export declare function abstractTypesOf(def: CounterDefinition): string[];
|
|
149
|
+
/**
|
|
150
|
+
* Population id for presence, the ledger, and backfill progress.
|
|
151
|
+
* Abstract populations keep the abstract type id. Stored populations use a reserved prefix.
|
|
152
|
+
*/
|
|
153
|
+
export declare function populationKey(node: CounterRecordSelector): string;
|
|
154
|
+
/** Stored object type + content type pairs a definition counts, in declaration order. */
|
|
155
|
+
export declare function contentSelections(def: CounterDefinition): Array<{
|
|
156
|
+
objectType: string;
|
|
157
|
+
contentType: string;
|
|
158
|
+
}>;
|
|
159
|
+
export declare function usesDatasource(def: CounterDefinition): boolean;
|
|
160
|
+
export declare function definitionHash(def: CounterDefinition): string;
|
|
161
|
+
/** What the validator needs to know about installed metadata for the registering scope. */
|
|
162
|
+
export type CounterCatalog = {
|
|
163
|
+
/** Declared properties with optional enum; null when the abstract type is unknown. */
|
|
164
|
+
abstractProperties(abstractType: string): Map<string, {
|
|
165
|
+
enum?: string[];
|
|
166
|
+
}> | null;
|
|
167
|
+
hasObjectType(objectType: string): boolean;
|
|
168
|
+
/** Content types already registered on the object type; null when the object type is unknown. */
|
|
169
|
+
contentTypes(objectType: string): string[] | null;
|
|
170
|
+
/** Enum of a declared field path, when that field closes its vocabulary. */
|
|
171
|
+
fieldEnum(objectType: string, path: string): string[] | null;
|
|
172
|
+
};
|
|
173
|
+
export type CounterValidationIssue = {
|
|
174
|
+
path: string;
|
|
175
|
+
code: string;
|
|
176
|
+
message: string;
|
|
177
|
+
};
|
|
178
|
+
export declare function validateCounterDefinition(raw: unknown, catalog: CounterCatalog): CounterValidationIssue[];
|
|
179
|
+
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/analytics/definition.ts"],"names":[],"mappings":"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"}
|