@show-karma/karma-gap-sdk 0.4.15 → 0.4.16
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/.cursorrules +43 -0
- package/core/abi/AirdropNFT.json +1 -1
- package/core/abi/Allo.json +860 -860
- package/core/abi/AlloRegistry.json +578 -578
- package/core/abi/CommunityResolverABI.json +506 -506
- package/core/abi/Donations.json +251 -251
- package/core/abi/EAS.json +1 -1
- package/core/abi/MultiAttester.json +746 -746
- package/core/abi/ProjectResolver.json +574 -574
- package/core/abi/SchemaRegistry.json +1 -1
- package/core/abi/index.ts +21 -0
- package/core/class/AllGapSchemas.ts +21 -0
- package/core/class/Attestation.ts +429 -0
- package/core/class/Fetcher.ts +224 -0
- package/core/class/GAP.ts +481 -0
- package/core/class/GapSchema.ts +93 -0
- package/core/class/Gelato/{Gelato.js → Gelato.ts} +23 -0
- package/core/class/GrantProgramRegistry/Allo.ts +188 -0
- package/core/class/GrantProgramRegistry/AlloRegistry.ts +101 -0
- package/core/class/GraphQL/AxiosGQL.ts +29 -0
- package/core/class/GraphQL/EASClient.ts +34 -0
- package/core/class/GraphQL/GapEasClient.ts +869 -0
- package/core/class/Schema.ts +659 -0
- package/core/class/SchemaError.ts +42 -0
- package/core/class/contract/GapContract.ts +457 -0
- package/core/class/entities/Community.ts +148 -0
- package/core/class/entities/ContributorProfile.ts +108 -0
- package/core/class/entities/Grant.ts +321 -0
- package/core/class/entities/GrantUpdate.ts +187 -0
- package/core/class/entities/MemberOf.ts +52 -0
- package/core/class/entities/Milestone.ts +898 -0
- package/core/class/entities/Project.ts +672 -0
- package/core/class/entities/ProjectImpact.ts +170 -0
- package/core/class/entities/ProjectMilestone.ts +254 -0
- package/core/class/entities/ProjectPointer.ts +39 -0
- package/core/class/entities/ProjectUpdate.ts +176 -0
- package/core/class/entities/Track.ts +32 -0
- package/core/class/karma-indexer/GapIndexerClient.ts +383 -0
- package/core/class/karma-indexer/api/GapIndexerApi.ts +446 -0
- package/core/class/karma-indexer/api/types.ts +313 -0
- package/core/class/remote-storage/IpfsStorage.ts +76 -0
- package/core/class/remote-storage/RemoteStorage.ts +65 -0
- package/core/class/types/allo.ts +93 -0
- package/core/class/types/attestations.ts +223 -0
- package/core/consts.ts +775 -0
- package/core/scripts/create-grant.ts +102 -0
- package/core/scripts/create-program.ts +43 -0
- package/core/scripts/create-schemas.ts +65 -0
- package/core/scripts/deploy.ts +65 -0
- package/core/scripts/index.ts +1 -0
- package/core/scripts/milestone-multi-grants.ts +125 -0
- package/core/shared/types.ts +13 -0
- package/core/types.ts +224 -0
- package/core/utils/gelato/send-gelato-txn.ts +114 -0
- package/core/utils/gelato/sponsor-handler.ts +77 -0
- package/core/utils/gelato/watch-gelato-txn.ts +67 -0
- package/core/utils/get-date.ts +3 -0
- package/core/utils/get-ipfs-data.ts +13 -0
- package/core/utils/get-web3-provider.ts +18 -0
- package/core/utils/gql-queries.ts +133 -0
- package/core/utils/map-filter.ts +21 -0
- package/core/utils/serialize-bigint.ts +7 -0
- package/core/utils/to-unix.ts +18 -0
- package/create-community-example.ts +119 -0
- package/csv-upload/README.md +74 -0
- package/csv-upload/config.ts +41 -0
- package/csv-upload/example.csv +2 -0
- package/csv-upload/keys.example.json +8 -0
- package/csv-upload/scripts/run.ts +417 -0
- package/csv-upload/types.ts +39 -0
- package/docs/.gitkeep +0 -0
- package/docs/images/attestation-architecture.png +0 -0
- package/docs/images/dfd-get-projects.png +0 -0
- package/gap-schema.yaml +155 -0
- package/milestone-workflow-example.ts +353 -0
- package/package.json +45 -39
- package/readme.md +872 -0
- package/schemas/.gitkeep +0 -0
- package/schemas/GAP-schemas-1692135812877.json +33 -0
- package/test-file-indexer-api.ts +25 -0
- package/tsconfig.json +26 -0
- package/core/abi/index.d.ts +0 -1114
- package/core/abi/index.js +0 -26
- package/core/class/AllGapSchemas.d.ts +0 -9
- package/core/class/AllGapSchemas.js +0 -19
- package/core/class/Attestation.d.ts +0 -173
- package/core/class/Attestation.js +0 -333
- package/core/class/Fetcher.d.ts +0 -175
- package/core/class/Fetcher.js +0 -13
- package/core/class/GAP.d.ts +0 -254
- package/core/class/GAP.js +0 -289
- package/core/class/GapSchema.d.ts +0 -34
- package/core/class/GapSchema.js +0 -62
- package/core/class/GrantProgramRegistry/Allo.d.ts +0 -17
- package/core/class/GrantProgramRegistry/Allo.js +0 -137
- package/core/class/GrantProgramRegistry/AlloRegistry.d.ts +0 -15
- package/core/class/GrantProgramRegistry/AlloRegistry.js +0 -70
- package/core/class/GraphQL/AxiosGQL.d.ts +0 -6
- package/core/class/GraphQL/AxiosGQL.js +0 -25
- package/core/class/GraphQL/EASClient.d.ts +0 -16
- package/core/class/GraphQL/EASClient.js +0 -26
- package/core/class/GraphQL/GapEasClient.d.ts +0 -71
- package/core/class/GraphQL/GapEasClient.js +0 -451
- package/core/class/GraphQL/index.js +0 -19
- package/core/class/Schema.d.ts +0 -233
- package/core/class/Schema.js +0 -488
- package/core/class/SchemaError.d.ts +0 -30
- package/core/class/SchemaError.js +0 -39
- package/core/class/contract/GapContract.d.ts +0 -102
- package/core/class/contract/GapContract.js +0 -285
- package/core/class/entities/Community.d.ts +0 -34
- package/core/class/entities/Community.js +0 -109
- package/core/class/entities/ContributorProfile.d.ts +0 -41
- package/core/class/entities/ContributorProfile.js +0 -69
- package/core/class/entities/Grant.d.ts +0 -54
- package/core/class/entities/Grant.js +0 -223
- package/core/class/entities/GrantUpdate.d.ts +0 -40
- package/core/class/entities/GrantUpdate.js +0 -114
- package/core/class/entities/MemberOf.d.ts +0 -11
- package/core/class/entities/MemberOf.js +0 -33
- package/core/class/entities/Milestone.d.ts +0 -168
- package/core/class/entities/Milestone.js +0 -657
- package/core/class/entities/Project.d.ts +0 -92
- package/core/class/entities/Project.js +0 -418
- package/core/class/entities/ProjectImpact.d.ts +0 -50
- package/core/class/entities/ProjectImpact.js +0 -112
- package/core/class/entities/ProjectMilestone.d.ts +0 -60
- package/core/class/entities/ProjectMilestone.js +0 -174
- package/core/class/entities/ProjectPointer.d.ts +0 -12
- package/core/class/entities/ProjectPointer.js +0 -22
- package/core/class/entities/ProjectUpdate.d.ts +0 -50
- package/core/class/entities/ProjectUpdate.js +0 -110
- package/core/class/entities/Track.d.ts +0 -16
- package/core/class/entities/Track.js +0 -21
- package/core/class/entities/index.js +0 -26
- package/core/class/index.js +0 -26
- package/core/class/karma-indexer/GapIndexerClient.d.ts +0 -66
- package/core/class/karma-indexer/GapIndexerClient.js +0 -207
- package/core/class/karma-indexer/api/GapIndexerApi.d.ts +0 -73
- package/core/class/karma-indexer/api/GapIndexerApi.js +0 -256
- package/core/class/karma-indexer/api/types.d.ts +0 -295
- package/core/class/karma-indexer/api/types.js +0 -2
- package/core/class/remote-storage/IpfsStorage.d.ts +0 -23
- package/core/class/remote-storage/IpfsStorage.js +0 -56
- package/core/class/remote-storage/RemoteStorage.d.ts +0 -41
- package/core/class/remote-storage/RemoteStorage.js +0 -38
- package/core/class/types/allo.d.ts +0 -78
- package/core/class/types/allo.js +0 -2
- package/core/class/types/attestations.d.ts +0 -168
- package/core/class/types/attestations.js +0 -66
- package/core/consts.d.ts +0 -48
- package/core/consts.js +0 -641
- package/core/index.js +0 -24
- package/core/shared/types.d.ts +0 -6
- package/core/shared/types.js +0 -2
- package/core/types.d.ts +0 -131
- package/core/types.js +0 -13
- package/core/utils/gelato/index.js +0 -19
- package/core/utils/gelato/send-gelato-txn.d.ts +0 -55
- package/core/utils/gelato/send-gelato-txn.js +0 -100
- package/core/utils/gelato/sponsor-handler.d.ts +0 -9
- package/core/utils/gelato/sponsor-handler.js +0 -60
- package/core/utils/gelato/watch-gelato-txn.d.ts +0 -7
- package/core/utils/gelato/watch-gelato-txn.js +0 -63
- package/core/utils/get-date.d.ts +0 -1
- package/core/utils/get-date.js +0 -7
- package/core/utils/get-ipfs-data.d.ts +0 -1
- package/core/utils/get-ipfs-data.js +0 -20
- package/core/utils/get-web3-provider.d.ts +0 -2
- package/core/utils/get-web3-provider.js +0 -18
- package/core/utils/gql-queries.d.ts +0 -12
- package/core/utils/gql-queries.js +0 -90
- package/core/utils/index.js +0 -23
- package/core/utils/map-filter.d.ts +0 -8
- package/core/utils/map-filter.js +0 -20
- package/core/utils/serialize-bigint.d.ts +0 -1
- package/core/utils/serialize-bigint.js +0 -8
- package/core/utils/to-unix.d.ts +0 -1
- package/core/utils/to-unix.js +0 -25
- package/index.js +0 -17
- /package/core/class/GraphQL/{index.d.ts → index.ts} +0 -0
- /package/core/class/entities/{index.d.ts → index.ts} +0 -0
- /package/core/class/{index.d.ts → index.ts} +0 -0
- /package/core/{index.d.ts → index.ts} +0 -0
- /package/core/utils/gelato/{index.d.ts → index.ts} +0 -0
- /package/core/utils/{index.d.ts → index.ts} +0 -0
- /package/{core/class/Gelato/Gelato.d.ts → csv-upload/.gitkeep} +0 -0
- /package/{index.d.ts → index.ts} +0 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { AxiosGQL } from "../../GraphQL/AxiosGQL";
|
|
2
|
+
import {
|
|
3
|
+
Hex,
|
|
4
|
+
IAttestationResponse,
|
|
5
|
+
ICommunityResponse,
|
|
6
|
+
ICommunityAdminsResponse,
|
|
7
|
+
IGrantResponse,
|
|
8
|
+
IProjectResponse,
|
|
9
|
+
ISearchResponse,
|
|
10
|
+
IProjectMilestoneResponse,
|
|
11
|
+
ITrackResponse,
|
|
12
|
+
ITrackAssignmentResponse,
|
|
13
|
+
IProjectTrackResponse,
|
|
14
|
+
} from "./types";
|
|
15
|
+
|
|
16
|
+
const Endpoints = {
|
|
17
|
+
attestations: {
|
|
18
|
+
all: () => "/attestations",
|
|
19
|
+
byUid: (uid: Hex) => `/attestations/${uid}`,
|
|
20
|
+
},
|
|
21
|
+
communities: {
|
|
22
|
+
all: () => "/communities",
|
|
23
|
+
admins: (uid: string) => `/communities/${uid}/admins`,
|
|
24
|
+
byUidOrSlug: (uidOrSlug: string) => `/communities/${uidOrSlug}`,
|
|
25
|
+
grants: (uidOrSlug: string, page: number = 0, pageLimit: number = 100) =>
|
|
26
|
+
`/communities/${uidOrSlug}/grants?${page ? `page=${page}` : ""}${
|
|
27
|
+
pageLimit ? `&pageLimit=${pageLimit}` : ""
|
|
28
|
+
}`,
|
|
29
|
+
},
|
|
30
|
+
grantees: {
|
|
31
|
+
all: () => "/grantees",
|
|
32
|
+
byAddress: (address: Hex) => `/grantees/${address}`,
|
|
33
|
+
grants: (address: Hex) => `/grantees/${address}/grants`,
|
|
34
|
+
projects: (address: Hex) => `/grantees/${address}/projects`,
|
|
35
|
+
communities: (address: Hex, withGrants) =>
|
|
36
|
+
`/grantees/${address}/communities${withGrants ? "?withGrants=true" : ""}`,
|
|
37
|
+
adminOf: (address: Hex) => `/grantees/${address}/communities/admin`,
|
|
38
|
+
},
|
|
39
|
+
grants: {
|
|
40
|
+
all: () => "/grants",
|
|
41
|
+
byUid: (uid: Hex) => `/grants/${uid}`,
|
|
42
|
+
byExternalId: (id: string) => `/grants/external-id/${id}`,
|
|
43
|
+
},
|
|
44
|
+
project: {
|
|
45
|
+
all: () => "/projects",
|
|
46
|
+
checkSlug: (slug: string) => `/projects/check-slug/${slug}`,
|
|
47
|
+
byUidOrSlug: (uidOrSlug: string) => `/projects/${uidOrSlug}`,
|
|
48
|
+
grants: (uidOrSlug: string) => `/projects/${uidOrSlug}/grants`,
|
|
49
|
+
milestones: (uidOrSlug: string) => `/projects/${uidOrSlug}/milestones`,
|
|
50
|
+
projectMilestones: (uidOrSlug: string) =>
|
|
51
|
+
`/projects/${uidOrSlug}/project-milestones`,
|
|
52
|
+
},
|
|
53
|
+
search: {
|
|
54
|
+
all: () => "/search",
|
|
55
|
+
},
|
|
56
|
+
tracks: {
|
|
57
|
+
all: () => "/tracks",
|
|
58
|
+
byId: (id: string) => `/tracks/${id}`,
|
|
59
|
+
byCommunity: (communityUID: string, includeArchived: boolean = false) =>
|
|
60
|
+
`/tracks?communityUID=${communityUID}${
|
|
61
|
+
includeArchived ? "&includeArchived=true" : ""
|
|
62
|
+
}`,
|
|
63
|
+
},
|
|
64
|
+
programs: {
|
|
65
|
+
tracks: {
|
|
66
|
+
all: (programId: string) => `/programs/${programId}/tracks`,
|
|
67
|
+
assign: (programId: string) => `/programs/${programId}/tracks`,
|
|
68
|
+
remove: (programId: string, trackId: string) =>
|
|
69
|
+
`/programs/${programId}/tracks/${trackId}`,
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
projectTracks: {
|
|
73
|
+
all: (projectId: string, programId: string, activeOnly: boolean = true) =>
|
|
74
|
+
`/programs/${programId}/projects/${projectId}/tracks${
|
|
75
|
+
activeOnly ? "" : "?activeOnly=false"
|
|
76
|
+
}`,
|
|
77
|
+
assign: (projectId: string) => `/projects/${projectId}/tracks`,
|
|
78
|
+
remove: (programId: string, projectId: string) =>
|
|
79
|
+
`/programs/${programId}/project/${projectId}/tracks`,
|
|
80
|
+
},
|
|
81
|
+
community: {
|
|
82
|
+
programProjects: (
|
|
83
|
+
communityId: string,
|
|
84
|
+
programId: string,
|
|
85
|
+
trackId?: string
|
|
86
|
+
) =>
|
|
87
|
+
`/community/${communityId}/program/${programId}/projects${
|
|
88
|
+
trackId ? `?trackId=${trackId}` : ""
|
|
89
|
+
}`,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export class GapIndexerApi extends AxiosGQL {
|
|
94
|
+
constructor(url: string) {
|
|
95
|
+
super(url);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async attestation(uid: Hex) {
|
|
99
|
+
const response = await this.client.get<IAttestationResponse>(
|
|
100
|
+
Endpoints.attestations.byUid(uid)
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
return response;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async attestations(schemaUID: string, search?: string) {
|
|
107
|
+
const response = await this.client.get<IAttestationResponse[]>(
|
|
108
|
+
Endpoints.attestations.all(),
|
|
109
|
+
{
|
|
110
|
+
params: {
|
|
111
|
+
"filter[schemaUID]": schemaUID,
|
|
112
|
+
"filter[data]": search,
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
return response;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async attestationsOf(schemaUID: string, attester: Hex) {
|
|
121
|
+
const response = await this.client.get<IAttestationResponse[]>(
|
|
122
|
+
Endpoints.attestations.all(),
|
|
123
|
+
{
|
|
124
|
+
params: {
|
|
125
|
+
"filter[schemaUID]": schemaUID,
|
|
126
|
+
"filter[recipient]": attester,
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
return response;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Community
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
async communities(search?: string) {
|
|
139
|
+
const response = await this.client.get<ICommunityResponse[]>(
|
|
140
|
+
Endpoints.communities.all(),
|
|
141
|
+
{
|
|
142
|
+
params: {
|
|
143
|
+
"filter[name]": search,
|
|
144
|
+
},
|
|
145
|
+
}
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
return response;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async communitiesOf(address: Hex, withGrants: boolean) {
|
|
152
|
+
const response = await this.client.get<ICommunityResponse[]>(
|
|
153
|
+
Endpoints.grantees.communities(address, withGrants)
|
|
154
|
+
);
|
|
155
|
+
return response;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async adminOf(address: Hex) {
|
|
159
|
+
const response = await this.client.get<ICommunityResponse[]>(
|
|
160
|
+
Endpoints.grantees.adminOf(address)
|
|
161
|
+
);
|
|
162
|
+
return response;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
async communityBySlug(slug: string) {
|
|
166
|
+
const response = await this.client.get<ICommunityResponse>(
|
|
167
|
+
Endpoints.communities.byUidOrSlug(slug)
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
return response;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
async communityAdmins(uid: Hex) {
|
|
174
|
+
const response = await this.client.get<ICommunityAdminsResponse>(
|
|
175
|
+
Endpoints.communities.admins(uid)
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
return response;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Project
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
async projectBySlug(slug: string) {
|
|
186
|
+
const response = await this.client.get<IProjectResponse>(
|
|
187
|
+
Endpoints.project.byUidOrSlug(slug)
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
return response;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
async search(query: string) {
|
|
194
|
+
const response = await this.client.get<ISearchResponse>(
|
|
195
|
+
Endpoints.search.all(),
|
|
196
|
+
{
|
|
197
|
+
params: {
|
|
198
|
+
q: query,
|
|
199
|
+
},
|
|
200
|
+
}
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
return response;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
async searchProjects(query: string) {
|
|
207
|
+
const response = await this.client.get<IProjectResponse[]>(
|
|
208
|
+
Endpoints.project.all(),
|
|
209
|
+
{
|
|
210
|
+
params: {
|
|
211
|
+
q: query,
|
|
212
|
+
},
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
return response;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
async projects(name?: string) {
|
|
220
|
+
const response = await this.client.get<IProjectResponse[]>(
|
|
221
|
+
Endpoints.project.all(),
|
|
222
|
+
{
|
|
223
|
+
params: {
|
|
224
|
+
"filter[title]": name,
|
|
225
|
+
},
|
|
226
|
+
}
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
return response;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
async projectsOf(grantee: Hex) {
|
|
233
|
+
const response = await this.client.get<IProjectResponse[]>(
|
|
234
|
+
Endpoints.grantees.projects(grantee)
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
return response;
|
|
238
|
+
}
|
|
239
|
+
async projectMilestones(uidOrSlug: string) {
|
|
240
|
+
const response = await this.client.get<IProjectMilestoneResponse[]>(
|
|
241
|
+
Endpoints.project.projectMilestones(uidOrSlug)
|
|
242
|
+
);
|
|
243
|
+
|
|
244
|
+
return response;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Grantee
|
|
249
|
+
*/
|
|
250
|
+
|
|
251
|
+
async grantee(address: Hex) {
|
|
252
|
+
// TODO: update response type when the endpoint works
|
|
253
|
+
const response = await this.client.get<any>(
|
|
254
|
+
Endpoints.grantees.byAddress(address)
|
|
255
|
+
);
|
|
256
|
+
return response;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
async grantees() {
|
|
260
|
+
const response = await this.client.get<{
|
|
261
|
+
[key: Hex]: { grants: number; projects: number };
|
|
262
|
+
}>(Endpoints.grantees.all());
|
|
263
|
+
|
|
264
|
+
return response;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Grant
|
|
269
|
+
*/
|
|
270
|
+
|
|
271
|
+
async grantsOf(grantee: Hex, withCommunity?: boolean) {
|
|
272
|
+
const response = await this.client.get<IGrantResponse[]>(
|
|
273
|
+
Endpoints.grantees.grants(grantee)
|
|
274
|
+
);
|
|
275
|
+
|
|
276
|
+
return response;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
async grantsFor(uid: string, withCommunity?: boolean) {
|
|
280
|
+
const response = await this.client.get<IGrantResponse[]>(
|
|
281
|
+
Endpoints.project.grants(uid)
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
return response;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
async grantsForExtProject(projectExtId: string) {
|
|
288
|
+
const response = await this.client.get<IGrantResponse[]>(
|
|
289
|
+
Endpoints.grants.byExternalId(projectExtId)
|
|
290
|
+
);
|
|
291
|
+
|
|
292
|
+
return response;
|
|
293
|
+
}
|
|
294
|
+
async grantBySlug(slug: Hex) {
|
|
295
|
+
const response = await this.client.get<IGrantResponse>(
|
|
296
|
+
Endpoints.grants.byUid(slug)
|
|
297
|
+
);
|
|
298
|
+
|
|
299
|
+
return response;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
async grantsByCommunity(uid: Hex, page: number = 0, pageLimit: number = 100) {
|
|
303
|
+
const response = await this.client.get<{ data: IGrantResponse[] }>(
|
|
304
|
+
Endpoints.communities.grants(uid, page, pageLimit)
|
|
305
|
+
);
|
|
306
|
+
|
|
307
|
+
return response;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Milestone
|
|
312
|
+
*/
|
|
313
|
+
|
|
314
|
+
async milestonesOf(uid: Hex) {
|
|
315
|
+
const response = await this.client.get(Endpoints.project.milestones(uid));
|
|
316
|
+
|
|
317
|
+
return response;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
async slugExists(slug: string) {
|
|
321
|
+
try {
|
|
322
|
+
await this.client.get<IProjectResponse>(
|
|
323
|
+
Endpoints.project.checkSlug(slug)
|
|
324
|
+
);
|
|
325
|
+
return true;
|
|
326
|
+
} catch (err) {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Tracks
|
|
333
|
+
*/
|
|
334
|
+
|
|
335
|
+
async getTracks(communityUID: string, includeArchived: boolean = false) {
|
|
336
|
+
const response = await this.client.get<ITrackResponse[]>(
|
|
337
|
+
Endpoints.tracks.byCommunity(communityUID, includeArchived)
|
|
338
|
+
);
|
|
339
|
+
return response;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
async getTrackById(id: string) {
|
|
343
|
+
const response = await this.client.get<ITrackResponse>(
|
|
344
|
+
Endpoints.tracks.byId(id)
|
|
345
|
+
);
|
|
346
|
+
return response;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
async createTrack(data: {
|
|
350
|
+
name: string;
|
|
351
|
+
description?: string;
|
|
352
|
+
communityUID: string;
|
|
353
|
+
}) {
|
|
354
|
+
const response = await this.client.post<ITrackResponse>(
|
|
355
|
+
Endpoints.tracks.all(),
|
|
356
|
+
data
|
|
357
|
+
);
|
|
358
|
+
return response;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
async updateTrack(
|
|
362
|
+
id: string,
|
|
363
|
+
data: { name?: string; description?: string; communityUID?: string }
|
|
364
|
+
) {
|
|
365
|
+
const response = await this.client.put<ITrackResponse>(
|
|
366
|
+
Endpoints.tracks.byId(id),
|
|
367
|
+
data
|
|
368
|
+
);
|
|
369
|
+
return response;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
async archiveTrack(id: string) {
|
|
373
|
+
const response = await this.client.delete<ITrackResponse>(
|
|
374
|
+
Endpoints.tracks.byId(id)
|
|
375
|
+
);
|
|
376
|
+
return response;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
async assignTracksToProgram(programId: string, trackIds: string[]) {
|
|
380
|
+
const response = await this.client.post<ITrackAssignmentResponse[]>(
|
|
381
|
+
Endpoints.programs.tracks.assign(programId),
|
|
382
|
+
{ trackIds }
|
|
383
|
+
);
|
|
384
|
+
return response;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
async unassignTrackFromProgram(programId: string, trackId: string) {
|
|
388
|
+
const response = await this.client.delete<ITrackAssignmentResponse>(
|
|
389
|
+
Endpoints.programs.tracks.remove(programId, trackId)
|
|
390
|
+
);
|
|
391
|
+
return response;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
async getTracksForProgram(programId: string) {
|
|
395
|
+
const response = await this.client.get<ITrackResponse[]>(
|
|
396
|
+
Endpoints.programs.tracks.all(programId)
|
|
397
|
+
);
|
|
398
|
+
return response;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
async getTracksForProject(
|
|
402
|
+
projectId: string,
|
|
403
|
+
programId: string,
|
|
404
|
+
activeOnly: boolean = true
|
|
405
|
+
) {
|
|
406
|
+
const response = await this.client.get<ITrackResponse[]>(
|
|
407
|
+
Endpoints.projectTracks.all(projectId, programId, activeOnly)
|
|
408
|
+
);
|
|
409
|
+
return response;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
async assignTracksToProject(
|
|
413
|
+
projectId: string,
|
|
414
|
+
programId: string,
|
|
415
|
+
trackIds: string[]
|
|
416
|
+
) {
|
|
417
|
+
const response = await this.client.post<any[]>(
|
|
418
|
+
Endpoints.projectTracks.assign(projectId),
|
|
419
|
+
{ trackIds, programId }
|
|
420
|
+
);
|
|
421
|
+
return response;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
async unassignTracksFromProject(
|
|
425
|
+
projectId: string,
|
|
426
|
+
programId: string,
|
|
427
|
+
trackIds: string[]
|
|
428
|
+
) {
|
|
429
|
+
const response = await this.client.delete<any[]>(
|
|
430
|
+
Endpoints.projectTracks.remove(programId, projectId),
|
|
431
|
+
{ data: { trackIds } }
|
|
432
|
+
);
|
|
433
|
+
return response;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
async getProjectsByTrack(
|
|
437
|
+
communityId: string,
|
|
438
|
+
programId: string,
|
|
439
|
+
trackId?: string
|
|
440
|
+
) {
|
|
441
|
+
const response = await this.client.get<IProjectTrackResponse[]>(
|
|
442
|
+
Endpoints.community.programProjects(communityId, programId, trackId)
|
|
443
|
+
);
|
|
444
|
+
return response;
|
|
445
|
+
}
|
|
446
|
+
}
|