@powerhousedao/codegen 4.1.0-dev.2 → 4.1.0-dev.20

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 (83) 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/reducer.esm.t +4 -1
  8. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +1 -1
  9. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/actions.esm.t +3 -3
  10. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +2 -2
  11. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/error.esm.t +6 -10
  12. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts +4 -0
  13. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.d.ts.map +1 -1
  14. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +13 -1
  15. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js.map +1 -1
  16. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +59 -50
  17. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +3 -3
  18. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +10 -1
  19. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +292 -131
  20. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +20 -3
  21. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +43 -25
  22. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +37 -42
  23. package/dist/src/codegen/.hygen/templates/powerhouse/generate-subgraph/index.esm.t +0 -32
  24. package/dist/src/codegen/graphql.d.ts +5 -1
  25. package/dist/src/codegen/graphql.d.ts.map +1 -1
  26. package/dist/src/codegen/graphql.js +28 -5
  27. package/dist/src/codegen/graphql.js.map +1 -1
  28. package/dist/src/codegen/hygen.d.ts +5 -2
  29. package/dist/src/codegen/hygen.d.ts.map +1 -1
  30. package/dist/src/codegen/hygen.js +30 -2
  31. package/dist/src/codegen/hygen.js.map +1 -1
  32. package/dist/src/codegen/index.d.ts +5 -4
  33. package/dist/src/codegen/index.d.ts.map +1 -1
  34. package/dist/src/codegen/index.js +60 -1
  35. package/dist/src/codegen/index.js.map +1 -1
  36. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts +10 -0
  37. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts.map +1 -0
  38. package/dist/src/ts-morph-generator/core/FileGenerator.js +9 -0
  39. package/dist/src/ts-morph-generator/core/FileGenerator.js.map +1 -0
  40. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts +30 -0
  41. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts.map +1 -0
  42. package/dist/src/ts-morph-generator/core/GenerationContext.js +2 -0
  43. package/dist/src/ts-morph-generator/core/GenerationContext.js.map +1 -0
  44. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts +19 -0
  45. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts.map +1 -0
  46. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js +114 -0
  47. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js.map +1 -0
  48. package/dist/src/ts-morph-generator/core/index.d.ts +4 -0
  49. package/dist/src/ts-morph-generator/core/index.d.ts.map +1 -0
  50. package/dist/src/ts-morph-generator/core/index.js +4 -0
  51. package/dist/src/ts-morph-generator/core/index.js.map +1 -0
  52. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts +12 -0
  53. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.d.ts.map +1 -0
  54. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js +140 -0
  55. package/dist/src/ts-morph-generator/file-generators/ReducerGenerator.js.map +1 -0
  56. package/dist/src/ts-morph-generator/file-generators/index.d.ts +2 -0
  57. package/dist/src/ts-morph-generator/file-generators/index.d.ts.map +1 -0
  58. package/dist/src/ts-morph-generator/file-generators/index.js +2 -0
  59. package/dist/src/ts-morph-generator/file-generators/index.js.map +1 -0
  60. package/dist/src/ts-morph-generator/index.d.ts +4 -0
  61. package/dist/src/ts-morph-generator/index.d.ts.map +1 -0
  62. package/dist/src/ts-morph-generator/index.js +4 -0
  63. package/dist/src/ts-morph-generator/index.js.map +1 -0
  64. package/dist/src/ts-morph-generator/utilities/DirectoryManager.d.ts +13 -0
  65. package/dist/src/ts-morph-generator/utilities/DirectoryManager.d.ts.map +1 -0
  66. package/dist/src/ts-morph-generator/utilities/DirectoryManager.js +45 -0
  67. package/dist/src/ts-morph-generator/utilities/DirectoryManager.js.map +1 -0
  68. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts +14 -0
  69. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts.map +1 -0
  70. package/dist/src/ts-morph-generator/utilities/ImportManager.js +40 -0
  71. package/dist/src/ts-morph-generator/utilities/ImportManager.js.map +1 -0
  72. package/dist/src/ts-morph-generator/utilities/index.d.ts +3 -0
  73. package/dist/src/ts-morph-generator/utilities/index.d.ts.map +1 -0
  74. package/dist/src/ts-morph-generator/utilities/index.js +3 -0
  75. package/dist/src/ts-morph-generator/utilities/index.js.map +1 -0
  76. package/dist/tsconfig.hygen.tsbuildinfo +1 -1
  77. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  78. package/package.json +8 -6
  79. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customReducers.esm.t +0 -20
  80. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FileItemsGrid.esm.t +0 -44
  81. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderItemsGrid.esm.t +0 -96
  82. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useSelectedFolderChildren.esm.t +0 -35
  83. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useTransformedNodes.esm.t +0 -35
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/codegen",
3
- "version": "4.1.0-dev.2",
3
+ "version": "4.1.0-dev.20",
4
4
  "license": "AGPL-3.0-only",
