@powerhousedao/codegen 4.1.0-dev.7 → 4.1.0-dev.71

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 (161) hide show
  1. package/README.md +0 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/index.js +10 -0
  7. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/resolvers.esm.t +17 -0
  8. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/schema.esm.t +16 -0
  9. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +2 -2
  10. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +8 -2
  11. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +69 -54
  12. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/ph-factories.esm.t +93 -0
  13. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +9 -4
  14. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +6 -7
  15. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +20 -8
  16. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +19 -26
  17. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +1 -1
  18. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +2 -2
  19. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +6 -10
  20. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +52 -27
  21. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.js +21 -20
  22. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +64 -51
  23. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +3 -3
  24. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +48 -26
  25. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +213 -218
  26. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +96 -67
  27. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +2 -73
  28. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.esm.t +8 -7
  29. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js +12 -0
  30. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +87 -20
  31. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/hooks.esm.t +16 -0
  32. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +4 -9
  33. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +28 -15
  34. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js +8 -10
  35. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/factory.esm.t +5 -4
  36. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +5 -9
  37. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js +13 -15
  38. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +8 -6
  39. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_call.esm.t +1 -1
  40. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_import.esm.t +1 -1
  41. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/factory.esm.t +6 -5
  42. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.esm.t +7 -9
  43. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.js +13 -15
  44. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.esm.t +8 -9
  45. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_call.esm.t +2 -2
  46. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/lib.inject_import.esm.t +1 -1
  47. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/migrations.esm.t +2 -2
  48. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/schema.esm.t +10 -2
  49. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +5 -36
  50. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js +9 -11
  51. package/dist/src/codegen/generate.d.ts +30 -0
  52. package/dist/src/codegen/generate.d.ts.map +1 -0
  53. package/dist/src/codegen/generate.js +199 -0
  54. package/dist/src/codegen/generate.js.map +1 -0
  55. package/dist/src/codegen/graphql.d.ts +2 -2
  56. package/dist/src/codegen/graphql.d.ts.map +1 -1
  57. package/dist/src/codegen/graphql.js +1 -1
  58. package/dist/src/codegen/graphql.js.map +1 -1
  59. package/dist/src/codegen/hygen.d.ts +15 -10
  60. package/dist/src/codegen/hygen.d.ts.map +1 -1
  61. package/dist/src/codegen/hygen.js +47 -17
  62. package/dist/src/codegen/hygen.js.map +1 -1
  63. package/dist/src/codegen/index.d.ts +6 -32
  64. package/dist/src/codegen/index.d.ts.map +1 -1
  65. package/dist/src/codegen/index.js +6 -182
  66. package/dist/src/codegen/index.js.map +1 -1
  67. package/dist/src/codegen/types.d.ts +9 -0
  68. package/dist/src/codegen/types.d.ts.map +1 -0
  69. package/dist/src/codegen/types.js +2 -0
  70. package/dist/src/codegen/types.js.map +1 -0
  71. package/dist/src/codegen/utils.d.ts +5 -2
  72. package/dist/src/codegen/utils.d.ts.map +1 -1
  73. package/dist/src/codegen/utils.js +42 -4
  74. package/dist/src/codegen/utils.js.map +1 -1
  75. package/dist/src/create-lib/create-project.d.ts.map +1 -1
  76. package/dist/src/create-lib/create-project.js +17 -2
  77. package/dist/src/create-lib/create-project.js.map +1 -1
  78. package/dist/src/index.d.ts +5 -0
  79. package/dist/src/index.d.ts.map +1 -0
  80. package/dist/src/index.js +5 -0
  81. package/dist/src/index.js.map +1 -0
  82. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts +2 -3
  83. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts.map +1 -1
  84. package/dist/src/ts-morph-generator/core/FileGenerator.js.map +1 -1
  85. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts +18 -8
  86. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts.map +1 -1
  87. package/dist/src/ts-morph-generator/core/ReducerGenerator.d.ts +12 -0
  88. package/dist/src/ts-morph-generator/core/ReducerGenerator.d.ts.map +1 -0
  89. package/dist/src/ts-morph-generator/core/ReducerGenerator.js +140 -0
  90. package/dist/src/ts-morph-generator/core/ReducerGenerator.js.map +1 -0
  91. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts +4 -3
  92. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts.map +1 -1
  93. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js +11 -10
  94. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js.map +1 -1
  95. package/dist/src/ts-morph-generator/index.d.ts +2 -2
  96. package/dist/src/ts-morph-generator/index.d.ts.map +1 -1
  97. package/dist/src/ts-morph-generator/index.js +2 -2
  98. package/dist/src/ts-morph-generator/index.js.map +1 -1
  99. package/dist/src/ts-morph-generator/utilities/DirectoryManager.d.ts +2 -2
  100. package/dist/src/ts-morph-generator/utilities/DirectoryManager.d.ts.map +1 -1
  101. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts +1 -1
  102. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts.map +1 -1
  103. package/dist/src/utils/index.d.ts +0 -1
  104. package/dist/src/utils/index.d.ts.map +1 -1
  105. package/dist/src/utils/index.js +0 -1
  106. package/dist/src/utils/index.js.map +1 -1
  107. package/dist/src/utils/validation.d.ts +6 -6
  108. package/dist/src/utils/validation.d.ts.map +1 -1
  109. package/dist/src/utils/validation.js +2 -2
  110. package/dist/src/utils/validation.js.map +1 -1
  111. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  112. package/package.json +23 -25
  113. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts +0 -25
  114. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.d.ts.map +0 -1
  115. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js.map +0 -1
  116. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/object.esm.t +0 -49
  117. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +0 -23
  118. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +0 -1
  119. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +0 -1
  120. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/object.esm.t +0 -37
  121. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.d.ts +0 -22
  122. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.d.ts.map +0 -1
  123. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.js.map +0 -1
  124. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +0 -124
  125. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FileItemsGrid.esm.t +0 -44
  126. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderItemsGrid.esm.t +0 -96
  127. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useSelectedFolderChildren.esm.t +0 -35
  128. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useTransformedNodes.esm.t +0 -35
  129. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/types/css.d.esm.t +0 -8
  130. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts +0 -20
  131. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.d.ts.map +0 -1
  132. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js.map +0 -1
  133. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts +0 -14
  134. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.d.ts.map +0 -1
  135. package/dist/src/codegen/.hygen/templates/powerhouse/generate-import-script/index.js.map +0 -1
  136. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts +0 -20
  137. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.d.ts.map +0 -1
  138. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.js.map +0 -1
  139. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.d.ts +0 -20
  140. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.d.ts.map +0 -1
  141. package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-relationalDb/index.js.map +0 -1
  142. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts +0 -16
  143. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.d.ts.map +0 -1
  144. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.js.map +0 -1
  145. package/dist/src/ts-morph-generator/core/index.d.ts +0 -4
  146. package/dist/src/ts-morph-generator/core/index.d.ts.map +0 -1
  147. package/dist/src/ts-morph-generator/core/index.js +0 -4
  148. package/dist/src/ts-morph-generator/core/index.js.map +0 -1
  149. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts +0 -9
  150. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts.map +0 -1
  151. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js +0 -69
  152. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js.map +0 -1
  153. package/dist/src/ts-morph-generator/file-generators/index.d.ts +0 -2
  154. package/dist/src/ts-morph-generator/file-generators/index.d.ts.map +0 -1
  155. package/dist/src/ts-morph-generator/file-generators/index.js +0 -2
  156. package/dist/src/ts-morph-generator/file-generators/index.js.map +0 -1
  157. package/dist/src/utils/package-manager.d.ts +0 -5
  158. package/dist/src/utils/package-manager.d.ts.map +0 -1
  159. package/dist/src/utils/package-manager.js +0 -17
  160. package/dist/src/utils/package-manager.js.map +0 -1
  161. package/dist/tsconfig.hygen.tsbuildinfo +0 -1
