@powerhousedao/codegen 4.1.0-dev.9 → 5.0.0-staging.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.d.ts +14 -0
  2. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.d.ts.map +1 -0
  3. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js +12 -0
  4. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js.map +1 -0
  5. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/resolvers.esm.t +17 -0
  6. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/schema.esm.t +16 -0
  7. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +9 -1
  8. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/object.esm.t +6 -6
  9. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/ph-factories.esm.t +96 -0
  10. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +7 -3
  11. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +2 -4
  12. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +8 -6
  13. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +45 -38
  14. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +2 -2
  15. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +6 -10
  16. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +4 -0
  17. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +1 -1
  18. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +13 -1
  19. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +1 -1
  20. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/object.esm.t +2 -7
  21. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +59 -50
  22. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +3 -3
  23. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +38 -24
  24. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +244 -181
  25. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +53 -74
  26. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +44 -26
  27. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +22 -58
  28. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.d.ts +16 -0
  29. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.d.ts.map +1 -0
  30. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.esm.t +2 -3
  31. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js +12 -0
  32. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js.map +1 -0
  33. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +1 -1
  34. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +2 -0
  35. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts.map +1 -1
  36. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +2 -5
  37. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +1 -0
  38. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +1 -1
  39. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/factory.esm.t +3 -2
  40. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +2 -7
  41. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +7 -5
  42. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_call.esm.t +1 -1
  43. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_import.esm.t +1 -1
  44. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/factory.esm.t +3 -2
  45. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.esm.t +2 -8
  46. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.esm.t +8 -9
  47. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_call.esm.t +2 -2
  48. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_import.esm.t +1 -1
  49. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/schema.esm.t +9 -1
  50. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +2 -33
  51. package/dist/src/codegen/hygen.d.ts +6 -4
  52. package/dist/src/codegen/hygen.d.ts.map +1 -1
  53. package/dist/src/codegen/hygen.js +35 -8
  54. package/dist/src/codegen/hygen.js.map +1 -1
  55. package/dist/src/codegen/index.d.ts +5 -3
  56. package/dist/src/codegen/index.d.ts.map +1 -1
  57. package/dist/src/codegen/index.js +74 -7
  58. package/dist/src/codegen/index.js.map +1 -1
  59. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts +8 -6
  60. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts.map +1 -1
  61. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts +1 -0
  62. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts.map +1 -1
  63. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js +9 -7
  64. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js.map +1 -1
  65. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts +3 -0
  66. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts.map +1 -1
  67. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js +85 -14
  68. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js.map +1 -1
  69. package/dist/tsconfig.hygen.tsbuildinfo +1 -1
  70. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  71. package/package.json +13 -6
  72. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FileItemsGrid.esm.t +0 -44
  73. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderItemsGrid.esm.t +0 -96
  74. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useSelectedFolderChildren.esm.t +0 -35
  75. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useTransformedNodes.esm.t +0 -35
@@ -2,49 +2,55 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(subgraph) %>/resolvers.ts"
3
3
  force: true
4
4
  ---
5
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
6
- /* eslint-disable @typescript-eslint/no-unsafe-assignment */
7
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
8
5
  import { type Subgraph } from "@powerhousedao/reactor-api";
9
6
  import { addFile } from "document-drive";
10
- import { actions } from "../../document-models/<%- h.changeCase.param(documentType) %>/index.js";
11
- import { generateId } from "document-model";
7
+ import { actions <% modules.forEach(module => { %><% module.operations.forEach(op => { %>, type <%- h.changeCase.pascal(op.name) %>Input<%_ })}); %>, type <%- h.changeCase.pascal(documentType) %>Document } from "../../document-models/<%- h.changeCase.param(documentType) %>/index.js";
8
+ import { setName } from "document-model";
12
9
 
