@powerhousedao/codegen 0.49.2-dev.0 → 0.49.2-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +40 -8
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +14 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +49 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +214 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EditorContainer.esm.t +127 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FileItemsGrid.esm.t +44 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderItemsGrid.esm.t +96 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +85 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +77 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useSelectedFolderChildren.esm.t +35 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/hooks/useTransformedNodes.esm.t +35 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.esm.t +20 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/{generate-documents-subgraph → generate-drive-editor}/lib.inject_export.esm.t +1 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/types/css.d.esm.t +8 -0
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t +9 -23
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.esm.t +16 -0
- package/dist/src/codegen/graphql.d.ts +13 -0
- package/dist/src/codegen/graphql.d.ts.map +1 -1
- package/dist/src/codegen/graphql.js +29 -26
- package/dist/src/codegen/hygen.d.ts +3 -0
- package/dist/src/codegen/hygen.d.ts.map +1 -1
- package/dist/src/codegen/hygen.js +4 -27
- package/dist/src/codegen/index.d.ts +1 -0
- package/dist/src/codegen/index.d.ts.map +1 -1
- package/dist/src/codegen/index.js +7 -1
- package/dist/src/create-lib/create-project.js +8 -8
- package/dist/tsconfig.hygen.tsbuildinfo +1 -1
- package/dist/{tsconfig.tsbuildinfo → tsconfig.lib.tsbuildinfo} +1 -1
- package/package.json +7 -5
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-documents-subgraph/index.d.ts +0 -15
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-documents-subgraph/index.d.ts.map +0 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-documents-subgraph/index.esm.t +0 -15
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-documents-subgraph/index.js +0 -11
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-documents-subgraph/resolvers.esm.t +0 -40
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-documents-subgraph/schema.esm.t +0 -12
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/lib.inject_export.esm.t +0 -7
- /package/dist/src/codegen/.hygen/templates/powerhouse/{generate-documents-subgraph → generate-drive-editor}/lib.esm.t +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/components/FolderTree.tsx"
|
|
3
|
+
unless_exists: true
|
|
4
|
+
---
|
|
5
|
+
import { useState } from 'react';
|
|
6
|
+
import type { UiFolderNode } from "@powerhousedao/design-system";
|
|
7
|
+
|
|
8
|
+
interface FolderTreeProps {
|
|
9
|
+
folders: UiFolderNode[];
|
|
10
|
+
selectedNodeId?: string;
|
|
11
|
+
onSelectNode: (node: UiFolderNode) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function FolderTree({ folders, selectedNodeId, onSelectNode }: FolderTreeProps) {
|
|
15
|
+
const [expandedFolders, setExpandedFolders] = useState<Set<string>>(new Set());
|
|
16
|
+
|
|
17
|
+
const toggleFolder = (folderId: string) => {
|
|
18
|
+
setExpandedFolders(prev => {
|
|
19
|
+
const next = new Set(prev);
|
|
20
|
+
if (next.has(folderId)) {
|
|
21
|
+
next.delete(folderId);
|
|
22
|
+
} else {
|
|
23
|
+
next.add(folderId);
|
|
24
|
+
}
|
|
25
|
+
return next;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const renderFolder = (folder: UiFolderNode, level: number = 0) => {
|
|
30
|
+
const hasChildren = folders.some(f => f.parentFolder === folder.id);
|
|
31
|
+
const isExpanded = expandedFolders.has(folder.id);
|
|
32
|
+
const isSelected = selectedNodeId === folder.id;
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div key={folder.id}>
|
|
36
|
+
<div
|
|
37
|
+
className={`flex items-center py-1 px-2 cursor-pointer hover:bg-gray-100 rounded ${
|
|
38
|
+
isSelected ? 'bg-gray-100' : ''
|
|
39
|
+
}`}
|
|
40
|
+
style={{ paddingLeft: `${level * 16 + 8}px` }}
|
|
41
|
+
onClick={() => onSelectNode(folder)}
|
|
42
|
+
>
|
|
43
|
+
{hasChildren && (
|
|
44
|
+
<button
|
|
45
|
+
className="w-4 h-4 mr-1 flex items-center justify-center"
|
|
46
|
+
onClick={(e) => {
|
|
47
|
+
e.stopPropagation();
|
|
48
|
+
toggleFolder(folder.id);
|
|
49
|
+
}}
|
|
50
|
+
>
|
|
51
|
+
{isExpanded ? '▼' : '▶'}
|
|
52
|
+
</button>
|
|
53
|
+
)}
|
|
54
|
+
<span className="text-sm">{folder.name}</span>
|
|
55
|
+
</div>
|
|
56
|
+
{isExpanded && hasChildren && (
|
|
57
|
+
<div>
|
|
58
|
+
{folders
|
|
59
|
+
.filter(f => f.parentFolder === folder.id)
|
|
60
|
+
.map(child => renderFolder(child, level + 1))}
|
|
61
|
+
</div>
|
|
62
|
+
)}
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return (
|
|
68
|
+
<div className="space-y-1">
|
|
69
|
+
{/* Root Directory Option */}
|
|
70
|
+
<div
|
|
71
|
+
className={`flex items-center py-1 px-2 cursor-pointer hover:bg-gray-100 rounded ${
|
|
72
|
+
!selectedNodeId ? 'bg-gray-100' : ''
|
|
73
|
+
}`}
|
|
74
|
+
onClick={() => onSelectNode({ id: '', name: 'Root', kind: 'FOLDER' } as UiFolderNode)}
|
|
75
|
+
>
|
|
76
|
+
<span className="text-sm font-medium">Root</span>
|
|
77
|
+
</div>
|
|
78
|
+
|
|
79
|
+
{/* Folder Tree */}
|
|
80
|
+
{folders
|
|
81
|
+
.filter(folder => !folder.parentFolder)
|
|
82
|
+
.map(folder => renderFolder(folder))}
|
|
83
|
+
</div>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/editor.tsx"
|
|
3
|
+
unless_exists: true
|
|
4
|
+
---
|
|
5
|
+
import { type DriveEditorProps } from "@powerhousedao/reactor-browser";
|
|
6
|
+
import { DriveContextProvider } from "@powerhousedao/reactor-browser/hooks/useDriveContext";
|
|
7
|
+
import { type DocumentDriveDocument, addFolder, deleteNode, updateNode, generateNodesCopy, copyNode } from "document-drive";
|
|
8
|
+
import { WagmiContext } from "@powerhousedao/design-system";
|
|
9
|
+
import { DriveExplorer } from "./components/DriveExplorer.js";
|
|
10
|
+
import { useCallback } from "react";
|
|
11
|
+
|
|
12
|
+
export type IProps = DriveEditorProps<DocumentDriveDocument>;
|
|
13
|
+
|
|
14
|
+
export function BaseEditor(props: IProps) {
|
|
15
|
+
const { dispatch, context } = props;
|
|
16
|
+
|
|
17
|
+
const onAddFolder = useCallback((name: string, parentFolder?: string) => {
|
|
18
|
+
dispatch(addFolder({
|
|
19
|
+
id: hashKey(),
|
|
20
|
+
name,
|
|
21
|
+
parentFolder,
|
|
22
|
+
}));
|
|
23
|
+
}, [dispatch]);
|
|
24
|
+
|
|
25
|
+
const onDeleteNode = useCallback((nodeId: string) => {
|
|
26
|
+
dispatch(deleteNode({ id: nodeId }));
|
|
27
|
+
}, [dispatch]);
|
|
28
|
+
|
|
29
|
+
const renameNode = useCallback((nodeId: string, name: string) => {
|
|
30
|
+
dispatch(updateNode({ id: nodeId, name }));
|
|
31
|
+
}, [dispatch]);
|
|
32
|
+
|
|
33
|
+
const onCopyNode = useCallback((nodeId: string, targetName: string, parentId?: string) => {
|
|
34
|
+
const generateId = () => hashKey();
|
|
35
|
+
|
|
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.state.global.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
|
+
<BaseEditor {...props} />
|
|
74
|
+
</WagmiContext>
|
|
75
|
+
</DriveContextProvider>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
|
|
3
|
+
force: true
|
|
4
|
+
---
|
|
5
|
+
import { type DriveEditorModule } from "@powerhousedao/reactor-browser";
|
|
6
|
+
import { type DocumentDriveDocument } from "document-drive";
|
|
7
|
+
import Editor from "./editor.js";
|
|
8
|
+
|
|
9
|
+
export const module: DriveEditorModule<DocumentDriveDocument> = {
|
|
10
|
+
Component: Editor,
|
|
11
|
+
documentTypes: ["powerhouse/document-drive"],
|
|
12
|
+
config: {
|
|
13
|
+
id: "<%= name %>",
|
|
14
|
+
disableExternalControls: true,
|
|
15
|
+
documentToolbarEnabled: true,
|
|
16
|
+
showSwitchboardLink: true,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default module;
|
|
@@ -4,4 +4,4 @@ append: true
|
|
|
4
4
|
to: "<%= rootDir %>/index.ts"
|
|
5
5
|
skip_if: "<%= h.changeCase.pascal(name) %>"
|
|
6
6
|
---
|
|
7
|
-
export
|
|
7
|
+
export { module as <%= h.changeCase.pascal(name) %> } from './<%= h.changeCase.param(name) %>/index.js';
|
package/dist/src/codegen/.hygen/templates/powerhouse/generate-processor-analytics/index.esm.t
CHANGED
|
@@ -2,35 +2,21 @@
|
|
|
2
2
|
to: "<%= rootDir %>/<%= h.changeCase.param(name) %>/index.ts"
|
|
3
3
|
force: true
|
|
4
4
|
---
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ProcessorUpdate,
|
|
10
|
-
AnalyticsPath
|
|
11
|
-
} from "@powerhousedao/reactor-api";
|
|
5
|
+
import type { PHDocument } from "document-model";
|
|
6
|
+
import { AnalyticsPath, IAnalyticsStore } from "@powerhousedao/reactor-api";
|
|
7
|
+
import { InternalTransmitterUpdate, IProcessor } from "document-drive";
|
|
8
|
+
|
|
12
9
|
<% documentTypes.forEach(type => { _%>
|
|
13
10
|
import type { <%= documentTypesMap[type].name %>Document } from "<%= documentTypesMap[type].importPath %>/index.js";
|
|
14
11
|
%><% }); _%>
|
|
15
|
-
<% if(documentTypes.length === 0) { %>import type { PHDocument } from "document-model";<% } %>
|
|
16
|
-
type DocumentType = <% if(documentTypes.length) { %><%= documentTypes.map(type => `${documentTypesMap[type].name}Document`).join(" | ") %> <% } else { %>PHDocument<% } %>;
|
|
17
12
|
|
|
18
|
-
export class <%= pascalName %>Processor
|
|
13
|
+
export class <%= pascalName %>Processor implements IProcessor {
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
branch: ["main"],
|
|
24
|
-
documentId: ["*"],
|
|
25
|
-
documentType: [<% if(documentTypes.length) { %><%- documentTypes.map(type => `"${type}"`).join(", ") %><% } else { %>"*"<% } %>],
|
|
26
|
-
scope: ["global"],
|
|
27
|
-
},
|
|
28
|
-
block: false,
|
|
29
|
-
label: "<%= name %>",
|
|
30
|
-
system: true,
|
|
31
|
-
};
|
|
15
|
+
constructor(private readonly analyticsStore: IAnalyticsStore) {
|
|
16
|
+
//
|
|
17
|
+
}
|
|
32
18
|
|
|
33
|
-
async onStrands(strands:
|
|
19
|
+
async onStrands<TDocument extends PHDocument>(strands: InternalTransmitterUpdate<TDocument>[]): Promise<void> {
|
|
34
20
|
if (strands.length === 0) {
|
|
35
21
|
return;
|
|
36
22
|
}
|
|
@@ -7,3 +7,19 @@ unless_exists: true
|
|
|
7
7
|
* Delete the file and run the code generator again to have it reset
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import { ProcessorRecord } from "document-drive/processors/types";
|
|
11
|
+
import { <%= pascalName %>Processor } from "./<%= h.changeCase.param(name) %>/index.js";
|
|
12
|
+
|
|
13
|
+
export const processorFactory = (module:any) => (driveId: string):ProcessorRecord[] => {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
processor: new <%= pascalName %>Processor(module.analyticsStore),
|
|
17
|
+
filter: {
|
|
18
|
+
branch: ["main"],
|
|
19
|
+
documentId: ["*"],
|
|
20
|
+
scope: ["*"],
|
|
21
|
+
documentType: ["*"],
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { type CodegenConfig } from "@graphql-codegen/cli";
|
|
2
2
|
import { type TypeScriptPluginConfig } from "@graphql-codegen/typescript";
|
|
3
|
+
export declare const scalars: {
|
|
4
|
+
Unknown: string;
|
|
5
|
+
DateTime: string;
|
|
6
|
+
Attachment: string;
|
|
7
|
+
Address: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const scalarsValidation: {
|
|
10
|
+
Unknown: string;
|
|
11
|
+
DateTime: string;
|
|
12
|
+
Attachment: string;
|
|
13
|
+
Address: string;
|
|
14
|
+
};
|
|
3
15
|
export declare const tsConfig: TypeScriptPluginConfig;
|
|
16
|
+
export declare const zodConfig: Record<string, unknown>;
|
|
4
17
|
export declare function schemaConfig(name: string, dir: string): CodegenConfig["generates"];
|
|
5
18
|
export declare const generateSchema: (model: string, dir: string, { watch, skipFormat }?: {
|
|
6
19
|
watch?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../src/codegen/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAU1E,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../src/codegen/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAY,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAU1E,eAAO,MAAM,OAAO;;;;;CAMnB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;CAO7B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,sBAWtB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAYpC,CAAC;AAEX,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,aAAa,CAAC,WAAW,CAAC,CAmB5B;AAED,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,KAAK,MAAM,EACX;;;CAA0C,iBAa3C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,EACX;;;CAA0C,iBAoB3C,CAAC"}
|
|
@@ -5,15 +5,23 @@ import { formatWithPrettierBeforeWrite } from "./utils.js";
|
|
|
5
5
|
const getDirectories = (source) => readdirSync(source, { withFileTypes: true })
|
|
6
6
|
.filter((dirent) => dirent.isDirectory())
|
|
7
7
|
.map((dirent) => dirent.name);
|
|
8
|
+
export const scalars = {
|
|
9
|
+
Unknown: "unknown",
|
|
10
|
+
DateTime: "string",
|
|
11
|
+
Attachment: "string",
|
|
12
|
+
Address: "`${string}:0x${string}`",
|
|
13
|
+
...generatorTypeDefs,
|
|
14
|
+
};
|
|
15
|
+
export const scalarsValidation = {
|
|
16
|
+
Unknown: "z.unknown()",
|
|
17
|
+
DateTime: "z.string().datetime()",
|
|
18
|
+
Attachment: "z.string()",
|
|
19
|
+
Address: "z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))",
|
|
20
|
+
...validationSchema,
|
|
21
|
+
};
|
|
8
22
|
export const tsConfig = {
|
|
9
23
|
strictScalars: true,
|
|
10
|
-
scalars
|
|
11
|
-
Unknown: "unknown",
|
|
12
|
-
DateTime: "string",
|
|
13
|
-
Attachment: "string",
|
|
14
|
-
Address: "`${string}:0x${string}`",
|
|
15
|
-
...generatorTypeDefs,
|
|
16
|
-
},
|
|
24
|
+
scalars,
|
|
17
25
|
enumsAsTypes: true,
|
|
18
26
|
allowEnumStringTypes: true,
|
|
19
27
|
avoidOptionals: {
|
|
@@ -23,6 +31,19 @@ export const tsConfig = {
|
|
|
23
31
|
// maybeValue: "T | null | undefined",
|
|
24
32
|
inputMaybeValue: "T | null | undefined",
|
|
25
33
|
};
|
|
34
|
+
export const zodConfig = {
|
|
35
|
+
...tsConfig,
|
|
36
|
+
importFrom: `./types.js`,
|
|
37
|
+
schema: "zod",
|
|
38
|
+
useTypeImports: true,
|
|
39
|
+
scalarSchemas: scalarsValidation,
|
|
40
|
+
directives: {
|
|
41
|
+
equals: {
|
|
42
|
+
value: ["regex", "/^$1$/"],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
withObjectType: true,
|
|
46
|
+
};
|
|
26
47
|
export function schemaConfig(name, dir) {
|
|
27
48
|
return {
|
|
28
49
|
[`${dir}/${name}/gen/schema/types.ts`]: {
|
|
@@ -39,25 +60,7 @@ export function schemaConfig(name, dir) {
|
|
|
39
60
|
[`${dir}/${name}/gen/schema/zod.ts`]: {
|
|
40
61
|
schema: `${dir}/${name}/schema.graphql`,
|
|
41
62
|
plugins: ["@acaldas/graphql-codegen-typescript-validation-schema"],
|
|
42
|
-
config:
|
|
43
|
-
...tsConfig,
|
|
44
|
-
importFrom: `./types.js`,
|
|
45
|
-
schema: "zod",
|
|
46
|
-
useTypeImports: true,
|
|
47
|
-
scalarSchemas: {
|
|
48
|
-
Unknown: "z.unknown()",
|
|
49
|
-
DateTime: "z.string().datetime()",
|
|
50
|
-
Attachment: "z.string()",
|
|
51
|
-
Address: "z.custom<`${string}:0x${string}`>((val) => /^[a-zA-Z0-9]+:0x[a-fA-F0-9]{40}$/.test(val as string))",
|
|
52
|
-
...validationSchema,
|
|
53
|
-
},
|
|
54
|
-
directives: {
|
|
55
|
-
equals: {
|
|
56
|
-
value: ["regex", "/^$1$/"],
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
withObjectType: true,
|
|
60
|
-
},
|
|
63
|
+
config: zodConfig,
|
|
61
64
|
},
|
|
62
65
|
};
|
|
63
66
|
}
|
|
@@ -20,4 +20,7 @@ export declare function generateSubgraph(name: string, documentModel: DocumentMo
|
|
|
20
20
|
export declare function generateImportScript(name: string, dir: string, { skipFormat }?: {
|
|
21
21
|
skipFormat?: boolean | undefined;
|
|
22
22
|
}): Promise<void>;
|
|
23
|
+
export declare function generateDriveEditor(name: string, dir: string, { skipFormat }?: {
|
|
24
|
+
skipFormat?: boolean | undefined;
|
|
25
|
+
}): Promise<void>;
|
|
23
26
|
//# sourceMappingURL=hygen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hygen.d.ts","sourceRoot":"","sources":["../../../src/codegen/hygen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMzD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6CnD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,EAAE,KAAa,EAAE,UAAkB,EAAE;;;CAAK,iBAoB3C;AAED,wBAAsB,qBAAqB,CACzC,kBAAkB,EAAE,kBAAkB,EACtC,GAAG,EAAE,MAAM,EACX,EAAE,KAAa,EAAE,UAAkB,EAAE;;;CAAK,iBAoC3C;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,EAAE,UAAkB,EAAE;;CAAK,iBAoB5B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,IAAI,SAAc,EAClB,EAAE,UAAkB,EAAE;;CAAK,iBAuB5B;
|
|
1
|
+
{"version":3,"file":"hygen.d.ts","sourceRoot":"","sources":["../../../src/codegen/hygen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAMzD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6CnD,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,EAAE,KAAa,EAAE,UAAkB,EAAE;;;CAAK,iBAoB3C;AAED,wBAAsB,qBAAqB,CACzC,kBAAkB,EAAE,kBAAkB,EACtC,GAAG,EAAE,MAAM,EACX,EAAE,KAAa,EAAE,UAAkB,EAAE;;;CAAK,iBAoC3C;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,EAAE,UAAkB,EAAE;;CAAK,iBAoB5B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM,EACzB,IAAI,SAAc,EAClB,EAAE,UAAkB,EAAE;;CAAK,iBAuB5B;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,kBAAkB,GAAG,IAAI,EACxC,GAAG,EAAE,MAAM,EACX,EAAE,UAAkB,EAAE;;CAAK,iBAoC5B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,UAAkB,EAAE;;CAAK,iBAgB5B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,EAAE,UAAkB,EAAE;;CAAK,iBAO5B"}
|
|
@@ -117,34 +117,7 @@ export async function generateProcessor(name, documentTypes, documentTypesMap, d
|
|
|
117
117
|
documentModelsDir,
|
|
118
118
|
], { skipFormat });
|
|
119
119
|
}
|
|
120
|
-
async function generateDocumentSubgraph(name, documentModel, dir, { skipFormat = false } = {}) {
|
|
121
|
-
const params = [
|
|
122
|
-
"powerhouse",
|
|
123
|
-
`generate-documents-subgraph`,
|
|
124
|
-
"--name",
|
|
125
|
-
name,
|
|
126
|
-
"--pascalName",
|
|
127
|
-
pascalCase(name),
|
|
128
|
-
"--root-dir",
|
|
129
|
-
dir,
|
|
130
|
-
];
|
|
131
|
-
}
|
|
132
120
|
export async function generateSubgraph(name, documentModel, dir, { skipFormat = false } = {}) {
|
|
133
|
-
if (name === "document") {
|
|
134
|
-
await run([
|
|
135
|
-
"powerhouse",
|
|
136
|
-
"generate-documents-subgraph",
|
|
137
|
-
"--subgraph",
|
|
138
|
-
name,
|
|
139
|
-
"--root-dir",
|
|
140
|
-
dir,
|
|
141
|
-
"--name",
|
|
142
|
-
name,
|
|
143
|
-
"--pascalName",
|
|
144
|
-
pascalCase(name),
|
|
145
|
-
], { skipFormat });
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
121
|
const params = [
|
|
149
122
|
"powerhouse",
|
|
150
123
|
`generate-subgraph`,
|
|
@@ -187,3 +160,7 @@ export async function generateImportScript(name, dir, { skipFormat = false } = {
|
|
|
187
160
|
dir,
|
|
188
161
|
], { skipFormat });
|
|
189
162
|
}
|
|
163
|
+
export async function generateDriveEditor(name, dir, { skipFormat = false } = {}) {
|
|
164
|
+
// Generate the drive editor files
|
|
165
|
+
await run(["powerhouse", "generate-drive-editor", "--name", name, "--root-dir", dir], { skipFormat });
|
|
166
|
+
}
|
|
@@ -9,4 +9,5 @@ export declare function generateEditor(name: string, documentTypes: string[], co
|
|
|
9
9
|
export declare function generateSubgraph(name: string, file: string | null, config: PowerhouseConfig): Promise<void>;
|
|
10
10
|
export declare function generateProcessor(name: string, type: "analytics" | "operational", documentTypes: string[], config: PowerhouseConfig): Promise<void>;
|
|
11
11
|
export declare function generateImportScript(name: string, config: PowerhouseConfig): Promise<void>;
|
|
12
|
+
export declare function generateDriveEditor(name: string, config: PowerhouseConfig): Promise<void>;
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAgDzE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CACnC,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CACrC,CAAC;AAyDF,wBAAsB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,iBAItD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,iBA6B5E;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAwBzB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,gBAAgB,iBAQzB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAAG,aAAa,EACjC,aAAa,EAAE,MAAM,EAAE,EACvB,MAAM,EAAE,gBAAgB,iBAqBzB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,iBAGzB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,iBAKzB"}
|
|
@@ -3,7 +3,7 @@ import { paramCase, pascalCase } from "change-case";
|
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import { join, resolve } from "path";
|
|
5
5
|
import { generateSchema, generateSchemas } from "./graphql.js";
|
|
6
|
-
import { generateEditor as _generateEditor, generateImportScript as _generateImportScript, generateProcessor as _generateProcessor, generateSubgraph as _generateSubgraph, generateAll, generateDocumentModel, } from "./hygen.js";
|
|
6
|
+
import { generateDriveEditor as _generateDriveEditor, generateEditor as _generateEditor, generateImportScript as _generateImportScript, generateProcessor as _generateProcessor, generateSubgraph as _generateSubgraph, generateAll, generateDocumentModel, } from "./hygen.js";
|
|
7
7
|
import { loadDocumentModel } from "./utils.js";
|
|
8
8
|
function generateGraphqlSchema(documentModel) {
|
|
9
9
|
const spec = documentModel.specifications[documentModel.specifications.length - 1];
|
|
@@ -94,6 +94,7 @@ export async function generateFromFile(path, config) {
|
|
|
94
94
|
}
|
|
95
95
|
await generateSchema(name, config.documentModelsDir, config);
|
|
96
96
|
await generateDocumentModel(documentModel, config.documentModelsDir, config);
|
|
97
|
+
await generateSubgraph(name, path, config);
|
|
97
98
|
}
|
|
98
99
|
export async function generateEditor(name, documentTypes, config) {
|
|
99
100
|
const pathOrigin = "../../";
|
|
@@ -120,3 +121,8 @@ export async function generateProcessor(name, type, documentTypes, config) {
|
|
|
120
121
|
export async function generateImportScript(name, config) {
|
|
121
122
|
return _generateImportScript(name, config.importScriptsDir, config);
|
|
122
123
|
}
|
|
124
|
+
export async function generateDriveEditor(name, config) {
|
|
125
|
+
return _generateDriveEditor(name, config.editorsDir, {
|
|
126
|
+
skipFormat: config.skipFormat,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
@@ -43,15 +43,15 @@ function buildPowerhouseConfig(appPath, documentModelsDir, editorsDir) {
|
|
|
43
43
|
fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), "utf8");
|
|
44
44
|
}
|
|
45
45
|
function buildIndex(appPath, documentModelsDir, editorsDir) {
|
|
46
|
-
fs.writeFileSync(path.join(appPath, "index.ts"), `import { Manifest } from "document-model";
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
fs.writeFileSync(path.join(appPath, "index.ts"), `import type { Manifest } from "document-model";
|
|
47
|
+
import manifestJson from "./powerhouse.manifest.json" assert { type: "json" };
|
|
48
|
+
import * as documentModelsExports from '${documentModelsDir}/index.js';
|
|
49
|
+
import * as editorsExports from '${editorsDir}/index.js';
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
export const manifest: Manifest = manifestJson;
|
|
52
|
+
export const documentModels = Object.values(documentModelsExports);
|
|
53
|
+
export const editors = Object.values(editorsExports);
|
|
54
|
+
`, "utf8");
|
|
55
55
|
}
|
|
56
56
|
function runCmd(command) {
|
|
57
57
|
try {
|