@@ -2,78 +2,7 @@
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
- import { WagmiContext } from "@powerhousedao/design-system";
5
+ import { withDropZone } from "@powerhousedao/design-system";
10
6
  import { DriveExplorer } from "./components/DriveExplorer.js";
11
- import { useCallback } from "react";
12
- import { generateId } from "document-model";
13
7
 
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
-
51
- 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
- />
65
- </div>
66
- );
67
- }
68
-
69
- export default function Editor(props: IProps) {
70
- return (
71
- <DriveContextProvider value={props.context}>
72
- <WagmiContext>
73
- <AnalyticsProvider databaseName={props.context.analyticsDatabaseName}>
74
- <BaseEditor {...props} />
75
- </AnalyticsProvider>
76
- </WagmiContext>
77
- </DriveContextProvider>
78
- );
79
- }
8
+ export const Editor = withDropZone(DriveExplorer);
@@ -3,18 +3,19 @@ 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
- import Editor from "./editor.js";
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
- showSwitchboardLink: true,
15
+ showSwitchboardLink: true,<%_ if (dragAndDropEnabled) { _%>
16
+ documentTypes: [<%- (dragAndDropDocumentTypes ? JSON.parse(dragAndDropDocumentTypes) : []).map(type => JSON.stringify(type)).join(', ') %>],
17
+ dragAndDrop: {
18
+ enabled: true,
19
+ },<%_ } _%>
17
20
  },
