@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,20 +2,32 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FolderTree.tsx"
3
3
  unless_exists: true
4
4
  ---
5
- import { useState } from 'react';
6
- import type { UiFolderNode } from "@powerhousedao/design-system";
5
+ import type { FolderNode } from "document-drive";
6
+ import { useState } from "react";
7
7
 
8
8
  interface FolderTreeProps {
9
- folders: UiFolderNode[];
9
+ folders: FolderNode[];
10
10
  selectedNodeId?: string;
11
- onSelectNode: (node: UiFolderNode) => void;
11
+ onSelectNode: (nodeId: string | undefined) => void;
12
12
  }
13
13
 
14
- export function FolderTree({ folders, selectedNodeId, onSelectNode }: FolderTreeProps) {
15
- const [expandedFolders, setExpandedFolders] = useState<Set<string>>(new Set());
14
+ /**
15
+ * Hierarchical folder tree navigation component.
16
+ * Displays folders in a tree structure with expand/collapse functionality.
17
+ */
18
+ export function FolderTree({
19
+ folders,
20
+ selectedNodeId,
21
+ onSelectNode,
22
+ }: FolderTreeProps) {
23
+ // Track which folders are expanded
24
+ const [expandedFolders, setExpandedFolders] = useState<Set<string>>(
25
+ new Set(),
26
+ );
16
27
 
28
+ // Toggle folder expansion state
17
29
  const toggleFolder = (folderId: string) => {
18
- setExpandedFolders(prev => {
30
+ setExpandedFolders((prev) => {
19
31
  const next = new Set(prev);
20
32
  if (next.has(folderId)) {
21
33
  next.delete(folderId);
@@ -26,38 +38,43 @@ export function FolderTree({ folders, selectedNodeId, onSelectNode }: FolderTree
26
38
  });
27
39
  };
28
40
 
29
- const renderFolder = (folder: UiFolderNode, level: number = 0) => {
30
- const hasChildren = folders.some(f => f.parentFolder === folder.id);
41
+ // Recursive function to render folder tree structure
42
+ const renderFolder = (folder: FolderNode, level = 0) => {
43
+ const hasChildren = folders.some((f) => f.parentFolder === folder.id);
31
44
  const isExpanded = expandedFolders.has(folder.id);
32
45
  const isSelected = selectedNodeId === folder.id;
33
46
 
34
47
  return (
35
48
  <div key={folder.id}>
36
49
  <div
37
- className={`flex items-center py-1 px-2 cursor-pointer hover:bg-gray-100 rounded ${
38
- isSelected ? 'bg-gray-100' : ''
50
+ className={`flex cursor-pointer items-center rounded px-2 py-1 text-sm hover:bg-gray-100 ${
51
+ isSelected ? "bg-blue-100 text-blue-800" : ""
39
52
  }`}
40
- style={{ paddingLeft: `${level * 16 + 8}px` }}
41
- onClick={() => onSelectNode(folder)}
53
+ style={{ paddingLeft: `${level * 16 + 8}px` }} // Customize indentation here
54
+ onClick={() => onSelectNode(folder.id)}
42
55
  >
56
+ {/* Expand/collapse button for folders with children */}
43
57
  {hasChildren && (
44
58
  <button
45
- className="w-4 h-4 mr-1 flex items-center justify-center"
59
+ className="mr-1 flex h-4 w-4 items-center justify-center"
46
60
  onClick={(e) => {
47
61
  e.stopPropagation();
48
62
  toggleFolder(folder.id);
49
63
  }}
50
64
  >
51
- {isExpanded ? '' : ''}
65
+ {isExpanded ? "" : ""} {/* Customize expand icons here */}
52
66
  </button>
53
67
  )}
54
- <span className="text-sm">{folder.name}</span>
68
+ {!hasChildren && <div className="mr-1 w-5" />}
69
+ {/* Customize folder icon and styling here */}
70
+ <span>📁 {folder.name}</span>
55
71
  </div>
72
+ {/* Recursively render child folders when expanded */}
56
73
  {isExpanded && hasChildren && (
57
74
  <div>
58
75
  {folders
59
- .filter(f => f.parentFolder === folder.id)
60
- .map(child => renderFolder(child, level + 1))}
76
+ .filter((f) => f.parentFolder === folder.id)
77
+ .map((child) => renderFolder(child, level + 1))}
61
78
  </div>
62
79
  )}
63
80
  </div>
@@ -67,19 +84,20 @@ export function FolderTree({ folders, selectedNodeId, onSelectNode }: FolderTree
67
84
  return (
68
85
  <div className="space-y-1">
69
86
  {/* Root Directory Option */}
87
+ {/* Customize root folder appearance here */}
70
88
  <div
71
- className={`flex items-center py-1 px-2 cursor-pointer hover:bg-gray-100 rounded ${
72
- !selectedNodeId ? 'bg-gray-100' : ''
89
+ className={`flex cursor-pointer items-center rounded px-2 py-1 text-sm hover:bg-gray-100 ${
90
+ !selectedNodeId ? "bg-blue-100 text-blue-800" : ""
73
91
  }`}
74
- onClick={() => onSelectNode({ id: '', name: 'Root', kind: 'FOLDER' } as UiFolderNode)}
92
+ onClick={() => onSelectNode(undefined)}
75
93
  >
76
- <span className="text-sm font-medium">Root</span>
94
+ <span>🏠 Root</span>
77
95
  </div>
78
96
 
79
- {/* Folder Tree */}
97
+ {/* Render top-level folders (no parent) */}
80
98
  {folders
81
- .filter(folder => !folder.parentFolder)
82
- .map(folder => renderFolder(folder))}
99
+ .filter((folder) => !folder.parentFolder)
100
+ .map((folder) => renderFolder(folder))}
83
101
  </div>
84
102
  );
85
- }
103
+ }
@@ -2,75 +2,39 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/editor.tsx"
3
3
  unless_exists: true
4
4
  ---
5
- import { type DriveEditorProps } from "@powerhousedao/reactor-browser";
6
- import { AnalyticsProvider } from '@powerhousedao/reactor-browser/analytics/context';
7
- import { DriveContextProvider } from "@powerhousedao/reactor-browser/hooks/useDriveContext";
8
- import { type DocumentDriveDocument, addFolder, deleteNode, updateNode, generateNodesCopy, copyNode } from "document-drive";
9
5
  import { WagmiContext } from "@powerhousedao/design-system";
6
+ import {
7
+ AnalyticsProvider,
8
+ DriveContextProvider,
9
+ useAppConfig,
10
+ type DriveEditorProps,
11
+ } from "@powerhousedao/reactor-browser";
10
12
  import { DriveExplorer } from "./components/DriveExplorer.js";
11
- import { useCallback } from "react";
12
- import { generateId } from "document-model";
13
-
14
- export type IProps = DriveEditorProps<DocumentDriveDocument>;
15
-
16
- export function BaseEditor(props: IProps) {
17
- const { dispatch, context } = props;
18
-
19
- const onAddFolder = useCallback((name: string, parentFolder?: string) => {
20
- dispatch(addFolder({
21
- id: generateId(),
22
- name,
23
- parentFolder,
24
- }));
25
- }, [dispatch]);
26
-
27
- const onDeleteNode = useCallback((nodeId: string) => {
28
- dispatch(deleteNode({ id: nodeId }));
29
- }, [dispatch]);
30
-
31
- const renameNode = useCallback((nodeId: string, name: string) => {
32
- dispatch(updateNode({ id: nodeId, name }));
33
- }, [dispatch]);
34
-
35
- const onCopyNode = useCallback((nodeId: string, targetName: string, parentId?: string) => {
36
- const copyNodesInput = generateNodesCopy({
37
- srcId: nodeId,
38
- targetParentFolder: parentId,
39
- targetName,
40
- }, () => generateId(), props.document.state.global.nodes);
41
-
42
- const copyNodesAction = copyNodesInput.map(input => {
43
- return copyNode(input);
44
- });
45
-
46
- for (const copyNodeAction of copyNodesAction) {
47
- dispatch(copyNodeAction);
48
- }
49
- }, [dispatch, props.document.state.global.nodes]);
50
13
 
14
+ /**
15
+ * Base editor component that renders the drive explorer interface.
16
+ * Customize document opening behavior and drive-level actions here.
17
+ */
18
+ export function BaseEditor(props: DriveEditorProps) {
19
+ const { context, document } = props;
51
20
  return (
52
- <div
53
- className="new-drive-explorer"
54
- style={{ height: "100%" }}
55
- >
56
- <DriveExplorer
57
- driveId={props.document.header.id}
58
- nodes={props.document.state.global.nodes}
59
- onAddFolder={onAddFolder}
60
- onDeleteNode={onDeleteNode}
61
- renameNode={renameNode}
62
- onCopyNode={onCopyNode}
63
- context={context}
64
- />
21
+ <div className="new-drive-explorer" style={{ height: "100%" }}>
22
+ <DriveExplorer document={document} context={context} />
65
23
  </div>
66
24
  );
67
25
  }
68
26
 
69
- export default function Editor(props: IProps) {
27
+ /**
28
+ * Main editor entry point with required providers.
29
+ */
30
+ export default function Editor(props: DriveEditorProps) {
31
+ const appConfig = useAppConfig();
32
+ const analyticsDatabaseName = appConfig?.analyticsDatabaseName;
70
33
  return (
34
+ // Required context providers for drive functionality
71
35
  <DriveContextProvider value={props.context}>
72
36
  <WagmiContext>
73
- <AnalyticsProvider databaseName={props.context.analyticsDatabaseName}>
37
+ <AnalyticsProvider databaseName={analyticsDatabaseName}>
74
38
  <BaseEditor {...props} />
75
39
  </AnalyticsProvider>
76
40
  </WagmiContext>
@@ -0,0 +1,16 @@
1
+ export type Args = {
2
+ name: string;
3
+ rootDir: string;
4
+ appId?: string;
5
+ };
6
+ declare const _default: {
7
+ params: ({ args }: {
8
+ args: Args;
9
+ }) => {
10
+ rootDir: string;
11
+ name: string;
12
+ appId: string | undefined;
13
+ };
14
+ };
15
+ export default _default;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;;uBAGmB;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;;;;;;AADnC,wBAQE"}
@@ -3,14 +3,13 @@ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
3
  force: true
4
4
  ---
5
5
  import { type DriveEditorModule } from "@powerhousedao/reactor-browser";
6
- import { type DocumentDriveDocument } from "document-drive";
7
6
  import Editor from "./editor.js";
8
7
 
9
- export const module: DriveEditorModule<DocumentDriveDocument> = {
8
+ export const module: DriveEditorModule = {
10
9
  Component: Editor,
11
10
  documentTypes: ["powerhouse/document-drive"],
12
11
  config: {
13
- id: "<%= name %>",
12
+ id: "<%= appId || 'drive-editor-id' %>",
14
13
  disableExternalControls: true,
15
14
  documentToolbarEnabled: true,
16
15
  showSwitchboardLink: true,
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ params: ({ args }) => {
5
+ return {
6
+ rootDir: args.rootDir,
7
+ name: args.name,
8
+ appId: args.appId,
9
+ };
10
+ },
11
+ };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.ts"],"names":[],"mappings":";;AAMA,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAkB,EAAE,EAAE;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -8,7 +8,7 @@ import { type <%= documentTypesMap[type].name %>Document, actions } from "<%= do
8
8
  %><% }); _%>
9
9
  import { Button } from '@powerhousedao/design-system';
10
10
 
11
- export type IProps = <% if(!documentTypes.length){ %>EditorProps<PHDocument><% } else { %><% documentTypes.forEach((type, index) => { _%>EditorProps<<%= documentTypesMap[type].name %>Document%>%>><% if(index < documentTypes.length - 1){ %> | <% }%><% }); _%> <% } %>;
11
+ export type IProps = EditorProps;
12
12
 
13
13
  export default function Editor(props: IProps) {
14
14
  return (
@@ -4,6 +4,7 @@ export type Args = {
4
4
  documentModelsDir: string;
5
5
  documentTypes: string;
6
6
  documentTypesMap: string;
7
+ editorId?: string;
7
8
  };
8
9
  declare const _default: {
9
10
  params: ({ args }: {
@@ -14,6 +15,7 @@ declare const _default: {
14
15
  name: string;
15
16
  documentTypes: string[];
16
17
  documentTypesMap: JSON;
18
+ editorId: string | undefined;
17
19
  };
18
20
  };
19
21
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;;uBAGmB;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;;;;;0BAQ0B,IAAI;;;AATjE,wBAYE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;;uBAGmB;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;;;;;0BAQ0B,IAAI;;;;AATjE,wBAaE"}
@@ -4,15 +4,12 @@ force: true
4
4
  ---
5
5
  import type { EditorModule } from 'document-model';
6
6
  import Editor from './editor.js';
7
- <% documentTypes.forEach(type => { _%>
8
- import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>/index.js";
9
- %><% }); _%>
10
7
 
11
- export const module: <% if(!documentTypes.length){ %>EditorModule<% } else { %><% documentTypes.forEach((type, index) => { _%>EditorModule<<%= documentTypesMap[type].name %>Document%>%>> <% if(index < documentTypes.length - 1){ %>| <% }%><% }); _%> <% } %>= {
8
+ export const module: EditorModule = {
12
9
  Component: Editor,
13
10
  documentTypes: [<% if(!documentTypes.length){ %>'*'<% } else { %><% documentTypes.forEach(type => { _%>"<%= type %>", %><% }); _%> <% } %>],
14
11
  config: {
15
- id: 'editor-id',
12
+ id: '<%= editorId || 'editor-id' %>',
16
13
  disableExternalControls: true,
17
14
  documentToolbarEnabled: true,
18
15
  showSwitchboardLink: true,
@@ -10,6 +10,7 @@ exports.default = {
10
10
  .split(",")
11
11
  .filter((type) => type !== ""),
12
12
  documentTypesMap: JSON.parse(args.documentTypesMap),
13
+ editorId: args.editorId,
13
14
  };
14
15
  },
15
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":";;AAQA,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAkB,EAAE,EAAE;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;iBAC9B,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAS;SAC5D,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-editor/index.ts"],"names":[],"mappings":";;AASA,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAkB,EAAE,EAAE;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;iBAC9B,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAS;YAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -2,11 +2,12 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/factory.ts"
3
3
  force: true
4
4
  ---
5
- import { type ProcessorRecord } from "document-drive/processors/types";
5
+ import { type ProcessorRecord } from "document-drive";
6
6
  import { type IProcessorHostModule } from "document-drive/processors/types";
7
+ import { type PHDocumentHeader } from "document-model";
7
8
  import { <%= pascalName %>Processor } from "./index.js";
8
9
 
9
- export const <%= h.changeCase.pascal(name) %>ProcessorFactory = (module: IProcessorHostModule) => (driveId: string): ProcessorRecord[] => {
10
+ export const <%= h.changeCase.pascal(name) %>ProcessorFactory = (module: IProcessorHostModule) => (driveHeader: PHDocumentHeader): ProcessorRecord[] => {
10
11
  return [
11
12
  {
12
13
  processor: new <%= pascalName %>Processor(module.analyticsStore),
@@ -2,13 +2,8 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
3
  force: true
4
4
  ---
5
- import type { PHDocument } from "document-model";
6
5
  import { AnalyticsPath, AnalyticsSeriesInput, IAnalyticsStore } from "@powerhousedao/reactor-api";
7
- import { InternalTransmitterUpdate, IProcessor } from "document-drive";
8
-
9
- <% documentTypes.forEach(type => { _%>
10
- import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>/index.js";
11
- %><% }); _%>
6
+ import { type InternalTransmitterUpdate, type IProcessor } from "document-drive";
12
7
 
13
8
  export class <%= pascalName %>Processor implements IProcessor {
14
9
  private readonly NAMESPACE = "<%= pascalName %>";
@@ -19,7 +14,7 @@ export class <%= pascalName %>Processor implements IProcessor {
19
14
  //
20
15
  }
21
16
 
22
- async onStrands<TDocument extends PHDocument>(strands: InternalTransmitterUpdate<TDocument>[]): Promise<void> {
17
+ async onStrands(strands: InternalTransmitterUpdate[]): Promise<void> {
23
18
  if (strands.length === 0) {
24
19
  return;
25
20
  }
@@ -7,24 +7,26 @@ unless_exists: true
7
7
  * Auto-generated by codegen - DO NOT EDIT MANUALLY
8
8
  */
9
9
 
10
- import { type ProcessorRecord } from "document-drive/processors/types";
10
+ import { type ProcessorRecord, type ProcessorFactory } from "document-drive/processors/types";
11
11
  import { type IProcessorHostModule } from "document-drive/processors/types";
12
+ import { type PHDocumentHeader } from "document-model";
12
13
 
13
14
  // Import processor factories here as they are generated
14
15
 
15
16
  export const processorFactory = (module: IProcessorHostModule) => {
16
17
  // Initialize all processor factories once with the module
17
- const factories: Array<(driveId: string) => ProcessorRecord[]> = [];
18
+ const factories: Array<ProcessorFactory> = [];
18
19
 
19
20
  // Add processors here as they are generated
20
21
 
21
22
  // Return the inner function that will be called for each drive
22
- return (driveId: string): ProcessorRecord[] => {
23
+ return async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {
23
24
  const processors: ProcessorRecord[] = [];
24
25
 
25
- // Call each cached factory with the driveId
26
+ // Call each cached factory with the driveHeader
26
27
  for (const factory of factories) {
27
- processors.push(...factory(driveId));
28
+ const factoryProcessors = await factory(driveHeader);
29
+ processors.push(...factoryProcessors);
28
30
  }
29
31
 
30
32
  return processors;
@@ -2,6 +2,6 @@
2
2
  inject: true
3
3
  to: "<%= rootDir %>/factory.ts"
4
4
  after: " // Add processors here as they are generated"
5
- skip_if: "<%=h.changeCase.pascal(name) %>ProcessorFactory(module)"
5
+ skip_if: "<%= h.changeCase.pascal(name) %>ProcessorFactory"
6
6
  ---
7
7
  factories.push(<%= h.changeCase.pascal(name) %>ProcessorFactory(module));
@@ -2,6 +2,6 @@
2
2
  inject: true
3
3
  to: "<%= rootDir %>/factory.ts"
4
4
  after: "// Import processor factories here as they are generated"
5
- skip_if: "{ <%= h.changeCase.camel(name) %>ProcessorFactory }"
5
+ skip_if: "{ <%= h.changeCase.pascal(name) %>ProcessorFactory }"
6
6
  ---
7
7
  import { <%= h.changeCase.pascal(name) %>ProcessorFactory } from "./<%= h.changeCase.param(name) %>/factory.js";
@@ -9,11 +9,12 @@ import {
9
9
  import {
10
10
  type RelationalDbProcessorFilter,
11
11
  } from "document-drive/processors/relational";
12
+ import { type PHDocumentHeader } from "document-model";
12
13
  import { <%= pascalName %>Processor } from "./index.js";
13
14
 
14
- export const <%= h.changeCase.camel(name) %>ProcessorFactory = (module: IProcessorHostModule) => async (driveId: string): Promise<ProcessorRecord[]> => {
15
+ export const <%= h.changeCase.camel(name) %>ProcessorFactory = (module: IProcessorHostModule) => async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {
15
16
  // Create a namespace for the processor and the provided drive id
16
- const namespace = <%= pascalName %>Processor.getNamespace(driveId);
17
+ const namespace = <%= pascalName %>Processor.getNamespace(driveHeader.id);
17
18
 
18
19
  // Create a namespaced db for the processor
19
20
  const store = await module.relationalDb.createNamespace<<%= pascalName %>Processor>(
@@ -5,15 +5,9 @@ force: true
5
5
  import { type IRelationalDb } from "document-drive/processors/types";
6
6
  import { RelationalDbProcessor } from "document-drive/processors/relational";
7
7
  import { type InternalTransmitterUpdate } from "document-drive/server/listener/transmitter/internal";
8
- <% documentTypes.forEach(type => { _%>
9
- import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>/index.js";
10
- %><% }); _%>
11
- <% if(documentTypes.length === 0) { %>import { type PHDocument } from "document-model";<% } %>
12
8
  import { up } from "./migrations.js";
13
9
  import { type DB } from "./schema.js";
14
10
 
15
- type DocumentType = <% if(documentTypes.length) { %><%= documentTypes.map(type => `${documentTypesMap[type].name}Document`).join(" | ") %> <% } else { %>PHDocument<% } %>;
16
-
17
11
  export class <%= pascalName %>Processor extends RelationalDbProcessor<DB> {
18
12
  static override getNamespace(driveId: string): string {
19
13
  // Default namespace: `${this.name}_${driveId.replaceAll("-", "_")}`
@@ -25,7 +19,7 @@ export class <%= pascalName %>Processor extends RelationalDbProcessor<DB> {
25
19
  }
26
20
 
27
21
  override async onStrands(
28
- strands: InternalTransmitterUpdate<DocumentType>[],
22
+ strands: InternalTransmitterUpdate[],
29
23
  ): Promise<void> {
30
24
  if (strands.length === 0) {
31
25
  return;
@@ -40,7 +34,7 @@ export class <%= pascalName %>Processor extends RelationalDbProcessor<DB> {
40
34
  await this.relationalDb
41
35
  .insertInto("todo")
42
36
  .values({
43
- task: `${strand.documentId}-${operation.index}: ${operation.type}`,
37
+ task: `${strand.documentId}-${operation.index}: ${operation.action.type}`,
44
38
  status: true,
45
39
  })
46
40
  .onConflict((oc) => oc.column("task").doNothing())
@@ -7,25 +7,24 @@ unless_exists: true
7
7
  * Auto-generated by codegen - DO NOT EDIT MANUALLY
8
8
  */
9
9
 
10
- import { type ProcessorRecord, type IProcessorHostModule } from "document-drive/processors/types";
10
+ import { type ProcessorRecord, type IProcessorHostModule, type ProcessorFactory } from "document-drive/processors/types";
11
+ import { type PHDocumentHeader } from "document-model";
11
12
 
12
- // Import other processor factories here as they are generated
13
+ // Import processor factories here as they are generated
13
14
 
14
15
  export const processorFactory = (module: IProcessorHostModule) => {
15
16
  // Initialize all processor factories once with the module
16
- const factories: Array<(driveId: string) => Promise<ProcessorRecord[]>> = [];
17
+ const factories: Array<ProcessorFactory> = [];
17
18
 
18
- // Add all processor factories
19
-
20
- // Add other processors here as they are generated
19
+ // Add processors here as they are generated
21
20
 
22
21
  // Return the inner function that will be called for each drive
23
- return async (driveId: string): Promise<ProcessorRecord[]> => {
22
+ return async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {
24
23
  const processors: ProcessorRecord[] = [];
25
24
 
26
- // Call each cached factory with the driveId
25
+ // Call each cached factory with the driveHeader
27
26
  for (const factory of factories) {
28
- const factoryProcessors = await factory(driveId);
27
+ const factoryProcessors = await factory(driveHeader);
29
28
  processors.push(...factoryProcessors);
30
29
  }
31
30
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  inject: true
3
3
  to: "<%= rootDir %>/factory.ts"
4
- after: " // Add other processors here as they are generated"
5
- skip_if: "<%=h.changeCase.camel(name) %>ProcessorFactory(module)"
4
+ after: " // Add processors here as they are generated"
5
+ skip_if: "<%= h.changeCase.camel(name) %>ProcessorFactory"
6
6
  ---
7
7
  factories.push(<%= h.changeCase.camel(name) %>ProcessorFactory(module));
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  inject: true
3
3
  to: "<%= rootDir %>/factory.ts"
4
- after: "// Import other processor factories here as they are generated"
4
+ after: "// Import processor factories here as they are generated"
5
5
  skip_if: "{ <%= h.changeCase.camel(name) %>ProcessorFactory }"
6
6
  ---
7
7
  import { <%= h.changeCase.camel(name) %>ProcessorFactory } from "./<%= h.changeCase.param(name) %>/factory.js";
@@ -2,4 +2,12 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/schema.ts"
3
3
  force: true
4
4
  ---
5
- export interface DB {}
5
+ export interface Todo {
6
+ status: boolean | null;
7
+ task: string;
8
+ }
9
+
10
+ export interface DB {
11
+ todo: Todo;
12
+ }
13
+
@@ -3,46 +3,15 @@ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
3
  force: true
4
4
  ---
5
5
  import { Subgraph } from "@powerhousedao/reactor-api";
6
- <% if (loadFromFile) { %>
6
+ import type { DocumentNode } from "graphql";
7
7
  import { schema } from "./schema.js";
8
8
  import { getResolvers } from "./resolvers.js";
9
- <% } else { %>
10
- import { gql } from "graphql-tag";
11
- <% } %>
12
9
 
13
10
  export class <%= pascalName %>Subgraph extends Subgraph {
14
11
  name = "<%= h.changeCase.param(name) %>";
15
- <% if (loadFromFile) { %>
16
- typeDefs = schema;
12
+ typeDefs: DocumentNode = schema;
17
13
  resolvers = getResolvers(this);
18
14
  additionalContextFields = {};
19
15
  async onSetup() {}
20
16
  async onDisconnect() {}
21
-
22
- <% } else { %>
23
-
24
- resolvers = {
25
- Query: {
26
- example: {
27
- resolve: async (parent, args, context, info) => {
28
- return "example";
29
- }
30
- }
31
- }
32
- }
33
-
34
- typeDefs = gql`
35
- type Query {
36
- example(id: ID!): String
37
- }
38
- `;
39
-
40
- additionalContextFields = {
41
- example: "test"
42
- }
43
-
44
- async onSetup() {}
45
-
46
- async onDisconnect() {}
47
- <% } %>
48
17
  }
@@ -5,21 +5,23 @@ export declare function run(args: string[], { watch, skipFormat, verbose }?: {
5
5
  skipFormat?: boolean | undefined;
6
6
  verbose?: boolean | undefined;
7
7
  }): Promise<import("hygen/dist/types.js").RunnerResult>;
8
- export declare function generateAll(dir: string, { watch, skipFormat, verbose }?: {
8
+ export declare function generateAll(dir: string, { watch, skipFormat, verbose, force }?: {
9
9
  watch?: boolean | undefined;
10
10
  skipFormat?: boolean | undefined;
11
11
  verbose?: boolean | undefined;
12
+ force?: boolean | undefined;
12
13
  }): Promise<void>;
13
- export declare function generateDocumentModel(documentModelState: DocumentModelState, dir: string, { watch, skipFormat, verbose, generateReducers, }?: {
14
+ export declare function generateDocumentModel(documentModelState: DocumentModelState, dir: string, { watch, skipFormat, verbose, generateReducers, force, }?: {
14
15
  watch?: boolean | undefined;
15
16
  skipFormat?: boolean | undefined;
16
17
  verbose?: boolean | undefined;
17
18
  generateReducers?: boolean | undefined;
19
+ force?: boolean | undefined;
18
20
  }): Promise<void>;
19
21
  export declare function generateEditor(name: string, documentTypes: string[], documentTypesMap: DocumentTypesMap, dir: string, documentModelsDir: string, { skipFormat, verbose }?: {
20
22
  skipFormat?: boolean | undefined;
21
23
  verbose?: boolean | undefined;
22
- }): Promise<void>;
24
+ }, editorId?: string): Promise<void>;
23
25
  export declare function generateProcessor(name: string, documentTypes: string[], documentTypesMap: DocumentTypesMap, outDir: string, documentModelsDir: string, type: "analytics" | "relationalDb", { skipFormat, verbose }?: {
24
26
  skipFormat?: boolean | undefined;
25
27
  verbose?: boolean | undefined;
@@ -34,5 +36,5 @@ export declare function generateImportScript(name: string, dir: string, { skipFo
34
36
  }): Promise<void>;
35
37
  export declare function generateDriveEditor(name: string, dir: string, { skipFormat }?: {
36
38
  skipFormat?: boolean | undefined;
37
- }): Promise<void>;
39
+ }, appId?: string): Promise<void>;
38
40
  //# sourceMappingURL=hygen.d.ts.map