@powerhousedao/vetra-builder-package 0.0.16 → 0.0.18
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/document-models/builder-account/gen/document-model.js +1 -1
- package/dist/document-models/builder-account/gen/profile/actions.d.ts +5 -5
- package/dist/document-models/builder-account/gen/profile/creators.d.ts +3 -3
- package/dist/document-models/builder-account/gen/profile/creators.js +1 -1
- package/dist/document-models/builder-account/gen/profile/object.d.ts +2 -2
- package/dist/document-models/builder-account/gen/profile/object.js +3 -3
- package/dist/document-models/builder-account/gen/profile/operations.d.ts +2 -2
- package/dist/document-models/builder-account/gen/reducer.js +3 -3
- package/dist/document-models/builder-account/gen/schema/types.d.ts +1 -1
- package/dist/document-models/builder-account/gen/schema/zod.js +1 -1
- package/dist/document-models/builder-account/index.d.ts +1 -1
- package/dist/document-models/builder-account/src/reducers/profile.js +4 -0
- package/dist/document-models/builder-team/gen/actions.d.ts +9 -0
- package/dist/document-models/builder-team/gen/actions.js +4 -0
- package/dist/document-models/builder-team/gen/creators.d.ts +4 -0
- package/dist/document-models/builder-team/gen/creators.js +4 -0
- package/dist/document-models/builder-team/gen/document-model.d.ts +2 -0
- package/dist/document-models/builder-team/gen/document-model.js +212 -0
- package/dist/document-models/builder-team/gen/index.d.ts +7 -0
- package/dist/document-models/builder-team/gen/index.js +6 -0
- package/dist/document-models/builder-team/gen/member/actions.d.ts +15 -0
- package/dist/document-models/builder-team/gen/member/actions.js +1 -0
- package/dist/document-models/builder-team/gen/member/creators.d.ts +5 -0
- package/dist/document-models/builder-team/gen/member/creators.js +5 -0
- package/dist/document-models/builder-team/gen/member/error.d.ts +1 -0
- package/dist/document-models/builder-team/gen/member/error.js +1 -0
- package/dist/document-models/builder-team/gen/member/object.d.ts +8 -0
- package/dist/document-models/builder-team/gen/member/object.js +13 -0
- package/dist/document-models/builder-team/gen/member/operations.d.ts +8 -0
- package/dist/document-models/builder-team/gen/member/operations.js +1 -0
- package/dist/document-models/builder-team/gen/object.d.ts +20 -0
- package/dist/document-models/builder-team/gen/object.js +36 -0
- package/dist/document-models/builder-team/gen/packages/actions.d.ts +15 -0
- package/dist/document-models/builder-team/gen/packages/actions.js +1 -0
- package/dist/document-models/builder-team/gen/packages/creators.d.ts +5 -0
- package/dist/document-models/builder-team/gen/packages/creators.js +5 -0
- package/dist/document-models/builder-team/gen/packages/error.d.ts +1 -0
- package/dist/document-models/builder-team/gen/packages/error.js +1 -0
- package/dist/document-models/builder-team/gen/packages/object.d.ts +8 -0
- package/dist/document-models/builder-team/gen/packages/object.js +13 -0
- package/dist/document-models/builder-team/gen/packages/operations.d.ts +8 -0
- package/dist/document-models/builder-team/gen/packages/operations.js +1 -0
- package/dist/document-models/builder-team/gen/ph-factories.d.ts +26 -0
- package/dist/document-models/builder-team/gen/ph-factories.js +62 -0
- package/dist/document-models/builder-team/gen/profile/actions.d.ts +23 -0
- package/dist/document-models/builder-team/gen/profile/actions.js +1 -0
- package/dist/document-models/builder-team/gen/profile/creators.d.ts +7 -0
- package/dist/document-models/builder-team/gen/profile/creators.js +7 -0
- package/dist/document-models/builder-team/gen/profile/error.d.ts +1 -0
- package/dist/document-models/builder-team/gen/profile/error.js +1 -0
- package/dist/document-models/builder-team/gen/profile/object.d.ts +10 -0
- package/dist/document-models/builder-team/gen/profile/object.js +19 -0
- package/dist/document-models/builder-team/gen/profile/operations.d.ts +10 -0
- package/dist/document-models/builder-team/gen/profile/operations.js +1 -0
- package/dist/document-models/builder-team/gen/reducer.d.ts +4 -0
- package/dist/document-models/builder-team/gen/reducer.js +75 -0
- package/dist/document-models/builder-team/gen/schema/index.d.ts +2 -0
- package/dist/document-models/builder-team/gen/schema/index.js +2 -0
- package/dist/document-models/builder-team/gen/schema/types.d.ts +247 -0
- package/dist/document-models/builder-team/gen/schema/types.js +1 -0
- package/dist/document-models/builder-team/gen/schema/zod.d.ts +29 -0
- package/dist/document-models/builder-team/gen/schema/zod.js +148 -0
- package/dist/document-models/builder-team/gen/spaces/actions.d.ts +15 -0
- package/dist/document-models/builder-team/gen/spaces/actions.js +1 -0
- package/dist/document-models/builder-team/gen/spaces/creators.d.ts +5 -0
- package/dist/document-models/builder-team/gen/spaces/creators.js +5 -0
- package/dist/document-models/builder-team/gen/spaces/error.d.ts +1 -0
- package/dist/document-models/builder-team/gen/spaces/error.js +1 -0
- package/dist/document-models/builder-team/gen/spaces/object.d.ts +8 -0
- package/dist/document-models/builder-team/gen/spaces/object.js +13 -0
- package/dist/document-models/builder-team/gen/spaces/operations.d.ts +8 -0
- package/dist/document-models/builder-team/gen/spaces/operations.js +1 -0
- package/dist/document-models/builder-team/gen/types.d.ts +9 -0
- package/dist/document-models/builder-team/gen/types.js +1 -0
- package/dist/document-models/builder-team/gen/utils.d.ts +21 -0
- package/dist/document-models/builder-team/gen/utils.js +54 -0
- package/dist/document-models/builder-team/index.d.ts +37 -0
- package/dist/document-models/builder-team/index.js +21 -0
- package/dist/document-models/builder-team/src/reducers/member.d.ts +2 -0
- package/dist/document-models/builder-team/src/reducers/member.js +30 -0
- package/dist/document-models/builder-team/src/reducers/packages.d.ts +2 -0
- package/dist/document-models/builder-team/src/reducers/packages.js +40 -0
- package/dist/document-models/builder-team/src/reducers/profile.d.ts +2 -0
- package/dist/document-models/builder-team/src/reducers/profile.js +26 -0
- package/dist/document-models/builder-team/src/reducers/spaces.d.ts +2 -0
- package/dist/document-models/builder-team/src/reducers/spaces.js +34 -0
- package/dist/document-models/builder-team/src/tests/document-model.test.d.ts +5 -0
- package/dist/document-models/builder-team/src/tests/document-model.test.js +18 -0
- package/dist/document-models/builder-team/src/tests/member.test.d.ts +5 -0
- package/dist/document-models/builder-team/src/tests/member.test.js +40 -0
- package/dist/document-models/builder-team/src/tests/packages.test.d.ts +5 -0
- package/dist/document-models/builder-team/src/tests/packages.test.js +40 -0
- package/dist/document-models/builder-team/src/tests/profile.test.d.ts +5 -0
- package/dist/document-models/builder-team/src/tests/profile.test.js +56 -0
- package/dist/document-models/builder-team/src/tests/spaces.test.d.ts +5 -0
- package/dist/document-models/builder-team/src/tests/spaces.test.js +40 -0
- package/dist/document-models/builder-team/src/utils.d.ts +1 -0
- package/dist/document-models/builder-team/src/utils.js +1 -0
- package/dist/document-models/index.d.ts +1 -2
- package/dist/document-models/index.js +1 -2
- package/dist/editors/builder-team-editor/components/Header.d.ts +8 -0
- package/dist/editors/builder-team-editor/components/Header.js +5 -0
- package/dist/editors/builder-team-editor/components/MembersSection.d.ts +14 -0
- package/dist/editors/builder-team-editor/components/MembersSection.js +152 -0
- package/dist/editors/builder-team-editor/components/PackageForm.d.ts +8 -0
- package/dist/editors/builder-team-editor/components/PackageForm.js +92 -0
- package/dist/editors/builder-team-editor/components/PackageItem.d.ts +11 -0
- package/dist/editors/builder-team-editor/components/PackageItem.js +99 -0
- package/dist/editors/builder-team-editor/components/ProfileSection.d.ts +17 -0
- package/dist/editors/builder-team-editor/components/ProfileSection.js +5 -0
- package/dist/editors/builder-team-editor/components/QuickStats.d.ts +7 -0
- package/dist/editors/builder-team-editor/components/QuickStats.js +5 -0
- package/dist/editors/builder-team-editor/components/SpaceForm.d.ts +9 -0
- package/dist/editors/builder-team-editor/components/SpaceForm.js +11 -0
- package/dist/editors/builder-team-editor/components/SpaceItem.d.ts +21 -0
- package/dist/editors/builder-team-editor/components/SpaceItem.js +12 -0
- package/dist/editors/builder-team-editor/components/SpacesSection.d.ts +22 -0
- package/dist/editors/builder-team-editor/components/SpacesSection.js +14 -0
- package/dist/editors/builder-team-editor/config.d.ts +6 -0
- package/dist/editors/builder-team-editor/config.js +11 -0
- package/dist/editors/builder-team-editor/editor.d.ts +3 -0
- package/dist/editors/builder-team-editor/editor.js +73 -0
- package/dist/editors/builder-team-editor/hooks/useMemberHandlers.d.ts +12 -0
- package/dist/editors/builder-team-editor/hooks/useMemberHandlers.js +27 -0
- package/dist/editors/builder-team-editor/hooks/usePackageHandlers.d.ts +11 -0
- package/dist/editors/builder-team-editor/hooks/usePackageHandlers.js +49 -0
- package/dist/editors/builder-team-editor/hooks/useProfileHandlers.d.ts +14 -0
- package/dist/editors/builder-team-editor/hooks/useProfileHandlers.js +38 -0
- package/dist/editors/builder-team-editor/hooks/useSpaceHandlers.d.ts +15 -0
- package/dist/editors/builder-team-editor/hooks/useSpaceHandlers.js +82 -0
- package/dist/editors/builder-team-editor/index.d.ts +2 -0
- package/dist/editors/builder-team-editor/index.js +11 -0
- package/dist/editors/hooks/useBuilderTeamDocument.d.ts +3 -0
- package/dist/editors/hooks/useBuilderTeamDocument.js +8 -0
- package/dist/editors/index.d.ts +1 -2
- package/dist/editors/index.js +1 -2
- package/dist/index.d.ts +1 -1
- package/dist/powerhouse.manifest.json +21 -6
- package/dist/processors/factory.d.ts +0 -4
- package/dist/processors/factory.js +6 -4
- package/dist/processors/index.d.ts +2 -4
- package/dist/processors/index.js +2 -4
- package/dist/processors/old_vetra-builder-relational-db-processor/factory.d.ts +3 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/factory.js +22 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/index.d.ts +9 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/index.js +32 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/migrations.d.ts +3 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/migrations.js +14 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/schema.d.ts +7 -0
- package/dist/processors/old_vetra-builder-relational-db-processor/schema.js +1 -0
- package/dist/processors/vetra-builder-read-model/builder-account-handlers.d.ts +27 -0
- package/dist/processors/vetra-builder-read-model/builder-account-handlers.js +249 -0
- package/dist/processors/vetra-builder-read-model/database-helpers.d.ts +39 -0
- package/dist/processors/vetra-builder-read-model/database-helpers.js +144 -0
- package/dist/processors/vetra-builder-read-model/factory.d.ts +3 -0
- package/dist/processors/vetra-builder-read-model/factory.js +25 -0
- package/dist/processors/vetra-builder-read-model/index.d.ts +29 -0
- package/dist/processors/vetra-builder-read-model/index.js +370 -0
- package/dist/processors/vetra-builder-read-model/migrations.d.ts +3 -0
- package/dist/processors/vetra-builder-read-model/migrations.js +152 -0
- package/dist/processors/vetra-builder-read-model/package-handlers.d.ts +20 -0
- package/dist/processors/vetra-builder-read-model/package-handlers.js +116 -0
- package/dist/processors/vetra-builder-read-model/schema.d.ts +66 -0
- package/dist/processors/vetra-builder-read-model/schema.js +1 -0
- package/dist/processors/vetra-builder-read-model/types.d.ts +32 -0
- package/dist/processors/vetra-builder-read-model/types.js +1 -0
- package/dist/processors/vetra-builder-relational-db-processor/builder-team-handlers.d.ts +22 -0
- package/dist/processors/vetra-builder-relational-db-processor/builder-team-handlers.js +261 -0
- package/dist/processors/vetra-builder-relational-db-processor/database-helpers.d.ts +39 -0
- package/dist/processors/vetra-builder-relational-db-processor/database-helpers.js +144 -0
- package/dist/processors/vetra-builder-relational-db-processor/factory.d.ts +3 -0
- package/dist/processors/vetra-builder-relational-db-processor/factory.js +23 -0
- package/dist/processors/vetra-builder-relational-db-processor/index.d.ts +13 -0
- package/dist/processors/vetra-builder-relational-db-processor/index.js +53 -0
- package/dist/processors/vetra-builder-relational-db-processor/migrations.d.ts +3 -0
- package/dist/processors/vetra-builder-relational-db-processor/migrations.js +155 -0
- package/dist/processors/vetra-builder-relational-db-processor/schema.d.ts +66 -0
- package/dist/processors/vetra-builder-relational-db-processor/schema.js +1 -0
- package/dist/processors/vetra-builder-relational-db-processor/types.d.ts +32 -0
- package/dist/processors/vetra-builder-relational-db-processor/types.js +1 -0
- package/dist/style.css +28 -200
- package/dist/subgraphs/builder-account/resolvers.js +3 -3
- package/dist/subgraphs/builder-account/schema.js +4 -4
- package/dist/subgraphs/builder-team/index.d.ts +10 -0
- package/dist/subgraphs/builder-team/index.js +11 -0
- package/dist/subgraphs/builder-team/resolvers.d.ts +2 -0
- package/dist/subgraphs/builder-team/resolvers.js +240 -0
- package/dist/subgraphs/builder-team/schema.d.ts +2 -0
- package/dist/subgraphs/builder-team/schema.js +228 -0
- package/dist/subgraphs/index.d.ts +2 -3
- package/dist/subgraphs/index.js +3 -4
- package/dist/subgraphs/vetra-builder-read-model/index.d.ts +1 -1
- package/dist/subgraphs/vetra-builder-read-model/index.js +1 -1
- package/dist/subgraphs/vetra-builder-read-model/resolvers.js +7 -7
- package/dist/subgraphs/vetra-builders/index.d.ts +10 -0
- package/dist/subgraphs/vetra-builders/index.js +11 -0
- package/dist/subgraphs/vetra-builders/resolvers.d.ts +2 -0
- package/dist/subgraphs/vetra-builders/resolvers.js +144 -0
- package/dist/subgraphs/vetra-builders/schema.d.ts +2 -0
- package/dist/subgraphs/vetra-builders/schema.js +79 -0
- package/dist/subgraphs/vetra-builders-bkp/index.d.ts +10 -0
- package/dist/subgraphs/vetra-builders-bkp/index.js +11 -0
- package/dist/subgraphs/vetra-builders-bkp/resolvers.d.ts +2 -0
- package/dist/subgraphs/vetra-builders-bkp/resolvers.js +10 -0
- package/dist/subgraphs/vetra-builders-bkp/schema.d.ts +2 -0
- package/dist/subgraphs/vetra-builders-bkp/schema.js +9 -0
- package/dist/utils/nano-id.d.ts +1 -0
- package/dist/utils/nano-id.js +4 -0
- package/package.json +4 -2
|
@@ -70,10 +70,10 @@ export const schema = gql `
|
|
|
70
70
|
type Mutation {
|
|
71
71
|
BuilderAccount_createDocument(name: String!, driveId: String): String
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
BuilderAccount_setLogoooo(
|
|
74
74
|
driveId: String
|
|
75
75
|
docId: PHID
|
|
76
|
-
input:
|
|
76
|
+
input: BuilderAccount_SetLogooooInput
|
|
77
77
|
): Int
|
|
78
78
|
BuilderAccount_setProfileName(
|
|
79
79
|
driveId: String
|
|
@@ -231,13 +231,13 @@ export const schema = gql `
|
|
|
231
231
|
website: URL
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
input
|
|
234
|
+
input AddPackageInput {
|
|
235
235
|
"Add your inputs here"
|
|
236
236
|
spaceId: OID!
|
|
237
237
|
name: String!
|
|
238
238
|
description: String
|
|
239
239
|
category: String
|
|
240
|
-
author:
|
|
240
|
+
author: AuthorInput
|
|
241
241
|
keywords: [String!]
|
|
242
242
|
github: URL
|
|
243
243
|
npm: URL
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
|
+
import type { DocumentNode } from "graphql";
|
|
3
|
+
export declare class BuilderTeamSubgraph extends Subgraph {
|
|
4
|
+
name: string;
|
|
5
|
+
typeDefs: DocumentNode;
|
|
6
|
+
resolvers: Record<string, unknown>;
|
|
7
|
+
additionalContextFields: {};
|
|
8
|
+
onSetup(): Promise<void>;
|
|
9
|
+
onDisconnect(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
|
+
import { schema } from "./schema.js";
|
|
3
|
+
import { getResolvers } from "./resolvers.js";
|
|
4
|
+
export class BuilderTeamSubgraph extends Subgraph {
|
|
5
|
+
name = "builder-team";
|
|
6
|
+
typeDefs = schema;
|
|
7
|
+
resolvers = getResolvers(this);
|
|
8
|
+
additionalContextFields = {};
|
|
9
|
+
async onSetup() { }
|
|
10
|
+
async onDisconnect() { }
|
|
11
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { addFile } from "document-drive";
|
|
2
|
+
import { actions, } from "../../document-models/builder-team/index.js";
|
|
3
|
+
import { setName } from "document-model";
|
|
4
|
+
export const getResolvers = (subgraph) => {
|
|
5
|
+
const reactor = subgraph.reactor;
|
|
6
|
+
return {
|
|
7
|
+
Query: {
|
|
8
|
+
BuilderTeam: async () => {
|
|
9
|
+
return {
|
|
10
|
+
getDocument: async (args) => {
|
|
11
|
+
const { docId, driveId } = args;
|
|
12
|
+
if (!docId) {
|
|
13
|
+
throw new Error("Document id is required");
|
|
14
|
+
}
|
|
15
|
+
if (driveId) {
|
|
16
|
+
const docIds = await reactor.getDocuments(driveId);
|
|
17
|
+
if (!docIds.includes(docId)) {
|
|
18
|
+
throw new Error(`Document with id ${docId} is not part of ${driveId}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const doc = await reactor.getDocument(docId);
|
|
22
|
+
return {
|
|
23
|
+
driveId: driveId,
|
|
24
|
+
...doc,
|
|
25
|
+
...doc.header,
|
|
26
|
+
created: doc.header.createdAtUtcIso,
|
|
27
|
+
lastModified: doc.header.lastModifiedAtUtcIso,
|
|
28
|
+
state: doc.state.global,
|
|
29
|
+
stateJSON: doc.state.global,
|
|
30
|
+
revision: doc.header?.revision?.global ?? 0,
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
getDocuments: async (args) => {
|
|
34
|
+
const { driveId } = args;
|
|
35
|
+
const docsIds = await reactor.getDocuments(driveId);
|
|
36
|
+
const docs = await Promise.all(docsIds.map(async (docId) => {
|
|
37
|
+
const doc = await reactor.getDocument(docId);
|
|
38
|
+
return {
|
|
39
|
+
driveId: driveId,
|
|
40
|
+
...doc,
|
|
41
|
+
...doc.header,
|
|
42
|
+
created: doc.header.createdAtUtcIso,
|
|
43
|
+
lastModified: doc.header.lastModifiedAtUtcIso,
|
|
44
|
+
state: doc.state.global,
|
|
45
|
+
stateJSON: doc.state.global,
|
|
46
|
+
revision: doc.header?.revision?.global ?? 0,
|
|
47
|
+
};
|
|
48
|
+
}));
|
|
49
|
+
return docs.filter((doc) => doc.header.documentType === "powerhouse/builder-team");
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
Mutation: {
|
|
55
|
+
BuilderTeam_createDocument: async (_, args) => {
|
|
56
|
+
const { driveId, name } = args;
|
|
57
|
+
const document = await reactor.addDocument("powerhouse/builder-team");
|
|
58
|
+
if (driveId) {
|
|
59
|
+
await reactor.addAction(driveId, addFile({
|
|
60
|
+
name,
|
|
61
|
+
id: document.header.id,
|
|
62
|
+
documentType: "powerhouse/builder-team",
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
if (name) {
|
|
66
|
+
await reactor.addAction(document.header.id, setName(name));
|
|
67
|
+
}
|
|
68
|
+
return document.header.id;
|
|
69
|
+
},
|
|
70
|
+
BuilderTeam_setLogo: async (_, args) => {
|
|
71
|
+
const { docId, input } = args;
|
|
72
|
+
const doc = await reactor.getDocument(docId);
|
|
73
|
+
if (!doc) {
|
|
74
|
+
throw new Error("Document not found");
|
|
75
|
+
}
|
|
76
|
+
const result = await reactor.addAction(docId, actions.setLogo(input));
|
|
77
|
+
if (result.status !== "SUCCESS") {
|
|
78
|
+
throw new Error(result.error?.message ?? "Failed to setLogo");
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
},
|
|
82
|
+
BuilderTeam_setTeamName: async (_, args) => {
|
|
83
|
+
const { docId, input } = args;
|
|
84
|
+
const doc = await reactor.getDocument(docId);
|
|
85
|
+
if (!doc) {
|
|
86
|
+
throw new Error("Document not found");
|
|
87
|
+
}
|
|
88
|
+
const result = await reactor.addAction(docId, actions.setTeamName(input));
|
|
89
|
+
if (result.status !== "SUCCESS") {
|
|
90
|
+
throw new Error(result.error?.message ?? "Failed to setTeamName");
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
},
|
|
94
|
+
BuilderTeam_setSlug: async (_, args) => {
|
|
95
|
+
const { docId, input } = args;
|
|
96
|
+
const doc = await reactor.getDocument(docId);
|
|
97
|
+
if (!doc) {
|
|
98
|
+
throw new Error("Document not found");
|
|
99
|
+
}
|
|
100
|
+
const result = await reactor.addAction(docId, actions.setSlug(input));
|
|
101
|
+
if (result.status !== "SUCCESS") {
|
|
102
|
+
throw new Error(result.error?.message ?? "Failed to setSlug");
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
},
|
|
106
|
+
BuilderTeam_setDescription: async (_, args) => {
|
|
107
|
+
const { docId, input } = args;
|
|
108
|
+
const doc = await reactor.getDocument(docId);
|
|
109
|
+
if (!doc) {
|
|
110
|
+
throw new Error("Document not found");
|
|
111
|
+
}
|
|
112
|
+
const result = await reactor.addAction(docId, actions.setDescription(input));
|
|
113
|
+
if (result.status !== "SUCCESS") {
|
|
114
|
+
throw new Error(result.error?.message ?? "Failed to setDescription");
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
},
|
|
118
|
+
BuilderTeam_setSocials: async (_, args) => {
|
|
119
|
+
const { docId, input } = args;
|
|
120
|
+
const doc = await reactor.getDocument(docId);
|
|
121
|
+
if (!doc) {
|
|
122
|
+
throw new Error("Document not found");
|
|
123
|
+
}
|
|
124
|
+
const result = await reactor.addAction(docId, actions.setSocials(input));
|
|
125
|
+
if (result.status !== "SUCCESS") {
|
|
126
|
+
throw new Error(result.error?.message ?? "Failed to setSocials");
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
},
|
|
130
|
+
BuilderTeam_addMember: async (_, args) => {
|
|
131
|
+
const { docId, input } = args;
|
|
132
|
+
const doc = await reactor.getDocument(docId);
|
|
133
|
+
if (!doc) {
|
|
134
|
+
throw new Error("Document not found");
|
|
135
|
+
}
|
|
136
|
+
const result = await reactor.addAction(docId, actions.addMember(input));
|
|
137
|
+
if (result.status !== "SUCCESS") {
|
|
138
|
+
throw new Error(result.error?.message ?? "Failed to addMember");
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
},
|
|
142
|
+
BuilderTeam_updateMemberInfo: async (_, args) => {
|
|
143
|
+
const { docId, input } = args;
|
|
144
|
+
const doc = await reactor.getDocument(docId);
|
|
145
|
+
if (!doc) {
|
|
146
|
+
throw new Error("Document not found");
|
|
147
|
+
}
|
|
148
|
+
const result = await reactor.addAction(docId, actions.updateMemberInfo(input));
|
|
149
|
+
if (result.status !== "SUCCESS") {
|
|
150
|
+
throw new Error(result.error?.message ?? "Failed to updateMemberInfo");
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
},
|
|
154
|
+
BuilderTeam_removeMember: async (_, args) => {
|
|
155
|
+
const { docId, input } = args;
|
|
156
|
+
const doc = await reactor.getDocument(docId);
|
|
157
|
+
if (!doc) {
|
|
158
|
+
throw new Error("Document not found");
|
|
159
|
+
}
|
|
160
|
+
const result = await reactor.addAction(docId, actions.removeMember(input));
|
|
161
|
+
if (result.status !== "SUCCESS") {
|
|
162
|
+
throw new Error(result.error?.message ?? "Failed to removeMember");
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
},
|
|
166
|
+
BuilderTeam_addSpace: async (_, args) => {
|
|
167
|
+
const { docId, input } = args;
|
|
168
|
+
const doc = await reactor.getDocument(docId);
|
|
169
|
+
if (!doc) {
|
|
170
|
+
throw new Error("Document not found");
|
|
171
|
+
}
|
|
172
|
+
const result = await reactor.addAction(docId, actions.addSpace(input));
|
|
173
|
+
if (result.status !== "SUCCESS") {
|
|
174
|
+
throw new Error(result.error?.message ?? "Failed to addSpace");
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
},
|
|
178
|
+
BuilderTeam_updateSpaceInfo: async (_, args) => {
|
|
179
|
+
const { docId, input } = args;
|
|
180
|
+
const doc = await reactor.getDocument(docId);
|
|
181
|
+
if (!doc) {
|
|
182
|
+
throw new Error("Document not found");
|
|
183
|
+
}
|
|
184
|
+
const result = await reactor.addAction(docId, actions.updateSpaceInfo(input));
|
|
185
|
+
if (result.status !== "SUCCESS") {
|
|
186
|
+
throw new Error(result.error?.message ?? "Failed to updateSpaceInfo");
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
},
|
|
190
|
+
BuilderTeam_removeSpace: async (_, args) => {
|
|
191
|
+
const { docId, input } = args;
|
|
192
|
+
const doc = await reactor.getDocument(docId);
|
|
193
|
+
if (!doc) {
|
|
194
|
+
throw new Error("Document not found");
|
|
195
|
+
}
|
|
196
|
+
const result = await reactor.addAction(docId, actions.removeSpace(input));
|
|
197
|
+
if (result.status !== "SUCCESS") {
|
|
198
|
+
throw new Error(result.error?.message ?? "Failed to removeSpace");
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
},
|
|
202
|
+
BuilderTeam_addPackage: async (_, args) => {
|
|
203
|
+
const { docId, input } = args;
|
|
204
|
+
const doc = await reactor.getDocument(docId);
|
|
205
|
+
if (!doc) {
|
|
206
|
+
throw new Error("Document not found");
|
|
207
|
+
}
|
|
208
|
+
const result = await reactor.addAction(docId, actions.addPackage(input));
|
|
209
|
+
if (result.status !== "SUCCESS") {
|
|
210
|
+
throw new Error(result.error?.message ?? "Failed to addPackage");
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
},
|
|
214
|
+
BuilderTeam_updatePackageInfo: async (_, args) => {
|
|
215
|
+
const { docId, input } = args;
|
|
216
|
+
const doc = await reactor.getDocument(docId);
|
|
217
|
+
if (!doc) {
|
|
218
|
+
throw new Error("Document not found");
|
|
219
|
+
}
|
|
220
|
+
const result = await reactor.addAction(docId, actions.updatePackageInfo(input));
|
|
221
|
+
if (result.status !== "SUCCESS") {
|
|
222
|
+
throw new Error(result.error?.message ?? "Failed to updatePackageInfo");
|
|
223
|
+
}
|
|
224
|
+
return true;
|
|
225
|
+
},
|
|
226
|
+
BuilderTeam_removePackage: async (_, args) => {
|
|
227
|
+
const { docId, input } = args;
|
|
228
|
+
const doc = await reactor.getDocument(docId);
|
|
229
|
+
if (!doc) {
|
|
230
|
+
throw new Error("Document not found");
|
|
231
|
+
}
|
|
232
|
+
const result = await reactor.addAction(docId, actions.removePackage(input));
|
|
233
|
+
if (result.status !== "SUCCESS") {
|
|
234
|
+
throw new Error(result.error?.message ?? "Failed to removePackage");
|
|
235
|
+
}
|
|
236
|
+
return true;
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
};
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { gql } from "graphql-tag";
|
|
2
|
+
export const schema = gql `
|
|
3
|
+
"""
|
|
4
|
+
Subgraph definition for BuilderTeam (powerhouse/builder-team)
|
|
5
|
+
"""
|
|
6
|
+
type BuilderTeamState {
|
|
7
|
+
profile: VetraBuilderProfile!
|
|
8
|
+
members: [RenownProfileInfo!]!
|
|
9
|
+
spaces: [VetraBuilderSpace!]!
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
type RenownProfileInfo {
|
|
13
|
+
id: OID!
|
|
14
|
+
phid: PHID
|
|
15
|
+
ethAddress: String
|
|
16
|
+
name: String
|
|
17
|
+
profileImage: String
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type VetraBuilderProfile {
|
|
21
|
+
logo: URL
|
|
22
|
+
name: String!
|
|
23
|
+
slug: String!
|
|
24
|
+
description: String
|
|
25
|
+
socials: VetraBuilderSocials!
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
type VetraBuilderSocials {
|
|
29
|
+
xProfile: URL
|
|
30
|
+
github: URL
|
|
31
|
+
website: URL
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type VetraBuilderSpace {
|
|
35
|
+
id: OID!
|
|
36
|
+
title: String!
|
|
37
|
+
description: String
|
|
38
|
+
packages: [VetraPackageInfo!]!
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
type VetraPackageInfo {
|
|
42
|
+
id: OID!
|
|
43
|
+
phid: PHID
|
|
44
|
+
title: String
|
|
45
|
+
description: String
|
|
46
|
+
github: String
|
|
47
|
+
npm: String
|
|
48
|
+
vetraDriveUrl: URL
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
"""
|
|
52
|
+
Queries: BuilderTeam
|
|
53
|
+
"""
|
|
54
|
+
type BuilderTeamQueries {
|
|
55
|
+
getDocument(docId: PHID!, driveId: PHID): BuilderTeam
|
|
56
|
+
getDocuments(driveId: String!): [BuilderTeam!]
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
type Query {
|
|
60
|
+
BuilderTeam: BuilderTeamQueries
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
"""
|
|
64
|
+
Mutations: BuilderTeam
|
|
65
|
+
"""
|
|
66
|
+
type Mutation {
|
|
67
|
+
BuilderTeam_createDocument(name: String!, driveId: String): String
|
|
68
|
+
|
|
69
|
+
BuilderTeam_setLogo(
|
|
70
|
+
driveId: String
|
|
71
|
+
docId: PHID
|
|
72
|
+
input: BuilderTeam_SetLogoInput
|
|
73
|
+
): Int
|
|
74
|
+
BuilderTeam_setTeamName(
|
|
75
|
+
driveId: String
|
|
76
|
+
docId: PHID
|
|
77
|
+
input: BuilderTeam_SetTeamNameInput
|
|
78
|
+
): Int
|
|
79
|
+
BuilderTeam_setSlug(
|
|
80
|
+
driveId: String
|
|
81
|
+
docId: PHID
|
|
82
|
+
input: BuilderTeam_SetSlugInput
|
|
83
|
+
): Int
|
|
84
|
+
BuilderTeam_setDescription(
|
|
85
|
+
driveId: String
|
|
86
|
+
docId: PHID
|
|
87
|
+
input: BuilderTeam_SetDescriptionInput
|
|
88
|
+
): Int
|
|
89
|
+
BuilderTeam_setSocials(
|
|
90
|
+
driveId: String
|
|
91
|
+
docId: PHID
|
|
92
|
+
input: BuilderTeam_SetSocialsInput
|
|
93
|
+
): Int
|
|
94
|
+
BuilderTeam_addMember(
|
|
95
|
+
driveId: String
|
|
96
|
+
docId: PHID
|
|
97
|
+
input: BuilderTeam_AddMemberInput
|
|
98
|
+
): Int
|
|
99
|
+
BuilderTeam_updateMemberInfo(
|
|
100
|
+
driveId: String
|
|
101
|
+
docId: PHID
|
|
102
|
+
input: BuilderTeam_UpdateMemberInfoInput
|
|
103
|
+
): Int
|
|
104
|
+
BuilderTeam_removeMember(
|
|
105
|
+
driveId: String
|
|
106
|
+
docId: PHID
|
|
107
|
+
input: BuilderTeam_RemoveMemberInput
|
|
108
|
+
): Int
|
|
109
|
+
BuilderTeam_addSpace(
|
|
110
|
+
driveId: String
|
|
111
|
+
docId: PHID
|
|
112
|
+
input: BuilderTeam_AddSpaceInput
|
|
113
|
+
): Int
|
|
114
|
+
BuilderTeam_updateSpaceInfo(
|
|
115
|
+
driveId: String
|
|
116
|
+
docId: PHID
|
|
117
|
+
input: BuilderTeam_UpdateSpaceInfoInput
|
|
118
|
+
): Int
|
|
119
|
+
BuilderTeam_removeSpace(
|
|
120
|
+
driveId: String
|
|
121
|
+
docId: PHID
|
|
122
|
+
input: BuilderTeam_RemoveSpaceInput
|
|
123
|
+
): Int
|
|
124
|
+
BuilderTeam_addPackage(
|
|
125
|
+
driveId: String
|
|
126
|
+
docId: PHID
|
|
127
|
+
input: BuilderTeam_AddPackageInput
|
|
128
|
+
): Int
|
|
129
|
+
BuilderTeam_updatePackageInfo(
|
|
130
|
+
driveId: String
|
|
131
|
+
docId: PHID
|
|
132
|
+
input: BuilderTeam_UpdatePackageInfoInput
|
|
133
|
+
): Int
|
|
134
|
+
BuilderTeam_removePackage(
|
|
135
|
+
driveId: String
|
|
136
|
+
docId: PHID
|
|
137
|
+
input: BuilderTeam_RemovePackageInput
|
|
138
|
+
): Int
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
"""
|
|
142
|
+
Module: Profile
|
|
143
|
+
"""
|
|
144
|
+
input BuilderTeam_SetLogoInput {
|
|
145
|
+
"Add your inputs here"
|
|
146
|
+
logo: String
|
|
147
|
+
}
|
|
148
|
+
input BuilderTeam_SetTeamNameInput {
|
|
149
|
+
"Add your inputs here"
|
|
150
|
+
name: String!
|
|
151
|
+
}
|
|
152
|
+
input BuilderTeam_SetSlugInput {
|
|
153
|
+
"Add your inputs here"
|
|
154
|
+
slug: String!
|
|
155
|
+
}
|
|
156
|
+
input BuilderTeam_SetDescriptionInput {
|
|
157
|
+
"Add your inputs here"
|
|
158
|
+
description: String
|
|
159
|
+
}
|
|
160
|
+
input BuilderTeam_SetSocialsInput {
|
|
161
|
+
"Add your inputs here"
|
|
162
|
+
xProfile: String
|
|
163
|
+
github: String
|
|
164
|
+
website: String
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
"""
|
|
168
|
+
Module: Member
|
|
169
|
+
"""
|
|
170
|
+
input BuilderTeam_AddMemberInput {
|
|
171
|
+
"Add your inputs here"
|
|
172
|
+
id: OID!
|
|
173
|
+
}
|
|
174
|
+
input BuilderTeam_UpdateMemberInfoInput {
|
|
175
|
+
"Add your inputs here"
|
|
176
|
+
id: OID!
|
|
177
|
+
phid: PHID
|
|
178
|
+
ethAddress: String
|
|
179
|
+
name: String
|
|
180
|
+
profileImage: String
|
|
181
|
+
}
|
|
182
|
+
input BuilderTeam_RemoveMemberInput {
|
|
183
|
+
"Add your inputs here"
|
|
184
|
+
id: OID!
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
"""
|
|
188
|
+
Module: Spaces
|
|
189
|
+
"""
|
|
190
|
+
input BuilderTeam_AddSpaceInput {
|
|
191
|
+
"Add your inputs here"
|
|
192
|
+
id: OID!
|
|
193
|
+
}
|
|
194
|
+
input BuilderTeam_UpdateSpaceInfoInput {
|
|
195
|
+
"Add your inputs here"
|
|
196
|
+
id: OID!
|
|
197
|
+
title: String
|
|
198
|
+
description: String
|
|
199
|
+
}
|
|
200
|
+
input BuilderTeam_RemoveSpaceInput {
|
|
201
|
+
"Add your inputs here"
|
|
202
|
+
id: OID!
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
"""
|
|
206
|
+
Module: Packages
|
|
207
|
+
"""
|
|
208
|
+
input BuilderTeam_AddPackageInput {
|
|
209
|
+
"Add your inputs here"
|
|
210
|
+
id: OID!
|
|
211
|
+
spaceId: OID!
|
|
212
|
+
}
|
|
213
|
+
input BuilderTeam_UpdatePackageInfoInput {
|
|
214
|
+
"Add your inputs here"
|
|
215
|
+
id: OID!
|
|
216
|
+
spaceId: OID
|
|
217
|
+
phid: PHID
|
|
218
|
+
title: String
|
|
219
|
+
description: String
|
|
220
|
+
github: String
|
|
221
|
+
npm: String
|
|
222
|
+
vetraDriveUrl: URL
|
|
223
|
+
}
|
|
224
|
+
input BuilderTeam_RemovePackageInput {
|
|
225
|
+
"Add your inputs here"
|
|
226
|
+
id: OID!
|
|
227
|
+
}
|
|
228
|
+
`;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
export * as
|
|
3
|
-
export * as
|
|
4
|
-
export * as RenownProfileSubgraph from "./renown-profile/index.js";
|
|
2
|
+
export * as VetraBuildersSubgraph from "./vetra-builders/index.js";
|
|
3
|
+
export * as BuilderTeamSubgraph from "./builder-team/index.js";
|
package/dist/subgraphs/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * as
|
|
2
|
-
export * as
|
|
3
|
-
export * as
|
|
4
|
-
// export * as RenownReadModelSubgraph from "./renown-read-model/index.js";
|
|
1
|
+
export * as VetraBuildersSubgraph from "./vetra-builders/index.js";
|
|
2
|
+
// export * as VetraBuildersSubgraph from "./vetra-builders-bkp/index.js";
|
|
3
|
+
export * as BuilderTeamSubgraph from "./builder-team/index.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
2
|
import type { DocumentNode } from "graphql";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class VetraBuilderReadModelSubgraph extends Subgraph {
|
|
4
4
|
name: string;
|
|
5
5
|
typeDefs: DocumentNode;
|
|
6
6
|
resolvers: Record<string, unknown>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
2
|
import { schema } from "./schema.js";
|
|
3
3
|
import { getResolvers } from "./resolvers.js";
|
|
4
|
-
export class
|
|
4
|
+
export class VetraBuilderReadModelSubgraph extends Subgraph {
|
|
5
5
|
name = "vetra-builder-read-model";
|
|
6
6
|
typeDefs = schema;
|
|
7
7
|
resolvers = getResolvers(this);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VetraBuilderReadModelProcessor } from "../../processors/vetra-builder-read-model/index.js";
|
|
2
2
|
export const getResolvers = (subgraph) => {
|
|
3
3
|
const reactor = subgraph.reactor;
|
|
4
4
|
const db = subgraph.relationalDb;
|
|
@@ -7,7 +7,7 @@ export const getResolvers = (subgraph) => {
|
|
|
7
7
|
BuilderAccountType: {
|
|
8
8
|
spaces: async (parent, args, context) => {
|
|
9
9
|
const driveId = context.driveId || DEFAULT_DRIVE_ID;
|
|
10
|
-
const spaces = await
|
|
10
|
+
const spaces = await VetraBuilderReadModelProcessor.query(driveId, db)
|
|
11
11
|
.selectFrom("builder_spaces")
|
|
12
12
|
.selectAll()
|
|
13
13
|
.leftJoin("deleted_files", (join) => join
|
|
@@ -31,7 +31,7 @@ export const getResolvers = (subgraph) => {
|
|
|
31
31
|
},
|
|
32
32
|
members: async (parent, args, context) => {
|
|
33
33
|
const driveId = context.driveId || DEFAULT_DRIVE_ID;
|
|
34
|
-
const members = await
|
|
34
|
+
const members = await VetraBuilderReadModelProcessor.query(driveId, db)
|
|
35
35
|
.selectFrom("builder_account_members")
|
|
36
36
|
.selectAll()
|
|
37
37
|
.leftJoin("deleted_files", (join) => join
|
|
@@ -51,7 +51,7 @@ export const getResolvers = (subgraph) => {
|
|
|
51
51
|
BuilderSpace: {
|
|
52
52
|
packages: async (parent, args, context) => {
|
|
53
53
|
const driveId = parent.driveId || context.driveId || DEFAULT_DRIVE_ID;
|
|
54
|
-
const packages = await
|
|
54
|
+
const packages = await VetraBuilderReadModelProcessor.query(driveId, db)
|
|
55
55
|
.selectFrom("builder_packages")
|
|
56
56
|
.selectAll()
|
|
57
57
|
.leftJoin("builder_spaces", (join) => join.onRef("builder_spaces.id", "=", "builder_packages.space_id"))
|
|
@@ -84,7 +84,7 @@ export const getResolvers = (subgraph) => {
|
|
|
84
84
|
BuilderPackage: {
|
|
85
85
|
keywords: async (parent, args, context) => {
|
|
86
86
|
const driveId = context.driveId || DEFAULT_DRIVE_ID;
|
|
87
|
-
const keywords = await
|
|
87
|
+
const keywords = await VetraBuilderReadModelProcessor.query(driveId, db)
|
|
88
88
|
.selectFrom("builder_package_keywords")
|
|
89
89
|
.selectAll()
|
|
90
90
|
.leftJoin("builder_packages", (join) => join.onRef("builder_packages.id", "=", "builder_package_keywords.package_id"))
|
|
@@ -108,7 +108,7 @@ export const getResolvers = (subgraph) => {
|
|
|
108
108
|
const driveId = args.driveId || DEFAULT_DRIVE_ID;
|
|
109
109
|
const search = args.search;
|
|
110
110
|
const sortOrder = args.sortOrder || "asc";
|
|
111
|
-
let accounts =
|
|
111
|
+
let accounts = VetraBuilderReadModelProcessor.query(driveId, db)
|
|
112
112
|
.selectFrom("builder_accounts")
|
|
113
113
|
.selectAll()
|
|
114
114
|
.leftJoin("deleted_files", (join) => join
|
|
@@ -143,7 +143,7 @@ export const getResolvers = (subgraph) => {
|
|
|
143
143
|
},
|
|
144
144
|
fetchBuilderAccount: async (parent, args) => {
|
|
145
145
|
const driveId = args.driveId || DEFAULT_DRIVE_ID;
|
|
146
|
-
const account = await
|
|
146
|
+
const account = await VetraBuilderReadModelProcessor.query(driveId, db)
|
|
147
147
|
.selectFrom("builder_accounts")
|
|
148
148
|
.selectAll()
|
|
149
149
|
.leftJoin("deleted_files", (join) => join
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
|
+
import type { DocumentNode } from "graphql";
|
|
3
|
+
export declare class VetraBuildersSubgraph extends Subgraph {
|
|
4
|
+
name: string;
|
|
5
|
+
typeDefs: DocumentNode;
|
|
6
|
+
resolvers: Record<string, unknown>;
|
|
7
|
+
additionalContextFields: {};
|
|
8
|
+
onSetup(): Promise<void>;
|
|
9
|
+
onDisconnect(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
|
+
import { schema } from "./schema.js";
|
|
3
|
+
import { getResolvers } from "./resolvers.js";
|
|
4
|
+
export class VetraBuildersSubgraph extends Subgraph {
|
|
5
|
+
name = "vetra-builders";
|
|
6
|
+
typeDefs = schema;
|
|
7
|
+
resolvers = getResolvers(this);
|
|
8
|
+
additionalContextFields = {};
|
|
9
|
+
async onSetup() { }
|
|
10
|
+
async onDisconnect() { }
|
|
11
|
+
}
|