18
21
  };
19
-
20
- export default module;
@@ -0,0 +1,12 @@
1
+ // @ts-check
2
+ module.exports = {
3
+ params: ({ args }) => {
4
+ return {
5
+ rootDir: args.rootDir,
6
+ name: args.name,
7
+ appId: args.appId,
8
+ dragAndDropEnabled: args.dragAndDropEnabled,
9
+ dragAndDropDocumentTypes: args.dragAndDropDocumentTypes,
10
+ };
11
+ },
12
+ };
@@ -2,25 +2,92 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/editor.tsx"
3
3
  unless_exists: true
4
4
  ---
5
- <% if(!documentTypes.length){ %>import type { EditorProps, PHDocument } from 'document-model';<% } else { %>import type { EditorProps } from 'document-model';<% } %>
6
- <% documentTypes.forEach(type => { _%>
7
- import { type <%= documentTypesMap[type].name %>Document, actions } from "<%= documentTypesMap[type].importPath %>/index.js";
8
- %><% }); _%>
9
- import { Button } from '@powerhousedao/design-system';
5
+ import {
6
+ Button,
7
+ Form,
8
+ FormLabel,
9
+ StringField,
10
+ } from "@powerhousedao/document-engineering";
11
+ <% if(!documentType){ %>import { useSelectedDocument } from "@powerhousedao/reactor-browser";<% } else { %>import { useSelected<%= documentType.name %>Document %>} from "../hooks/use<%= documentType.name %>Document%>.js";<% } %>
12
+ import { setName } from "document-model";<% if(documentType) { %>
13
+ import { actions } from "<%= documentType.importPath %>";<% } %>
10
14
 