5
5
  "private": false,
6
6
  "type": "module",
@@ -23,7 +23,7 @@
23
23
  "@faker-js/faker": "^8.3.1",
24
24
  "@graphql-codegen/cli": "^5.0.0",
25
25
  "@graphql-codegen/typescript": "^4.0.1",
26
- "@powerhousedao/document-engineering": "^1.15.0",
26
+ "@powerhousedao/document-engineering": "^1.27.0",
27
27
  "@types/node": "^22.15.17",
28
28
  "arg": "^5.0.2",
29
29
  "change-case": "^4.1.2",
@@ -33,8 +33,9 @@
33
33
  "kysely": "^0.28.2",
34
34
  "kysely-pglite": "^0.6.1",
35
35
  "prettier": "^3.4.2",
36
- "@powerhousedao/config": "4.1.0-dev.2",
37
- "document-model": "4.1.0-dev.2"
36
+ "ts-morph": "^26.0.0",
37
+ "document-model": "4.1.0-dev.20",
38
+ "@powerhousedao/config": "4.1.0-dev.20"
38
39
  },
39
40
  "devDependencies": {
40
41
  "@graphql-codegen/core": "^4.0.2",
@@ -44,8 +45,8 @@
44
45
  "husky": "^8.0.3",
45
46
  "vitest": "^3.1.2",
46
47
  "zod": "^3.24.3",
47
- "document-drive": "4.1.0-dev.2",
48
- "@powerhousedao/reactor-api": "4.1.0-dev.2"
48
+ "@powerhousedao/reactor-api": "4.1.0-dev.20",
49
+ "document-drive": "4.1.0-dev.20"
49
50
  },
50
51
  "scripts": {
51
52
  "build:tsc": "tsc --build",
@@ -61,6 +62,7 @@
61
62
  "publish:create-lib": "npm publish --cwd ./src/create-lib/",
62
63
  "start": "tsx src/cli.ts",
63
64
  "clean:node_modules": "rimraf node_modules",
65
+ "pretest": "rimraf ./src/codegen/__tests__/.out && rimraf ./src/codegen/__tests__/.test-project",
64
66
  "test": "vitest run"
65
67
  }
66
68
  }
