@powerhousedao/codegen 0.20.0 → 0.21.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/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +2 -2
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +2 -2
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +1 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-editor/story.esm.t +5 -5
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +56 -6
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js.map +1 -1
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_export.esm.t +1 -1
- package/dist/codegen/hygen.js +4 -0
- package/dist/codegen/hygen.js.map +1 -1
- package/dist/codegen/index.js +37 -21
- package/dist/codegen/index.js.map +1 -1
- package/dist/create-lib/init.js +2 -1
- package/dist/create-lib/init.js.map +1 -1
- package/dist/hygen.d.ts +5 -2
- package/dist/index-JdHnpEPd.d.ts +13 -0
- package/dist/index.d.ts +4 -9
- package/dist/utils/cli.js +2 -25
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils.d.ts +2 -12
- package/package.json +4 -3
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/options.esm.t +0 -21
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/service.esm.t +0 -23
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/test.esm.t +0 -35
- package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/transmit.esm.t +0 -56
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
|
+
import { getConfig } from '@powerhousedao/config/powerhouse';
|
|
2
3
|
import { generateEditor, generateProcessor, generateFromFile, generate } from './codegen/index.js';
|
|
3
|
-
import {
|
|
4
|
+
import { parseConfig, promptDirectories, parseArgs } from './utils/index.js';
|
|
4
5
|
|
|
5
6
|
function parseCommand(argv) {
|
|
6
7
|
const args = parseArgs(argv, {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"names":[],"mappings":";;;;;AAUA,SAAS,aAAa,IAAgB,EAAA;AACpC,EAAM,MAAA,IAAA,GAAO,UAAU,IAAM,EAAA;AAAA,IAC3B,UAAY,EAAA,MAAA;AAAA,IACZ,IAAM,EAAA,UAAA;AAAA,IACN,aAAe,EAAA,MAAA;AAAA,IACf,kBAAoB,EAAA,MAAA;AAAA,IACpB,kBAAoB,EAAA;AAAA,GACrB,CAAA;AACD,EAAM,MAAA,UAAA,GAAa,KAAK,UAAU,CAAA;AAClC,EAAM,MAAA,aAAA,GAAgB,KAAK,aAAa,CAAA;AACxC,EAAM,MAAA,aAAA,GAAgB,KAAK,kBAAkB,CAAA;AAC7C,EAAO,OAAA;AAAA,IACL,SAAA,EAAW,CAAC,CAAC,aAAA;AAAA,IACb,aAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA,EAAQ,CAAC,CAAC,UAAA;AAAA,IACV,UAAA;AAAA,IACA,aAAA,EAAe,KAAK,kBAAkB,CAAA;AAAA,IACtC,KAAK,IAAK,CAAA;AAAA,GACZ;AACF;AAEA,eAAe,IAAO,GAAA;AACpB,EAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA;AACjC,EAAA,MAAM,aAAa,SAAU,EAAA;AAC7B,EAAM,MAAA,UAAA,GAAa,YAAY,IAAI,CAAA;AACnC,EAAA,MAAM,MAAS,GAAA,EAAE,GAAG,UAAA,EAAY,GAAG,UAAW,EAAA;AAC9C,EAAA,IAAI,OAAO,WAAa,EAAA;AACtB,IAAM,MAAA,MAAA,GAAS,MAAM,iBAAA,CAAkB,MAAM,CAAA;AAC7C,IAAO,MAAA,CAAA,MAAA,CAAO,QAAQ,MAAM,CAAA;AAAA;AAG9B,EAAM,MAAA,OAAA,GAAU,aAAa,IAAI,CAAA;AAEjC,EAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,IAAI,IAAA,CAAC,QAAQ,UAAY,EAAA;AACvB,MAAM,MAAA,IAAI,MAAM,0CAA0C,CAAA;AAAA;AAE5D,IAAM,MAAA,cAAA;AAAA,MACJ,OAAQ,CAAA,UAAA;AAAA,MACR,OAAQ,CAAA,aAAA,EAAe,KAAM,CAAA,QAAQ,KAAK,EAAC;AAAA,MAC3C;AAAA,KACF;AAAA,GACF,MAAA,IAAW,QAAQ,SAAW,EAAA;AAC5B,IAAI,IAAA,CAAC,QAAQ,aAAe,EAAA;AAC1B,MAAM,MAAA,IAAI,MAAM,0CAA0C,CAAA;AAAA;AAG5D,IAAA,MAAM,IACJ,GAAA,OAAA,CAAQ,aAAkB,KAAA,WAAA,GAAc,WAAc,GAAA,aAAA;AAExD,IAAM,MAAA,iBAAA;AAAA,MACJ,OAAQ,CAAA,aAAA;AAAA,MACR,IAAA;AAAA,MACA,OAAQ,CAAA,aAAA,EAAe,KAAM,CAAA,QAAQ,KAAK,EAAC;AAAA,MAC3C;AAAA,KACF;AAAA,GACS,MAAA,IAAA,OAAA,CAAQ,GAAI,CAAA,MAAA,KAAW,CAAG,EAAA;AACnC,IAAA,MAAM,gBAAiB,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAAG,MAAM,CAAA;AAAA,GACxC,MAAA;AACL,IAAA,MAAM,SAAS,MAAM,CAAA;AAAA;AAEzB;AAEA,IAAK,EAAA,CAAE,KAAM,CAAA,CAAC,CAAe,KAAA;AAC3B,EAAM,MAAA,CAAA;AACR,CAAC,CAAA","file":"cli.js","sourcesContent":["#! /usr/bin/env node\nimport { getConfig } from \"@powerhousedao/config/powerhouse\";\nimport {\n generate,\n generateEditor,\n generateFromFile,\n generateProcessor,\n} from \"./codegen/index\";\nimport { parseArgs, promptDirectories, parseConfig } from \"./utils/index\";\n\nfunction parseCommand(argv: string[]) {\n const args = parseArgs(argv, {\n \"--editor\": String,\n \"-e\": \"--editor\",\n \"--processor\": String,\n \"--document-types\": String,\n \"--processor-type\": String,\n });\n const editorName = args[\"--editor\"];\n const processorName = args[\"--processor\"];\n const processorType = args[\"--processor-type\"];\n return {\n processor: !!processorName,\n processorName,\n processorType,\n editor: !!editorName,\n editorName,\n documentTypes: args[\"--document-types\"],\n arg: args._,\n };\n}\n\nasync function main() {\n const argv = process.argv.slice(2);\n const baseConfig = getConfig();\n const argsConfig = parseConfig(argv);\n const config = { ...baseConfig, ...argsConfig };\n if (config.interactive) {\n const result = await promptDirectories(config);\n Object.assign(config, result);\n }\n\n const command = parseCommand(argv);\n\n if (command.editor) {\n if (!command.editorName) {\n throw new Error(\"Editor name is required (--editor or -e)\");\n }\n await generateEditor(\n command.editorName,\n command.documentTypes?.split(/[|,;]/g) ?? [],\n config,\n );\n } else if (command.processor) {\n if (!command.processorName) {\n throw new Error(\"processor name is required (--processor)\");\n }\n\n const type =\n command.processorType === \"analytics\" ? \"analytics\" : \"operational\";\n\n await generateProcessor(\n command.processorName,\n type,\n command.documentTypes?.split(/[|,;]/g) ?? [],\n config,\n );\n } else if (command.arg.length === 2) {\n await generateFromFile(command.arg[1], config);\n } else {\n await generate(config);\n }\n}\n\nmain().catch((e: unknown) => {\n throw e;\n});\n"]}
|
|
@@ -4,12 +4,12 @@ unless_exists: true
|
|
|
4
4
|
---
|
|
5
5
|
<% if(!documentTypes.length){ %>import { Action, EditorProps } from 'document-model/document';<% } else { %>import { EditorProps } from 'document-model/document';<% } %>
|
|
6
6
|
<% documentTypes.forEach(type => { _%>
|
|
7
|
-
import { <%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState, actions } from "
|
|
7
|
+
import { <%= documentTypesMap[type].name %>State, <%= documentTypesMap[type].name %>Action, <%= documentTypesMap[type].name %>LocalState, actions } from "<%= documentTypesMap[type].importPath %>";
|
|
8
8
|
%><% }); _%>
|
|
9
9
|
import { utils as documentModelUtils } from 'document-model/document';
|
|
10
10
|
import { Button } from '@powerhousedao/design-system';
|
|
11
11
|
|
|
12
|
-
export type IProps = <% if(!documentTypes.length){ %>EditorProps<unknown, Action><% } else { %><% documentTypes.forEach((type, index) => { _%>EditorProps<<%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState%>%>><% if(index < documentTypes.length - 1){ %> | <% }%><% }); _%> <% } %>;
|
|
12
|
+
export type IProps = <% if(!documentTypes.length){ %>EditorProps<unknown, Action><% } else { %><% documentTypes.forEach((type, index) => { _%>EditorProps<<%= documentTypesMap[type].name %>State, <%= documentTypesMap[type].name %>Action, <%= documentTypesMap[type].name %>LocalState%>%>><% if(index < documentTypes.length - 1){ %> | <% }%><% }); _%> <% } %>;
|
|
13
13
|
|
|
14
14
|
export default function Editor(props: IProps) {
|
|
15
15
|
// generate a random id
|
|
@@ -5,10 +5,10 @@ force: true
|
|
|
5
5
|
import { ExtendedEditor, EditorContextProps } from 'document-model-libs';
|
|
6
6
|
import Editor from './editor';
|
|
7
7
|
<% documentTypes.forEach(type => { _%>
|
|
8
|
-
import { <%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState } from "
|
|
8
|
+
import { <%= documentTypesMap[type].name %>State, <%= documentTypesMap[type].name %>Action, <%= documentTypesMap[type].name %>LocalState } from "<%= documentTypesMap[type].importPath %>";
|
|
9
9
|
%><% }); _%>
|
|
10
10
|
|
|
11
|
-
export const module: <% if(!documentTypes.length){ %>ExtendedEditor<unknown, Action, unknown, unknown><% } else { %><% documentTypes.forEach((type, index) => { _%>ExtendedEditor<<%= documentTypesMap[type] %>State, <%= documentTypesMap[type] %>Action, <%= documentTypesMap[type] %>LocalState, EditorContextProps%>%>> <% if(index < documentTypes.length - 1){ %>| <% }%><% }); _%> <% } %>= {
|
|
11
|
+
export const module: <% if(!documentTypes.length){ %>ExtendedEditor<unknown, Action, unknown, unknown><% } else { %><% documentTypes.forEach((type, index) => { _%>ExtendedEditor<<%= documentTypesMap[type].name %>State, <%= documentTypesMap[type].name %>Action, <%= documentTypesMap[type].name %>LocalState, EditorContextProps%>%>> <% if(index < documentTypes.length - 1){ %>| <% }%><% }); _%> <% } %>= {
|
|
12
12
|
Component: Editor,
|
|
13
13
|
documentTypes: [<% if(!documentTypes.length){ %>'*'<% } else { %><% documentTypes.forEach(type => { _%>"<%= type %>", %><% }); _%> <% } %>],
|
|
14
14
|
config: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":";;AAUA,IAAO,uBAAQ,GAAA;AAAA,EACb,MAAQ,EAAA,CAAC,EAAE,IAAA,EAA2B,KAAA;AACpC,IAAO,OAAA;AAAA,MACL,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,mBAAmB,IAAK,CAAA,iBAAA;AAAA,MACxB,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,aAAA,EAAe,IAAK,CAAA,aAAA,CACjB,KAAM,CAAA,GAAG,EACT,MAAO,CAAA,CAAC,IAAS,KAAA,IAAA,KAAS,EAAE,CAAA;AAAA,MAC/B,gBAAkB,EAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,gBAAgB;AAAA,KACpD;AAAA;AAEJ","file":"index.js","sourcesContent":["import { DocumentTypesMap } from \"../../../..\";\n\nexport type Args = {\n name: string;\n rootDir: string;\n documentModelsDir: string;\n documentTypes: string;\n documentTypesMap: string;\n};\n\nexport default {\n params: ({ args }: { args: Args }) => {\n return {\n rootDir: args.rootDir,\n documentModelsDir: args.documentModelsDir,\n name: args.name,\n documentTypes: args.documentTypes\n .split(\",\")\n .filter((type) => type !== \"\"),\n documentTypesMap: JSON.parse(args.documentTypesMap) as DocumentTypesMap,\n };\n },\n};\n"]}
|
|
@@ -6,7 +6,7 @@ import Editor from './editor';
|
|
|
6
6
|
import { createDocumentStory } from 'document-model-libs/utils';
|
|
7
7
|
<% if(!documentTypes.length){ %>import { baseReducer, utils } from 'document-model/document';<% } %>
|
|
8
8
|
<% documentTypes.forEach(type => { _%>
|
|
9
|
-
import * as <%= documentTypesMap[type] %>Module from "
|
|
9
|
+
import * as <%= documentTypesMap[type].name %>Module from "<%= documentTypesMap[type].importPath %>";
|
|
10
10
|
%><% }); _%>
|
|
11
11
|
|
|
12
12
|
<% if(!documentTypes.length){ %>
|
|
@@ -19,12 +19,12 @@ export { <%= h.changeCase.pascal(name) %> };
|
|
|
19
19
|
<% } %>
|
|
20
20
|
|
|
21
21
|
<% documentTypes.forEach((type, index) => { _%>
|
|
22
|
-
const { <% if(index === 0){ %>meta, <% } %>CreateDocumentStory: <%= documentTypesMap[type] %> } = createDocumentStory(
|
|
22
|
+
const { <% if(index === 0){ %>meta, <% } %>CreateDocumentStory: <%= documentTypesMap[type].name %> } = createDocumentStory(
|
|
23
23
|
Editor,
|
|
24
|
-
<%= documentTypesMap[type] %>Module.reducer,
|
|
25
|
-
<%= documentTypesMap[type] %>Module.utils.createDocument(),
|
|
24
|
+
<%= documentTypesMap[type].name %>Module.reducer,
|
|
25
|
+
<%= documentTypesMap[type].name %>Module.utils.createDocument(),
|
|
26
26
|
);
|
|
27
|
-
export { <%= documentTypesMap[type] %> }
|
|
27
|
+
export { <%= documentTypesMap[type].name %> }
|
|
28
28
|
|
|
29
29
|
%><% }); _%>
|
|
30
30
|
|
|
@@ -2,11 +2,61 @@
|
|
|
2
2
|
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/index.ts"
|
|
3
3
|
force: true
|
|
4
4
|
---
|
|
5
|
+
import { generateUUID } from "document-drive";
|
|
6
|
+
import { AnalyticsPath } from "@powerhousedao/analytics-engine-core";
|
|
5
7
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
AnalyticsProcessor,
|
|
9
|
+
ProcessorOptions,
|
|
10
|
+
ProcessorUpdate
|
|
11
|
+
} from "@powerhousedao/reactor-api";
|
|
12
|
+
<% documentTypes.forEach(type => { _%>
|
|
13
|
+
import { <%= documentTypesMap[type].name %>Document } from "../../<%= documentTypesMap[type].importPath %>";
|
|
14
|
+
%><% }); _%>
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
<% if(documentTypes.length) { %>type DocumentType = <%= documentTypes.map(type => `${documentTypesMap[type].name}Document`).join(" | ") %> <% } %>;
|
|
17
|
+
|
|
18
|
+
export class <%= pascalName %>Processor extends AnalyticsProcessor<% if(documentTypes.length) { %><DocumentType><% } %> {
|
|
19
|
+
|
|
20
|
+
protected processorOptions: ProcessorOptions = {
|
|
21
|
+
listenerId: generateUUID(),
|
|
22
|
+
filter: {
|
|
23
|
+
branch: ["main"],
|
|
24
|
+
documentId: ["*"],
|
|
25
|
+
documentType: [<%- documentTypes.map(type => `"${type}"`).join(", ") %>],
|
|
26
|
+
scope: ["global"],
|
|
27
|
+
},
|
|
28
|
+
block: false,
|
|
29
|
+
label: "rwa-analytics-processor",
|
|
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
|
+
const firstOp = strand.operations[0];
|
|
44
|
+
const source = AnalyticsPath.fromString(
|
|
45
|
+
`ph/${strand.driveId}/${strand.documentId}/${strand.branch}/${strand.scope}`,
|
|
46
|
+
);
|
|
47
|
+
if (firstOp.index === 0) {
|
|
48
|
+
await this.clearSource(source);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
for (const operation of strand.operations) {
|
|
52
|
+
console.log(">>> ", operation.type);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async onDisconnect() {}
|
|
58
|
+
|
|
59
|
+
private async clearSource(source: AnalyticsPath) {
|
|
60
|
+
await this.analyticsStore.clearSeriesBySource(source, true);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.ts"],"names":[],"mappings":";;AAUA,IAAO,oCAAQ,GAAA;AAAA,EACb,MAAQ,EAAA,CAAC,EAAE,IAAA,EAA2B,KAAA;AACpC,IAAO,OAAA;AAAA,MACL,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,mBAAmB,IAAK,CAAA,iBAAA;AAAA,MACxB,MAAM,IAAK,CAAA,IAAA;AAAA,MACX,aAAA,EAAe,IAAK,CAAA,aAAA,CACjB,KAAM,CAAA,GAAG,EACT,MAAO,CAAA,CAAC,IAAS,KAAA,IAAA,KAAS,EAAE,CAAA;AAAA,MAC/B,gBAAkB,EAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,gBAAgB;AAAA,KACpD;AAAA;AAEJ","file":"index.js","sourcesContent":["import { DocumentTypesMap } from \"../../../..\";\n\nexport type Args = {\n name: string;\n rootDir: string;\n documentModelsDir: string;\n documentTypes: string;\n documentTypesMap: string;\n};\n\nexport default {\n params: ({ args }: { args: Args }) => {\n return {\n rootDir: args.rootDir,\n documentModelsDir: args.documentModelsDir,\n name: args.name,\n documentTypes: args.documentTypes\n .split(\",\")\n .filter((type) => type !== \"\"),\n documentTypesMap: JSON.parse(args.documentTypesMap) as DocumentTypesMap,\n };\n },\n};\n"]}
|
|
@@ -4,4 +4,4 @@ append: true
|
|
|
4
4
|
to: "<%= rootDir %>/index.ts"
|
|
5
5
|
skip_if: "<%= h.changeCase.pascal(name) %>"
|
|
6
6
|
---
|
|
7
|
-
export * as <%= h.changeCase.pascal(name) %>
|
|
7
|
+
export * as <%= h.changeCase.pascal(name) %>Processor from "./<%= h.changeCase.param(name) %>/src";
|
package/dist/codegen/hygen.js
CHANGED
|
@@ -4,6 +4,7 @@ import path from 'node:path';
|
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
5
|
import { Logger, runner } from 'hygen';
|
|
6
6
|
import { loadDocumentModel } from './utils.js';
|
|
7
|
+
import { pascalCase } from 'change-case';
|
|
7
8
|
|
|
8
9
|
const require2 = createRequire(import.meta.url);
|
|
9
10
|
const __dirname = import.meta.dirname || path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -106,12 +107,15 @@ async function generateEditor(name, documentTypes, documentTypesMap, dir, docume
|
|
|
106
107
|
}
|
|
107
108
|
async function generateProcessor(name, documentTypes, documentTypesMap, dir, documentModelsDir, type = "analytics", { skipFormat = false } = {}) {
|
|
108
109
|
const processorType = type === "analytics" ? "analytics" : "operational";
|
|
110
|
+
console.log(">>> ", pascalCase(name));
|
|
109
111
|
await run(
|
|
110
112
|
[
|
|
111
113
|
"powerhouse",
|
|
112
114
|
`generate-processor-${processorType}`,
|
|
113
115
|
"--name",
|
|
114
116
|
name,
|
|
117
|
+
"--pascalName",
|
|
118
|
+
pascalCase(name),
|
|
115
119
|
"--root-dir",
|
|
116
120
|
dir,
|
|
117
121
|
"--document-types",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/codegen/hygen.ts"],"names":["require"],"mappings":"
|
|
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 === \"analytics\" ? \"analytics\" : \"operational\";\n\n console.log(\">>> \", pascalCase(name));\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"]}
|
package/dist/codegen/index.js
CHANGED
|
@@ -26,23 +26,39 @@ function generateGraphqlSchema(documentModel) {
|
|
|
26
26
|
];
|
|
27
27
|
return schemas.join("\n\n");
|
|
28
28
|
}
|
|
29
|
-
function getDocumentTypesMap(dir) {
|
|
29
|
+
async function getDocumentTypesMap(dir, pathOrigin = "..") {
|
|
30
30
|
const documentTypesMap = {};
|
|
31
|
-
fs.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
const specRaw = fs.readFileSync(specPath, "utf-8");
|
|
37
|
-
try {
|
|
38
|
-
const spec = JSON.parse(specRaw);
|
|
39
|
-
if (spec.id) {
|
|
40
|
-
documentTypesMap[spec.id] = pascalCase(name);
|
|
31
|
+
if (fs.existsSync(dir)) {
|
|
32
|
+
fs.readdirSync(dir, { withFileTypes: true }).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name).forEach((name) => {
|
|
33
|
+
const specPath = resolve(dir, name, `${name}.json`);
|
|
34
|
+
if (!fs.existsSync(specPath)) {
|
|
35
|
+
return;
|
|
41
36
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
const specRaw = fs.readFileSync(specPath, "utf-8");
|
|
38
|
+
try {
|
|
39
|
+
const spec = JSON.parse(specRaw);
|
|
40
|
+
if (spec.id) {
|
|
41
|
+
documentTypesMap[spec.id] = {
|
|
42
|
+
name: pascalCase(name),
|
|
43
|
+
importPath: join(pathOrigin, dir, name)
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
} catch {
|
|
47
|
+
console.error(`Failed to parse ${specPath}`);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const documentModels = await import('document-model-libs/document-models');
|
|
53
|
+
Object.keys(documentModels).forEach((name) => {
|
|
54
|
+
const documentModel = documentModels[name];
|
|
55
|
+
documentTypesMap[documentModel.documentModel.id] = {
|
|
56
|
+
name,
|
|
57
|
+
importPath: `document-model-libs/${paramCase(name)}`
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
} catch {
|
|
61
|
+
}
|
|
46
62
|
return documentTypesMap;
|
|
47
63
|
}
|
|
48
64
|
async function generate(config) {
|
|
@@ -74,9 +90,9 @@ async function generateFromFile(path, config) {
|
|
|
74
90
|
}
|
|
75
91
|
async function generateEditor(name, documentTypes, config) {
|
|
76
92
|
const { documentModelsDir, skipFormat } = config;
|
|
77
|
-
const
|
|
93
|
+
const documentTypesMap = await getDocumentTypesMap(documentModelsDir);
|
|
78
94
|
const invalidType = documentTypes.find(
|
|
79
|
-
(type) => !Object.keys(
|
|
95
|
+
(type) => !Object.keys(documentTypesMap).includes(type)
|
|
80
96
|
);
|
|
81
97
|
if (invalidType) {
|
|
82
98
|
throw new Error(`Document model for ${invalidType} not found`);
|
|
@@ -84,7 +100,7 @@ async function generateEditor(name, documentTypes, config) {
|
|
|
84
100
|
return generateEditor$1(
|
|
85
101
|
name,
|
|
86
102
|
documentTypes,
|
|
87
|
-
|
|
103
|
+
documentTypesMap,
|
|
88
104
|
config.editorsDir,
|
|
89
105
|
config.documentModelsDir,
|
|
90
106
|
{ skipFormat }
|
|
@@ -92,9 +108,9 @@ async function generateEditor(name, documentTypes, config) {
|
|
|
92
108
|
}
|
|
93
109
|
async function generateProcessor(name, type, documentTypes, config) {
|
|
94
110
|
const { documentModelsDir, skipFormat } = config;
|
|
95
|
-
const
|
|
111
|
+
const documentTypesMap = await getDocumentTypesMap(documentModelsDir);
|
|
96
112
|
const invalidType = documentTypes.find(
|
|
97
|
-
(type2) => !Object.keys(
|
|
113
|
+
(type2) => !Object.keys(documentTypesMap).includes(type2)
|
|
98
114
|
);
|
|
99
115
|
if (invalidType) {
|
|
100
116
|
throw new Error(`Document model for ${invalidType} not found`);
|
|
@@ -102,7 +118,7 @@ async function generateProcessor(name, type, documentTypes, config) {
|
|
|
102
118
|
return generateProcessor$1(
|
|
103
119
|
name,
|
|
104
120
|
documentTypes,
|
|
105
|
-
|
|
121
|
+
documentTypesMap,
|
|
106
122
|
config.processorsDir,
|
|
107
123
|
config.documentModelsDir,
|
|
108
124
|
type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/codegen/index.ts"],"names":["_generateEditor","type","_generateProcessor"],"mappings":"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","file":"index.js","sourcesContent":["#! /usr/bin/env node\nimport { DocumentModelState } from \"document-model/document-model\";\nimport { typeDefs } from \"@powerhousedao/scalars\";\nimport {\n generateAll,\n generateEditor as _generateEditor,\n generateProcessor as _generateProcessor,\n generateDocumentModel,\n} from \"./hygen\";\nimport { generateSchemas, generateSchema } from \"./graphql\";\nimport type { PowerhouseConfig } from \"../utils/index\";\nimport fs from \"node:fs\";\nimport { join, resolve } from \"path\";\nimport { paramCase, pascalCase } from \"change-case\";\nimport { loadDocumentModel } from \"./utils\";\n\nfunction generateGraphqlSchema(documentModel: DocumentModelState) {\n const spec =\n documentModel.specifications[documentModel.specifications.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!spec) {\n throw new Error(`No spec found for ${documentModel.id}`);\n }\n\n const {\n modules,\n state: { global, local },\n } = spec;\n const schemas = [\n global.schema,\n local.schema,\n ...modules\n .map((module) => [\n `# ${module.name}`,\n ...module.operations.map((op) => op.schema),\n ])\n .flat()\n .filter((schema) => schema && schema.length > 0),\n ];\n return schemas.join(\"\\n\\n\");\n}\n\nfunction getDocumentTypesMap(dir: string) {\n const documentTypesMap: Record<string, string> = {};\n fs.readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .forEach((name) => {\n const specPath = resolve(dir, name, `${name}.json`);\n if (!fs.existsSync(specPath)) {\n return;\n }\n\n const specRaw = fs.readFileSync(specPath, \"utf-8\");\n try {\n const spec = JSON.parse(specRaw) as DocumentModelState;\n if (spec.id) {\n documentTypesMap[spec.id] = pascalCase(name);\n }\n } catch {\n console.error(`Failed to parse ${specPath}`);\n }\n });\n return documentTypesMap;\n}\n\nexport async function generate(config: PowerhouseConfig) {\n const { skipFormat, watch } = config;\n await generateSchemas(config.documentModelsDir, { skipFormat, watch });\n await generateAll(config.documentModelsDir, { skipFormat, watch });\n}\n\nexport async function generateFromFile(path: string, config: PowerhouseConfig) {\n // load document model spec from file\n const documentModel = await loadDocumentModel(path);\n\n const name = paramCase(documentModel.name);\n\n // create document model folder and spec as json\n fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });\n fs.writeFileSync(\n join(config.documentModelsDir, name, `${name}.json`),\n JSON.stringify(documentModel, null, 4),\n );\n\n // bundle graphql schemas together\n const schemaStr = [\n typeDefs.join(\"\\n\"), // inject ph scalars\n generateGraphqlSchema(documentModel),\n ].join(\"\\n\");\n\n if (schemaStr) {\n fs.writeFileSync(\n join(config.documentModelsDir, name, `schema.graphql`),\n schemaStr,\n );\n }\n\n await generateSchema(name, config.documentModelsDir, config);\n await generateDocumentModel(documentModel, config.documentModelsDir, config);\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n config: PowerhouseConfig,\n) {\n const { documentModelsDir, skipFormat } = config;\n const docummentTypesMap = getDocumentTypesMap(documentModelsDir);\n\n const invalidType = documentTypes.find(\n (type) => !Object.keys(docummentTypesMap).includes(type),\n );\n if (invalidType) {\n throw new Error(`Document model for ${invalidType} not found`);\n }\n return _generateEditor(\n name,\n documentTypes,\n docummentTypesMap,\n config.editorsDir,\n config.documentModelsDir,\n { skipFormat },\n );\n}\n\nexport async function generateProcessor(\n name: string,\n type: \"analytics\" | \"operational\",\n documentTypes: string[],\n config: PowerhouseConfig,\n) {\n const { documentModelsDir, skipFormat } = config;\n const docummentTypesMap = getDocumentTypesMap(documentModelsDir);\n\n const invalidType = documentTypes.find(\n (type) => !Object.keys(docummentTypesMap).includes(type),\n );\n if (invalidType) {\n throw new Error(`Document model for ${invalidType} not found`);\n }\n return _generateProcessor(\n name,\n documentTypes,\n docummentTypesMap,\n config.processorsDir,\n config.documentModelsDir,\n type,\n { skipFormat },\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/codegen/index.ts"],"names":["_generateEditor","type","_generateProcessor"],"mappings":"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","file":"index.js","sourcesContent":["#! /usr/bin/env node\nimport { DocumentModelState } from \"document-model/document-model\";\nimport { typeDefs } from \"@powerhousedao/scalars\";\nimport {\n generateAll,\n generateEditor as _generateEditor,\n generateProcessor as _generateProcessor,\n generateDocumentModel,\n} from \"./hygen\";\nimport { generateSchemas, generateSchema } from \"./graphql\";\nimport fs from \"node:fs\";\nimport { join, resolve } from \"path\";\nimport { paramCase, pascalCase } from \"change-case\";\nimport { loadDocumentModel } from \"./utils\";\nimport { DocumentModel } from \"document-model/document\";\nimport { PowerhouseConfig } from \"@powerhousedao/config/powerhouse\";\n\nfunction generateGraphqlSchema(documentModel: DocumentModelState) {\n const spec =\n documentModel.specifications[documentModel.specifications.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!spec) {\n throw new Error(`No spec found for ${documentModel.id}`);\n }\n\n const {\n modules,\n state: { global, local },\n } = spec;\n const schemas = [\n global.schema,\n local.schema,\n ...modules\n .map((module) => [\n `# ${module.name}`,\n ...module.operations.map((op) => op.schema),\n ])\n .flat()\n .filter((schema) => schema && schema.length > 0),\n ];\n return schemas.join(\"\\n\\n\");\n}\n\nexport type DocumentTypesMap = Record<\n DocumentModel[\"documentModel\"][\"id\"],\n { name: string; importPath: string }\n>;\n\n// returns map of document model id to document model name in pascal case and import path\nasync function getDocumentTypesMap(\n dir: string,\n pathOrigin = \"..\",\n): Promise<DocumentTypesMap> {\n const documentTypesMap: DocumentTypesMap = {};\n\n // add document types from provided dir\n if (fs.existsSync(dir)) {\n fs.readdirSync(dir, { withFileTypes: true })\n .filter((dirent) => dirent.isDirectory())\n .map((dirent) => dirent.name)\n .forEach((name) => {\n const specPath = resolve(dir, name, `${name}.json`);\n if (!fs.existsSync(specPath)) {\n return;\n }\n\n const specRaw = fs.readFileSync(specPath, \"utf-8\");\n try {\n const spec = JSON.parse(specRaw) as DocumentModelState;\n if (spec.id) {\n documentTypesMap[spec.id] = {\n name: pascalCase(name),\n importPath: join(pathOrigin, dir, name),\n };\n }\n } catch {\n console.error(`Failed to parse ${specPath}`);\n }\n });\n }\n\n // add documents from document-model-libs if lib is installed\n try {\n /* eslint-disable */\n // @ts-ignore-error TS2307 this import is expected to fail if document-model-libs is not available\n const documentModels = await import(\"document-model-libs/document-models\");\n Object.keys(documentModels).forEach((name) => {\n const documentModel = documentModels[\n name as keyof typeof documentModels\n ] as DocumentModel;\n documentTypesMap[documentModel.documentModel.id] = {\n name,\n importPath: `document-model-libs/${paramCase(name)}`,\n };\n });\n /* eslint-enable */\n } catch {\n /* document-model-libs is not available */\n }\n\n return documentTypesMap;\n}\n\nexport async function generate(config: PowerhouseConfig) {\n const { skipFormat, watch } = config;\n await generateSchemas(config.documentModelsDir, { skipFormat, watch });\n await generateAll(config.documentModelsDir, { skipFormat, watch });\n}\n\nexport async function generateFromFile(path: string, config: PowerhouseConfig) {\n // load document model spec from file\n const documentModel = await loadDocumentModel(path);\n\n const name = paramCase(documentModel.name);\n\n // create document model folder and spec as json\n fs.mkdirSync(join(config.documentModelsDir, name), { recursive: true });\n fs.writeFileSync(\n join(config.documentModelsDir, name, `${name}.json`),\n JSON.stringify(documentModel, null, 4),\n );\n\n // bundle graphql schemas together\n const schemaStr = [\n typeDefs.join(\"\\n\"), // inject ph scalars\n generateGraphqlSchema(documentModel),\n ].join(\"\\n\");\n\n if (schemaStr) {\n fs.writeFileSync(\n join(config.documentModelsDir, name, `schema.graphql`),\n schemaStr,\n );\n }\n\n await generateSchema(name, config.documentModelsDir, config);\n await generateDocumentModel(documentModel, config.documentModelsDir, config);\n}\n\nexport async function generateEditor(\n name: string,\n documentTypes: string[],\n config: PowerhouseConfig,\n) {\n const { documentModelsDir, skipFormat } = config;\n const documentTypesMap = await getDocumentTypesMap(documentModelsDir);\n\n const invalidType = documentTypes.find(\n (type) => !Object.keys(documentTypesMap).includes(type),\n );\n if (invalidType) {\n throw new Error(`Document model for ${invalidType} not found`);\n }\n return _generateEditor(\n name,\n documentTypes,\n documentTypesMap,\n config.editorsDir,\n config.documentModelsDir,\n { skipFormat },\n );\n}\n\nexport async function generateProcessor(\n name: string,\n type: \"analytics\" | \"operational\",\n documentTypes: string[],\n config: PowerhouseConfig,\n) {\n const { documentModelsDir, skipFormat } = config;\n const documentTypesMap = await getDocumentTypesMap(documentModelsDir);\n\n const invalidType = documentTypes.find(\n (type) => !Object.keys(documentTypesMap).includes(type),\n );\n if (invalidType) {\n throw new Error(`Document model for ${invalidType} not found`);\n }\n\n return _generateProcessor(\n name,\n documentTypes,\n documentTypesMap,\n config.processorsDir,\n config.documentModelsDir,\n type,\n { skipFormat },\n );\n}\n"]}
|
package/dist/create-lib/init.js
CHANGED
|
@@ -2,8 +2,9 @@ import { execSync } from 'child_process';
|
|
|
2
2
|
import enquirer from 'enquirer';
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import path from 'path';
|
|
5
|
-
import { parseArgs, configSpec, promptDirectories
|
|
5
|
+
import { parseArgs, configSpec, promptDirectories } from '../utils/cli.js';
|
|
6
6
|
import { getPackageManager } from './command.js';
|
|
7
|
+
import { DEFAULT_CONFIG } from '@powerhousedao/config/powerhouse';
|
|
7
8
|
|
|
8
9
|
const BOILERPLATE_REPO = "https://github.com/powerhouse-inc/document-model-boilerplate.git";
|
|
9
10
|
const packageManager = getPackageManager(process.env.npm_config_user_agent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/create-lib/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/create-lib/init.ts"],"names":[],"mappings":"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","file":"init.js","sourcesContent":["import arg from \"arg\";\nimport { execSync } from \"child_process\";\nimport enquirer from \"enquirer\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport { configSpec, parseArgs, promptDirectories } from \"../utils/cli\";\nimport { getPackageManager } from \"./command\";\n// eslint-disable-next-line\n// @ts-ignore-error\nimport { DEFAULT_CONFIG } from \"@powerhousedao/config/powerhouse\";\n\nconst BOILERPLATE_REPO =\n \"https://github.com/powerhouse-inc/document-model-boilerplate.git\";\n\nconst packageManager = getPackageManager(process.env.npm_config_user_agent);\nconst isNpm = packageManager === \"npm\";\n\nconst { prompt } = enquirer;\n\nfunction buildPackageJson(appPath: string, projectName: string) {\n const packageJson = JSON.parse(\n fs.readFileSync(path.join(appPath, \"package.json\"), \"utf-8\"),\n ) as Record<string, any>;\n const newPackage = {\n ...packageJson,\n name: projectName,\n version: \"1.0.0\",\n description: \"\",\n };\n\n fs.writeFileSync(\n path.join(appPath, \"package.json\"),\n JSON.stringify(newPackage, null, 2),\n \"utf8\",\n );\n}\n\nfunction buildPowerhouseConfig(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n const filePath = path.join(appPath, \"powerhouse.config.json\");\n const packageJson = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as Record<\n string,\n any\n >;\n const newPackage = {\n ...packageJson,\n documentModelsDir,\n editorsDir,\n };\n\n fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), \"utf8\");\n}\n\nfunction buildIndex(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n fs.writeFileSync(\n path.join(appPath, \"index.ts\"),\n `import * as documentModelsExports from '${documentModelsDir}';\n import * as editorsExports from '${editorsDir}';\n\n export const documentModels = Object.values(documentModelsExports);\n export const editors = Object.values(editorsExports);`,\n \"utf8\",\n );\n}\n\nfunction runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n }\n}\n\nexport async function init(_args?: arg.Result<typeof configSpec>) {\n const args = _args || parseArgs(process.argv.slice(2), configSpec);\n\n // checks if a project name was provided\n let projectName = args._.shift();\n if (!projectName) {\n const result = await prompt<{ projectName: string }>([\n {\n type: \"input\",\n name: \"projectName\",\n message: \"What is the project name?\",\n required: true,\n result: (value) => value.toLowerCase().trim().replace(/\\s+/g, \"-\"),\n },\n ]);\n if (!result.projectName) {\n console.log(\"\\x1b[31m\", \"You have to provide name to your app.\");\n process.exit(1);\n }\n projectName = result.projectName;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { documentModelsDir, editorsDir } = args[\"--interactive\"]\n ? await promptDirectories()\n : DEFAULT_CONFIG;\n\n const appPath = path.join(process.cwd(), projectName);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.log(\n \"\\x1b[31m\",\n `The folder ${projectName} already exists in the current directory, please give it another name.`,\n \"\\x1b[0m\",\n );\n } else {\n console.log(err);\n }\n process.exit(1);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n createProject(projectName, documentModelsDir, editorsDir);\n}\n\nfunction createProject(\n projectName: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n try {\n console.log(\"\\x1b[33m\", \"Downloading the project structure...\", \"\\x1b[0m\");\n runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);\n\n const appPath = path.join(process.cwd(), projectName);\n process.chdir(appPath);\n\n console.log(\"\\x1b[34m\", \"Installing dependencies...\", \"\\x1b[0m\");\n runCmd(`${packageManager} install`);\n\n fs.rmSync(path.join(appPath, \"./.git\"), { recursive: true });\n runCmd(\"git init\");\n\n try {\n fs.mkdirSync(path.join(appPath, documentModelsDir));\n fs.writeFileSync(path.join(appPath, documentModelsDir, \"index.ts\"), \"\");\n fs.mkdirSync(path.join(appPath, editorsDir));\n fs.writeFileSync(path.join(appPath, editorsDir, \"index.ts\"), \"\");\n } catch (error) {\n if (!(error as Error).message.includes(\"EEXIST\")) {\n throw error;\n }\n }\n buildPackageJson(appPath, projectName);\n buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);\n buildIndex(appPath, documentModelsDir, editorsDir);\n\n console.log(\"\\x1b[32m\", \"The installation is done!\", \"\\x1b[0m\");\n console.log();\n\n console.log(\"\\x1b[34m\", \"You can start by typing:\");\n console.log(` cd ${projectName}`);\n console.log(\n isNpm ? \" npm run generate\" : ` ${packageManager} generate`,\n \"\\x1b[0m\",\n );\n } catch (error) {\n console.log(error);\n }\n}\n"]}
|
package/dist/hygen.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { DocumentModel } from 'document-model';
|
|
2
|
+
import { D as DocumentTypesMap } from './index-JdHnpEPd.js';
|
|
3
|
+
import 'document-model/document';
|
|
4
|
+
import '@powerhousedao/config/powerhouse';
|
|
2
5
|
|
|
3
6
|
declare function generateAll(dir: string, { watch, skipFormat }?: {
|
|
4
7
|
watch?: boolean | undefined;
|
|
@@ -8,10 +11,10 @@ declare function generateDocumentModel(documentModel: DocumentModel.DocumentMode
|
|
|
8
11
|
watch?: boolean | undefined;
|
|
9
12
|
skipFormat?: boolean | undefined;
|
|
10
13
|
}): Promise<void>;
|
|
11
|
-
declare function generateEditor(name: string, documentTypes: string[], documentTypesMap:
|
|
14
|
+
declare function generateEditor(name: string, documentTypes: string[], documentTypesMap: DocumentTypesMap, dir: string, documentModelsDir: string, { skipFormat }?: {
|
|
12
15
|
skipFormat?: boolean | undefined;
|
|
13
16
|
}): Promise<void>;
|
|
14
|
-
declare function generateProcessor(name: string, documentTypes: string[], documentTypesMap:
|
|
17
|
+
declare function generateProcessor(name: string, documentTypes: string[], documentTypesMap: DocumentTypesMap, dir: string, documentModelsDir: string, type?: string, { skipFormat }?: {
|
|
15
18
|
skipFormat?: boolean | undefined;
|
|
16
19
|
}): Promise<void>;
|
|
17
20
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DocumentModel } from 'document-model/document';
|
|
2
|
+
import { PowerhouseConfig } from '@powerhousedao/config/powerhouse';
|
|
3
|
+
|
|
4
|
+
type DocumentTypesMap = Record<DocumentModel["documentModel"]["id"], {
|
|
5
|
+
name: string;
|
|
6
|
+
importPath: string;
|
|
7
|
+
}>;
|
|
8
|
+
declare function generate(config: PowerhouseConfig): Promise<void>;
|
|
9
|
+
declare function generateFromFile(path: string, config: PowerhouseConfig): Promise<void>;
|
|
10
|
+
declare function generateEditor(name: string, documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
11
|
+
declare function generateProcessor(name: string, type: "analytics" | "operational", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
12
|
+
|
|
13
|
+
export { type DocumentTypesMap as D, generateFromFile as a, generateEditor as b, generateProcessor as c, generate as g };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
1
|
+
export { D as DocumentTypesMap, g as generate, b as generateEditor, a as generateFromFile, c as generateProcessor } from './index-JdHnpEPd.js';
|
|
2
|
+
export { configSpec, createProject, generateMock, generateMockTypeFn, getPackageManager, parseArgs, parseConfig, promptDirectories } from './utils.js';
|
|
3
|
+
import 'document-model/document';
|
|
4
|
+
import '@powerhousedao/config/powerhouse';
|
|
3
5
|
import 'arg';
|
|
4
6
|
import '@anatine/zod-mock';
|
|
5
|
-
|
|
6
|
-
declare function generate(config: PowerhouseConfig): Promise<void>;
|
|
7
|
-
declare function generateFromFile(path: string, config: PowerhouseConfig): Promise<void>;
|
|
8
|
-
declare function generateEditor(name: string, documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
9
|
-
declare function generateProcessor(name: string, type: "analytics" | "operational", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
10
|
-
|
|
11
|
-
export { PowerhouseConfig, generate, generateEditor, generateFromFile, generateProcessor };
|
package/dist/utils/cli.js
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
|
+
import { DEFAULT_CONFIG } from '@powerhousedao/config/powerhouse';
|
|
1
2
|
import arg from 'arg';
|
|
2
3
|
import enquirer from 'enquirer';
|
|
3
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
4
4
|
|
|
5
5
|
const { prompt } = enquirer;
|
|
6
|
-
const DEFAULT_DOCUMENT_MODELS_DIR = "./document-models";
|
|
7
|
-
const DEFAULT_EDITORS_DIR = "./editors";
|
|
8
|
-
const DEFAULT_PROCESSORS_DIR = "./processors";
|
|
9
|
-
const DEFAULT_CONFIG = {
|
|
10
|
-
documentModelsDir: DEFAULT_DOCUMENT_MODELS_DIR,
|
|
11
|
-
editorsDir: DEFAULT_EDITORS_DIR,
|
|
12
|
-
processorsDir: DEFAULT_PROCESSORS_DIR,
|
|
13
|
-
skipFormat: false
|
|
14
|
-
};
|
|
15
6
|
const configSpec = {
|
|
16
7
|
"--document-models": String,
|
|
17
8
|
"--editors": String,
|
|
@@ -22,20 +13,6 @@ const configSpec = {
|
|
|
22
13
|
"-sf": "--skip-format",
|
|
23
14
|
"-w": "--watch"
|
|
24
15
|
};
|
|
25
|
-
function getConfig() {
|
|
26
|
-
let config = { ...DEFAULT_CONFIG };
|
|
27
|
-
try {
|
|
28
|
-
const configStr = readFileSync("./powerhouse.config.json", "utf-8");
|
|
29
|
-
const userConfig = JSON.parse(configStr);
|
|
30
|
-
config = { ...config, ...userConfig };
|
|
31
|
-
} catch {
|
|
32
|
-
console.warn("No powerhouse.config.json found, using defaults");
|
|
33
|
-
}
|
|
34
|
-
return config;
|
|
35
|
-
}
|
|
36
|
-
function writeConfig(config) {
|
|
37
|
-
writeFileSync("./powerhouse.config.json", JSON.stringify(config, null, 4));
|
|
38
|
-
}
|
|
39
16
|
function parseArgs(argv, spec) {
|
|
40
17
|
const args = arg(spec, {
|
|
41
18
|
permissive: true,
|
|
@@ -80,6 +57,6 @@ async function promptDirectories(config = DEFAULT_CONFIG) {
|
|
|
80
57
|
]);
|
|
81
58
|
}
|
|
82
59
|
|
|
83
|
-
export {
|
|
60
|
+
export { configSpec, parseArgs, parseConfig, promptDirectories };
|
|
84
61
|
//# sourceMappingURL=cli.js.map
|
|
85
62
|
//# sourceMappingURL=cli.js.map
|
package/dist/utils/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/cli.ts"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cli.ts"],"names":[],"mappings":";;;;AAOA,MAAM,EAAE,QAAW,GAAA,QAAA;AAEZ,MAAM,UAAa,GAAA;AAAA,EACxB,mBAAqB,EAAA,MAAA;AAAA,EACrB,WAAa,EAAA,MAAA;AAAA,EACb,eAAiB,EAAA,OAAA;AAAA,EACjB,eAAiB,EAAA,OAAA;AAAA,EACjB,SAAW,EAAA,OAAA;AAAA,EACX,IAAM,EAAA,eAAA;AAAA,EACN,KAAO,EAAA,eAAA;AAAA,EACP,IAAM,EAAA;AACR;AAEO,SAAS,SAAA,CAA8B,MAAgB,IAAS,EAAA;AACrE,EAAM,MAAA,IAAA,GAAO,IAAI,IAAM,EAAA;AAAA,IACrB,UAAY,EAAA,IAAA;AAAA,IACZ;AAAA,GACD,CAAA;AAED,EAAO,OAAA,IAAA;AACT;AAEO,SAAS,YAAY,IAAgB,EAAA;AAC1C,EAAA,MAAM,SAAoC,EAAC;AAC3C,EAAM,MAAA,IAAA,GAAO,SAAU,CAAA,IAAA,EAAM,UAAU,CAAA;AAEvC,EAAA,IAAI,uBAAuB,IAAM,EAAA;AAC/B,IAAO,MAAA,CAAA,iBAAA,GAAoB,KAAK,mBAAmB,CAAA;AAAA;AAGrD,EAAA,IAAI,eAAe,IAAM,EAAA;AACvB,IAAO,MAAA,CAAA,UAAA,GAAa,KAAK,WAAW,CAAA;AAAA;AAGtC,EAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,UAAa,GAAA,IAAA;AAAA;AAEtB,EAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,WAAc,GAAA,IAAA;AAAA;AAEvB,EAAA,IAAI,aAAa,IAAM,EAAA;AACrB,IAAA,MAAA,CAAO,KAAQ,GAAA,IAAA;AAAA;AAGjB,EAAO,OAAA,MAAA;AACT;AAEA,eAAsB,iBAAA,CACpB,SAA2B,cAC3B,EAAA;AACA,EAAA,OAAO,MAAmE,CAAA;AAAA,IACxE;AAAA,MACE,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,mBAAA;AAAA,MACN,OAAS,EAAA,qCAAA;AAAA,MACT,SAAS,MAAO,CAAA;AAAA,KAClB;AAAA,IACA;AAAA,MACE,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,YAAA;AAAA,MACN,OAAS,EAAA,6BAAA;AAAA,MACT,SAAS,MAAO,CAAA;AAAA;AAClB,GACD,CAAA;AACH","file":"cli.js","sourcesContent":["import {\n DEFAULT_CONFIG,\n PowerhouseConfig,\n} from \"@powerhousedao/config/powerhouse\";\nimport arg from \"arg\";\nimport enquirer from \"enquirer\";\n\nconst { prompt } = enquirer;\n\nexport const configSpec = {\n \"--document-models\": String,\n \"--editors\": String,\n \"--interactive\": Boolean,\n \"--skip-format\": Boolean,\n \"--watch\": Boolean,\n \"-i\": \"--interactive\",\n \"-sf\": \"--skip-format\",\n \"-w\": \"--watch\",\n} as const;\n\nexport function parseArgs<T extends arg.Spec>(argv: string[], spec: T) {\n const args = arg(spec, {\n permissive: true,\n argv,\n });\n\n return args;\n}\n\nexport function parseConfig(argv: string[]) {\n const config: Partial<PowerhouseConfig> = {};\n const args = parseArgs(argv, configSpec);\n\n if (\"--document-models\" in args) {\n config.documentModelsDir = args[\"--document-models\"];\n }\n\n if (\"--editors\" in args) {\n config.editorsDir = args[\"--editors\"];\n }\n\n if (\"--skip-format\" in args) {\n config.skipFormat = true;\n }\n if (\"--interactive\" in args) {\n config.interactive = true;\n }\n if (\"--watch\" in args) {\n config.watch = true;\n }\n\n return config;\n}\n\nexport async function promptDirectories(\n config: PowerhouseConfig = DEFAULT_CONFIG,\n) {\n return prompt<Pick<PowerhouseConfig, \"documentModelsDir\" | \"editorsDir\">>([\n {\n type: \"input\",\n name: \"documentModelsDir\",\n message: \"Where to place the Document Models?\",\n initial: config.documentModelsDir,\n },\n {\n type: \"input\",\n name: \"editorsDir\",\n message: \"Where to place the Editors?\",\n initial: config.editorsDir,\n },\n ]);\n}\n"]}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
|
+
import { PowerhouseConfig } from '@powerhousedao/config/powerhouse';
|
|
1
2
|
import arg from 'arg';
|
|
2
3
|
import { generateMock as generateMock$1 } from '@anatine/zod-mock';
|
|
3
4
|
|
|
4
|
-
type PowerhouseConfig = {
|
|
5
|
-
documentModelsDir: string;
|
|
6
|
-
editorsDir: string;
|
|
7
|
-
processorsDir: string;
|
|
8
|
-
interactive?: boolean;
|
|
9
|
-
skipFormat?: boolean;
|
|
10
|
-
watch?: boolean;
|
|
11
|
-
};
|
|
12
|
-
declare const DEFAULT_CONFIG: PowerhouseConfig;
|
|
13
5
|
declare const configSpec: {
|
|
14
6
|
readonly "--document-models": StringConstructor;
|
|
15
7
|
readonly "--editors": StringConstructor;
|
|
@@ -20,8 +12,6 @@ declare const configSpec: {
|
|
|
20
12
|
readonly "-sf": "--skip-format";
|
|
21
13
|
readonly "-w": "--watch";
|
|
22
14
|
};
|
|
23
|
-
declare function getConfig(): PowerhouseConfig;
|
|
24
|
-
declare function writeConfig(config: PowerhouseConfig): void;
|
|
25
15
|
declare function parseArgs<T extends arg.Spec>(argv: string[], spec: T): arg.Result<T>;
|
|
26
16
|
declare function parseConfig(argv: string[]): Partial<PowerhouseConfig>;
|
|
27
17
|
declare function promptDirectories(config?: PowerhouseConfig): Promise<Pick<PowerhouseConfig, "documentModelsDir" | "editorsDir">>;
|
|
@@ -35,4 +25,4 @@ declare const packageManagers: readonly ["npm", "yarn", "pnpm", "bun"];
|
|
|
35
25
|
type PackageManager = (typeof packageManagers)[number];
|
|
36
26
|
declare function getPackageManager(userAgent?: string): PackageManager;
|
|
37
27
|
|
|
38
|
-
export {
|
|
28
|
+
export { configSpec, init as createProject, generateMock, type generateMockTypeFn, getPackageManager, parseArgs, parseConfig, promptDirectories };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/codegen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,14 +32,15 @@
|
|
|
32
32
|
"enquirer": "^2.4.1",
|
|
33
33
|
"execa": "^8.0.1",
|
|
34
34
|
"hygen": "^6.2.11",
|
|
35
|
-
"
|
|
35
|
+
"@powerhousedao/config": "1.2.0",
|
|
36
|
+
"document-model": "2.11.0"
|
|
36
37
|
},
|
|
37
38
|
"devDependencies": {
|
|
38
39
|
"copyfiles": "^2.4.1",
|
|
39
40
|
"esbuild-fix-imports-plugin": "^1.0.7",
|
|
40
41
|
"graphql": "^16.8.1",
|
|
41
42
|
"husky": "^8.0.3",
|
|
42
|
-
"@powerhousedao/scalars": "1.
|
|
43
|
+
"@powerhousedao/scalars": "1.13.0"
|
|
43
44
|
},
|
|
44
45
|
"scripts": {
|
|
45
46
|
"check-types": "tsc --build",
|
|
@@ -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
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/service.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
|
|
6
|
-
import { PostgresAnalyticsStore } from "@powerhousedao/analytics-engine-pg";
|
|
7
|
-
|
|
8
|
-
let store: IAnalyticsStore | null = null;
|
|
9
|
-
|
|
10
|
-
export default function get(): IAnalyticsStore {
|
|
11
|
-
if (!store) {
|
|
12
|
-
const connectionString = process.env.PG_CONNECTION_STRING;
|
|
13
|
-
if (!connectionString) {
|
|
14
|
-
throw new Error("PG_CONNECTION_STRING not set");
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
store = new PostgresAnalyticsStore(connectionString, (i, q) =>
|
|
18
|
-
console.log(`[PG] ${i}: ${q}`)
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return store;
|
|
23
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/test/example.test.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { transmit } from "../src/transmit";
|
|
6
|
-
import { actions } from "document-model-libs/document-drive";
|
|
7
|
-
import { describe, it } from "vitest";
|
|
8
|
-
import get from "../src/service";
|
|
9
|
-
|
|
10
|
-
describe("processor example test", () => {
|
|
11
|
-
it("should count amount of operations", async () => {
|
|
12
|
-
const exampleEntry = actions.addFile({
|
|
13
|
-
documentType: "powerhouse/budget-statement",
|
|
14
|
-
id: "1",
|
|
15
|
-
name: "test",
|
|
16
|
-
synchronizationUnits: [],
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
await transmit([
|
|
20
|
-
{
|
|
21
|
-
branch: "main",
|
|
22
|
-
documentId: "1",
|
|
23
|
-
driveId: "1",
|
|
24
|
-
operations: [
|
|
25
|
-
{ ...exampleEntry, timestamp: "1", index: 1, skip: 0, hash: "1" },
|
|
26
|
-
],
|
|
27
|
-
scope: "global",
|
|
28
|
-
state: {},
|
|
29
|
-
},
|
|
30
|
-
]);
|
|
31
|
-
|
|
32
|
-
const analyticsStore = get();
|
|
33
|
-
// @todo: add test
|
|
34
|
-
});
|
|
35
|
-
});
|
package/dist/codegen/.hygen/templates/powerhouse/generate-processor-analytics/transmit.esm.t
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/src/transmit.ts"
|
|
3
|
-
force: true
|
|
4
|
-
---
|
|
5
|
-
import { InternalTransmitterUpdate } from "document-drive";
|
|
6
|
-
import get from "./service";
|
|
7
|
-
import { AnalyticsPath } from "@powerhousedao/analytics-engine-core";
|
|
8
|
-
import { DateTime } from "luxon";
|
|
9
|
-
|
|
10
|
-
export async function transmit(strands: InternalTransmitterUpdate[]) {
|
|
11
|
-
for (const strand of strands) {
|
|
12
|
-
handle(strand).catch((err) => {
|
|
13
|
-
console.error("Error handling strand", err);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return Promise.resolve();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async function handle(strand: InternalTransmitterUpdate) {
|
|
21
|
-
const analytics = get();
|
|
22
|
-
|
|
23
|
-
await Promise.all(
|
|
24
|
-
strand.operations.map((operation) => {
|
|
25
|
-
const source = AnalyticsPath.fromString(
|
|
26
|
-
`switchboard/default/${strand.driveId}`,
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
const start = DateTime.fromISO(operation.timestamp);
|
|
30
|
-
const dimensions: any = {
|
|
31
|
-
type: AnalyticsPath.fromString(`operation/type/${operation.type}`),
|
|
32
|
-
drive: AnalyticsPath.fromString(`drive/${strand.driveId}`),
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
if (strand.documentId) {
|
|
36
|
-
dimensions["document"] = AnalyticsPath.fromString(
|
|
37
|
-
`document/${strand.documentId}/${strand.scope}`,
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// todo: +1, -1 for doc created and destroyed
|
|
42
|
-
|
|
43
|
-
// todo: count documents of each type (ADD_FILE, input.documentType)
|
|
44
|
-
|
|
45
|
-
return analytics.addSeriesValues([
|
|
46
|
-
{
|
|
47
|
-
source,
|
|
48
|
-
start,
|
|
49
|
-
value: 1,
|
|
50
|
-
metric: "Count",
|
|
51
|
-
dimensions,
|
|
52
|
-
},
|
|
53
|
-
]);
|
|
54
|
-
}),
|
|
55
|
-
);
|
|
56
|
-
}
|