11
- export type IProps = <% if(!documentTypes.length){ %>EditorProps<PHDocument><% } else { %><% documentTypes.forEach((type, index) => { _%>EditorProps<<%= documentTypesMap[type].name %>Document%>%>><% if(index < documentTypes.length - 1){ %> | <% }%><% }); _%> <% } %>;
15
+ export function Editor() {
16
+ const [document, dispatch] = <% if(documentType) { %>useSelected<%= documentType.name %>Document()<% } else { %>useSelectedDocument()<% } %>;
17
+ <% if(!documentType){ %>
18
+ if (!document) {
19
+ return null;
20
+ }
21
+ <% } %>
22
+ function handleSetName(values: { name: string }) {
23
+ if (values.name) {
24
+ dispatch(setName(values.name));
25
+ }
26
+ }
12
27
 
13
- export default function Editor(props: IProps) {
14
- return (
15
- <div>
16
- <div className="html-defaults-container">
17
- <h1>This h1 will be styled</h1>
18
- <p>This paragraph will also be styled.</p>
19
- <button>Styled Button</button>
20
- </div>
21
- <div>
22
- <h1>This h1 outside the container will NOT be styled by html-defaults.css</h1>
23
- </div>
24
- </div>
25
- );
26
- };
28
+ return (
29
+ <div className="ph-default-styles py-10 text-center">
30
+ <div className="inline-flex flex-col gap-10 text-start">
31
+
32
+ {/* Edit document name form */}
33
+ <section className="flex justify-between">
34
+ <h1 className="text-start">{document.header.name}</h1>
35
+ <div className="flex flex-col space-y-2">
36
+ <Form
37
+ onSubmit={handleSetName}
38
+ defaultValues={{ name: document.header.name }}
39
+ className="flex flex-col gap-3 pt-2"
40
+ >
41
+ <div className="flex items-end gap-3">
42
+ <div>
43
+ <FormLabel htmlFor="name">
44
+ <b className="mb-1">Change document name</b>
45
+ </FormLabel>
46
+ <StringField
47
+ name="name"
48
+ placeholder="Enter document name"
49
+ className="mt-1"
50
+ />
51
+ </div>
52
+ <Button type="submit">Edit</Button>
53
+ </div>
54
+ </Form>
55
+ </div>
56
+ </section>
57
+
58
+ {/* Document metadata */}
59
+ <section>
60
+ <ul className="grid grid-cols-2 gap-x-4 gap-y-1 text-gray-700">
61
+ <li>
62
+ <b className="mr-1">Id:</b>
63
+ {document.header.id}
64
+ </li>
65
+ <li>
66
+ <b className="mr-1">Created:</b>
67
+ {new Date(document.header.createdAtUtcIso).toLocaleString()}
68
+ </li>
69
+ <li>
70
+ <b className="mr-1">Type:</b>
71
+ {document.header.documentType}
72
+ </li>
73
+ <li>
74
+ <b className="mr-1">Last Modified:</b>
75
+ {new Date(document.header.lastModifiedAtUtcIso).toLocaleString()}
76
+ </li>
77
+ </ul>
78
+ </section>
79
+
80
+ {/* Document state */}
81
+ <section className="inline-block">
82
+ <h2 className="mb-4">Document state</h2>
83
+ <textarea
84
+ rows={10}
85
+ readOnly
86
+ value={JSON.stringify(document.state, null, 2)}
87
+ className="font-mono"
88
+ ></textarea>
89
+ </section>
90
+ </div>
91
+ </div>
92
+ );
93
+ }
@@ -0,0 +1,16 @@
1
+ ---
2
+ to: "<%= documentType ? `${rootDir}/hooks/use${h.changeCase.pascal(documentType.name)}Document.ts` : null %>"
3
+ unless_exists: true
4
+ ---
5
+ <% if (documentType) { %>
6
+ import { useDocumentOfType, useSelectedDocumentOfType } from "@powerhousedao/reactor-browser";
7
+ import type { <%= documentType.name %>Action, <%= documentType.name %>Document } from "<%= documentType.importPath %>";
8
+
9
+ export function use<%= documentType.name %>Document(documentId: string | null | undefined) {
10
+ return useDocumentOfType<<%= documentType.name %>Document, <%= documentType.name %>Action>(documentId, "<%= documentType.type %>");
11
+ }
12
+
13
+ export function useSelected<%= documentType.name %>Document() {
14
+ return useSelectedDocumentOfType<<%= documentType.name %>Document, <%= documentType.name %>Action>("<%= documentType.type %>");
15
+ }
16
+ <% } %>
@@ -3,20 +3,15 @@ to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
3
  force: true
4
4
  ---
5
5
  import type { EditorModule } from 'document-model';
6
- import Editor from './editor.js';
7
- <% documentTypes.forEach(type => { _%>
8
- import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>/index.js";
9
- %><% }); _%>
6
+ import { Editor } from './editor.js';
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,
19
16
  },
