@powerhousedao/vetra 6.0.2-staging.8 → 6.1.0-dev.0
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/app-module-D_cAVvt0.js +48 -0
- package/dist/app-module-D_cAVvt0.js.map +1 -0
- package/dist/codegen/index.d.ts +117 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +793 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/connect-BRlVKs1s.js +6 -0
- package/dist/connect-BRlVKs1s.js.map +1 -0
- package/dist/document-editor-1NFr9t3a.js +48 -0
- package/dist/document-editor-1NFr9t3a.js.map +1 -0
- package/dist/document-models/app-module/index.d.ts +12 -2
- package/dist/document-models/app-module/index.d.ts.map +1 -0
- package/dist/document-models/app-module/index.js +5 -2
- package/dist/document-models/document-editor/index.d.ts +12 -2
- package/dist/document-models/document-editor/index.d.ts.map +1 -0
- package/dist/document-models/document-editor/index.js +5 -2
- package/dist/document-models/index.d.ts +6 -29
- package/dist/document-models/index.js +6 -2
- package/dist/document-models/processor-module/index.d.ts +12 -2
- package/dist/document-models/processor-module/index.d.ts.map +1 -0
- package/dist/document-models/processor-module/index.js +5 -2
- package/dist/document-models/subgraph-module/index.d.ts +12 -2
- package/dist/document-models/subgraph-module/index.d.ts.map +1 -0
- package/dist/document-models/subgraph-module/index.js +5 -2
- package/dist/document-models/vetra-package/index.d.ts +12 -2
- package/dist/document-models/vetra-package/index.d.ts.map +1 -0
- package/dist/document-models/vetra-package/index.js +3 -2
- package/dist/{editor-9B-mf9yE.js → editor-BwbJ65NZ.js} +10 -9
- package/dist/editor-BwbJ65NZ.js.map +1 -0
- package/dist/{editor-CQwD5q6a.js → editor-CJAn9WTA.js} +8 -7
- package/dist/editor-CJAn9WTA.js.map +1 -0
- package/dist/{editor-CwC9mpEu.js → editor-CLERZjRS.js} +11 -11
- package/dist/editor-CLERZjRS.js.map +1 -0
- package/dist/{editor-Bm0GwtcN.js → editor-DWufJcmG.js} +7 -7
- package/dist/editor-DWufJcmG.js.map +1 -0
- package/dist/{editor-ouUpfWQx.js → editor-DabfMxkF.js} +15 -15
- package/dist/editor-DabfMxkF.js.map +1 -0
- package/dist/{editor-BwBHWEmR.js → editor-WWMGVelM.js} +9 -9
- package/dist/editor-WWMGVelM.js.map +1 -0
- package/dist/editors/hooks/index.js +1 -1
- package/dist/editors/index.d.ts +13 -12
- package/dist/editors/index.d.ts.map +1 -1
- package/dist/editors/index.js +2 -2
- package/dist/factory-Bd_0OaF8.js +79 -0
- package/dist/factory-Bd_0OaF8.js.map +1 -0
- package/dist/{codegen-PnsnCMkw.js → factory-CEzh-u5J.js} +55 -7
- package/dist/factory-CEzh-u5J.js.map +1 -0
- package/dist/{hooks-Vx4YtE1e.js → hooks-Btogj1f0.js} +1 -1
- package/dist/{hooks-Vx4YtE1e.js.map → hooks-Btogj1f0.js.map} +1 -1
- package/dist/index-BPoF8P3O.d.ts +357 -0
- package/dist/index-BPoF8P3O.d.ts.map +1 -0
- package/dist/index-BoGed4Fa.d.ts +437 -0
- package/dist/index-BoGed4Fa.d.ts.map +1 -0
- package/dist/index-C4s0aLv3.d.ts +424 -0
- package/dist/index-C4s0aLv3.d.ts.map +1 -0
- package/dist/index-ClaOdn_F.d.ts +393 -0
- package/dist/index-ClaOdn_F.d.ts.map +1 -0
- package/dist/index.d.ts +142 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -5
- package/dist/index.js.map +1 -1
- package/dist/{logger-BLNtquAC.js → logger-CYkStoEb.js} +1 -1
- package/dist/{logger-BLNtquAC.js.map → logger-CYkStoEb.js.map} +1 -1
- package/dist/module-DPyV2vUY.js +138 -0
- package/dist/module-DPyV2vUY.js.map +1 -0
- package/dist/module-Drla4Vmn.d.ts +478 -0
- package/dist/module-Drla4Vmn.d.ts.map +1 -0
- package/dist/{vetra-package-VqptqKzx.js → module-dDKBr6QY.js} +186 -236
- package/dist/module-dDKBr6QY.js.map +1 -0
- package/dist/{module-DWvO3WCv.js → module-jWN6gsmi.js} +15 -11
- package/dist/module-jWN6gsmi.js.map +1 -0
- package/dist/module-pK0hpO6c.js +131 -0
- package/dist/module-pK0hpO6c.js.map +1 -0
- package/dist/module-ryHOwQp-.js +105 -0
- package/dist/module-ryHOwQp-.js.map +1 -0
- package/dist/module-x2Liyk0-.js +80 -0
- package/dist/module-x2Liyk0-.js.map +1 -0
- package/dist/ph-factories-B0_E6LY6.js +53 -0
- package/dist/ph-factories-B0_E6LY6.js.map +1 -0
- package/dist/ph-factories-B6PSPkPQ.js +52 -0
- package/dist/ph-factories-B6PSPkPQ.js.map +1 -0
- package/dist/ph-factories-Bn_HTUfT.js +50 -0
- package/dist/ph-factories-Bn_HTUfT.js.map +1 -0
- package/dist/ph-factories-CJXfT_Z1.js +51 -0
- package/dist/ph-factories-CJXfT_Z1.js.map +1 -0
- package/dist/powerhouse.manifest.d.ts +8 -5
- package/dist/powerhouse.manifest.d.ts.map +1 -1
- package/dist/powerhouse.manifest.js +19 -12
- package/dist/processor-module-B7IAItXQ.js +48 -0
- package/dist/processor-module-B7IAItXQ.js.map +1 -0
- package/dist/processors/codegen/index.d.ts +7 -4
- package/dist/processors/codegen/index.d.ts.map +1 -1
- package/dist/processors/codegen/index.js +2 -2
- package/dist/processors/index.d.ts +4 -15
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +8 -81
- package/dist/processors/index.js.map +1 -1
- package/dist/processors/vetra-read-model/index.d.ts +18599 -2
- package/dist/processors/vetra-read-model/index.d.ts.map +1 -0
- package/dist/processors/vetra-read-model/index.js +2 -54
- package/dist/style.css +7 -8
- package/dist/subgraph-module-CfzSZTNC.js +48 -0
- package/dist/subgraph-module-CfzSZTNC.js.map +1 -0
- package/dist/switchboard-CIUZkhea.js +8 -0
- package/dist/switchboard-CIUZkhea.js.map +1 -0
- package/dist/{useVetraDocument-DF0teXXM.js → useVetraDocument-BQKyels4.js} +1 -1
- package/dist/{useVetraDocument-DF0teXXM.js.map → useVetraDocument-BQKyels4.js.map} +1 -1
- package/dist/{app-module-BbhoykB5.js → utils-BRx88WW3.js} +70 -235
- package/dist/utils-BRx88WW3.js.map +1 -0
- package/dist/{processor-module-CkuQiq7B.js → utils-Byjf33qt.js} +63 -240
- package/dist/utils-Byjf33qt.js.map +1 -0
- package/dist/utils-CWO5kDus.js +162 -0
- package/dist/utils-CWO5kDus.js.map +1 -0
- package/dist/utils-CnZc-0E4.js +202 -0
- package/dist/utils-CnZc-0E4.js.map +1 -0
- package/dist/vetra-package-BgTjv343.js +100 -0
- package/dist/vetra-package-BgTjv343.js.map +1 -0
- package/package.json +19 -14
- package/dist/app-module-BbhoykB5.js.map +0 -1
- package/dist/codegen-PnsnCMkw.js.map +0 -1
- package/dist/document-editor-CHM7Pu4m.js +0 -344
- package/dist/document-editor-CHM7Pu4m.js.map +0 -1
- package/dist/document-models/index.d.ts.map +0 -1
- package/dist/editor-9B-mf9yE.js.map +0 -1
- package/dist/editor-Bm0GwtcN.js.map +0 -1
- package/dist/editor-BwBHWEmR.js.map +0 -1
- package/dist/editor-CD3KcVf6.js +0 -2
- package/dist/editor-CQwD5q6a.js.map +0 -1
- package/dist/editor-CwC9mpEu.js.map +0 -1
- package/dist/editor-ouUpfWQx.js.map +0 -1
- package/dist/index-CHfOF-Et.d.ts +0 -363
- package/dist/index-CHfOF-Et.d.ts.map +0 -1
- package/dist/index-CL_CHW_Z.d.ts +0 -330
- package/dist/index-CL_CHW_Z.d.ts.map +0 -1
- package/dist/index-COsHJRmm.d.ts +0 -37
- package/dist/index-COsHJRmm.d.ts.map +0 -1
- package/dist/index-C_kUPMNf.d.ts +0 -298
- package/dist/index-C_kUPMNf.d.ts.map +0 -1
- package/dist/index-Qr_rU6VS.d.ts +0 -271
- package/dist/index-Qr_rU6VS.d.ts.map +0 -1
- package/dist/index-cBMMID-w.d.ts +0 -323
- package/dist/index-cBMMID-w.d.ts.map +0 -1
- package/dist/module-DWvO3WCv.js.map +0 -1
- package/dist/module-XCoMwFat.js +0 -59
- package/dist/module-XCoMwFat.js.map +0 -1
- package/dist/processor-module-CkuQiq7B.js.map +0 -1
- package/dist/processors/vetra-read-model/index.js.map +0 -1
- package/dist/subgraph-module-CU_-umq2.js +0 -278
- package/dist/subgraph-module-CU_-umq2.js.map +0 -1
- package/dist/vetra-package-VqptqKzx.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
1
|
+
import { C as setPackageCategory, D as setPackageNpmUrl, E as setPackageName, S as setPackageAuthorWebsite, T as setPackageGithubUrl, _ as addPackageKeyword, w as setPackageDescription, x as setPackageAuthorName, y as removePackageKeyword } from "./module-dDKBr6QY.js";
|
|
2
|
+
import { t as useDebounce } from "./hooks-Btogj1f0.js";
|
|
3
|
+
import { t as useSelectedDriveVetraPackage } from "./useVetraDocument-BQKyels4.js";
|
|
4
4
|
import { useSetPHDocumentEditorConfig } from "@powerhousedao/reactor-browser";
|
|
5
5
|
import { useCallback, useState } from "react";
|
|
6
|
-
import { DocumentToolbar } from "@powerhousedao/design-system/connect";
|
|
7
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { DocumentToolbar } from "@powerhousedao/design-system/connect";
|
|
8
8
|
//#region editors/vetra-package/components/MetaForm.tsx
|
|
9
9
|
const MetaForm = (props) => {
|
|
10
10
|
const { name: initialName, description: initialDescription, category: initialCategory, publisher: initialPublisher, publisherUrl: initialPublisherUrl, githubRepository: initialGithubRepository, npmPackage: initialNpmPackage, keywords: initialKeywords, onNameChange, onDescriptionChange, onCategoryChange, onPublisherChange, onPublisherUrlChange, onGithubRepositoryChange, onNpmPackageChange, onAddKeyword, onRemoveKeyword } = props;
|
|
@@ -37,7 +37,7 @@ const MetaForm = (props) => {
|
|
|
37
37
|
type: "text",
|
|
38
38
|
value: name,
|
|
39
39
|
onChange: (e) => setName(e.target.value),
|
|
40
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
40
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
41
41
|
})] }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
|
|
42
42
|
htmlFor: "package-description",
|
|
43
43
|
className: "mb-2 block text-sm font-medium text-gray-700",
|
|
@@ -47,7 +47,7 @@ const MetaForm = (props) => {
|
|
|
47
47
|
rows: 6,
|
|
48
48
|
value: description,
|
|
49
49
|
onChange: (e) => setDescription(e.target.value),
|
|
50
|
-
className: "w-full resize-none rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
50
|
+
className: "w-full resize-none rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
51
51
|
})] })]
|
|
52
52
|
}),
|
|
53
53
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -65,7 +65,7 @@ const MetaForm = (props) => {
|
|
|
65
65
|
setCategory(newValue);
|
|
66
66
|
onCategoryChange?.(newValue);
|
|
67
67
|
},
|
|
68
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
68
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none",
|
|
69
69
|
children: [
|
|
70
70
|
/* @__PURE__ */ jsx("option", {
|
|
71
71
|
value: "",
|
|
@@ -110,7 +110,7 @@ const MetaForm = (props) => {
|
|
|
110
110
|
type: "text",
|
|
111
111
|
value: publisher,
|
|
112
112
|
onChange: (e) => setPublisher(e.target.value),
|
|
113
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
113
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
114
114
|
})] }),
|
|
115
115
|
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
|
|
116
116
|
htmlFor: "package-publisher-url",
|
|
@@ -121,7 +121,7 @@ const MetaForm = (props) => {
|
|
|
121
121
|
type: "text",
|
|
122
122
|
value: publisherUrl,
|
|
123
123
|
onChange: (e) => setPublisherUrl(e.target.value),
|
|
124
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
124
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
125
125
|
})] }),
|
|
126
126
|
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
|
|
127
127
|
htmlFor: "package-keywords",
|
|
@@ -147,11 +147,11 @@ const MetaForm = (props) => {
|
|
|
147
147
|
}
|
|
148
148
|
},
|
|
149
149
|
placeholder: "Type a keyword and press Enter",
|
|
150
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
150
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
151
151
|
}), /* @__PURE__ */ jsx("div", {
|
|
152
152
|
className: "flex min-h-[80px] flex-wrap gap-2 rounded-md border border-gray-300 p-3",
|
|
153
153
|
children: keywords.map((keyword) => /* @__PURE__ */ jsxs("span", {
|
|
154
|
-
className: "inline-flex items-center rounded border border-blue-300 bg-blue-100 px-2 py-0.5 text-xs text-blue-800",
|
|
154
|
+
className: "inline-flex items-center rounded-sm border border-blue-300 bg-blue-100 px-2 py-0.5 text-xs text-blue-800",
|
|
155
155
|
children: [keyword.label, /* @__PURE__ */ jsx("button", {
|
|
156
156
|
onClick: () => {
|
|
157
157
|
setKeywords(keywords.filter((k) => k.id !== keyword.id));
|
|
@@ -177,7 +177,7 @@ const MetaForm = (props) => {
|
|
|
177
177
|
type: "text",
|
|
178
178
|
value: githubRepository,
|
|
179
179
|
onChange: (e) => setGithubRepository(e.target.value),
|
|
180
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
180
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
181
181
|
})] }),
|
|
182
182
|
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
|
|
183
183
|
htmlFor: "package-npm",
|
|
@@ -188,7 +188,7 @@ const MetaForm = (props) => {
|
|
|
188
188
|
type: "text",
|
|
189
189
|
value: npmPackage,
|
|
190
190
|
onChange: (e) => setNpmPackage(e.target.value),
|
|
191
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
191
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
|
|
192
192
|
})] }),
|
|
193
193
|
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
|
|
194
194
|
htmlFor: "package-version",
|
|
@@ -302,6 +302,6 @@ function Editor(props) {
|
|
|
302
302
|
});
|
|
303
303
|
}
|
|
304
304
|
//#endregion
|
|
305
|
-
export { Editor as
|
|
305
|
+
export { Editor as default };
|
|
306
306
|
|
|
307
|
-
//# sourceMappingURL=editor-
|
|
307
|
+
//# sourceMappingURL=editor-DabfMxkF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-DabfMxkF.js","names":[],"sources":["../editors/vetra-package/components/MetaForm.tsx","../editors/vetra-package/config.ts","../editors/vetra-package/editor.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { useDebounce } from \"../../hooks/index.js\";\nimport type { Keyword } from \"../../../document-models/vetra-package/index.js\";\n\nexport interface MetaFormProps {\n name: string;\n description: string;\n category: string;\n publisher: string;\n publisherUrl: string;\n githubRepository: string;\n npmPackage: string;\n keywords: Keyword[];\n onNameChange?: (name: string) => void;\n onDescriptionChange?: (description: string) => void;\n onCategoryChange?: (category: string) => void;\n onPublisherChange?: (publisher: string) => void;\n onPublisherUrlChange?: (publisherUrl: string) => void;\n onGithubRepositoryChange?: (githubRepository: string) => void;\n onNpmPackageChange?: (npmPackage: string) => void;\n onAddKeyword?: (keyword: { id: string; label: string }) => void;\n onRemoveKeyword?: (id: string) => void;\n}\n\nexport const MetaForm: React.FC<MetaFormProps> = (props) => {\n const {\n name: initialName,\n description: initialDescription,\n category: initialCategory,\n publisher: initialPublisher,\n publisherUrl: initialPublisherUrl,\n githubRepository: initialGithubRepository,\n npmPackage: initialNpmPackage,\n keywords: initialKeywords,\n onNameChange,\n onDescriptionChange,\n onCategoryChange,\n onPublisherChange,\n onPublisherUrlChange,\n onGithubRepositoryChange,\n onNpmPackageChange,\n onAddKeyword,\n onRemoveKeyword,\n } = props;\n\n const [name, setName] = useState(initialName);\n const [description, setDescription] = useState(initialDescription);\n const [category, setCategory] = useState(initialCategory);\n const [publisher, setPublisher] = useState(initialPublisher);\n const [publisherUrl, setPublisherUrl] = useState(initialPublisherUrl);\n const [githubRepository, setGithubRepository] = useState(\n initialGithubRepository,\n );\n const [npmPackage, setNpmPackage] = useState(initialNpmPackage);\n\n // Keywords state\n const [keywords, setKeywords] = useState<Keyword[]>(initialKeywords);\n const [keywordInput, setKeywordInput] = useState(\"\");\n\n // Use the debounce hook with callbacks\n useDebounce(name, onNameChange, 300);\n useDebounce(description, onDescriptionChange, 300);\n useDebounce(publisher, onPublisherChange, 300);\n useDebounce(publisherUrl, onPublisherUrlChange, 300);\n useDebounce(githubRepository, onGithubRepositoryChange, 300);\n useDebounce(npmPackage, onNpmPackageChange, 300);\n\n return (\n <div className=\"grid grid-cols-1 gap-6 p-6 lg:grid-cols-3\">\n {/* Left Column */}\n <div className=\"space-y-6\">\n {/* Name Field */}\n <div>\n <label\n htmlFor=\"package-name\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Name\n </label>\n <input\n id=\"package-name\"\n type=\"text\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n </div>\n\n {/* Description Field */}\n <div>\n <label\n htmlFor=\"package-description\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Description\n </label>\n <textarea\n id=\"package-description\"\n rows={6}\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n className=\"w-full resize-none rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n </div>\n </div>\n\n {/* Middle Column */}\n <div className=\"space-y-6\">\n {/* Category Field */}\n <div>\n <label\n htmlFor=\"package-category\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Category\n </label>\n <select\n id=\"package-category\"\n value={category}\n onChange={(e) => {\n const newValue = e.target.value;\n setCategory(newValue);\n onCategoryChange?.(newValue);\n }}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n >\n <option value=\"\">Not selected</option>\n <option value=\"Productivity\">Productivity</option>\n <option value=\"Governance\">Governance</option>\n <option value=\"Project Management\">Project Management</option>\n <option value=\"Finance\">Finance</option>\n <option value=\"Legal\">Legal</option>\n <option value=\"People & Culture\">People & Culture</option>\n <option value=\"Engineering\">Engineering</option>\n </select>\n </div>\n\n {/* Publisher Field */}\n <div>\n <label\n htmlFor=\"package-publisher\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Publisher\n </label>\n <input\n id=\"package-publisher\"\n type=\"text\"\n value={publisher}\n onChange={(e) => setPublisher(e.target.value)}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n </div>\n\n {/* Publisher URL Field */}\n <div>\n <label\n htmlFor=\"package-publisher-url\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Publisher URL\n </label>\n <input\n id=\"package-publisher-url\"\n type=\"text\"\n value={publisherUrl}\n onChange={(e) => setPublisherUrl(e.target.value)}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n </div>\n\n {/* Keywords Field */}\n <div>\n <label\n htmlFor=\"package-keywords\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Keywords\n </label>\n <div className=\"space-y-2\">\n <input\n id=\"package-keywords\"\n type=\"text\"\n value={keywordInput}\n onChange={(e) => setKeywordInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && keywordInput.trim()) {\n e.preventDefault();\n const newKeyword = {\n id: Date.now().toString(), // Generate a unique ID\n label: keywordInput.trim(),\n };\n setKeywords([...keywords, newKeyword]);\n onAddKeyword?.(newKeyword);\n setKeywordInput(\"\");\n }\n }}\n placeholder=\"Type a keyword and press Enter\"\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n <div className=\"flex min-h-[80px] flex-wrap gap-2 rounded-md border border-gray-300 p-3\">\n {keywords.map((keyword) => (\n <span\n key={keyword.id}\n className=\"inline-flex items-center rounded-sm border border-blue-300 bg-blue-100 px-2 py-0.5 text-xs text-blue-800\"\n >\n {keyword.label}\n <button\n onClick={() => {\n setKeywords(keywords.filter((k) => k.id !== keyword.id));\n onRemoveKeyword?.(keyword.id);\n }}\n className=\"ml-1 text-blue-600 hover:text-blue-800 focus:outline-none\"\n >\n ×\n </button>\n </span>\n ))}\n </div>\n </div>\n </div>\n </div>\n\n {/* Right Column */}\n <div className=\"space-y-6\">\n {/* Github Repository Field */}\n <div>\n <label\n htmlFor=\"package-github\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Github Repository\n </label>\n <input\n id=\"package-github\"\n type=\"text\"\n value={githubRepository}\n onChange={(e) => setGithubRepository(e.target.value)}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n </div>\n\n {/* NPM-package Field */}\n <div>\n <label\n htmlFor=\"package-npm\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n NPM-package\n </label>\n <input\n id=\"package-npm\"\n type=\"text\"\n value={npmPackage}\n onChange={(e) => setNpmPackage(e.target.value)}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n />\n </div>\n\n {/* Version Field */}\n <div>\n <label\n htmlFor=\"package-version\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Version\n </label>\n <input\n id=\"package-version\"\n type=\"text\"\n placeholder=\"1.0.0-dev\"\n readOnly\n className=\"w-full cursor-not-allowed rounded-md border border-gray-300 bg-gray-50 px-3 py-2 text-gray-500\"\n />\n </div>\n\n {/* License Field */}\n <div>\n <label\n htmlFor=\"package-license\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n License\n </label>\n <input\n id=\"package-license\"\n type=\"text\"\n placeholder=\"AGPL-3.0-only\"\n readOnly\n className=\"w-full cursor-not-allowed rounded-md border border-gray-300 bg-gray-50 px-3 py-2 text-gray-500\"\n />\n </div>\n\n {/* Install with Field */}\n <div>\n <label\n htmlFor=\"package-install\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Install with:\n </label>\n <input\n id=\"package-install\"\n type=\"text\"\n placeholder=\"@powerhousedao/todo-demo-package\"\n readOnly\n className=\"w-full cursor-not-allowed rounded-md border border-gray-300 bg-gray-50 px-3 py-2 text-gray-500\"\n />\n </div>\n </div>\n </div>\n );\n};\n","import type { PHDocumentEditorConfig } from \"@powerhousedao/reactor-browser\";\n\nexport const editorConfig: PHDocumentEditorConfig = {\n isExternalControlsEnabled: false,\n};\n","import { DocumentToolbar } from \"@powerhousedao/design-system/connect\";\nimport { useSetPHDocumentEditorConfig } from \"@powerhousedao/reactor-browser\";\nimport { useCallback } from \"react\";\nimport {\n addPackageKeyword,\n removePackageKeyword,\n setPackageAuthorName,\n setPackageAuthorWebsite,\n setPackageCategory,\n setPackageDescription,\n setPackageGithubUrl,\n setPackageName,\n setPackageNpmUrl,\n} from \"../../document-models/vetra-package/index.js\";\nimport { useSelectedDriveVetraPackage } from \"../hooks/useVetraDocument.js\";\nimport { MetaForm } from \"./components/MetaForm.js\";\nimport { editorConfig } from \"./config.js\";\n\nexport type EditorProps = {\n displayToolbar?: boolean;\n};\n\nexport default function Editor(props: EditorProps) {\n const { displayToolbar = true } = props;\n useSetPHDocumentEditorConfig(editorConfig);\n const [document, dispatch] = useSelectedDriveVetraPackage();\n\n const onNameChange = useCallback(\n (name: string) => {\n if (!document.state.global.name && !name) return;\n if (name === document.state.global.name) return;\n\n dispatch(setPackageName({ name }));\n },\n [document.state.global.name],\n );\n\n const onDescriptionChange = useCallback(\n (description: string) => {\n if (!document.state.global.description && !description) return;\n if (description === document.state.global.description) return;\n\n dispatch(setPackageDescription({ description }));\n },\n [document.state.global.description],\n );\n\n const onCategoryChange = useCallback(\n (category: string) => {\n if (!document.state.global.category && !category) return;\n if (category === document.state.global.category) return;\n\n dispatch(setPackageCategory({ category }));\n },\n [document.state.global.category],\n );\n\n const onPublisherChange = useCallback(\n (name: string) => {\n if (!document.state.global.author.name && !name) return;\n if (name === document.state.global.author.name) return;\n\n dispatch(setPackageAuthorName({ name }));\n },\n [document.state.global.author.name],\n );\n\n const onPublisherUrlChange = useCallback(\n (website: string) => {\n if (!document.state.global.author.website && !website) return;\n if (website === document.state.global.author.website) return;\n\n dispatch(setPackageAuthorWebsite({ website }));\n },\n [document.state.global.author.website],\n );\n\n const onGithubRepositoryChange = useCallback(\n (url: string) => {\n if (!document.state.global.githubUrl && !url) return;\n if (url === document.state.global.githubUrl) return;\n\n dispatch(setPackageGithubUrl({ url }));\n },\n [document.state.global.githubUrl],\n );\n\n const onNpmPackageChange = useCallback(\n (url: string) => {\n if (!document.state.global.npmUrl && !url) return;\n if (url === document.state.global.npmUrl) return;\n\n dispatch(setPackageNpmUrl({ url }));\n },\n [document.state.global.npmUrl],\n );\n\n const onAddKeyword = useCallback((keyword: { id: string; label: string }) => {\n dispatch(addPackageKeyword(keyword));\n }, []);\n\n const onRemoveKeyword = useCallback((id: string) => {\n dispatch(removePackageKeyword({ id }));\n }, []);\n\n return (\n <div className=\"bg-gray-50 p-6\">\n {displayToolbar && <DocumentToolbar />}\n <MetaForm\n name={document.state.global.name ?? \"\"}\n description={document.state.global.description ?? \"\"}\n category={document.state.global.category ?? \"\"}\n publisher={document.state.global.author.name ?? \"\"}\n publisherUrl={document.state.global.author.website ?? \"\"}\n githubRepository={document.state.global.githubUrl ?? \"\"}\n npmPackage={document.state.global.npmUrl ?? \"\"}\n keywords={document.state.global.keywords}\n onNameChange={onNameChange}\n onDescriptionChange={onDescriptionChange}\n onCategoryChange={onCategoryChange}\n onPublisherChange={onPublisherChange}\n onPublisherUrlChange={onPublisherUrlChange}\n onGithubRepositoryChange={onGithubRepositoryChange}\n onNpmPackageChange={onNpmPackageChange}\n onAddKeyword={onAddKeyword}\n onRemoveKeyword={onRemoveKeyword}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as useSelectedProcessorModuleDocument } from "./useVetraDocument-DF0teXXM.js";
|
|
3
|
-
import { n as useAvailableDocumentTypes, t as useDebounce } from "./hooks-Vx4YtE1e.js";
|
|
1
|
+
import { _ as removeDocumentType, b as setProcessorStatus, h as addProcessorApp, m as addDocumentType, v as removeProcessorApp, x as setProcessorType, y as setProcessorName } from "./utils-Byjf33qt.js";
|
|
4
2
|
import { StatusPill } from "./editors/components/index.js";
|
|
3
|
+
import { n as useAvailableDocumentTypes, t as useDebounce } from "./hooks-Btogj1f0.js";
|
|
4
|
+
import { n as useSelectedProcessorModuleDocument } from "./useVetraDocument-BQKyels4.js";
|
|
5
5
|
import { useSetPHDocumentEditorConfig } from "@powerhousedao/reactor-browser";
|
|
6
6
|
import { PROCESSOR_APPS } from "@powerhousedao/shared/processors";
|
|
7
7
|
import { useCallback, useEffect, useState } from "react";
|
|
8
|
-
import { DocumentToolbar } from "@powerhousedao/design-system/connect";
|
|
9
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { DocumentToolbar } from "@powerhousedao/design-system/connect";
|
|
10
10
|
//#region editors/processor-editor/components/ProcessorEditorForm.tsx
|
|
11
11
|
const ProcessorEditorForm = ({ processorName: initialProcessorName = "", processorType: initialProcessorType = "", documentTypes: initialDocumentTypes = [], processorApps: initialProcessorApps = [], status = "DRAFT", onNameChange, onTypeChange, onAddDocumentType, onRemoveDocumentType, onAddProcessorApp, onRemoveProcessorApp, onConfirm }) => {
|
|
12
12
|
const [processorName, setProcessorName] = useState(initialProcessorName);
|
|
@@ -68,7 +68,7 @@ const ProcessorEditorForm = ({ processorName: initialProcessorName = "", process
|
|
|
68
68
|
value: processorName,
|
|
69
69
|
onChange: (e) => setProcessorName(e.target.value),
|
|
70
70
|
disabled: isReadOnly,
|
|
71
|
-
className: `w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
71
|
+
className: `w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none ${isReadOnly ? "cursor-not-allowed bg-gray-100" : ""}`,
|
|
72
72
|
placeholder: "Enter processor name"
|
|
73
73
|
})] }),
|
|
74
74
|
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("label", {
|
|
@@ -80,7 +80,7 @@ const ProcessorEditorForm = ({ processorName: initialProcessorName = "", process
|
|
|
80
80
|
value: processorType,
|
|
81
81
|
onChange: (e) => setProcessorType(e.target.value),
|
|
82
82
|
disabled: isReadOnly,
|
|
83
|
-
className: `w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
83
|
+
className: `w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none ${isReadOnly ? "cursor-not-allowed bg-gray-100" : ""}`,
|
|
84
84
|
children: [
|
|
85
85
|
/* @__PURE__ */ jsx("option", {
|
|
86
86
|
value: "",
|
|
@@ -118,7 +118,7 @@ const ProcessorEditorForm = ({ processorName: initialProcessorName = "", process
|
|
|
118
118
|
}
|
|
119
119
|
setSelectedDocumentType("");
|
|
120
120
|
},
|
|
121
|
-
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:
|
|
121
|
+
className: "w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none",
|
|
122
122
|
children: [/* @__PURE__ */ jsx("option", {
|
|
123
123
|
value: "",
|
|
124
124
|
children: "Select a document type to add"
|
|
@@ -178,7 +178,7 @@ const ProcessorEditorForm = ({ processorName: initialProcessorName = "", process
|
|
|
178
178
|
!isReadOnly && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("button", {
|
|
179
179
|
onClick: handleConfirm,
|
|
180
180
|
disabled: !canConfirm,
|
|
181
|
-
className: "rounded-md bg-blue-600 px-4 py-2 text-white hover:bg-blue-700 focus:
|
|
181
|
+
className: "rounded-md bg-blue-600 px-4 py-2 text-white hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:bg-gray-300",
|
|
182
182
|
children: "Confirm"
|
|
183
183
|
}) })
|
|
184
184
|
]
|
|
@@ -239,4 +239,4 @@ function Editor() {
|
|
|
239
239
|
//#endregion
|
|
240
240
|
export { Editor as default };
|
|
241
241
|
|
|
242
|
-
//# sourceMappingURL=editor-
|
|
242
|
+
//# sourceMappingURL=editor-WWMGVelM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-WWMGVelM.js","names":[],"sources":["../editors/processor-editor/components/ProcessorEditorForm.tsx","../editors/processor-editor/config.ts","../editors/processor-editor/editor.tsx"],"sourcesContent":["import {\n PROCESSOR_APPS,\n type ProcessorApp,\n type ProcessorApps,\n} from \"@powerhousedao/shared/processors\";\nimport { useEffect, useState } from \"react\";\nimport type { DocumentTypeItem } from \"../../../document-models/processor-module/index.js\";\nimport { StatusPill } from \"../../components/index.js\";\nimport { useAvailableDocumentTypes, useDebounce } from \"../../hooks/index.js\";\n\nexport interface ProcessorEditorFormProps {\n processorName?: string;\n processorType?: string;\n documentTypes?: DocumentTypeItem[];\n processorApps?: ProcessorApps;\n status?: string;\n onNameChange?: (name: string) => void;\n onTypeChange?: (type: string) => void;\n onAddDocumentType?: (id: string, documentType: string) => void;\n onRemoveDocumentType?: (id: string) => void;\n onAddProcessorApp?: (processorApp: ProcessorApp) => void;\n onRemoveProcessorApp?: (processorApp: ProcessorApp) => void;\n onConfirm?: () => void;\n}\n\nexport const ProcessorEditorForm: React.FC<ProcessorEditorFormProps> = ({\n processorName: initialProcessorName = \"\",\n processorType: initialProcessorType = \"\",\n documentTypes: initialDocumentTypes = [],\n processorApps: initialProcessorApps = [],\n status = \"DRAFT\",\n onNameChange,\n onTypeChange,\n onAddDocumentType,\n onRemoveDocumentType,\n onAddProcessorApp,\n onRemoveProcessorApp,\n onConfirm,\n}) => {\n const [processorName, setProcessorName] = useState(initialProcessorName);\n const [processorType, setProcessorType] = useState(initialProcessorType);\n const [documentTypes, setDocumentTypes] =\n useState<DocumentTypeItem[]>(initialDocumentTypes);\n const [selectedDocumentType, setSelectedDocumentType] = useState(\"\");\n const [processorApps, setProcessorApps] = useState(initialProcessorApps);\n const [isConfirmed, setIsConfirmed] = useState(false);\n\n // Get available document types from the hook (combines reactor and vetra drive)\n const availableDocumentTypes = useAvailableDocumentTypes();\n\n // Use the debounce hook for name and type changes\n useDebounce(processorName, onNameChange, 300);\n useDebounce(processorType, onTypeChange, 300);\n\n // Update local state when initial values change\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setProcessorName(initialProcessorName);\n }, [initialProcessorName]);\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setProcessorType(initialProcessorType);\n }, [initialProcessorType]);\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setDocumentTypes(initialDocumentTypes);\n }, [initialDocumentTypes]);\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setProcessorApps(initialProcessorApps);\n }, [initialProcessorApps]);\n\n // Reset confirmation state if status changes back to DRAFT\n useEffect(() => {\n if (status === \"DRAFT\") {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setIsConfirmed(false);\n }\n }, [status]);\n\n // Check if form should be read-only\n const isReadOnly = isConfirmed || status === \"CONFIRMED\";\n\n const handleConfirm = () => {\n if (\n processorName.trim() &&\n processorType &&\n documentTypes.length > 0 &&\n processorApps.length > 0\n ) {\n setIsConfirmed(true); // Immediate UI update\n onConfirm?.();\n }\n };\n\n const handleRemoveDocumentType = (id: string) => {\n setDocumentTypes(documentTypes.filter((dt) => dt.id !== id));\n onRemoveDocumentType?.(id);\n };\n\n const canConfirm =\n !!processorName.trim() &&\n !!processorType &&\n documentTypes.length > 0 &&\n processorApps.length > 0;\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-medium text-gray-900\">\n Processor Configuration\n </h2>\n <StatusPill\n status={status === \"CONFIRMED\" ? \"confirmed\" : \"draft\"}\n label={status === \"CONFIRMED\" ? \"Confirmed\" : \"Draft\"}\n />\n </div>\n\n {/* Processor Name Field */}\n <div>\n <label\n htmlFor=\"processor-name\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Processor Name\n </label>\n <input\n id=\"processor-name\"\n type=\"text\"\n value={processorName}\n onChange={(e) => setProcessorName(e.target.value)}\n disabled={isReadOnly}\n className={`w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none ${\n isReadOnly ? \"cursor-not-allowed bg-gray-100\" : \"\"\n }`}\n placeholder=\"Enter processor name\"\n />\n </div>\n\n {/* Processor Type Dropdown */}\n <div>\n <label\n htmlFor=\"processor-type\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Type\n </label>\n <select\n id=\"processor-type\"\n value={processorType}\n onChange={(e) => setProcessorType(e.target.value)}\n disabled={isReadOnly}\n className={`w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none ${\n isReadOnly ? \"cursor-not-allowed bg-gray-100\" : \"\"\n }`}\n >\n <option value=\"\">Select type...</option>\n <option value=\"analytics\">Analytics</option>\n <option value=\"relational\">Relational Database</option>\n </select>\n </div>\n\n {/* Document Types Field */}\n <div>\n <label\n htmlFor=\"document-types\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Document Types\n </label>\n <div className=\"space-y-2\">\n {!isReadOnly && availableDocumentTypes.length > 0 && (\n <select\n id=\"document-types\"\n value={selectedDocumentType}\n onChange={(e) => {\n const selectedValue = e.target.value;\n if (\n selectedValue &&\n !documentTypes.some((dt) => dt.documentType === selectedValue)\n ) {\n const id = Date.now().toString();\n const newType: DocumentTypeItem = {\n id,\n documentType: selectedValue,\n };\n setDocumentTypes([...documentTypes, newType]);\n onAddDocumentType?.(id, selectedValue);\n }\n setSelectedDocumentType(\"\");\n }}\n className=\"w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none\"\n >\n <option value=\"\">Select a document type to add</option>\n {availableDocumentTypes\n .filter(\n (docType) =>\n !documentTypes.some((dt) => dt.documentType === docType),\n )\n .map((docType) => (\n <option key={docType} value={docType}>\n {docType}\n </option>\n ))}\n </select>\n )}\n <div className=\"space-y-1\">\n {documentTypes.map((type) => (\n <div key={type.id} className=\"flex items-center py-1\">\n <span className=\"text-sm text-gray-700\">\n {type.documentType}\n </span>\n {!isReadOnly && (\n <button\n onClick={() => handleRemoveDocumentType(type.id)}\n className=\"ml-2 text-gray-400 hover:text-gray-600 focus:outline-none\"\n >\n ×\n </button>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n {/* Processor Apps Field */}\n <div>\n <label\n htmlFor=\"processor-apps\"\n className=\"mb-2 block text-sm font-medium text-gray-700\"\n >\n Processor Apps\n </label>\n <div className=\"space-y-2\">\n {!isReadOnly && (\n <>\n {PROCESSOR_APPS.map((processorApp) => (\n <div key={processorApp} className=\"flex gap-1\">\n <input\n type=\"checkbox\"\n name={processorApp}\n id={processorApp}\n checked={processorApps.includes(processorApp)}\n onChange={(event) => {\n const isChecked = event.target.checked;\n if (isChecked) {\n setProcessorApps((processorApps) => [\n ...new Set([...processorApps, processorApp]),\n ]);\n onAddProcessorApp?.(processorApp);\n } else {\n if (processorApps.length > 1) {\n setProcessorApps((processorApps) =>\n processorApps.filter((p) => p !== processorApp),\n );\n onRemoveProcessorApp?.(processorApp);\n }\n }\n }}\n />\n <label htmlFor={processorApp}>{processorApp}</label>\n </div>\n ))}\n </>\n )}\n <div className=\"space-y-1\">\n {isReadOnly &&\n processorApps.map((processorApp) => (\n <span key={processorApp} className=\"text-sm text-gray-700\">\n {processorApp}\n </span>\n ))}\n </div>\n </div>\n </div>\n {/* Confirm Button - only show if not in read-only mode */}\n {!isReadOnly && (\n <div>\n <button\n onClick={handleConfirm}\n disabled={!canConfirm}\n className=\"rounded-md bg-blue-600 px-4 py-2 text-white hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:bg-gray-300\"\n >\n Confirm\n </button>\n </div>\n )}\n </div>\n );\n};\n","import type { PHDocumentEditorConfig } from \"@powerhousedao/reactor-browser\";\n\nexport const editorConfig: PHDocumentEditorConfig = {\n isExternalControlsEnabled: false,\n};\n","import { DocumentToolbar } from \"@powerhousedao/design-system/connect\";\nimport { useSetPHDocumentEditorConfig } from \"@powerhousedao/reactor-browser\";\nimport type {\n ProcessorApp,\n ProcessorApps,\n} from \"@powerhousedao/shared/processors\";\nimport { useCallback } from \"react\";\nimport {\n addDocumentType,\n addProcessorApp,\n removeDocumentType,\n removeProcessorApp,\n setProcessorName,\n setProcessorStatus,\n setProcessorType,\n} from \"../../document-models/processor-module/index.js\";\nimport { useSelectedProcessorModuleDocument } from \"../hooks/useVetraDocument.js\";\nimport { ProcessorEditorForm } from \"./components/ProcessorEditorForm.js\";\nimport { editorConfig } from \"./config.js\";\n\nexport default function Editor() {\n useSetPHDocumentEditorConfig(editorConfig);\n const [document, dispatch] = useSelectedProcessorModuleDocument();\n\n const onConfirm = useCallback(() => {\n // Dispatch all actions at once\n dispatch([setProcessorStatus({ status: \"CONFIRMED\" })]);\n }, [dispatch]);\n\n const onNameChange = useCallback(\n (name: string) => {\n if (name === document.state.global.name) return;\n dispatch(setProcessorName({ name }));\n },\n [document.state.global.name, dispatch],\n );\n\n const onTypeChange = useCallback(\n (type: string) => {\n if (type === document.state.global.type) return;\n dispatch(setProcessorType({ type }));\n },\n [document.state.global.type, dispatch],\n );\n\n const onAddDocumentType = useCallback(\n (id: string, documentType: string) => {\n dispatch(addDocumentType({ id, documentType }));\n },\n [dispatch],\n );\n\n const onRemoveDocumentType = useCallback(\n (id: string) => {\n dispatch(removeDocumentType({ id }));\n },\n [dispatch],\n );\n\n const onAddProcessorApp = useCallback(\n (processorApp: ProcessorApp) => {\n dispatch(addProcessorApp({ processorApp }));\n },\n [dispatch],\n );\n\n const onRemoveProcessorApp = useCallback(\n (processorApp: ProcessorApp) => {\n dispatch(removeProcessorApp({ processorApp }));\n },\n [dispatch],\n );\n\n return (\n <div className=\"bg-gray-50 p-6\">\n <DocumentToolbar />\n <ProcessorEditorForm\n onNameChange={onNameChange}\n onTypeChange={onTypeChange}\n onAddDocumentType={onAddDocumentType}\n onRemoveDocumentType={onRemoveDocumentType}\n onAddProcessorApp={onAddProcessorApp}\n onRemoveProcessorApp={onRemoveProcessorApp}\n status={document.state.global.status}\n processorName={document.state.global.name ?? \"\"}\n processorType={document.state.global.type ?? \"\"}\n documentTypes={document.state.global.documentTypes ?? []}\n processorApps={document.state.global.processorApps as ProcessorApps}\n onConfirm={onConfirm}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as useAvailableDocumentTypes, t as useDebounce } from "../../hooks-
|
|
1
|
+
import { n as useAvailableDocumentTypes, t as useDebounce } from "../../hooks-Btogj1f0.js";
|
|
2
2
|
export { useAvailableDocumentTypes, useDebounce };
|
package/dist/editors/index.d.ts
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { EditorModule } from "
|
|
1
|
+
import { EditorModule } from "document-model";
|
|
2
|
+
import { EditorModule as EditorModule$1 } from "@powerhousedao/shared/document-model";
|
|
3
|
+
|
|
2
4
|
//#region editors/app-editor/module.d.ts
|
|
3
5
|
/** Document editor module for the "powerhouse/app" document type */
|
|
4
6
|
declare const AppEditor: EditorModule;
|
|
5
7
|
//#endregion
|
|
6
8
|
//#region editors/document-editor/module.d.ts
|
|
7
|
-
|
|
9
|
+
/** Document editor module for the "powerhouse/document-editor" document type */
|
|
10
|
+
declare const DocumentEditorEditor: EditorModule;
|
|
8
11
|
//#endregion
|
|
9
12
|
//#region editors/processor-editor/module.d.ts
|
|
10
|
-
|
|
13
|
+
/** Document editor module for the "powerhouse/processor" document type */
|
|
14
|
+
declare const ProcessorModuleEditor: EditorModule;
|
|
11
15
|
//#endregion
|
|
12
16
|
//#region editors/subgraph-editor/module.d.ts
|
|
13
|
-
|
|
17
|
+
/** Document editor module for the "powerhouse/subgraph" document type */
|
|
18
|
+
declare const SubgraphModuleEditor: EditorModule;
|
|
14
19
|
//#endregion
|
|
15
20
|
//#region editors/vetra-drive-app/module.d.ts
|
|
16
|
-
declare const VetraDriveApp: EditorModule;
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region editors/vetra-package/editor.d.ts
|
|
19
|
-
type EditorProps = {
|
|
20
|
-
displayToolbar?: boolean;
|
|
21
|
-
};
|
|
21
|
+
declare const VetraDriveApp: EditorModule$1;
|
|
22
22
|
//#endregion
|
|
23
23
|
//#region editors/vetra-package/module.d.ts
|
|
24
|
-
|
|
24
|
+
/** Document editor module for the "powerhouse/package" document type */
|
|
25
|
+
declare const VetraPackageEditor: EditorModule;
|
|
25
26
|
//#endregion
|
|
26
|
-
export { AppEditor,
|
|
27
|
+
export { AppEditor, DocumentEditorEditor, ProcessorModuleEditor, SubgraphModuleEditor, VetraDriveApp, VetraPackageEditor };
|
|
27
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../editors/app-editor/module.ts","../../editors/document-editor/module.ts","../../editors/processor-editor/module.ts","../../editors/subgraph-editor/module.ts","../../editors/vetra-drive-app/module.ts","../../editors/vetra-package/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../editors/app-editor/module.ts","../../editors/document-editor/module.ts","../../editors/processor-editor/module.ts","../../editors/subgraph-editor/module.ts","../../editors/vetra-drive-app/module.ts","../../editors/vetra-package/module.ts"],"mappings":";;;;;cAQa,SAAA,EAAW,YAAA;;;;cCAX,oBAAA,EAAsB,YAAA;;;;cCAtB,qBAAA,EAAuB,YAAA;;;;cCAvB,oBAAA,EAAsB,YAAA;;;cCLtB,aAAA,EAAe,cAAA;;;;cCKf,kBAAA,EAAoB,YAAA"}
|
package/dist/editors/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { AppEditor,
|
|
1
|
+
import { a as DocumentEditorEditor, i as ProcessorModuleEditor, n as VetraDriveApp, o as AppEditor, r as SubgraphModuleEditor, t as VetraPackageEditor } from "../module-jWN6gsmi.js";
|
|
2
|
+
export { AppEditor, DocumentEditorEditor, ProcessorModuleEditor, SubgraphModuleEditor, VetraDriveApp, VetraPackageEditor };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { t as logger } from "./logger-CYkStoEb.js";
|
|
2
|
+
//#region processors/vetra-read-model/migrations.ts
|
|
3
|
+
async function up(db) {
|
|
4
|
+
await db.schema.createTable("vetra_package").addColumn("document_id", "varchar(255)", (col) => col.primaryKey()).addColumn("name", "varchar(255)").addColumn("description", "text").addColumn("category", "varchar(255)").addColumn("author_name", "varchar(255)").addColumn("author_website", "varchar(512)").addColumn("keywords", "text").addColumn("github_url", "varchar(512)").addColumn("npm_url", "varchar(512)").addColumn("drive_id", "varchar(255)").addColumn("last_operation_index", "integer", (col) => col.notNull()).addColumn("last_operation_hash", "varchar(255)", (col) => col.notNull()).addColumn("last_operation_timestamp", "timestamptz", (col) => col.notNull()).addColumn("created_at", "timestamptz", (col) => col.notNull().defaultTo("now()")).addColumn("updated_at", "timestamptz", (col) => col.notNull().defaultTo("now()")).ifNotExists().execute();
|
|
5
|
+
await db.schema.createIndex("idx_vetra_package_document_id").on("vetra_package").column("document_id").ifNotExists().execute();
|
|
6
|
+
await db.schema.createIndex("idx_vetra_package_name").on("vetra_package").column("name").ifNotExists().execute();
|
|
7
|
+
await db.schema.createIndex("idx_vetra_package_category").on("vetra_package").column("category").ifNotExists().execute();
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region processors/vetra-read-model/processor.ts
|
|
11
|
+
var VetraReadModelProcessor = class {
|
|
12
|
+
relationalDb;
|
|
13
|
+
constructor(relationalDb) {
|
|
14
|
+
this.relationalDb = relationalDb;
|
|
15
|
+
}
|
|
16
|
+
async onOperations(operations) {
|
|
17
|
+
logger.info(">>> VetraReadModelProcessor.onOperations()");
|
|
18
|
+
if (operations.length === 0) return;
|
|
19
|
+
for (const { operation, context } of operations) {
|
|
20
|
+
if (context.documentType !== "powerhouse/package") continue;
|
|
21
|
+
const state = context.resultingState ? JSON.parse(context.resultingState) : void 0;
|
|
22
|
+
const getString = (val) => typeof val === "string" ? val : null;
|
|
23
|
+
const now = /* @__PURE__ */ new Date();
|
|
24
|
+
const operationTimestamp = new Date(parseInt(operation.timestampUtcMs, 10));
|
|
25
|
+
await this.relationalDb.insertInto("vetra_package").values({
|
|
26
|
+
document_id: context.documentId,
|
|
27
|
+
name: getString(state?.name),
|
|
28
|
+
description: getString(state?.description),
|
|
29
|
+
category: getString(state?.category),
|
|
30
|
+
author_name: getString(state?.author?.name),
|
|
31
|
+
author_website: getString(state?.author?.website),
|
|
32
|
+
keywords: state?.keywords ? JSON.stringify(state.keywords) : null,
|
|
33
|
+
github_url: getString(state?.githubUrl),
|
|
34
|
+
npm_url: getString(state?.npmUrl),
|
|
35
|
+
last_operation_index: operation.index,
|
|
36
|
+
last_operation_hash: operation.hash,
|
|
37
|
+
last_operation_timestamp: operationTimestamp,
|
|
38
|
+
drive_id: "",
|
|
39
|
+
created_at: now,
|
|
40
|
+
updated_at: now
|
|
41
|
+
}).onConflict((oc) => oc.column("document_id").doUpdateSet({
|
|
42
|
+
name: getString(state?.name),
|
|
43
|
+
description: getString(state?.description),
|
|
44
|
+
category: getString(state?.category),
|
|
45
|
+
author_name: getString(state?.author?.name),
|
|
46
|
+
author_website: getString(state?.author?.website),
|
|
47
|
+
keywords: state?.keywords ? JSON.stringify(state.keywords) : null,
|
|
48
|
+
github_url: getString(state?.githubUrl),
|
|
49
|
+
npm_url: getString(state?.npmUrl),
|
|
50
|
+
last_operation_index: operation.index,
|
|
51
|
+
last_operation_hash: operation.hash,
|
|
52
|
+
last_operation_timestamp: operationTimestamp,
|
|
53
|
+
updated_at: now
|
|
54
|
+
})).execute();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async onDisconnect() {}
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
//#region processors/vetra-read-model/factory.ts
|
|
61
|
+
const vetraReadModelFactoryBuilder = (module) => {
|
|
62
|
+
return async (driveHeader) => {
|
|
63
|
+
const db = await module.relationalDb.createNamespace("vetra-packages");
|
|
64
|
+
await up(db);
|
|
65
|
+
return [{
|
|
66
|
+
processor: new VetraReadModelProcessor(db),
|
|
67
|
+
filter: {
|
|
68
|
+
branch: ["main"],
|
|
69
|
+
documentId: ["*"],
|
|
70
|
+
documentType: ["powerhouse/package"],
|
|
71
|
+
scope: ["global"]
|
|
72
|
+
}
|
|
73
|
+
}];
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
export { VetraReadModelProcessor as n, vetraReadModelFactoryBuilder as t };
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=factory-Bd_0OaF8.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-Bd_0OaF8.js","names":[],"sources":["../processors/vetra-read-model/migrations.ts","../processors/vetra-read-model/processor.ts","../processors/vetra-read-model/factory.ts"],"sourcesContent":["import type { IRelationalDb } from \"@powerhousedao/shared/processors\";\n\nexport async function up(db: IRelationalDb<any>): Promise<void> {\n // Create vetra_package table to store VetraPackage document state\n await db.schema\n .createTable(\"vetra_package\")\n .addColumn(\"document_id\", \"varchar(255)\", (col) => col.primaryKey()) // VetraPackage state fields\n .addColumn(\"name\", \"varchar(255)\")\n .addColumn(\"description\", \"text\")\n .addColumn(\"category\", \"varchar(255)\")\n .addColumn(\"author_name\", \"varchar(255)\")\n .addColumn(\"author_website\", \"varchar(512)\")\n .addColumn(\"keywords\", \"text\") // JSON array of {id, label}\n .addColumn(\"github_url\", \"varchar(512)\")\n .addColumn(\"npm_url\", \"varchar(512)\")\n .addColumn(\"drive_id\", \"varchar(255)\")\n // Document metadata\n .addColumn(\"last_operation_index\", \"integer\", (col) => col.notNull())\n .addColumn(\"last_operation_hash\", \"varchar(255)\", (col) => col.notNull())\n .addColumn(\"last_operation_timestamp\", \"timestamptz\", (col) =>\n col.notNull(),\n )\n .addColumn(\"created_at\", \"timestamptz\", (col) =>\n col.notNull().defaultTo(\"now()\"),\n )\n .addColumn(\"updated_at\", \"timestamptz\", (col) =>\n col.notNull().defaultTo(\"now()\"),\n )\n .ifNotExists()\n .execute();\n\n // Create indexes for common queries\n await db.schema\n .createIndex(\"idx_vetra_package_document_id\")\n .on(\"vetra_package\")\n .column(\"document_id\")\n .ifNotExists()\n .execute();\n\n await db.schema\n .createIndex(\"idx_vetra_package_name\")\n .on(\"vetra_package\")\n .column(\"name\")\n .ifNotExists()\n .execute();\n\n await db.schema\n .createIndex(\"idx_vetra_package_category\")\n .on(\"vetra_package\")\n .column(\"category\")\n .ifNotExists()\n .execute();\n}\n\nexport async function down(db: IRelationalDb<any>): Promise<void> {\n // Drop indexes first\n await db.schema.dropIndex(\"idx_vetra_package_category\").ifExists().execute();\n await db.schema.dropIndex(\"idx_vetra_package_name\").ifExists().execute();\n await db.schema\n .dropIndex(\"idx_vetra_package_document_id\")\n .ifExists()\n .execute();\n\n // Drop table\n await db.schema.dropTable(\"vetra_package\").ifExists().execute();\n}\n","import type {\n IProcessor,\n OperationWithContext,\n} from \"@powerhousedao/reactor-browser\";\nimport type { Kysely } from \"kysely\";\nimport type { VetraPackageState } from \"../../document-models/vetra-package/v1/gen/schema/types.js\";\nimport { logger } from \"../codegen/logger.js\";\nimport { type DB } from \"./schema.js\";\n\ninterface VetraPackageGlobalState extends VetraPackageState {}\n\nexport class VetraReadModelProcessor implements IProcessor {\n private relationalDb: Kysely<DB>;\n\n constructor(relationalDb: Kysely<DB>) {\n this.relationalDb = relationalDb;\n }\n\n async onOperations(operations: OperationWithContext[]): Promise<void> {\n logger.info(\">>> VetraReadModelProcessor.onOperations()\");\n if (operations.length === 0) return;\n\n for (const { operation, context } of operations) {\n if (context.documentType !== \"powerhouse/package\") continue;\n\n const state = context.resultingState\n ? (JSON.parse(context.resultingState) as VetraPackageGlobalState)\n : undefined;\n\n const getString = (val: unknown): string | null =>\n typeof val === \"string\" ? val : null;\n\n const now = new Date();\n const operationTimestamp = new Date(\n parseInt(operation.timestampUtcMs, 10),\n );\n\n await this.relationalDb\n .insertInto(\"vetra_package\")\n .values({\n document_id: context.documentId,\n name: getString(state?.name),\n description: getString(state?.description),\n category: getString(state?.category),\n author_name: getString(state?.author?.name),\n author_website: getString(state?.author?.website),\n keywords: state?.keywords ? JSON.stringify(state.keywords) : null,\n github_url: getString(state?.githubUrl),\n npm_url: getString(state?.npmUrl),\n last_operation_index: operation.index,\n last_operation_hash: operation.hash,\n last_operation_timestamp: operationTimestamp,\n drive_id: \"\", // Not available in new format\n created_at: now,\n updated_at: now,\n })\n .onConflict((oc) =>\n oc.column(\"document_id\").doUpdateSet({\n name: getString(state?.name),\n description: getString(state?.description),\n category: getString(state?.category),\n author_name: getString(state?.author?.name),\n author_website: getString(state?.author?.website),\n keywords: state?.keywords ? JSON.stringify(state.keywords) : null,\n github_url: getString(state?.githubUrl),\n npm_url: getString(state?.npmUrl),\n last_operation_index: operation.index,\n last_operation_hash: operation.hash,\n last_operation_timestamp: operationTimestamp,\n updated_at: now,\n }),\n )\n .execute();\n }\n }\n\n async onDisconnect() {}\n}\n","import type {\n IProcessorHostModule,\n ProcessorFactoryBuilder,\n ProcessorRecord,\n} from \"@powerhousedao/reactor-browser\";\nimport type { PHDocumentHeader } from \"@powerhousedao/shared/document-model\";\nimport { up } from \"./migrations.js\";\nimport { VetraReadModelProcessor } from \"./processor.js\";\nimport type { DB } from \"./schema.js\";\n\nexport const vetraReadModelFactoryBuilder: ProcessorFactoryBuilder = (\n module: IProcessorHostModule,\n) => {\n return async (driveHeader: PHDocumentHeader): Promise<ProcessorRecord[]> => {\n // Create namespace (same as legacy - all vetra packages share one namespace)\n const db = await module.relationalDb.createNamespace<DB>(\"vetra-packages\");\n\n // Run migrations (idempotent - uses ifNotExists)\n await up(db);\n\n // Create the processor with the relational database\n const processor = new VetraReadModelProcessor(db);\n return [\n {\n processor,\n filter: {\n branch: [\"main\"],\n documentId: [\"*\"],\n documentType: [\"powerhouse/package\"],\n scope: [\"global\"],\n },\n },\n ];\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { t as logger } from "./logger-
|
|
1
|
+
import { t as logger } from "./logger-CYkStoEb.js";
|
|
2
2
|
import { PROCESSOR_APPS } from "@powerhousedao/shared/processors";
|
|
3
|
-
import {
|
|
3
|
+
import { buildTsMorphProject } from "@powerhousedao/codegen/utils";
|
|
4
4
|
import { generateApp, generateDocumentModel, generateEditor, generateProcessor, generateSubgraph, validateDocumentModelState } from "@powerhousedao/codegen";
|
|
5
5
|
import { kebabCase } from "change-case";
|
|
6
6
|
import { baseMinimalSaveToFile } from "document-model/node";
|
|
7
7
|
import { mkdir } from "node:fs/promises";
|
|
8
8
|
import { join } from "node:path";
|
|
9
|
+
import { VETRA_PROCESSOR_CONFIG_KEY } from "@powerhousedao/config";
|
|
10
|
+
import { getConfig } from "@powerhousedao/config/node";
|
|
11
|
+
import { createInterface } from "node:readline";
|
|
9
12
|
import { createOrUpdateManifest } from "@powerhousedao/codegen/file-builders";
|
|
10
13
|
//#region processors/codegen/document-handlers/base-document-gen.ts
|
|
11
14
|
/**
|
|
@@ -160,7 +163,7 @@ var InteractiveManager = class {
|
|
|
160
163
|
await processor(queuedStrands);
|
|
161
164
|
logger.info("✅ Code generation completed");
|
|
162
165
|
} catch (error) {
|
|
163
|
-
logger.error("❌ Error during interactive queue processing:", error);
|
|
166
|
+
logger.error("❌ Error during interactive queue processing: @error", error);
|
|
164
167
|
throw error;
|
|
165
168
|
} finally {
|
|
166
169
|
this.processingConfirmation = false;
|
|
@@ -265,7 +268,7 @@ var DocumentCodegenManager = class {
|
|
|
265
268
|
await this.processQueuedStrands(queuedStrands);
|
|
266
269
|
});
|
|
267
270
|
} catch (error) {
|
|
268
|
-
logger.error("❌ Error during interactive batch processing:", error);
|
|
271
|
+
logger.error("❌ Error during interactive batch processing: @error", error);
|
|
269
272
|
} finally {
|
|
270
273
|
this.debounceTimers.delete("interactive");
|
|
271
274
|
}
|
|
@@ -836,7 +839,7 @@ var DocumentCodegenFactory = class {
|
|
|
836
839
|
}
|
|
837
840
|
};
|
|
838
841
|
//#endregion
|
|
839
|
-
//#region processors/codegen/
|
|
842
|
+
//#region processors/codegen/processor.ts
|
|
840
843
|
var CodegenProcessor = class {
|
|
841
844
|
manager;
|
|
842
845
|
constructor(project, config, cwd, interactiveMode = false) {
|
|
@@ -877,6 +880,51 @@ var CodegenProcessor = class {
|
|
|
877
880
|
}
|
|
878
881
|
};
|
|
879
882
|
//#endregion
|
|
880
|
-
|
|
883
|
+
//#region processors/codegen/factory.ts
|
|
884
|
+
/**
|
|
885
|
+
* Determines if a drive header matches the Vetra drive criteria.
|
|
886
|
+
* @param driveHeader - The drive header to check
|
|
887
|
+
* @param explicitDriveId - Optional explicit drive ID from config (if set, uses exact match)
|
|
888
|
+
* @returns true if the drive is a Vetra drive, false otherwise
|
|
889
|
+
*/
|
|
890
|
+
function isDriveVetra(driveHeader, driveIdFromConfig) {
|
|
891
|
+
if (driveIdFromConfig) return driveHeader.slug === driveIdFromConfig || driveHeader.id === driveIdFromConfig;
|
|
892
|
+
const matchesPattern = (identifier) => {
|
|
893
|
+
const lower = identifier.toLowerCase();
|
|
894
|
+
return lower === "vetra" || lower.startsWith("vetra-");
|
|
895
|
+
};
|
|
896
|
+
return matchesPattern(driveHeader.slug) || matchesPattern(driveHeader.id);
|
|
897
|
+
}
|
|
898
|
+
const codegenFactoryBuilder = (module) => {
|
|
899
|
+
return (driveHeader) => {
|
|
900
|
+
const config = getConfig();
|
|
901
|
+
const cwd = process.cwd();
|
|
902
|
+
const project = buildTsMorphProject(cwd);
|
|
903
|
+
const vetraConfig = (module.config ?? /* @__PURE__ */ new Map()).get(VETRA_PROCESSOR_CONFIG_KEY);
|
|
904
|
+
if (!isDriveVetra(driveHeader, vetraConfig?.driveId)) {
|
|
905
|
+
logger.debug(`Drive ${driveHeader.slug} is not a Vetra drive, skipping codegen processor`);
|
|
906
|
+
return [];
|
|
907
|
+
}
|
|
908
|
+
logger.info(`Drive ${driveHeader.slug} is a Vetra drive, using codegen processor`);
|
|
909
|
+
return [{
|
|
910
|
+
processor: new CodegenProcessor(project, config, cwd, vetraConfig?.interactive),
|
|
911
|
+
filter: {
|
|
912
|
+
branch: ["main"],
|
|
913
|
+
documentId: ["*"],
|
|
914
|
+
documentType: [
|
|
915
|
+
"powerhouse/document-model",
|
|
916
|
+
"powerhouse/package",
|
|
917
|
+
"powerhouse/document-editor",
|
|
918
|
+
"powerhouse/subgraph",
|
|
919
|
+
"powerhouse/processor",
|
|
920
|
+
"powerhouse/app"
|
|
921
|
+
],
|
|
922
|
+
scope: ["global"]
|
|
923
|
+
}
|
|
924
|
+
}];
|
|
925
|
+
};
|
|
926
|
+
};
|
|
927
|
+
//#endregion
|
|
928
|
+
export { CodegenProcessor as n, codegenFactoryBuilder as t };
|
|
881
929
|
|
|
882
|
-
//# sourceMappingURL=
|
|
930
|
+
//# sourceMappingURL=factory-CEzh-u5J.js.map
|