@@ -1,20 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/src/reducers/<%= module %>.ts"
3
- unless_exists: true
4
- ---
5
- /**
6
- * This is a scaffold file meant for customization:
7
- * - modify it by implementing the reducer functions
8
- * - delete the file and run the code generator again to have it reset
9
- */
10
-
11
- import type { <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module) %>Operations } from '../../gen/<%= module %>/operations.js';
12
-
13
- export const reducer: <%= h.changeCase.pascal(documentType) %><%= h.changeCase.pascal(module) %>Operations = {
14
- <% actions.forEach(action => { _%>
15
- <%= h.changeCase.camel(action.name) %>Operation(state, action, dispatch) {
16
- // TODO: Implement "<%= h.changeCase.camel(action.name) %>Operation" reducer
17
- throw new Error('Reducer "<%= h.changeCase.camel(action.name) %>Operation" not yet implemented');
18
- },
19
- <% }); _%>
20
- }
@@ -1,44 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FileItemsGrid.tsx"
3
- unless_exists: true
4
- ---
5
- import { FileItem, type UiFileNode, type BaseUiFileNode } from "@powerhousedao/design-system";
6
-
7
- interface FileItemsGridProps {
8
- files: UiFileNode[];
9
- onSelectNode: (node: BaseUiFileNode) => void;
10
- onRenameNode: (nodeId: string, name: string) => void;
11
- onDuplicateNode: (node: BaseUiFileNode) => void;
12
- onDeleteNode: (nodeId: string) => void;
13
- isAllowedToCreateDocuments: boolean;
14
- }
15
-
16
- export function FileItemsGrid({
17
- files,
18
- onSelectNode,
19
- onRenameNode,
20
- onDuplicateNode,
21
- onDeleteNode,
22
- isAllowedToCreateDocuments,
23
- }: FileItemsGridProps) {
24
- if (files.length === 0) return null;
25
-
26
- return (
27
- <div>
28
- <h3 className="text-sm font-medium text-gray-500 mb-2">Files</h3>
29
- <div className="flex flex-wrap gap-2">
30
- {files.map((file) => (
31
- <FileItem
32
- key={file.id}
33
- uiNode={file}
34
- onSelectNode={onSelectNode}
35
- onRenameNode={(name) => onRenameNode(file.id, name)}
36
- onDuplicateNode={onDuplicateNode}
37
- onDeleteNode={() => onDeleteNode(file.id)}
38
- isAllowedToCreateDocuments={isAllowedToCreateDocuments}
39
- />
40
- ))}
41
- </div>
42
- </div>
43
- );
44
- }
@@ -1,96 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FolderItemsGrid.tsx"
3
- unless_exists: true
4
- ---
5
- import {
6
- FolderItem,
7
- type UiFolderNode,
8
- type UiNode,
9
- type BaseUiFolderNode,
10
- type BaseUiNode,
11
- } from "@powerhousedao/design-system";
12
- import { useState } from "react";
13
-
14
- interface FolderItemsGridProps {
15
- folders: UiFolderNode[];
16
- onSelectNode: (node: BaseUiFolderNode) => void;
17
- onRenameNode: (nodeId: string, name: string) => void;
18
- onDuplicateNode: (node: BaseUiFolderNode) => void;
19
- onDeleteNode: (nodeId: string) => void;
20
- onAddFile: (file: File, parentNode: BaseUiNode | null) => Promise<void>;
21
- onCopyNode: (uiNode: BaseUiNode, targetNode: BaseUiNode) => Promise<void>;
22
- onMoveNode: (uiNode: BaseUiNode, targetNode: BaseUiNode) => Promise<void>;
23
- isAllowedToCreateDocuments: boolean;
24
- onAddFolder: (name: string, parentFolder?: string) => void;
25
- parentFolderId?: string;
26
- }
27
-
28
- export function FolderItemsGrid({
29
- folders,
30
- onSelectNode,
31
- onRenameNode,
32
- onDuplicateNode,
33
- onDeleteNode,
34
- onAddFile,
35
- onCopyNode,
36
- onMoveNode,
37
- isAllowedToCreateDocuments,
38
- onAddFolder,
39
- parentFolderId,
40
- }: FolderItemsGridProps) {
41
- const [newFolderName, setNewFolderName] = useState("");
42
-
43
- const handleSubmit = (e: React.FormEvent) => {
44
- e.preventDefault();
45
- if (newFolderName.trim()) {
46
- onAddFolder(newFolderName.trim(), parentFolderId);
47
- setNewFolderName("");
48
- }
49
- };
50
-
51
- return (
52
- <div className="mb-6">
53
- <div className="flex items-center gap-4 mb-2">
54
- <h3 className="text-sm font-medium text-gray-500">Folders</h3>
55
-
56
- {/* New Folder Input */}
57
- <form onSubmit={handleSubmit} className="w-48">
58
- <div className="relative">
59
- <input
60
- type="text"
61
- value={newFolderName}
62
- onChange={(e) => setNewFolderName(e.target.value)}
63
- placeholder="Create new folder..."
64
- className="w-full px-3 py-1.5 pr-8 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
65
- />
66
- <button
67
- type="submit"
68
- className="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 focus:outline-none text-sm"
69
- >
70
- +
71
- </button>
72
- </div>
73
- </form>
74
- </div>
75
-
76
- {folders.length > 0 && (
77
- <div className="flex flex-wrap gap-2">
78
- {folders.map((folder) => (
79
- <FolderItem
80
- key={folder.id}
81
- uiNode={folder}
82
- onSelectNode={onSelectNode}
83
- onRenameNode={(name) => onRenameNode(folder.id, name)}
84
- onDuplicateNode={onDuplicateNode}
85
- onDeleteNode={() => onDeleteNode(folder.id)}
86
- onAddFile={onAddFile}
87
- onCopyNode={onCopyNode}
88
- onMoveNode={onMoveNode}
89
- isAllowedToCreateDocuments={isAllowedToCreateDocuments}
90
- />
91
- ))}
92
- </div>
93
- )}
94
- </div>
95
- );
96
- }
@@ -1,35 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/hooks/useSelectedFolderChildren.ts"
3
- unless_exists: true
4
- ---
5
- import { useMemo } from 'react';
6
- import type { UiFileNode, UiFolderNode } from '@powerhousedao/design-system';
7
-
8
- interface SelectedFolderChildren {
9
- folders: UiFolderNode[];
10
- files: UiFileNode[];
11
- }
12
-
13
- export function useSelectedFolderChildren(
14
- selectedNodeId: string | undefined,
15
- folders: UiFolderNode[],
16
- files: UiFileNode[]
17
- ): SelectedFolderChildren {
18
- return useMemo(() => {
19
- if (!selectedNodeId) {
20
- // Show root-level items when no folder is selected
21
- return {
22
- folders: folders.filter(f => !f.parentFolder),
23
- files: files.filter(f => !f.parentFolder)
24
- };
25
- }
26
-
27
- const selectedFolder = folders.find(f => f.id === selectedNodeId);
28
- if (!selectedFolder) return { folders: [], files: [] };
29
-
30
- return {
31
- folders: folders.filter(f => f.parentFolder === selectedFolder.id),
32
- files: files.filter(f => f.parentFolder === selectedFolder.id)
33
- };
34
- }, [selectedNodeId, folders, files]);
35
- }
@@ -1,35 +0,0 @@
1
- ---
2
- to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/hooks/useTransformedNodes.ts"
3
- unless_exists: true
4
- ---
5
- import { useMemo } from 'react';
6
- import type { Node, FileNode } from 'document-drive';
7
- import type { UiFileNode, UiFolderNode } from '@powerhousedao/design-system';
8
-
9
- export function useTransformedNodes(nodes: Node[], driveId: string) {
10
- return useMemo(() => {
11
- return nodes.map(node => {
12
- const isFolder = 'kind' in node && node.kind === 'folder';
13
-
14
- if (isFolder) {
15
- return {
16
- id: node.id,
17
- name: node.name,
18
- kind: 'FOLDER' as const,
19
- parentFolder: node.parentFolder || '',
20
- driveId,
21
- children: nodes.filter(n => n.parentFolder === node.id).map(n => n.id)
22
- };
23
- } else {
24
- return {
25
- id: node.id,
26
- name: node.name,
27
- kind: 'FILE' as const,
28
- parentFolder: node.parentFolder || '',
29
- driveId,
30
- documentType: (node as FileNode).documentType
31
- };
32
- }
33
- }).filter(Boolean) as (UiFileNode | UiFolderNode)[];
34
- }, [nodes, driveId]);
35
- }