20
- };
21
-
22
- export default module;
17
+ };
@@ -1,16 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- params: ({ args }) => {
5
- return {
6
- rootDir: args.rootDir,
7
- documentModelsDir: args.documentModelsDir,
8
- name: args.name,
9
- documentTypes: args.documentTypes
10
- .split(",")
11
- .filter((type) => type !== ""),
12
- documentTypesMap: JSON.parse(args.documentTypesMap),
13
- };
14
- },
1
+ // @ts-check
2
+ module.exports = {
3
+ params: ({ args }) => {
4
+ const documentTypes = args.documentTypes
5
+ .split(",")
6
+ .map((type) => type.trim())
7
+ .filter((type) => type !== "");
8
+ const documentTypesMap = JSON.parse(args.documentTypesMap);
9
+
10
+ // if this editor is for a single document type, then the boilerplate will be customized to it
11
+ const singleDocumentType =
12
+ documentTypes.length === 1 ? documentTypes[0] : undefined;
13
+ const documentType = singleDocumentType
14
+ ? { ...documentTypesMap[singleDocumentType], type: singleDocumentType }
15
+ : undefined;
16
+
17
+ return {
18
+ rootDir: args.rootDir,
19
+ documentModelsDir: args.documentModelsDir,
20
+ name: args.name,
21
+ documentTypes: args.documentTypes
22
+ .split(",")
23
+ .filter((type) => type !== ""),
24
+ documentTypesMap,
25
+ editorId: args.editorId,
26
+ documentType,
27
+ };
28
+ },
15
29
  };
16
- //# sourceMappingURL=index.js.map
@@ -1,11 +1,9 @@
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
- };
9
- },
1
+ // @ts-check
2
+ module.exports = {
3
+ params: ({ args }) => {
4
+ return {
5
+ rootDir: args.rootDir,
6
+ name: args.name,
7
+ };
8
+ },
10
9
  };
11
- //# sourceMappingURL=index.js.map
@@ -1,12 +1,13 @@
1
1
  ---
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/factory.ts"
3
- force: true
3
+ unless_exists: true
4
4
  ---
5
- import { type ProcessorRecord } from "document-drive/processors/types";
6
- import { type IProcessorHostModule } from "document-drive/processors/types";
5
+ import { type ProcessorRecord } from "document-drive";
6
+ import { type IProcessorHostModule } from "document-drive";
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),
@@ -1,14 +1,10 @@
1
1
  ---
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
- force: true
3
+ unless_exists: true
4
4
  ---
5
- import type { PHDocument } from "document-model";
6
- 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
- %><% }); _%>
5
+ import type { AnalyticsSeriesInput, IAnalyticsStore } from "@powerhousedao/analytics-engine-core";
6
+ import { AnalyticsPath } from "@powerhousedao/analytics-engine-core";
7
+ import type { InternalTransmitterUpdate, IProcessor } from "document-drive";
12
8
 
