@powerhousedao/vetra 6.0.0-dev.2 → 6.0.0-dev.21
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/editors/app-editor/components/AppEditorForm.js +1 -1
- package/dist/editors/app-editor/editor.js +1 -1
- package/dist/editors/app-editor/editor.test.js +8 -1
- package/dist/editors/document-editor/components/DocumentEditorForm.js +1 -1
- package/dist/editors/document-editor/editor.js +1 -1
- package/dist/editors/processor-editor/components/ProcessorEditorForm.js +1 -1
- package/dist/editors/processor-editor/editor.js +1 -1
- package/dist/editors/subgraph-editor/components/SubgraphEditorForm.js +1 -1
- package/dist/editors/subgraph-editor/editor.js +1 -1
- package/dist/editors/vetra-drive-app/DriveExplorer.js +1 -1
- package/dist/editors/vetra-drive-app/components/DriveHeader.js +1 -1
- package/dist/editors/vetra-drive-app/editor.js +1 -1
- package/dist/editors/vetra-package/components/MetaForm.js +1 -1
- package/dist/editors/vetra-package/editor.js +1 -1
- package/dist/processors/codegen/__tests__/codegen-processor-e2e.test.js +25 -22
- package/dist/processors/codegen/document-handlers/generators/app-generator.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/app-generator.js +12 -6
- package/dist/processors/codegen/document-handlers/generators/document-editor-generator.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/document-editor-generator.js +10 -4
- package/dist/processors/codegen/document-handlers/generators/document-model-generator.d.ts +4 -0
- package/dist/processors/codegen/document-handlers/generators/document-model-generator.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/document-model-generator.js +42 -20
- package/dist/processors/codegen/document-handlers/generators/package-generator.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/package-generator.js +8 -2
- package/dist/processors/codegen/document-handlers/generators/processor-generator.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/processor-generator.js +9 -3
- package/dist/processors/codegen/document-handlers/generators/subgraph-generator.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/subgraph-generator.js +8 -2
- package/dist/processors/codegen/document-handlers/generators/utils.d.ts +7 -0
- package/dist/processors/codegen/document-handlers/generators/utils.d.ts.map +1 -1
- package/dist/processors/codegen/document-handlers/generators/utils.js +18 -1
- package/dist/processors/codegen/factory.d.ts +2 -1
- package/dist/processors/codegen/factory.d.ts.map +1 -1
- package/dist/processors/codegen/factory.legacy.d.ts +4 -0
- package/dist/processors/codegen/factory.legacy.d.ts.map +1 -0
- package/dist/processors/codegen/factory.legacy.js +53 -0
- package/dist/processors/codegen/index.d.ts +2 -2
- package/dist/processors/codegen/index.d.ts.map +1 -1
- package/dist/processors/codegen/index.js +22 -21
- package/dist/processors/codegen/index.legacy.d.ts +11 -0
- package/dist/processors/codegen/index.legacy.d.ts.map +1 -0
- package/dist/processors/codegen/index.legacy.js +57 -0
- package/dist/processors/factory.d.ts +4 -4
- package/dist/processors/factory.d.ts.map +1 -1
- package/dist/processors/factory.js +4 -3
- package/dist/processors/factory.legacy.d.ts +7 -0
- package/dist/processors/factory.legacy.d.ts.map +1 -0
- package/dist/processors/factory.legacy.js +20 -0
- package/dist/processors/index.d.ts +8 -2
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +10 -2
- package/dist/processors/vetra-read-model/factory.d.ts +3 -2
- package/dist/processors/vetra-read-model/factory.d.ts.map +1 -1
- package/dist/processors/vetra-read-model/factory.js +13 -16
- package/dist/processors/vetra-read-model/factory.legacy.d.ts +4 -0
- package/dist/processors/vetra-read-model/factory.legacy.d.ts.map +1 -0
- package/dist/processors/vetra-read-model/factory.legacy.js +24 -0
- package/dist/processors/vetra-read-model/index.d.ts +6 -5
- package/dist/processors/vetra-read-model/index.d.ts.map +1 -1
- package/dist/processors/vetra-read-model/index.js +20 -37
- package/dist/processors/vetra-read-model/index.legacy.d.ts +9 -0
- package/dist/processors/vetra-read-model/index.legacy.d.ts.map +1 -0
- package/dist/processors/vetra-read-model/index.legacy.js +75 -0
- package/dist/subgraphs/vetra-read-model/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/vetra-read-model/resolvers.js +2 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -14
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { generateProcessor } from "@powerhousedao/codegen";
|
|
2
2
|
import { logger } from "../../logger.js";
|
|
3
3
|
import { BaseDocumentGen } from "../base-document-gen.js";
|
|
4
|
-
import {
|
|
4
|
+
import { minimalBackupDocument } from "./utils.js";
|
|
5
5
|
/**
|
|
6
6
|
* Generator for processor documents
|
|
7
7
|
*/
|
|
@@ -63,10 +63,16 @@ export class ProcessorGenerator extends BaseDocumentGen {
|
|
|
63
63
|
// Extract document types from the state
|
|
64
64
|
const documentTypes = state.documentTypes.map((dt) => dt.documentType);
|
|
65
65
|
// Generate the processor using the codegen function
|
|
66
|
-
await generateProcessor(state.name, processorType, documentTypes, this.config.PH_CONFIG);
|
|
66
|
+
await generateProcessor(state.name, processorType, documentTypes, this.config.PH_CONFIG.skipFormat);
|
|
67
67
|
logger.info(`✅ Processor generation completed successfully for: ${state.name}`);
|
|
68
68
|
// Backup the document
|
|
69
|
-
await
|
|
69
|
+
await minimalBackupDocument({
|
|
70
|
+
documentId: strand.documentId,
|
|
71
|
+
documentType: strand.documentType,
|
|
72
|
+
branch: strand.branch,
|
|
73
|
+
state: strand.state,
|
|
74
|
+
name: state.name,
|
|
75
|
+
}, this.config.CURRENT_WORKING_DIR);
|
|
70
76
|
}
|
|
71
77
|
catch (error) {
|
|
72
78
|
logger.error(`❌ Error during processor generation for ${state.name}:`, error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraph-generator.d.ts","sourceRoot":"","sources":["../../../../../processors/codegen/document-handlers/generators/subgraph-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"subgraph-generator.d.ts","sourceRoot":"","sources":["../../../../../processors/codegen/document-handlers/generators/subgraph-generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAMhE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,sBAAsB,yBAAyB;IAExD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO;IA4BnD,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CA4EjE"}
|
|
@@ -2,7 +2,7 @@ import { generateManifest, generateSubgraph } from "@powerhousedao/codegen";
|
|
|
2
2
|
import { kebabCase } from "change-case";
|
|
3
3
|
import { logger } from "../../logger.js";
|
|
4
4
|
import { BaseDocumentGen } from "../base-document-gen.js";
|
|
5
|
-
import {
|
|
5
|
+
import { minimalBackupDocument } from "./utils.js";
|
|
6
6
|
/**
|
|
7
7
|
* Generator for subgraph documents
|
|
8
8
|
*/
|
|
@@ -61,7 +61,13 @@ export class SubgraphGenerator extends BaseDocumentGen {
|
|
|
61
61
|
// Don't throw here - subgraph generation was successful
|
|
62
62
|
}
|
|
63
63
|
// Backup the document
|
|
64
|
-
await
|
|
64
|
+
await minimalBackupDocument({
|
|
65
|
+
documentId: strand.documentId,
|
|
66
|
+
documentType: strand.documentType,
|
|
67
|
+
branch: strand.branch,
|
|
68
|
+
state: strand.state,
|
|
69
|
+
name: state.name,
|
|
70
|
+
}, this.config.CURRENT_WORKING_DIR);
|
|
65
71
|
}
|
|
66
72
|
catch (error) {
|
|
67
73
|
logger.error(`❌ Error during subgraph generation for ${state.name}:`, error);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { PHDocument } from "document-model";
|
|
2
|
+
import { type MinimalBackupData } from "document-model/node";
|
|
3
|
+
export type { MinimalBackupData };
|
|
2
4
|
/**
|
|
3
5
|
* Exports a document to the backup directory.
|
|
4
6
|
* Creates the backup directory if it doesn't exist.
|
|
@@ -10,4 +12,9 @@ import type { PHDocument } from "document-model";
|
|
|
10
12
|
* @returns Promise resolving to the backup file path, or undefined if backup failed
|
|
11
13
|
*/
|
|
12
14
|
export declare function backupDocument(document: PHDocument, workingDir: string, extension?: string, name?: string): Promise<string | undefined>;
|
|
15
|
+
/**
|
|
16
|
+
* Creates a minimal backup of a document from strand data.
|
|
17
|
+
* Used when the full document is not available (e.g., in onOperations handler).
|
|
18
|
+
*/
|
|
19
|
+
export declare function minimalBackupDocument(data: MinimalBackupData, workingDir: string, extension?: string): Promise<string | undefined>;
|
|
13
20
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../processors/codegen/document-handlers/generators/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../processors/codegen/document-handlers/generators/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAK7B,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAIlC;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,MAAW,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB7B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB7B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { baseSaveToFile } from "document-model/node";
|
|
1
|
+
import { baseMinimalSaveToFile, baseSaveToFile, } from "document-model/node";
|
|
2
2
|
import { mkdir } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { logger } from "../../logger.js";
|
|
@@ -27,3 +27,20 @@ export async function backupDocument(document, workingDir, extension = "", name)
|
|
|
27
27
|
return undefined;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a minimal backup of a document from strand data.
|
|
32
|
+
* Used when the full document is not available (e.g., in onOperations handler).
|
|
33
|
+
*/
|
|
34
|
+
export async function minimalBackupDocument(data, workingDir, extension) {
|
|
35
|
+
try {
|
|
36
|
+
const backupPath = join(workingDir, BACKUP_FOLDER);
|
|
37
|
+
await mkdir(backupPath, { recursive: true });
|
|
38
|
+
const filePath = await baseMinimalSaveToFile(data, backupPath, extension ?? "");
|
|
39
|
+
logger.debug(`Document backed up to: ${filePath}`);
|
|
40
|
+
return filePath;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
logger.warn(`Failed to backup document "${data.name}":`, error);
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProcessorRecord } from "@powerhousedao/reactor";
|
|
2
|
+
import type { IProcessorHostModule } from "document-drive";
|
|
2
3
|
import type { PHDocumentHeader } from "document-model";
|
|
3
4
|
export declare const codegenProcessorFactory: (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader) => ProcessorRecord[];
|
|
4
5
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../processors/codegen/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../processors/codegen/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAgCvD,eAAO,MAAM,uBAAuB,GACjC,QAAQ,oBAAoB,MAC5B,aAAa,gBAAgB,KAAG,eAAe,EAsC/C,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { IProcessorHostModule, ProcessorRecord } from "document-drive";
|
|
2
|
+
import type { PHDocumentHeader } from "document-model";
|
|
3
|
+
export declare const codegenProcessorFactoryLegacy: (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader) => ProcessorRecord[];
|
|
4
|
+
//# sourceMappingURL=factory.legacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.legacy.d.ts","sourceRoot":"","sources":["../../../processors/codegen/factory.legacy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAgCvD,eAAO,MAAM,6BAA6B,GACvC,QAAQ,oBAAoB,MAC5B,aAAa,gBAAgB,KAAG,eAAe,EAsC/C,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { VETRA_PROCESSOR_CONFIG_KEY } from "@powerhousedao/config";
|
|
2
|
+
import { CodegenProcessorLegacy } from "./index.legacy.js";
|
|
3
|
+
import { logger } from "./logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Determines if a drive header matches the Vetra drive criteria.
|
|
6
|
+
* @param driveHeader - The drive header to check
|
|
7
|
+
* @param explicitDriveId - Optional explicit drive ID from config (if set, uses exact match)
|
|
8
|
+
* @returns true if the drive is a Vetra drive, false otherwise
|
|
9
|
+
*/
|
|
10
|
+
function isDriveVetra(driveHeader, driveIdFromConfig) {
|
|
11
|
+
// If explicit drive ID is configured, use exact match
|
|
12
|
+
if (driveIdFromConfig) {
|
|
13
|
+
return (driveHeader.slug === driveIdFromConfig ||
|
|
14
|
+
driveHeader.id === driveIdFromConfig);
|
|
15
|
+
}
|
|
16
|
+
// Otherwise, check if slug/id matches Vetra pattern
|
|
17
|
+
// Matches "vetra" exactly or IDs starting with "vetra-" (case-insensitive)
|
|
18
|
+
const matchesPattern = (identifier) => {
|
|
19
|
+
const lower = identifier.toLowerCase();
|
|
20
|
+
return lower === "vetra" || lower.startsWith("vetra-");
|
|
21
|
+
};
|
|
22
|
+
return matchesPattern(driveHeader.slug) || matchesPattern(driveHeader.id);
|
|
23
|
+
}
|
|
24
|
+
export const codegenProcessorFactoryLegacy = (module) => (driveHeader) => {
|
|
25
|
+
// Create the processor
|
|
26
|
+
const processorsConfig = module.config ?? new Map();
|
|
27
|
+
const vetraConfig = processorsConfig.get(VETRA_PROCESSOR_CONFIG_KEY);
|
|
28
|
+
// Check if this drive should use the Vetra processor
|
|
29
|
+
if (!isDriveVetra(driveHeader, vetraConfig?.driveId)) {
|
|
30
|
+
logger.info(`Drive ${driveHeader.slug} is not a Vetra drive, skipping codegen processor`);
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
logger.info(`Drive ${driveHeader.slug} is a Vetra drive, using codegen processor (legacy)`);
|
|
34
|
+
const processor = new CodegenProcessorLegacy(vetraConfig?.interactive);
|
|
35
|
+
return [
|
|
36
|
+
{
|
|
37
|
+
processor,
|
|
38
|
+
filter: {
|
|
39
|
+
branch: ["main"],
|
|
40
|
+
documentId: ["*"],
|
|
41
|
+
documentType: [
|
|
42
|
+
"powerhouse/document-model",
|
|
43
|
+
"powerhouse/package",
|
|
44
|
+
"powerhouse/document-editor",
|
|
45
|
+
"powerhouse/subgraph",
|
|
46
|
+
"powerhouse/processor",
|
|
47
|
+
"powerhouse/app",
|
|
48
|
+
],
|
|
49
|
+
scope: ["global"],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IProcessor, OperationWithContext } from "@powerhousedao/reactor";
|
|
2
2
|
export declare class CodegenProcessor implements IProcessor {
|
|
3
3
|
private manager;
|
|
4
4
|
constructor(interactiveMode?: boolean);
|
|
5
|
-
|
|
5
|
+
onOperations(operations: OperationWithContext[]): Promise<void>;
|
|
6
6
|
onDisconnect(): Promise<void>;
|
|
7
7
|
setInteractiveMode(enabled: boolean): void;
|
|
8
8
|
isInteractive(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/codegen/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/codegen/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAS/E,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,OAAO,CAAyB;gBAE5B,eAAe,UAAQ;IAkB7B,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC/D,YAAY;IAGX,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI1C,aAAa,IAAI,OAAO;IAIxB,uBAAuB,IAAI,OAAO;CAG1C"}
|
|
@@ -11,37 +11,38 @@ export class CodegenProcessor {
|
|
|
11
11
|
CURRENT_WORKING_DIR,
|
|
12
12
|
}, interactiveMode);
|
|
13
13
|
if (interactiveMode) {
|
|
14
|
-
logger.info(
|
|
14
|
+
logger.info(`CodegenProcessor initialized with interactive mode enabled`);
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
17
|
logger.debug(`CodegenProcessor initialized with interactive mode disabled`);
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
async
|
|
21
|
-
logger.info(">>>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const generator = this.manager.getGenerator(strand.documentType);
|
|
20
|
+
async onOperations(operations) {
|
|
21
|
+
logger.info(">>> CodegenProcessor.onOperations()");
|
|
22
|
+
for (const { operation, context } of operations) {
|
|
23
|
+
const generator = this.manager.getGenerator(context.documentType);
|
|
25
24
|
if (!generator) {
|
|
26
|
-
logger.debug(`>>> No generator found for document type: ${
|
|
27
|
-
|
|
25
|
+
logger.debug(`>>> No generator found for document type: ${context.documentType}`);
|
|
26
|
+
continue;
|
|
28
27
|
}
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
// Create strand-like object for generator (using existing generator interface)
|
|
29
|
+
// Cast to InternalTransmitterUpdate since generators only use a subset of fields
|
|
30
|
+
const strand = {
|
|
31
|
+
documentId: context.documentId,
|
|
32
|
+
documentType: context.documentType,
|
|
33
|
+
scope: context.scope,
|
|
34
|
+
branch: context.branch,
|
|
35
|
+
driveId: "", // Not available in new format
|
|
36
|
+
operations: [operation],
|
|
37
|
+
state: context.resultingState
|
|
38
|
+
? JSON.parse(context.resultingState)
|
|
39
|
+
: undefined,
|
|
40
|
+
};
|
|
41
|
+
const shouldProcess = generator.shouldProcess(strand);
|
|
42
|
+
if (shouldProcess) {
|
|
39
43
|
await this.manager.routeAndGenerate(strand);
|
|
40
44
|
}
|
|
41
45
|
}
|
|
42
|
-
else {
|
|
43
|
-
logger.debug(`>>> No valid strands to process (${strands.length} strands received)`);
|
|
44
|
-
}
|
|
45
46
|
}
|
|
46
47
|
async onDisconnect() { }
|
|
47
48
|
// Utility methods for external configuration and monitoring
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { InternalTransmitterUpdate, IProcessor } from "document-drive";
|
|
2
|
+
export declare class CodegenProcessorLegacy implements IProcessor {
|
|
3
|
+
private manager;
|
|
4
|
+
constructor(interactiveMode?: boolean);
|
|
5
|
+
onStrands(strands: InternalTransmitterUpdate[]): Promise<void>;
|
|
6
|
+
onDisconnect(): Promise<void>;
|
|
7
|
+
setInteractiveMode(enabled: boolean): void;
|
|
8
|
+
isInteractive(): boolean;
|
|
9
|
+
isProcessingInteractive(): boolean;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=index.legacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.legacy.d.ts","sourceRoot":"","sources":["../../../processors/codegen/index.legacy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQ5E,qBAAa,sBAAuB,YAAW,UAAU;IACvD,OAAO,CAAC,OAAO,CAAyB;gBAE5B,eAAe,UAAQ;IAoB7B,SAAS,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9D,YAAY;IAGX,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI1C,aAAa,IAAI,OAAO;IAIxB,uBAAuB,IAAI,OAAO;CAG1C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getConfig } from "@powerhousedao/config/node";
|
|
2
|
+
import { DocumentCodegenFactory } from "./document-handlers/index.js";
|
|
3
|
+
import { logger } from "./logger.js";
|
|
4
|
+
const PH_CONFIG = getConfig();
|
|
5
|
+
const CURRENT_WORKING_DIR = process.cwd();
|
|
6
|
+
export class CodegenProcessorLegacy {
|
|
7
|
+
manager;
|
|
8
|
+
constructor(interactiveMode = false) {
|
|
9
|
+
this.manager = DocumentCodegenFactory.createManager({
|
|
10
|
+
PH_CONFIG,
|
|
11
|
+
CURRENT_WORKING_DIR,
|
|
12
|
+
}, interactiveMode);
|
|
13
|
+
if (interactiveMode) {
|
|
14
|
+
logger.info(`CodegenProcessorLegacy initialized with interactive mode enabled`);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
logger.debug(`CodegenProcessorLegacy initialized with interactive mode disabled`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async onStrands(strands) {
|
|
21
|
+
logger.info(">>> CodegenProcessorLegacy.onStrands()");
|
|
22
|
+
// Filter strands to only include those that should be processed
|
|
23
|
+
const validStrands = strands.filter((strand) => {
|
|
24
|
+
const generator = this.manager.getGenerator(strand.documentType);
|
|
25
|
+
if (!generator) {
|
|
26
|
+
logger.debug(`>>> No generator found for document type: ${strand.documentType}`);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// Use the required shouldProcess method for validation
|
|
30
|
+
const shouldProcessResult = generator.shouldProcess(strand);
|
|
31
|
+
if (!shouldProcessResult) {
|
|
32
|
+
logger.debug(`>>> Generator validation failed for ${strand.documentType}:${strand.documentId}, skipping processing`);
|
|
33
|
+
}
|
|
34
|
+
return shouldProcessResult;
|
|
35
|
+
});
|
|
36
|
+
if (validStrands.length > 0) {
|
|
37
|
+
logger.debug(`>>> Processing ${validStrands.length} valid strands (out of ${strands.length} total)`);
|
|
38
|
+
for (const strand of validStrands) {
|
|
39
|
+
await this.manager.routeAndGenerate(strand);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
logger.debug(`>>> No valid strands to process (${strands.length} strands received)`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async onDisconnect() { }
|
|
47
|
+
// Utility methods for external configuration and monitoring
|
|
48
|
+
setInteractiveMode(enabled) {
|
|
49
|
+
this.manager.setInteractiveMode(enabled);
|
|
50
|
+
}
|
|
51
|
+
isInteractive() {
|
|
52
|
+
return this.manager.isInteractiveMode();
|
|
53
|
+
}
|
|
54
|
+
isProcessingInteractive() {
|
|
55
|
+
return this.manager.isProcessingInteractive();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type { ProcessorRecord } from "@powerhousedao/reactor";
|
|
2
|
+
import type { IProcessorHostModule } from "document-drive";
|
|
3
|
+
import type { PHDocumentHeader } from "document-model";
|
|
1
4
|
/**
|
|
2
|
-
* This file aggregates all processor factories
|
|
3
|
-
* Auto-generated by codegen - DO NOT EDIT MANUALLY
|
|
5
|
+
* This file aggregates all processor factories for the new reactor
|
|
4
6
|
*/
|
|
5
|
-
import type { IProcessorHostModule, ProcessorRecord } from "document-drive";
|
|
6
|
-
import type { PHDocumentHeader } from "document-model";
|
|
7
7
|
export declare const processorFactory: (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader) => Promise<ProcessorRecord[]>;
|
|
8
8
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../processors/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../processors/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD;;GAEG;AAEH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,oBAAoB,MAS7C,aAAa,gBAAgB,+BAU5C,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { vetraReadModelProcessorFactory } from "./vetra-read-model/factory.js";
|
|
2
|
-
// Import other processor factories here as they are generated
|
|
3
1
|
import { codegenProcessorFactory } from "./codegen/factory.js";
|
|
2
|
+
import { vetraReadModelProcessorFactory } from "./vetra-read-model/factory.js";
|
|
3
|
+
/**
|
|
4
|
+
* This file aggregates all processor factories for the new reactor
|
|
5
|
+
*/
|
|
4
6
|
export const processorFactory = (module) => {
|
|
5
7
|
// Initialize all processor factories once with the module
|
|
6
8
|
const factories = [];
|
|
7
9
|
// Add all processor factories
|
|
8
10
|
factories.push(vetraReadModelProcessorFactory(module));
|
|
9
|
-
// Add other processors here as they are generated
|
|
10
11
|
factories.push(codegenProcessorFactory(module));
|
|
11
12
|
// Return the inner function that will be called for each drive
|
|
12
13
|
return async (driveHeader) => {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file aggregates all legacy processor factories
|
|
3
|
+
*/
|
|
4
|
+
import type { IProcessorHostModule, ProcessorRecord } from "document-drive";
|
|
5
|
+
import type { PHDocumentHeader } from "document-model";
|
|
6
|
+
export declare const processorFactoryLegacy: (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader) => Promise<ProcessorRecord[]>;
|
|
7
|
+
//# sourceMappingURL=factory.legacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.legacy.d.ts","sourceRoot":"","sources":["../../processors/factory.legacy.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,EACV,oBAAoB,EAEpB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,eAAO,MAAM,sBAAsB,GAAI,QAAQ,oBAAoB,MAWnD,aAAa,gBAAgB,+BAU5C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { vetraReadModelProcessorFactoryLegacy } from "./vetra-read-model/factory.legacy.js";
|
|
2
|
+
// Import other processor factories here as they are generated
|
|
3
|
+
import { codegenProcessorFactoryLegacy } from "./codegen/factory.legacy.js";
|
|
4
|
+
export const processorFactoryLegacy = (module) => {
|
|
5
|
+
// Initialize all processor factories once with the module
|
|
6
|
+
const factories = [];
|
|
7
|
+
// Add all processor factories
|
|
8
|
+
factories.push(vetraReadModelProcessorFactoryLegacy(module));
|
|
9
|
+
// Add other processors here as they are generated
|
|
10
|
+
factories.push(codegenProcessorFactoryLegacy(module));
|
|
11
|
+
// Return the inner function that will be called for each drive
|
|
12
|
+
return async (driveHeader) => {
|
|
13
|
+
const processors = [];
|
|
14
|
+
// Call each cached factory with the driveHeader
|
|
15
|
+
for (const factory of factories) {
|
|
16
|
+
processors.push(...(await factory(driveHeader)));
|
|
17
|
+
}
|
|
18
|
+
return processors;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { CodegenProcessor } from "./codegen/index.js";
|
|
2
2
|
export { codegenProcessorFactory } from "./codegen/factory.js";
|
|
3
|
-
export { processorFactory } from "./factory.js";
|
|
4
3
|
export { VetraReadModelProcessor } from "./vetra-read-model/index.js";
|
|
4
|
+
export { vetraReadModelProcessorFactory } from "./vetra-read-model/factory.js";
|
|
5
|
+
export { processorFactory } from "./factory.js";
|
|
6
|
+
export { CodegenProcessorLegacy } from "./codegen/index.legacy.js";
|
|
7
|
+
export { codegenProcessorFactoryLegacy } from "./codegen/factory.legacy.js";
|
|
8
|
+
export { VetraReadModelProcessorLegacy } from "./vetra-read-model/index.legacy.js";
|
|
9
|
+
export { vetraReadModelProcessorFactoryLegacy } from "./vetra-read-model/factory.legacy.js";
|
|
10
|
+
export { processorFactoryLegacy } from "./factory.legacy.js";
|
|
5
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../processors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../processors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,oCAAoC,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/processors/index.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
// Default exports (new reactor)
|
|
2
|
+
export { CodegenProcessor } from "./codegen/index.js";
|
|
2
3
|
export { codegenProcessorFactory } from "./codegen/factory.js";
|
|
3
|
-
export { processorFactory } from "./factory.js";
|
|
4
4
|
export { VetraReadModelProcessor } from "./vetra-read-model/index.js";
|
|
5
|
+
export { vetraReadModelProcessorFactory } from "./vetra-read-model/factory.js";
|
|
6
|
+
export { processorFactory } from "./factory.js";
|
|
7
|
+
// Legacy exports
|
|
8
|
+
export { CodegenProcessorLegacy } from "./codegen/index.legacy.js";
|
|
9
|
+
export { codegenProcessorFactoryLegacy } from "./codegen/factory.legacy.js";
|
|
10
|
+
export { VetraReadModelProcessorLegacy } from "./vetra-read-model/index.legacy.js";
|
|
11
|
+
export { vetraReadModelProcessorFactoryLegacy } from "./vetra-read-model/factory.legacy.js";
|
|
12
|
+
export { processorFactoryLegacy } from "./factory.legacy.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import type { ProcessorRecord } from "@powerhousedao/reactor";
|
|
2
|
+
import type { IProcessorHostModule } from "document-drive";
|
|
3
|
+
import type { PHDocumentHeader } from "document-model";
|
|
3
4
|
export declare const vetraReadModelProcessorFactory: (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader) => Promise<ProcessorRecord[]>;
|
|
4
5
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../processors/vetra-read-model/factory.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../processors/vetra-read-model/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAiB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAKvD,eAAO,MAAM,8BAA8B,GACxC,QAAQ,oBAAoB,MACtB,aAAa,gBAAgB,KAAG,OAAO,CAAC,eAAe,EAAE,CAoB/D,CAAC"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
import {} from "document-drive";
|
|
2
|
-
import {} from "document-model";
|
|
3
1
|
import { VetraReadModelProcessor } from "./index.js";
|
|
2
|
+
import { up } from "./migrations.js";
|
|
4
3
|
export const vetraReadModelProcessorFactory = (module) => async (driveHeader) => {
|
|
5
|
-
// Create
|
|
6
|
-
const
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
// Create
|
|
10
|
-
const
|
|
11
|
-
branch: ["main"],
|
|
12
|
-
documentId: ["*"],
|
|
13
|
-
documentType: ["powerhouse/package"],
|
|
14
|
-
scope: ["global"],
|
|
15
|
-
};
|
|
16
|
-
// Create the processor
|
|
17
|
-
const processor = new VetraReadModelProcessor(namespace, filter, store);
|
|
4
|
+
// Create namespace (same as legacy - all vetra packages share one namespace)
|
|
5
|
+
const db = await module.relationalDb.createNamespace("vetra-packages");
|
|
6
|
+
// Run migrations (idempotent - uses ifNotExists)
|
|
7
|
+
await up(db);
|
|
8
|
+
// Create the processor with the relational database
|
|
9
|
+
const processor = new VetraReadModelProcessor(db);
|
|
18
10
|
return [
|
|
19
11
|
{
|
|
20
12
|
processor,
|
|
21
|
-
filter
|
|
13
|
+
filter: {
|
|
14
|
+
branch: ["main"],
|
|
15
|
+
documentId: ["*"],
|
|
16
|
+
documentType: ["powerhouse/package"],
|
|
17
|
+
scope: ["global"],
|
|
18
|
+
},
|
|
22
19
|
},
|
|
23
20
|
];
|
|
24
21
|
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type IProcessorHostModule, type ProcessorRecord } from "document-drive";
|
|
2
|
+
import { type PHDocumentHeader } from "document-model";
|
|
3
|
+
export declare const vetraReadModelProcessorFactoryLegacy: (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader) => Promise<ProcessorRecord[]>;
|
|
4
|
+
//# sourceMappingURL=factory.legacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.legacy.d.ts","sourceRoot":"","sources":["../../../processors/vetra-read-model/factory.legacy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAErB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,eAAO,MAAM,oCAAoC,GAC9C,QAAQ,oBAAoB,MACtB,aAAa,gBAAgB,KAAG,OAAO,CAAC,eAAe,EAAE,CAgC/D,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {} from "document-drive";
|
|
2
|
+
import {} from "document-model";
|
|
3
|
+
import { VetraReadModelProcessorLegacy } from "./index.legacy.js";
|
|
4
|
+
export const vetraReadModelProcessorFactoryLegacy = (module) => async (driveHeader) => {
|
|
5
|
+
// Create a namespace for the processor and the provided drive id
|
|
6
|
+
const namespace = VetraReadModelProcessorLegacy.getNamespace(driveHeader.id);
|
|
7
|
+
// Create a namespaced db for the processor
|
|
8
|
+
const store = await module.relationalDb.createNamespace(namespace);
|
|
9
|
+
// Create a filter for the processor
|
|
10
|
+
const filter = {
|
|
11
|
+
branch: ["main"],
|
|
12
|
+
documentId: ["*"],
|
|
13
|
+
documentType: ["powerhouse/package"],
|
|
14
|
+
scope: ["global"],
|
|
15
|
+
};
|
|
16
|
+
// Create the processor
|
|
17
|
+
const processor = new VetraReadModelProcessorLegacy(namespace, filter, store);
|
|
18
|
+
return [
|
|
19
|
+
{
|
|
20
|
+
processor,
|
|
21
|
+
filter,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { IProcessor, OperationWithContext } from "@powerhousedao/reactor";
|
|
2
|
+
import type { Kysely } from "kysely";
|
|
2
3
|
import { type DB } from "./schema.js";
|
|
3
|
-
export declare class VetraReadModelProcessor
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export declare class VetraReadModelProcessor implements IProcessor {
|
|
5
|
+
private relationalDb;
|
|
6
|
+
constructor(relationalDb: Kysely<DB>);
|
|
7
|
+
onOperations(operations: OperationWithContext[]): Promise<void>;
|
|
7
8
|
onDisconnect(): Promise<void>;
|
|
8
9
|
}
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/vetra-read-model/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../processors/vetra-read-model/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAItC,qBAAa,uBAAwB,YAAW,UAAU;IACxD,OAAO,CAAC,YAAY,CAAa;gBAErB,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;IAI9B,YAAY,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D/D,YAAY;CACnB"}
|