@powerhousedao/codegen 0.25.0 → 0.27.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/codegen/.hygen/templates/powerhouse/generate-processor-operational/index.esm.t +58 -7
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/lib.inject_export.esm.t +1 -1
- package/dist/codegen/hygen.js +1 -1
- package/dist/codegen/hygen.js.map +1 -1
- package/package.json +4 -4
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/db-schema.esm.t +0 -19
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/graphql-definitions.esm.t +0 -17
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/options.esm.t +0 -21
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/resolvers.esm.t +0 -17
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/test.esm.t +0 -46
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/transmit.esm.t +0 -69
|
@@ -1,11 +1,62 @@
|
|
|
1
1
|
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/
|
|
2
|
+
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
|
|
3
3
|
force: true
|
|
4
4
|
---
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
import { generateId } from "document-model/utils";
|
|
6
|
+
import {
|
|
7
|
+
OperationalProcessor,
|
|
8
|
+
ProcessorOptions,
|
|
9
|
+
ProcessorSetupArgs,
|
|
10
|
+
ProcessorUpdate,
|
|
11
|
+
} from "@powerhousedao/reactor-api";
|
|
12
|
+
<% documentTypes.forEach(type => { _%>
|
|
13
|
+
import { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>";
|
|
14
|
+
%><% }); _%>
|
|
15
|
+
<% if(documentTypes.length === 0) { %>import { Document } from "document-model/document";<% } %>
|
|
16
|
+
type DocumentType = <% if(documentTypes.length) { %><%= documentTypes.map(type => `${documentTypesMap[type].name}Document`).join(" | ") %> <% } else { %>Document<% } %>;
|
|
10
17
|
|
|
11
|
-
export
|
|
18
|
+
export class <%= pascalName %>Processor extends OperationalProcessor<% if(documentTypes.length) { %><DocumentType><% } %> {
|
|
19
|
+
|
|
20
|
+
protected processorOptions: ProcessorOptions = {
|
|
21
|
+
listenerId: generateId(),
|
|
22
|
+
filter: {
|
|
23
|
+
branch: ["main"],
|
|
24
|
+
documentId: ["*"],
|
|
25
|
+
documentType: [<% if(documentTypes.length) { %><%- documentTypes.map(type => `"${type}"`).join(", ") %><% } else { %>"*"<% } %>],
|
|
26
|
+
scope: ["global"],
|
|
27
|
+
},
|
|
28
|
+
block: false,
|
|
29
|
+
label: "<%= name %>",
|
|
30
|
+
system: true,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
async onStrands(strands: ProcessorUpdate<DocumentType>[]): Promise<void> {
|
|
34
|
+
if (strands.length === 0) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
for (const strand of strands) {
|
|
39
|
+
if (strand.operations.length === 0) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
for (const operation of strand.operations) {
|
|
44
|
+
console.log(">>> ", operation.type);
|
|
45
|
+
await this.operationalStore("index_search_op").insert({
|
|
46
|
+
documentId: strand.documentId,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async onSetup(args: ProcessorSetupArgs) {
|
|
53
|
+
await super.onSetup(args);
|
|
54
|
+
await this.operationalStore.schema.createTable("index_search_op", (table) => {
|
|
55
|
+
table.increments("id").primary();
|
|
56
|
+
table.string("documentId").notNullable();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async onDisconnect() {}
|
|
61
|
+
|
|
62
|
+
}
|
|
@@ -5,4 +5,4 @@ to: "<%= rootDir %>/index.ts"
|
|
|
5
5
|
skip_if: "<%= h.changeCase.pascal(name) %>"
|
|
6
6
|
force: true
|
|
7
7
|
---
|
|
8
|
-
export * as <%= h.changeCase.pascal(name) %>
|
|
8
|
+
export * as <%= h.changeCase.pascal(name) %>Processor from "./<%= h.changeCase.param(name) %>";
|
package/dist/codegen/hygen.js
CHANGED
|
@@ -106,7 +106,7 @@ async function generateEditor(name, documentTypes, documentTypesMap, dir, docume
|
|
|
106
106
|
);
|
|
107
107
|
}
|
|
108
108
|
async function generateProcessor(name, documentTypes, documentTypesMap, dir, documentModelsDir, type = "analytics", { skipFormat = false } = {}) {
|
|
109
|
-
const processorType = type === "
|
|
109
|
+
const processorType = type === "operational" ? "operational" : "analytics";
|
|
110
110
|
await run(
|
|
111
111
|
[
|
|
112
112
|
"powerhouse",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/codegen/hygen.ts"],"names":["require"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../src/codegen/hygen.ts"],"names":["require"],"mappings":"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","file":"hygen.js","sourcesContent":["import fs from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { Logger, runner } from \"hygen\";\nimport { DocumentModel } from \"document-model\";\nimport { loadDocumentModel } from \"./utils\";\nimport { DocumentTypesMap } from \".\";\nimport { pascalCase } from \"change-case\";\n\nconst require = createRequire(import.meta.url);\n\nconst __dirname =\n import.meta.dirname || path.dirname(fileURLToPath(import.meta.url));\nconst logger = new Logger(console.log.bind(console));\nconst defaultTemplates = path.join(__dirname, \".hygen\", \"templates\");\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nasync function run(args: string[], { watch = false, skipFormat = false } = {}) {\n const result = await runner(args, {\n templates: defaultTemplates,\n cwd: process.cwd(),\n logger,\n createPrompter: () => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return require(\"enquirer\");\n },\n exec: (action, body) => {\n const opts = body && body.length > 0 ? { input: body } : {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return require(\"execa\").shell(action, opts);\n },\n debug: !!process.env.DEBUG,\n });\n if (!skipFormat) {\n const execa = await import(\"execa\");\n const actions = result.actions as { status: string; subject: string }[];\n actions\n .filter((action) => [\"added\", \"inject\"].includes(action.status))\n .forEach((action) => {\n execa.$`prettier --ignore-path --write ${action.subject.replace(\n \".\",\n process.cwd(),\n )}`.catch((err: unknown) => {\n console.log(err);\n });\n });\n }\n\n return result;\n}\n\nexport async function generateAll(\n dir: string,\n { watch = false, skipFormat = false } = {},\n) {\n const files = fs.readdirSync(dir, { withFileTypes: true });\n for (const directory of files.filter((f) => f.isDirectory())) {\n const documentModelPath = path.join(\n dir,\n directory.name,\n `${directory.name}.json`,\n );\n if (!fs.existsSync(documentModelPath)) {\n continue;\n }\n\n try {\n const documentModel = await loadDocumentModel(documentModelPath);\n await generateDocumentModel(documentModel, dir, { watch, skipFormat });\n } catch (error) {\n console.error(directory.name, error);\n }\n }\n}\n\nexport async function generateDocumentModel(\n documentModel: DocumentModel.DocumentModelState,\n dir: string,\n { watch = false, skipFormat = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n \"generate-document-model\",\n \"--document-model\",\n JSON.stringify(documentModel),\n \"--root-dir\",\n dir,\n ],\n { watch, skipFormat },\n );\n\n // Generate the module-specific files for the document model logic\n const latestSpec =\n documentModel.specifications[documentModel.specifications.length - 1];\n for (const module of latestSpec.modules) {\n await run(\n [\n \"powerhouse\",\n \"generate-document-model-module\",\n \"--document-model\",\n JSON.stringify(documentModel),\n \"--root-dir\",\n dir,\n \"--module\",\n module.name,\n ],\n { watch, skipFormat },\n );\n }\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n documentTypesMap: DocumentTypesMap,\n dir: string,\n documentModelsDir: string,\n { skipFormat = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n \"generate-editor\",\n \"--name\",\n name,\n \"--root-dir\",\n dir,\n \"--document-types\",\n documentTypes.join(\",\"),\n \"--document-types-map\",\n JSON.stringify(documentTypesMap),\n \"--document-models-dir\",\n documentModelsDir,\n ],\n { skipFormat },\n );\n}\n\nexport async function generateProcessor(\n name: string,\n documentTypes: string[],\n documentTypesMap: DocumentTypesMap,\n dir: string,\n documentModelsDir: string,\n type = \"analytics\",\n { skipFormat = false } = {},\n) {\n // Generate the singular files for the document model logic\n const processorType = type === \"operational\" ? \"operational\" : \"analytics\";\n await run(\n [\n \"powerhouse\",\n `generate-processor-${processorType}`,\n \"--name\",\n name,\n \"--pascalName\",\n pascalCase(name),\n \"--root-dir\",\n dir,\n \"--document-types\",\n documentTypes.join(\",\"),\n \"--document-types-map\",\n JSON.stringify(documentTypesMap),\n \"--document-models-dir\",\n documentModelsDir,\n ],\n { skipFormat },\n );\n}\n\nexport async function generateSubgraph(\n name: string,\n dir: string,\n { skipFormat = false } = {},\n) {\n // Generate the singular files for the document model logic\n await run(\n [\n \"powerhouse\",\n `generate-subgraph`,\n \"--name\",\n name,\n \"--pascalName\",\n pascalCase(name),\n \"--root-dir\",\n dir,\n ],\n { skipFormat },\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/codegen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,15 +32,15 @@
|
|
|
32
32
|
"enquirer": "^2.4.1",
|
|
33
33
|
"execa": "^8.0.1",
|
|
34
34
|
"hygen": "^6.2.11",
|
|
35
|
-
"@powerhousedao/config": "1.
|
|
36
|
-
"document-model": "2.
|
|
35
|
+
"@powerhousedao/config": "1.5.0",
|
|
36
|
+
"document-model": "2.15.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"copyfiles": "^2.4.1",
|
|
40
40
|
"esbuild-fix-imports-plugin": "^1.0.7",
|
|
41
41
|
"graphql": "^16.8.1",
|
|
42
42
|
"husky": "^8.0.3",
|
|
43
|
-
"@powerhousedao/scalars": "1.
|
|
43
|
+
"@powerhousedao/scalars": "1.16.0"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"check-types": "tsc --build",
|
package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/db-schema.esm.t
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/db-schema.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { integer, pgTable, primaryKey, uuid } from "drizzle-orm/pg-core";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The database schema for the processor.
|
|
9
|
-
*/
|
|
10
|
-
export const exampleTable = pgTable(
|
|
11
|
-
"example_table",
|
|
12
|
-
{
|
|
13
|
-
id: uuid("id").notNull(),
|
|
14
|
-
value: integer("value").notNull(),
|
|
15
|
-
},
|
|
16
|
-
(table) => ({
|
|
17
|
-
pk: primaryKey({ columns: [table.id] }),
|
|
18
|
-
})
|
|
19
|
-
);
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/graphql-definitions.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
/**
|
|
6
|
-
* The GraphQL type definitions for the processor.
|
|
7
|
-
*/
|
|
8
|
-
export const typeDefs = `
|
|
9
|
-
type Query {
|
|
10
|
-
example: [Example!]!
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type Example {
|
|
14
|
-
id: String!
|
|
15
|
-
value: String!
|
|
16
|
-
}
|
|
17
|
-
`;
|
package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/options.esm.t
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/options.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { Listener } from "document-drive";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The options for the processor.
|
|
9
|
-
*/
|
|
10
|
-
export const options: Omit<Listener, "driveId"> = {
|
|
11
|
-
listenerId: "test",
|
|
12
|
-
filter: {
|
|
13
|
-
branch: ["main"],
|
|
14
|
-
documentId: ["*"],
|
|
15
|
-
documentType: ["frank/test"],
|
|
16
|
-
scope: ["global"],
|
|
17
|
-
},
|
|
18
|
-
block: false,
|
|
19
|
-
label: "test",
|
|
20
|
-
system: true,
|
|
21
|
-
};
|
package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/resolvers.esm.t
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/resolvers.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { exampleTable } from "./db-schema";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The resolvers for the processor.
|
|
9
|
-
*/
|
|
10
|
-
export const resolvers = {
|
|
11
|
-
Query: {
|
|
12
|
-
example: async (root, args, ctx, info) => {
|
|
13
|
-
const results = await ctx.db.select().from(exampleTable);
|
|
14
|
-
return results;
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/test/example.test.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { actions } from "document-model-libs/document-drive";
|
|
6
|
-
import { drizzle } from "drizzle-orm/connect";
|
|
7
|
-
import { PgDatabase } from "drizzle-orm/pg-core";
|
|
8
|
-
import { beforeAll, describe, expect, it } from "vitest";
|
|
9
|
-
import { exampleTable } from "../src/db-schema";
|
|
10
|
-
import { transmit } from "../src/transmit";
|
|
11
|
-
|
|
12
|
-
describe("processor example test", () => {
|
|
13
|
-
let db: PgDatabase<any, any, any>;
|
|
14
|
-
beforeAll(async () => {
|
|
15
|
-
db = await drizzle("pglite", "./dev.db");
|
|
16
|
-
await db.delete(exampleTable).execute();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("should count amount of operations", async () => {
|
|
20
|
-
const exampleEntry = actions.addFile({
|
|
21
|
-
documentType: "example",
|
|
22
|
-
id: "1",
|
|
23
|
-
name: "example",
|
|
24
|
-
synchronizationUnits: [],
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
await transmit(
|
|
28
|
-
[
|
|
29
|
-
{
|
|
30
|
-
branch: "main",
|
|
31
|
-
documentId: "1",
|
|
32
|
-
driveId: "1",
|
|
33
|
-
operations: [
|
|
34
|
-
{ ...exampleEntry, timestamp: "1", index: 1, skip: 0, hash: "1" },
|
|
35
|
-
],
|
|
36
|
-
scope: "global",
|
|
37
|
-
state: {},
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
db
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
const [result] = await db.select().from(exampleTable);
|
|
44
|
-
expect(result.value).toBe(1);
|
|
45
|
-
});
|
|
46
|
-
});
|
package/dist/codegen/.hygen/templates/powerhouse/generate-processor-operational/transmit.esm.t
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/transmit.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { InternalTransmitterUpdate, Listener } from "document-drive";
|
|
6
|
-
import { eq } from "drizzle-orm";
|
|
7
|
-
import { PgDatabase } from "drizzle-orm/pg-core";
|
|
8
|
-
import { exampleTable } from "./db-schema";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Handles an array of strands of operations.
|
|
12
|
-
* Gets called if the options filter matches the strand.
|
|
13
|
-
* @param strands - The strands of operations to handle.
|
|
14
|
-
* @param db - The database to use.
|
|
15
|
-
*/
|
|
16
|
-
export async function transmit(
|
|
17
|
-
strands: InternalTransmitterUpdate[],
|
|
18
|
-
db: PgDatabase<any, any, any>
|
|
19
|
-
) {
|
|
20
|
-
for (const strand of strands) {
|
|
21
|
-
await handleStrand(strand, db);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Handles a single strand of operations.
|
|
27
|
-
* @param strand - The strand of operations to handle.
|
|
28
|
-
* @param db - The database to use.
|
|
29
|
-
*/
|
|
30
|
-
async function handleStrand(
|
|
31
|
-
strand: InternalTransmitterUpdate,
|
|
32
|
-
db: PgDatabase<any, any, any>
|
|
33
|
-
) {
|
|
34
|
-
// reset db if first operation
|
|
35
|
-
if (isFirstOperation(strand)) {
|
|
36
|
-
await resetDb(db);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
for (const op of strand.operations) {
|
|
40
|
-
// get first entry
|
|
41
|
-
const [entry] = await db
|
|
42
|
-
.select()
|
|
43
|
-
.from(exampleTable)
|
|
44
|
-
.where(eq(exampleTable.id, strand.documentId));
|
|
45
|
-
|
|
46
|
-
if (!entry) {
|
|
47
|
-
// insert new entry if not exists
|
|
48
|
-
await db.insert(exampleTable).values({ id: strand.documentId, value: 1 });
|
|
49
|
-
} else {
|
|
50
|
-
// update existing entry
|
|
51
|
-
await db
|
|
52
|
-
.update(exampleTable)
|
|
53
|
-
.set({ value: entry.value + 1 })
|
|
54
|
-
.where(eq(exampleTable.id, strand.documentId));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function isFirstOperation(strand: InternalTransmitterUpdate) {
|
|
60
|
-
const [firstOperation] = strand.operations;
|
|
61
|
-
if (firstOperation.index === 0) {
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
async function resetDb(db: PgDatabase<any, any, any>) {
|
|
68
|
-
await db.delete(exampleTable);
|
|
69
|
-
}
|