@powerhousedao/renown-package 0.0.0 → 0.0.2
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/index.d.ts +1 -0
- package/dist/document-models/index.js +1 -0
- package/dist/document-models/renown-credential/gen/actions.d.ts +3 -0
- package/dist/document-models/renown-credential/gen/actions.js +1 -0
- package/dist/document-models/renown-credential/gen/creators.d.ts +1 -0
- package/dist/document-models/renown-credential/gen/creators.js +1 -0
- package/dist/document-models/renown-credential/gen/document-model.d.ts +2 -0
- package/dist/document-models/renown-credential/gen/document-model.js +59 -0
- package/dist/document-models/renown-credential/gen/index.d.ts +7 -0
- package/dist/document-models/renown-credential/gen/index.js +6 -0
- package/dist/document-models/renown-credential/gen/manager/actions.d.ts +11 -0
- package/dist/document-models/renown-credential/gen/manager/actions.js +1 -0
- package/dist/document-models/renown-credential/gen/manager/creators.d.ts +4 -0
- package/dist/document-models/renown-credential/gen/manager/creators.js +4 -0
- package/dist/document-models/renown-credential/gen/manager/error.d.ts +1 -0
- package/dist/document-models/renown-credential/gen/manager/error.js +1 -0
- package/dist/document-models/renown-credential/gen/manager/object.d.ts +7 -0
- package/dist/document-models/renown-credential/gen/manager/object.js +10 -0
- package/dist/document-models/renown-credential/gen/manager/operations.d.ts +7 -0
- package/dist/document-models/renown-credential/gen/manager/operations.js +1 -0
- package/dist/document-models/renown-credential/gen/object.d.ts +14 -0
- package/dist/document-models/renown-credential/gen/object.js +25 -0
- package/dist/document-models/renown-credential/gen/ph-factories.d.ts +26 -0
- package/dist/document-models/renown-credential/gen/ph-factories.js +55 -0
- package/dist/document-models/renown-credential/gen/reducer.d.ts +4 -0
- package/dist/document-models/renown-credential/gen/reducer.js +24 -0
- package/dist/document-models/renown-credential/gen/schema/index.d.ts +2 -0
- package/dist/document-models/renown-credential/gen/schema/index.js +2 -0
- package/dist/document-models/renown-credential/gen/schema/types.d.ts +156 -0
- package/dist/document-models/renown-credential/gen/schema/types.js +1 -0
- package/dist/document-models/renown-credential/gen/schema/zod.d.ts +12 -0
- package/dist/document-models/renown-credential/gen/schema/zod.js +30 -0
- package/dist/document-models/renown-credential/gen/types.d.ts +9 -0
- package/dist/document-models/renown-credential/gen/types.js +1 -0
- package/dist/document-models/renown-credential/gen/utils.d.ts +21 -0
- package/dist/document-models/renown-credential/gen/utils.js +47 -0
- package/dist/document-models/renown-credential/index.d.ts +25 -0
- package/dist/document-models/renown-credential/index.js +21 -0
- package/dist/document-models/renown-credential/src/reducers/manager.d.ts +2 -0
- package/dist/document-models/renown-credential/src/reducers/manager.js +23 -0
- package/dist/document-models/renown-credential/src/tests/document-model.test.d.ts +5 -0
- package/dist/document-models/renown-credential/src/tests/document-model.test.js +18 -0
- package/dist/document-models/renown-credential/src/tests/manager.test.d.ts +5 -0
- package/dist/document-models/renown-credential/src/tests/manager.test.js +32 -0
- package/dist/document-models/renown-credential/src/utils.d.ts +1 -0
- package/dist/document-models/renown-credential/src/utils.js +1 -0
- package/dist/editors/renown-user-editor/editor.js +5 -5
- package/dist/index.d.ts +1 -1
- package/dist/powerhouse.manifest.json +4 -0
- package/dist/style.css +133 -139
- package/dist/subgraphs/index.d.ts +1 -0
- package/dist/subgraphs/index.js +1 -0
- package/dist/subgraphs/renown-credential/index.d.ts +10 -0
- package/dist/subgraphs/renown-credential/index.js +11 -0
- package/dist/subgraphs/renown-credential/resolvers.d.ts +2 -0
- package/dist/subgraphs/renown-credential/resolvers.js +96 -0
- package/dist/subgraphs/renown-credential/schema.d.ts +2 -0
- package/dist/subgraphs/renown-credential/schema.js +60 -0
- package/dist/subgraphs/renown-read-model/resolvers.js +3 -99
- package/dist/subgraphs/renown-read-model/schema.js +2 -28
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Subgraph } from "@powerhousedao/reactor-api";
|
|
2
|
+
import type { DocumentNode } from "graphql";
|
|
3
|
+
export declare class RenownCredentialSubgraph 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 RenownCredentialSubgraph extends Subgraph {
|
|
5
|
+
name = "renown-credential";
|
|
6
|
+
typeDefs = schema;
|
|
7
|
+
resolvers = getResolvers(this);
|
|
8
|
+
additionalContextFields = {};
|
|
9
|
+
async onSetup() { }
|
|
10
|
+
async onDisconnect() { }
|
|
11
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { addFile } from "document-drive";
|
|
2
|
+
import { actions, } from "../../document-models/renown-credential/index.js";
|
|
3
|
+
import { setName } from "document-model";
|
|
4
|
+
export const getResolvers = (subgraph) => {
|
|
5
|
+
const reactor = subgraph.reactor;
|
|
6
|
+
return {
|
|
7
|
+
Query: {
|
|
8
|
+
RenownCredential: 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 === "renown/credential");
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
Mutation: {
|
|
55
|
+
RenownCredential_createDocument: async (_, args) => {
|
|
56
|
+
const { driveId, name } = args;
|
|
57
|
+
const document = await reactor.addDocument("renown/credential");
|
|
58
|
+
if (driveId) {
|
|
59
|
+
await reactor.addAction(driveId, addFile({
|
|
60
|
+
name,
|
|
61
|
+
id: document.header.id,
|
|
62
|
+
documentType: "renown/credential",
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
if (name) {
|
|
66
|
+
await reactor.addAction(document.header.id, setName(name));
|
|
67
|
+
}
|
|
68
|
+
return document.header.id;
|
|
69
|
+
},
|
|
70
|
+
RenownCredential_init: 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.init(input));
|
|
77
|
+
if (result.status !== "SUCCESS") {
|
|
78
|
+
throw new Error(result.error?.message ?? "Failed to init");
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
},
|
|
82
|
+
RenownCredential_revoke: 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.revoke(input));
|
|
89
|
+
if (result.status !== "SUCCESS") {
|
|
90
|
+
throw new Error(result.error?.message ?? "Failed to revoke");
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { gql } from "graphql-tag";
|
|
2
|
+
export const schema = gql `
|
|
3
|
+
"""
|
|
4
|
+
Subgraph definition for RenownCredential (renown/credential)
|
|
5
|
+
"""
|
|
6
|
+
type RenownCredentialState {
|
|
7
|
+
"Add your global state fields here"
|
|
8
|
+
jwt: String
|
|
9
|
+
revoked: Boolean
|
|
10
|
+
issuer: String
|
|
11
|
+
subject: String
|
|
12
|
+
audience: String
|
|
13
|
+
payload: String
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
Queries: RenownCredential
|
|
18
|
+
"""
|
|
19
|
+
type RenownCredentialQueries {
|
|
20
|
+
getDocument(docId: PHID!, driveId: PHID): RenownCredential
|
|
21
|
+
getDocuments(driveId: String!): [RenownCredential!]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type Query {
|
|
25
|
+
RenownCredential: RenownCredentialQueries
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
"""
|
|
29
|
+
Mutations: RenownCredential
|
|
30
|
+
"""
|
|
31
|
+
type Mutation {
|
|
32
|
+
RenownCredential_createDocument(name: String!, driveId: String): String
|
|
33
|
+
|
|
34
|
+
RenownCredential_init(
|
|
35
|
+
driveId: String
|
|
36
|
+
docId: PHID
|
|
37
|
+
input: RenownCredential_InitInput
|
|
38
|
+
): Int
|
|
39
|
+
RenownCredential_revoke(
|
|
40
|
+
driveId: String
|
|
41
|
+
docId: PHID
|
|
42
|
+
input: RenownCredential_RevokeInput
|
|
43
|
+
): Int
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
"""
|
|
47
|
+
Module: Manager
|
|
48
|
+
"""
|
|
49
|
+
input RenownCredential_InitInput {
|
|
50
|
+
"Add your inputs here"
|
|
51
|
+
jwt: String!
|
|
52
|
+
issuer: String
|
|
53
|
+
subject: String
|
|
54
|
+
audience: String
|
|
55
|
+
payload: String
|
|
56
|
+
}
|
|
57
|
+
input RenownCredential_RevokeInput {
|
|
58
|
+
jwt: String
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
@@ -1,105 +1,9 @@
|
|
|
1
|
-
import { RenownUserProcessor } from "../../processors/renown-user/index.js";
|
|
2
|
-
const mapToProfile = (user) => ({
|
|
3
|
-
documentId: user.document_id,
|
|
4
|
-
username: user.username,
|
|
5
|
-
ethAddress: user.eth_address,
|
|
6
|
-
userImage: user.user_image,
|
|
7
|
-
createdAt: user.created_at,
|
|
8
|
-
updatedAt: user.updated_at,
|
|
9
|
-
});
|
|
10
1
|
export const getResolvers = (subgraph) => {
|
|
11
|
-
const
|
|
2
|
+
const reactor = subgraph.reactor;
|
|
12
3
|
return {
|
|
13
4
|
Query: {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let query = RenownUserProcessor.query(driveId, db).selectFrom("renown_user");
|
|
17
|
-
// Priority: id > username > ethAddress > searchInput
|
|
18
|
-
if (id) {
|
|
19
|
-
query = query.where("renown_user.document_id", "=", id);
|
|
20
|
-
}
|
|
21
|
-
else if (username) {
|
|
22
|
-
query = query.where("renown_user.username", "=", username);
|
|
23
|
-
}
|
|
24
|
-
else if (ethAddress) {
|
|
25
|
-
query = query.where("renown_user.eth_address", "=", ethAddress);
|
|
26
|
-
}
|
|
27
|
-
else if (searchInput) {
|
|
28
|
-
// Search across username and eth_address
|
|
29
|
-
query = query.where((eb) => eb.or([
|
|
30
|
-
eb("renown_user.username", "like", `%${searchInput}%`),
|
|
31
|
-
eb("renown_user.eth_address", "like", `%${searchInput}%`),
|
|
32
|
-
]));
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
throw new Error("At least one of id, username, ethAddress, or searchInput must be provided");
|
|
36
|
-
}
|
|
37
|
-
const result = await query.selectAll().executeTakeFirst();
|
|
38
|
-
return result ? mapToProfile(result) : null;
|
|
39
|
-
},
|
|
40
|
-
getProfiles: async (parent, args) => {
|
|
41
|
-
const { driveId, ids, usernames, ethAddresses, searchString } = args.input;
|
|
42
|
-
let query = RenownUserProcessor.query(driveId, db).selectFrom("renown_user");
|
|
43
|
-
// Build OR conditions based on provided inputs
|
|
44
|
-
if (ids && ids.length > 0) {
|
|
45
|
-
query = query.where((eb) => eb.or([
|
|
46
|
-
eb("renown_user.document_id", "in", ids),
|
|
47
|
-
...(usernames && usernames.length > 0
|
|
48
|
-
? [eb("renown_user.username", "in", usernames)]
|
|
49
|
-
: []),
|
|
50
|
-
...(ethAddresses && ethAddresses.length > 0
|
|
51
|
-
? [eb("renown_user.eth_address", "in", ethAddresses)]
|
|
52
|
-
: []),
|
|
53
|
-
...(searchString
|
|
54
|
-
? [
|
|
55
|
-
eb.or([
|
|
56
|
-
eb("renown_user.username", "like", `%${searchString}%`),
|
|
57
|
-
eb("renown_user.eth_address", "like", `%${searchString}%`),
|
|
58
|
-
]),
|
|
59
|
-
]
|
|
60
|
-
: []),
|
|
61
|
-
]));
|
|
62
|
-
}
|
|
63
|
-
else if (usernames && usernames.length > 0) {
|
|
64
|
-
query = query.where((eb) => eb.or([
|
|
65
|
-
eb("renown_user.username", "in", usernames),
|
|
66
|
-
...(ethAddresses && ethAddresses.length > 0
|
|
67
|
-
? [eb("renown_user.eth_address", "in", ethAddresses)]
|
|
68
|
-
: []),
|
|
69
|
-
...(searchString
|
|
70
|
-
? [
|
|
71
|
-
eb.or([
|
|
72
|
-
eb("renown_user.username", "like", `%${searchString}%`),
|
|
73
|
-
eb("renown_user.eth_address", "like", `%${searchString}%`),
|
|
74
|
-
]),
|
|
75
|
-
]
|
|
76
|
-
: []),
|
|
77
|
-
]));
|
|
78
|
-
}
|
|
79
|
-
else if (ethAddresses && ethAddresses.length > 0) {
|
|
80
|
-
query = query.where((eb) => eb.or([
|
|
81
|
-
eb("renown_user.eth_address", "in", ethAddresses),
|
|
82
|
-
...(searchString
|
|
83
|
-
? [
|
|
84
|
-
eb.or([
|
|
85
|
-
eb("renown_user.username", "like", `%${searchString}%`),
|
|
86
|
-
eb("renown_user.eth_address", "like", `%${searchString}%`),
|
|
87
|
-
]),
|
|
88
|
-
]
|
|
89
|
-
: []),
|
|
90
|
-
]));
|
|
91
|
-
}
|
|
92
|
-
else if (searchString) {
|
|
93
|
-
query = query.where((eb) => eb.or([
|
|
94
|
-
eb("renown_user.username", "like", `%${searchString}%`),
|
|
95
|
-
eb("renown_user.eth_address", "like", `%${searchString}%`),
|
|
96
|
-
]));
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
throw new Error("At least one of ids, usernames, ethAddresses, or searchString must be provided");
|
|
100
|
-
}
|
|
101
|
-
const results = await query.selectAll().execute();
|
|
102
|
-
return results.map(mapToProfile);
|
|
5
|
+
example: async (parent, args) => {
|
|
6
|
+
return "example";
|
|
103
7
|
},
|
|
104
8
|
},
|
|
105
9
|
};
|
|
@@ -1,35 +1,9 @@
|
|
|
1
1
|
import { gql } from "graphql-tag";
|
|
2
2
|
export const schema = gql `
|
|
3
3
|
"""
|
|
4
|
-
Subgraph definition
|
|
4
|
+
Subgraph definition
|
|
5
5
|
"""
|
|
6
|
-
type RenownProfile {
|
|
7
|
-
documentId: String!
|
|
8
|
-
username: String
|
|
9
|
-
ethAddress: String
|
|
10
|
-
userImage: String
|
|
11
|
-
createdAt: String
|
|
12
|
-
updatedAt: String
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
input GetProfileInput {
|
|
16
|
-
driveId: String!
|
|
17
|
-
id: String
|
|
18
|
-
username: String
|
|
19
|
-
ethAddress: String
|
|
20
|
-
searchInput: String
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
input GetProfilesInput {
|
|
24
|
-
driveId: String!
|
|
25
|
-
ids: [String!]
|
|
26
|
-
usernames: [String!]
|
|
27
|
-
ethAddresses: [String!]
|
|
28
|
-
searchString: String
|
|
29
|
-
}
|
|
30
|
-
|
|
31
6
|
type Query {
|
|
32
|
-
|
|
33
|
-
getProfiles(input: GetProfilesInput!): [RenownProfile!]!
|
|
7
|
+
example(driveId: String!): String
|
|
34
8
|
}
|
|
35
9
|
`;
|