@powerhousedao/shared 6.0.0-dev.61 → 6.0.0-dev.63

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.
Files changed (40) hide show
  1. package/dist/analytics/analytics-path.d.ts +36 -0
  2. package/dist/analytics/analytics-path.d.ts.map +1 -0
  3. package/dist/analytics/analytics-path.js +170 -0
  4. package/dist/analytics/analytics-path.js.map +1 -0
  5. package/dist/analytics/analytics-period.d.ts +40 -0
  6. package/dist/analytics/analytics-period.d.ts.map +1 -0
  7. package/dist/analytics/analytics-period.js +204 -0
  8. package/dist/analytics/analytics-period.js.map +1 -0
  9. package/dist/analytics/constants.d.ts +35 -0
  10. package/dist/analytics/constants.d.ts.map +1 -0
  11. package/dist/analytics/constants.js +40 -0
  12. package/dist/analytics/constants.js.map +1 -0
  13. package/dist/analytics/index.d.ts +5 -0
  14. package/dist/analytics/index.d.ts.map +1 -0
  15. package/dist/analytics/index.js +5 -0
  16. package/dist/analytics/index.js.map +1 -0
  17. package/dist/analytics/types.d.ts +85 -0
  18. package/dist/analytics/types.d.ts.map +1 -0
  19. package/dist/analytics/types.js +2 -0
  20. package/dist/analytics/types.js.map +1 -0
  21. package/dist/processors/drive-analytics/document-processor.d.ts +10 -0
  22. package/dist/processors/drive-analytics/document-processor.d.ts.map +1 -0
  23. package/dist/processors/drive-analytics/document-processor.js +43 -0
  24. package/dist/processors/drive-analytics/document-processor.js.map +1 -0
  25. package/dist/processors/drive-analytics/drive-processor.d.ts +10 -0
  26. package/dist/processors/drive-analytics/drive-processor.d.ts.map +1 -0
  27. package/dist/processors/drive-analytics/drive-processor.js +85 -0
  28. package/dist/processors/drive-analytics/drive-processor.js.map +1 -0
  29. package/dist/processors/drive-analytics/index.d.ts +10 -0
  30. package/dist/processors/drive-analytics/index.d.ts.map +1 -0
  31. package/dist/processors/drive-analytics/index.js +28 -0
  32. package/dist/processors/drive-analytics/index.js.map +1 -0
  33. package/dist/processors/drive-analytics/types.d.ts +3 -0
  34. package/dist/processors/drive-analytics/types.d.ts.map +1 -0
  35. package/dist/processors/drive-analytics/types.js +2 -0
  36. package/dist/processors/drive-analytics/types.js.map +1 -0
  37. package/dist/processors/types.d.ts +1 -1
  38. package/dist/processors/types.d.ts.map +1 -1
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +17 -8
@@ -0,0 +1,85 @@
1
+ import type { DateTime } from "luxon";
2
+ import type { AnalyticsPath } from "./analytics-path.js";
3
+ import type { AnalyticsGranularity, CompoundOperator } from "./constants.js";
4
+ export type AnalyticsSeriesQuery = {
5
+ start: DateTime | null;
6
+ end: DateTime | null;
7
+ metrics: string[];
8
+ currency?: AnalyticsPath;
9
+ select: Record<string, AnalyticsPath[]>;
10
+ };
11
+ export type AnalyticsQuery = AnalyticsSeriesQuery & {
12
+ granularity: AnalyticsGranularity;
13
+ lod: Record<string, number | null>;
14
+ };
15
+ export type AnalyticsSeries<D = string | AnalyticsDimension> = {
16
+ source: AnalyticsPath;
17
+ start: DateTime;
18
+ end: DateTime | null;
19
+ metric: string;
20
+ value: number;
21
+ unit: string | null;
22
+ fn: string;
23
+ params: Record<string, unknown> | null;
24
+ dimensions: Record<string, D>;
25
+ };
26
+ export type AnalyticsDimension = {
27
+ path: AnalyticsPath;
28
+ icon: string;
29
+ label: string;
30
+ description: string;
31
+ };
32
+ export type CompoundAnalyticsQuery = {
33
+ start: DateTime | null;
34
+ end: DateTime | null;
35
+ granularity: AnalyticsGranularity;
36
+ lod: Record<string, number | null>;
37
+ select: Record<string, AnalyticsPath[]>;
38
+ expression: CompoundAnalyticsExpression;
39
+ };
40
+ export type CompoundAnalyticsExpression = {
41
+ inputs: CompoundAnalyticsInputs;
42
+ operator: CompoundOperator;
43
+ operand: AnalyticsOperand;
44
+ resultCurrency?: AnalyticsPath;
45
+ };
46
+ export type CompoundAnalyticsInputs = {
47
+ metrics: string[];
48
+ currency?: AnalyticsPath;
49
+ };
50
+ export type AnalyticsOperand = {
51
+ metric: string;
52
+ currency?: AnalyticsPath;
53
+ useSum: boolean;
54
+ };
55
+ export type MultiCurrencyConversion = {
56
+ targetCurrency?: AnalyticsPath;
57
+ conversions: ConversionMetric[];
58
+ };
59
+ export type ConversionMetric = {
60
+ metric: string;
61
+ currency?: AnalyticsPath;
62
+ };
63
+ export type AnalyticsSeriesInput = {
64
+ start: DateTime;
65
+ end?: DateTime | null;
66
+ source: AnalyticsPath;
67
+ metric: string;
68
+ value: number;
69
+ unit?: string | null;
70
+ fn?: string | null;
71
+ params?: Record<string, any> | null;
72
+ dimensions: Record<string, AnalyticsPath>;
73
+ dimensionMetadata?: Record<string, string>;
74
+ };
75
+ export type AnalyticsUpdateCallback = (source: AnalyticsPath) => void;
76
+ export interface IAnalyticsStore {
77
+ clearSeriesBySource: (source: AnalyticsPath, cleanUpDimensions?: boolean) => Promise<number>;
78
+ clearEmptyAnalyticsDimensions: () => Promise<number>;
79
+ getMatchingSeries: (query: AnalyticsSeriesQuery) => Promise<AnalyticsSeries[]>;
80
+ addSeriesValue: (input: AnalyticsSeriesInput) => Promise<void>;
81
+ addSeriesValues: (inputs: AnalyticsSeriesInput[]) => Promise<void>;
82
+ getDimensions: () => Promise<any>;
83
+ subscribeToSource: (source: AnalyticsPath, callback: AnalyticsUpdateCallback) => () => void;
84
+ }
85
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../analytics/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../analytics/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import type { IAnalyticsStore } from "../../analytics/types.js";
2
+ import type { OperationWithContext } from "../../document-model/index.js";
3
+ import type { IProcessor } from "../types.js";
4
+ export declare class DocumentAnalyticsProcessor implements IProcessor {
5
+ private readonly analyticsStore;
6
+ constructor(analyticsStore: IAnalyticsStore);
7
+ onOperations(operations: OperationWithContext[]): Promise<void>;
8
+ onDisconnect(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=document-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-processor.d.ts","sourceRoot":"","sources":["../../../processors/drive-analytics/document-processor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,qBAAa,0BAA2B,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,eAAe;IAItD,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmD/D,YAAY;CACnB"}
@@ -0,0 +1,43 @@
1
+ import { DateTime } from "luxon";
2
+ import { AnalyticsPath } from "../../analytics/analytics-path.js";
3
+ export class DocumentAnalyticsProcessor {
4
+ analyticsStore;
5
+ constructor(analyticsStore) {
6
+ this.analyticsStore = analyticsStore;
7
+ //
8
+ }
9
+ async onOperations(operations) {
10
+ if (operations.length === 0) {
11
+ return;
12
+ }
13
+ const CHUNK_SIZE = 50;
14
+ const buffer = [];
15
+ for (const { operation, context } of operations) {
16
+ const { documentType, documentId, branch, scope } = context;
17
+ const source = AnalyticsPath.fromString(`ph/doc/${documentId}/${branch}/${scope}`);
18
+ const target = documentType === "powerhouse/document-drive" ? "DRIVE" : "NODE";
19
+ const revision = operation.index;
20
+ const seriesInput = {
21
+ source,
22
+ metric: "DocumentOperations",
23
+ start: DateTime.fromISO(operation.timestampUtcMs),
24
+ value: 1,
25
+ dimensions: {
26
+ drive: AnalyticsPath.fromString(`ph/doc/drive/${documentId}/${branch}/${scope}/${revision}`),
27
+ operation: AnalyticsPath.fromString(`ph/doc/operation/${operation.action.type}/${operation.index}`),
28
+ target: AnalyticsPath.fromString(`ph/doc/target/${target}/${documentId}`),
29
+ },
30
+ };
31
+ buffer.push(seriesInput);
32
+ while (buffer.length >= CHUNK_SIZE) {
33
+ const batch = buffer.splice(0, CHUNK_SIZE);
34
+ await this.analyticsStore.addSeriesValues(batch);
35
+ }
36
+ }
37
+ if (buffer.length > 0) {
38
+ await this.analyticsStore.addSeriesValues(buffer);
39
+ }
40
+ }
41
+ async onDisconnect() { }
42
+ }
43
+ //# sourceMappingURL=document-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-processor.js","sourceRoot":"","sources":["../../../processors/drive-analytics/document-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AASlE,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,cAA+B;QAA/B,mBAAc,GAAd,cAAc,CAAiB;QAC1D,EAAE;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkC;QACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,UAAU,EAAE,CAAC;YAChD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAE5D,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CACrC,UAAU,UAAU,IAAI,MAAM,IAAI,KAAK,EAAE,CAC1C,CAAC;YAEF,MAAM,MAAM,GACV,YAAY,KAAK,2BAA2B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAElE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;YAEjC,MAAM,WAAW,GAAyB;gBACxC,MAAM;gBACN,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;gBACjD,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE;oBACV,KAAK,EAAE,aAAa,CAAC,UAAU,CAC7B,gBAAgB,UAAU,IAAI,MAAM,IAAI,KAAK,IAAI,QAAQ,EAAE,CAC5D;oBACD,SAAS,EAAE,aAAa,CAAC,UAAU,CACjC,oBAAoB,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAC/D;oBACD,MAAM,EAAE,aAAa,CAAC,UAAU,CAC9B,iBAAiB,MAAM,IAAI,UAAU,EAAE,CACxC;iBACF;aACF,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEzB,OAAO,MAAM,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,KAAI,CAAC;CACxB"}
@@ -0,0 +1,10 @@
1
+ import type { IAnalyticsStore } from "../../analytics/types.js";
2
+ import type { OperationWithContext } from "../../document-model/index.js";
3
+ import type { IProcessor } from "../types.js";
4
+ export declare class DriveAnalyticsProcessor implements IProcessor {
5
+ private readonly analyticsStore;
6
+ constructor(analyticsStore: IAnalyticsStore);
7
+ onOperations(operations: OperationWithContext[]): Promise<void>;
8
+ onDisconnect(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=drive-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-processor.d.ts","sourceRoot":"","sources":["../../../processors/drive-analytics/drive-processor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmC9C,qBAAa,uBAAwB,YAAW,UAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,eAAe;IAItD,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsE/D,YAAY;CACnB"}
@@ -0,0 +1,85 @@
1
+ import { DateTime } from "luxon";
2
+ import { AnalyticsPath } from "../../analytics/analytics-path.js";
3
+ const CREATE_NODE_ACTIONS = ["ADD_FILE", "ADD_FOLDER"];
4
+ const DUPLICATE_NODE_ACTIONS = ["COPY_NODE"];
5
+ const UPDATE_NODE_ACTIONS = ["UPDATE_FILE", "UPDATE_NODE"];
6
+ const MOVE_NODE_ACTIONS = ["MOVE_NODE"];
7
+ const REMOVE_NODE_ACTIONS = ["DELETE_NODE"];
8
+ const NODE_ACTIONS = [
9
+ ...CREATE_NODE_ACTIONS,
10
+ ...DUPLICATE_NODE_ACTIONS,
11
+ ...UPDATE_NODE_ACTIONS,
12
+ ...MOVE_NODE_ACTIONS,
13
+ ...REMOVE_NODE_ACTIONS,
14
+ ];
15
+ function getActionType(action) {
16
+ if (CREATE_NODE_ACTIONS.includes(action)) {
17
+ return "CREATED";
18
+ }
19
+ if (DUPLICATE_NODE_ACTIONS.includes(action)) {
20
+ return "DUPLICATED";
21
+ }
22
+ if (REMOVE_NODE_ACTIONS.includes(action)) {
23
+ return "REMOVED";
24
+ }
25
+ if (MOVE_NODE_ACTIONS.includes(action)) {
26
+ return "MOVED";
27
+ }
28
+ return "UPDATED";
29
+ }
30
+ export class DriveAnalyticsProcessor {
31
+ analyticsStore;
32
+ constructor(analyticsStore) {
33
+ this.analyticsStore = analyticsStore;
34
+ //
35
+ }
36
+ async onOperations(operations) {
37
+ if (operations.length === 0) {
38
+ return;
39
+ }
40
+ const CHUNK_SIZE = 50;
41
+ const buffer = [];
42
+ for (const { operation, context } of operations) {
43
+ const { documentType, documentId, branch, scope } = context;
44
+ if (documentType !== "powerhouse/document-drive") {
45
+ continue;
46
+ }
47
+ const { action: { type, input, timestampUtcMs }, } = operation;
48
+ const source = AnalyticsPath.fromString(`ph/drive/${documentId}/${branch}/${scope}`);
49
+ const revision = operation.index;
50
+ const actionType = getActionType(type);
51
+ const target = NODE_ACTIONS.includes(type) ? "NODE" : "DRIVE";
52
+ let targetId = documentId;
53
+ if (target === "NODE") {
54
+ const operationInput = input;
55
+ targetId =
56
+ operationInput.id ||
57
+ operationInput.targetId ||
58
+ operationInput.srcFolder ||
59
+ documentId;
60
+ }
61
+ const seriesInput = {
62
+ source,
63
+ metric: "DriveOperations",
64
+ start: DateTime.fromISO(timestampUtcMs),
65
+ value: 1,
66
+ dimensions: {
67
+ drive: AnalyticsPath.fromString(`ph/drive/${documentId}/${branch}/${scope}/${revision}`),
68
+ operation: AnalyticsPath.fromString(`ph/drive/operation/${operation.action.type}/${operation.index}`),
69
+ target: AnalyticsPath.fromString(`ph/drive/target/${target}/${targetId}`),
70
+ actionType: AnalyticsPath.fromString(`ph/drive/actionType/${actionType}/${targetId}`),
71
+ },
72
+ };
73
+ buffer.push(seriesInput);
74
+ while (buffer.length >= CHUNK_SIZE) {
75
+ const batch = buffer.splice(0, CHUNK_SIZE);
76
+ await this.analyticsStore.addSeriesValues(batch);
77
+ }
78
+ }
79
+ if (buffer.length > 0) {
80
+ await this.analyticsStore.addSeriesValues(buffer);
81
+ }
82
+ }
83
+ async onDisconnect() { }
84
+ }
85
+ //# sourceMappingURL=drive-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-processor.js","sourceRoot":"","sources":["../../../processors/drive-analytics/drive-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { IAnalyticsStore } from "../../analytics/types.js";
2
+ import type { PHDocumentHeader } from "../../document-model/core/documents.js";
3
+ import type { ProcessorRecord } from "../types.js";
4
+ export declare const processorFactory: (module: {
5
+ analyticsStore: IAnalyticsStore;
6
+ }) => (driveHeader: PHDocumentHeader) => ProcessorRecord[];
7
+ export * from "./document-processor.js";
8
+ export * from "./drive-processor.js";
9
+ export * from "./types.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/drive-analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,eAAO,MAAM,gBAAgB,GAC1B,QAAQ;IAAE,cAAc,EAAE,eAAe,CAAA;CAAE,MAC3C,aAAa,gBAAgB,KAAG,eAAe,EAqB/C,CAAC;AAEJ,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { DocumentAnalyticsProcessor } from "./document-processor.js";
2
+ import { DriveAnalyticsProcessor } from "./drive-processor.js";
3
+ export const processorFactory = (module) => (driveHeader) => {
4
+ return [
5
+ {
6
+ processor: new DriveAnalyticsProcessor(module.analyticsStore),
7
+ filter: {
8
+ branch: ["main"],
9
+ documentId: ["*"],
10
+ scope: ["*"],
11
+ documentType: ["powerhouse/document-drive"],
12
+ },
13
+ },
14
+ {
15
+ processor: new DocumentAnalyticsProcessor(module.analyticsStore),
16
+ filter: {
17
+ branch: ["main"],
18
+ documentId: ["*"],
19
+ scope: ["*"],
20
+ documentType: ["*"],
21
+ },
22
+ },
23
+ ];
24
+ };
25
+ export * from "./document-processor.js";
26
+ export * from "./drive-processor.js";
27
+ export * from "./types.js";
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../processors/drive-analytics/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAC3B,CAAC,MAA2C,EAAE,EAAE,CAChD,CAAC,WAA6B,EAAqB,EAAE;IACnD,OAAO;QACL;YACE,SAAS,EAAE,IAAI,uBAAuB,CAAC,MAAM,CAAC,cAAc,CAAC;YAC7D,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,UAAU,EAAE,CAAC,GAAG,CAAC;gBACjB,KAAK,EAAE,CAAC,GAAG,CAAC;gBACZ,YAAY,EAAE,CAAC,2BAA2B,CAAC;aAC5C;SACF;QACD;YACE,SAAS,EAAE,IAAI,0BAA0B,CAAC,MAAM,CAAC,cAAc,CAAC;YAChE,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,MAAM,CAAC;gBAChB,UAAU,EAAE,CAAC,GAAG,CAAC;gBACjB,KAAK,EAAE,CAAC,GAAG,CAAC;gBACZ,YAAY,EAAE,CAAC,GAAG,CAAC;aACpB;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEJ,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type NodeTarget = "DRIVE" | "NODE";
2
+ export type ActionType = "CREATED" | "DUPLICATED" | "REMOVED" | "MOVED" | "UPDATED";
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../processors/drive-analytics/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;AAC1C,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,YAAY,GACZ,SAAS,GACT,OAAO,GACP,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../processors/drive-analytics/types.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
- import type { IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
2
1
  import type { OperationWithContext } from "@powerhousedao/shared/document-model";
2
+ import type { IAnalyticsStore } from "../analytics/types.js";
3
3
  import type { PHDocumentHeader } from "../document-model/core/documents.js";
4
4
  import type { PROCESSOR_APPS } from "./constants.js";
5
5
  import type { IRelationalDb } from "./relational/types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,WAAW,EAAE,gBAAgB,EAC7B,YAAY,CAAC,EAAE,YAAY,KACxB,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD,qFAAqF;AACrF,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,oBAAoB,KACzB,OAAO,CAAC,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC3D;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,SAAS,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../processors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,YAAY,EAAE,aAAa,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,WAAW,EAAE,gBAAgB,EAC7B,YAAY,CAAC,EAAE,YAAY,KACxB,eAAe,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;AAEpD,qFAAqF;AACrF,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,oBAAoB,KACzB,OAAO,CAAC,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE,CAAC;IAElC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CAC3D;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,SAAS,YAAY,EAAE,CAAC"}