13
- const DEFAULT_DRIVE_ID = "powerhouse";
14
-
15
- export const getResolvers = (subgraph: Subgraph): Record<string, any> => {
10
+ export const getResolvers = (subgraph: Subgraph) => {
16
11
  const reactor = subgraph.reactor;
17
12
 
18
13
  return ({
19
14
  Query: {
20
- <%- h.changeCase.pascal(documentType) %>: async (_: any, args: any, ctx: any) => {
15
+ <%- h.changeCase.pascal(documentType) %>: async () => {
21
16
  return {
22
- getDocument: async (args: any) => {
23
- const driveId: string = args.driveId || DEFAULT_DRIVE_ID;
24
- const docId: string = args.docId || "";
25
- const doc = await reactor.getDocument(driveId, docId);
26
- return {
17
+ getDocument: async (args: { docId: string, driveId: string }) => {
18
+ const { docId, driveId } = args;
19
+
20
+ if(!docId) {
21
+ throw new Error("Document id is required");
22
+ }
23
+
24
+ if(driveId) {
25
+ const docIds = await reactor.getDocuments(driveId);
26
+ if(!docIds.includes(docId)) {
27
+ throw new Error(`Document with id ${docId} is not part of ${driveId}`);
28
+ }
29
+ }
30
+
31
+ const doc = await reactor.getDocument<<%- h.changeCase.pascal(documentType) %>Document>(docId);
32
+ return {
27
33
  driveId: driveId,
28
34
  ...doc,
29
35
  ...doc.header,
30
36
  state: doc.state.global,
31
37
  stateJSON: doc.state.global,
32
- revision: doc.header.revision["global"] ?? 0,
38
+ revision: doc.header?.revision?.global ?? 0,
33
39
  };
34
40
  },
35
- getDocuments: async (args: any) => {
36
- const driveId: string = args.driveId || DEFAULT_DRIVE_ID;
41
+ getDocuments: async (args: { driveId: string }) => {
42
+ const { driveId } = args;
37
43
  const docsIds = await reactor.getDocuments(driveId);
38
44
  const docs = await Promise.all(
39
45
  docsIds.map(async (docId) => {
40
- const doc = await reactor.getDocument(driveId, docId);
46
+ const doc = await reactor.getDocument<<%- h.changeCase.pascal(documentType) %>Document>(docId);
41
47
  return {
42
48
  driveId: driveId,
43
49
  ...doc,
44
50
  ...doc.header,
45
51
  state: doc.state.global,
46
52
  stateJSON: doc.state.global,
47
- revision: doc.header.revision["global"] ?? 0,
53
+ revision: doc.header?.revision?.global ?? 0,
48
54
  };
49
55
  }),
50
56
  );
@@ -57,47 +63,50 @@ export const getResolvers = (subgraph: Subgraph): Record<string, any> => {
57
63
  },
58
64
  },
59
65
  Mutation: {
60
-
61
- <%- h.changeCase.pascal(documentType) %>_createDocument: async (_: any, args: any) => {
62
- const driveId: string = args.driveId || DEFAULT_DRIVE_ID;
63
- const docId = generateId();
66
+ <%- h.changeCase.pascal(documentType) %>_createDocument: async (_: unknown, args: { name: string, driveId?: string }) => {
67
+ const { driveId, name } = args;
68
+ const document = await reactor.addDocument("<%- documentTypeId %>");
64
69
 
65
- await reactor.addDriveAction(driveId, addFile({
66
- id: docId,
67
- name: args.name,
68
- documentType: "<%- documentTypeId %>",
69
- synchronizationUnits:[
70
- {
71
- branch: "main",
72
- scope: "global",
73
- syncId: generateId(),
74
- },
75
- {
76
- branch: "main",
77
- scope: "local",
78
- syncId: generateId(),
79
- }
80
- ],
81
- }));
70
+ if(driveId) {
71
+ await reactor.addAction(
72
+ driveId,
73
+ addFile({
74
+ name,
75
+ id: document.header.id,
76
+ documentType: "<%- documentTypeId %>",
77
+ }),
78
+ );
79
+ }
80
+
81
+ if(name) {
82
+ await reactor.addAction(
83
+ document.header.id,
84
+ setName(name),
85
+ );
86
+ }
82
87
 
83
- return docId;
88
+ return document.header.id;
84
89
  },
85
90
 
86
91
  <% modules.forEach(module => { _%>
87
92
  <% module.operations.forEach(op => { _%>
88
- <%- h.changeCase.pascal(documentType) + '_' + h.changeCase.camel(op.name)
89
- %>: async (_: any, args: any) => {
90
- const driveId: string = args.driveId || DEFAULT_DRIVE_ID;
91
- const docId: string = args.docId || "";
92
- const doc = await reactor.getDocument(driveId, docId);
93
+ <%- h.changeCase.pascal(documentType) + '_' + h.changeCase.camel(op.name) %>: async (_: unknown, args: { docId: string, input: <%- h.changeCase.pascal(op.name) %>Input}) => {
94
+ const { docId, input } = args;
95
+ const doc = await reactor.getDocument<<%- h.changeCase.pascal(documentType) %>Document>(docId);
96
+ if(!doc) {
97
+ throw new Error("Document not found");
98
+ }
93
99
 
94
- await reactor.addAction(
95
- driveId,
100
+ const result = await reactor.addAction(
96
101
  docId,
97
- actions.<%- h.changeCase.camel(op.name) %>({...args.input})
102
+ actions.<%- h.changeCase.camel(op.name) %>(input)
98
103
  );
99
104
 
100
- return (doc.header.revision["global"] ?? 0) + 1;
105
+ if(result.status !== "SUCCESS") {
106
+ throw new Error(result.error?.message ?? "Failed to <%- h.changeCase.camel(op.name) %>");
107
+ }
108
+
109
+ return true;
101
110
  },
102
111
 
103
112
  <%_ })}); %>
@@ -17,8 +17,8 @@ Queries: <%= h.changeCase.pascal(documentType) %>
17
17
  """
18
18
 
19
19
  type <%- h.changeCase.pascal(documentType) %>Queries {
20
- getDocument(driveId: String, docId: PHID): <%- h.changeCase.pascal(documentType) %>
21
- getDocuments(driveId: String): [<%- h.changeCase.pascal(documentType) %>!]
20
+ getDocument(docId: PHID!, driveId: PHID): <%- h.changeCase.pascal(documentType) %>
21
+ getDocuments(driveId: String!): [<%- h.changeCase.pascal(documentType) %>!]
22
22
  }
23
23
 
24
24
  type Query {
@@ -30,7 +30,7 @@ Mutations: <%= h.changeCase.pascal(documentType) %>
30
30
  """
31
31
  type Mutation {
32
32
 
33
- <%- h.changeCase.pascal(documentType) %>_createDocument(driveId:String, name:String): String
33
+ <%- h.changeCase.pascal(documentType) %>_createDocument(name:String!, driveId:String): String
34
34
 
35
35
  <% modules.forEach(module => { _%>
36
36
  <% module.operations.forEach(op => { _%>
@@ -2,49 +2,63 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/CreateDocument.tsx"
3
3
  unless_exists: true
4
4
  ---
5
+ import {
6
+ addDocument,
7
+ useDocumentModelModules,
8
+ useSelectedDriveId,
9
+ useSelectedFolder,
10
+ type VetraDocumentModelModule,
11
+ } from "@powerhousedao/reactor-browser";
5
12
  import { Button } from "@powerhousedao/design-system";
6
- import { type DocumentModelModule } from "document-model";
7
13
 
8
- interface CreateDocumentProps {
9
- documentModels?: DocumentModelModule[];
10
- createDocument: (doc: DocumentModelModule) => void;
11
- }
14
+ /**
15
+ * Document creation UI component.
16
+ * Displays available document types as clickable buttons.
17
+ */
18
+ export const CreateDocument = () => {
19
+ const selectedDriveId = useSelectedDriveId();
20
+ const selectedFolder = useSelectedFolder();
21
+ const documentModelModules = useDocumentModelModules();
12
22
 
13
- function getDocumentSpec(doc: DocumentModelModule) {
14
- if ("documentModelState" in doc) {
15
- return doc.documentModelState as DocumentModelModule["documentModel"];
23
+ async function handleAddDocument(module: VetraDocumentModelModule) {
24
+ if (!selectedDriveId) {
25
+ return;
26
+ }
27
+ await addDocument(
28
+ selectedDriveId,
29
+ `New ${module.documentModel.name} document`,
30
+ module.documentModel.id,
31
+ selectedFolder?.id,
32
+ );
16
33
  }
17
34
 
18
- return doc.documentModel;
19
- }
20
-
21
- export const CreateDocument: React.FC<CreateDocumentProps> = ({
22
- documentModels,
23
- createDocument,
24
- }) => {
25
35
  return (
26
36
  <div className="px-6">
37
+ {/* Customize section title here */}
27
38
  <h3 className="mb-3 mt-4 text-sm font-bold text-gray-600">
28
39
  New document
29
40
  </h3>
41
+ {/* Customize layout by changing flex-wrap, gap, or grid layout */}
30
42
  <div className="flex w-full flex-wrap gap-4">
31
- {documentModels?.map((doc) => {
32
- const spec = getDocumentSpec(doc);
43
+ {documentModelModules?.map((documentModelModule) => {
33
44
  return (
34
45
  <Button
35
- key={spec.id}
36
- color="light"
46
+ key={documentModelModule.documentModel.id}
47
+ color="light" // Customize button appearance
37
48
  size="small"
38
49
  className="cursor-pointer"
39
- title={spec.name}
40
- aria-description={spec.description}
41
- onClick={() => createDocument(doc)}
50
+ title={documentModelModule.documentModel.name}
51
+ aria-description={documentModelModule.documentModel.description}
52
+ onClick={() => handleAddDocument(documentModelModule)}
42
53
  >
43
- <span className="text-sm">{spec.name}</span>
54
+ {/* Customize document type display format */}
55
+ <span className="text-sm">
56
+ {documentModelModule.documentModel.name}
57
+ </span>
44
58
  </Button>
45
59
  );
46
60
  })}
47
61
  </div>
48
62
  </div>
49
63
  );
50
- };
64
+ };