13
9
  export class <%= pascalName %>Processor implements IProcessor {
14
10
  private readonly NAMESPACE = "<%= pascalName %>";
@@ -19,7 +15,7 @@ export class <%= pascalName %>Processor implements IProcessor {
19
15
  //
20
16
  }
21
17
 
22
- async onStrands<TDocument extends PHDocument>(strands: InternalTransmitterUpdate<TDocument>[]): Promise<void> {
18
+ async onStrands(strands: InternalTransmitterUpdate[]): Promise<void> {
23
19
  if (strands.length === 0) {
24
20
  return;
25
21
  }
@@ -1,16 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- params: ({ args }) => {
5
- return {
6
- rootDir: args.rootDir,
7
- documentModelsDir: args.documentModelsDir,
8
- name: args.name,
9
- documentTypes: args.documentTypes
10
- .split(",")
11
- .filter((type) => type !== ""),
12
- documentTypesMap: JSON.parse(args.documentTypesMap),
13
- };
14
- },
1
+ // @ts-check
2
+ module.exports = {
3
+ params: ({ args }) => {
4
+ return {
5
+ rootDir: args.rootDir,
6
+ documentModelsDir: args.documentModelsDir,
7
+ name: args.name,
8
+ documentTypes: args.documentTypes
9
+ .split(",")
10
+ .filter((type) => type !== ""),
11
+ documentTypesMap: JSON.parse(args.documentTypesMap),
12
+ };
13
+ },
15
14
  };
16
- //# sourceMappingURL=index.js.map
@@ -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";
11
- import { type IProcessorHostModule } from "document-drive/processors/types";
10
+ import { type ProcessorRecord, type ProcessorFactory } from "document-drive";
11
+ import { type IProcessorHostModule } from "document-drive";
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";
@@ -1,19 +1,20 @@
1
1
  ---
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/factory.ts"
3
- force: true
3
+ unless_exists: true
4
4
  ---
5
5
  import {
6
6
  type ProcessorRecord,
7
7
  type IProcessorHostModule
8
- } from "document-drive/processors/types";
8
+ } from "document-drive";
9
9
  import {
10
10
  type RelationalDbProcessorFilter,
11
- } from "document-drive/processors/relational";
11
+ } from "document-drive";
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>(
@@ -1,19 +1,17 @@
1
1
  ---
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
3
- force: true
3
+ unless_exists: true
4
4
  ---
5
- import { type IRelationalDb } from "document-drive/processors/types";
6
- import { RelationalDbProcessor } from "document-drive/processors/relational";
7
- import { type InternalTransmitterUpdate } from "document-drive/server/listener/transmitter/internal";
5
+ import { type IRelationalDb } from "document-drive";
6
+ import { RelationalDbProcessor } from "document-drive";
7
+ import { type InternalTransmitterUpdate } from "document-drive";
8
8
  <% documentTypes.forEach(type => { _%>
9
- import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>/index.js";
9
+ import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>";
10
10
  %><% }); _%>
11
11
  <% if(documentTypes.length === 0) { %>import { type PHDocument } from "document-model";<% } %>
12
12
  import { up } from "./migrations.js";
13
13
  import { type DB } from "./schema.js";
14
14
 
15
- type DocumentType = <% if(documentTypes.length) { %><%= documentTypes.map(type => `${documentTypesMap[type].name}Document`).join(" | ") %> <% } else { %>PHDocument<% } %>;
16
-
17
15
  export class <%= pascalName %>Processor extends RelationalDbProcessor<DB> {
18
16
  static override getNamespace(driveId: string): string {
19
17
  // Default namespace: `${this.name}_${driveId.replaceAll("-", "_")}`
@@ -25,7 +23,7 @@ export class <%= pascalName %>Processor extends RelationalDbProcessor<DB> {
25
23
  }
26
24
 
27
25
  override async onStrands(
28
- strands: InternalTransmitterUpdate<DocumentType>[],
26
+ strands: InternalTransmitterUpdate[],
29
27
  ): Promise<void> {
30
28
  if (strands.length === 0) {
31
29
  return;
@@ -40,7 +38,7 @@ export class <%= pascalName %>Processor extends RelationalDbProcessor<DB> {
40
38
  await this.relationalDb
41
39
  .insertInto("todo")
42
40
  .values({
43
- task: `${strand.documentId}-${operation.index}: ${operation.type}`,
41
+ task: `${strand.documentId}-${operation.index}: ${operation.action.type}`,
44
42
  status: true,
45
43
  })
46
44
  .onConflict((oc) => oc.column("task").doNothing())
@@ -1,16 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- params: ({ args }) => {
5
- return {
6
- rootDir: args.rootDir,
7
- documentModelsDir: args.documentModelsDir,
8
- name: args.name,
9
- documentTypes: args.documentTypes
10
- .split(",")
11
- .filter((type) => type !== ""),
12
- documentTypesMap: JSON.parse(args.documentTypesMap),
13
- };
14
- },
1
+ // @ts-check
2
+ module.exports = {
3
+ params: ({ args }) => {
4
+ return {
5
+ rootDir: args.rootDir,
6
+ documentModelsDir: args.documentModelsDir,
7
+ name: args.name,
8
+ documentTypes: args.documentTypes
9
+ .split(",")
10
+ .filter((type) => type !== ""),
11
+ documentTypesMap: JSON.parse(args.documentTypesMap),
12
+ };
13
+ },
15
14
  };
16
- //# sourceMappingURL=index.js.map
@@ -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";
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";
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/migrations.ts"
3
- force: true
3
+ unless_exists: true
4
4
  ---
5
- import { type IRelationalDb } from "document-drive/processors/types"
5
+ import { type IRelationalDb } from "document-drive"
6
6
 
7
7
  export async function up(db: IRelationalDb<any>): Promise<void> {
8
8
  // Create table