@lagapp/sdk 0.1.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/CHANGELOG.md +17 -0
- package/LICENSE +21 -0
- package/README.md +207 -0
- package/dist/client.d.ts +36 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +45 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +67 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +103 -0
- package/dist/errors.js.map +1 -0
- package/dist/http.d.ts +61 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +187 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +39 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +26 -0
- package/dist/pagination.js.map +1 -0
- package/dist/resources/dms.d.ts +39 -0
- package/dist/resources/dms.d.ts.map +1 -0
- package/dist/resources/dms.js +76 -0
- package/dist/resources/dms.js.map +1 -0
- package/dist/resources/event-guests.d.ts +30 -0
- package/dist/resources/event-guests.d.ts.map +1 -0
- package/dist/resources/event-guests.js +39 -0
- package/dist/resources/event-guests.js.map +1 -0
- package/dist/resources/event-templates.d.ts +24 -0
- package/dist/resources/event-templates.d.ts.map +1 -0
- package/dist/resources/event-templates.js +42 -0
- package/dist/resources/event-templates.js.map +1 -0
- package/dist/resources/events.d.ts +38 -0
- package/dist/resources/events.d.ts.map +1 -0
- package/dist/resources/events.js +73 -0
- package/dist/resources/events.js.map +1 -0
- package/dist/resources/friends.d.ts +32 -0
- package/dist/resources/friends.d.ts.map +1 -0
- package/dist/resources/friends.js +65 -0
- package/dist/resources/friends.js.map +1 -0
- package/dist/resources/images.d.ts +41 -0
- package/dist/resources/images.d.ts.map +1 -0
- package/dist/resources/images.js +106 -0
- package/dist/resources/images.js.map +1 -0
- package/dist/resources/room-messages.d.ts +24 -0
- package/dist/resources/room-messages.d.ts.map +1 -0
- package/dist/resources/room-messages.js +49 -0
- package/dist/resources/room-messages.js.map +1 -0
- package/dist/resources/rooms.d.ts +24 -0
- package/dist/resources/rooms.d.ts.map +1 -0
- package/dist/resources/rooms.js +42 -0
- package/dist/resources/rooms.js.map +1 -0
- package/dist/resources/server-invites.d.ts +29 -0
- package/dist/resources/server-invites.d.ts.map +1 -0
- package/dist/resources/server-invites.js +59 -0
- package/dist/resources/server-invites.js.map +1 -0
- package/dist/resources/server-members.d.ts +27 -0
- package/dist/resources/server-members.d.ts.map +1 -0
- package/dist/resources/server-members.js +64 -0
- package/dist/resources/server-members.js.map +1 -0
- package/dist/resources/server-roles.d.ts +23 -0
- package/dist/resources/server-roles.d.ts.map +1 -0
- package/dist/resources/server-roles.js +51 -0
- package/dist/resources/server-roles.js.map +1 -0
- package/dist/resources/servers.d.ts +37 -0
- package/dist/resources/servers.d.ts.map +1 -0
- package/dist/resources/servers.js +72 -0
- package/dist/resources/servers.js.map +1 -0
- package/dist/resources/system.d.ts +20 -0
- package/dist/resources/system.d.ts.map +1 -0
- package/dist/resources/system.js +27 -0
- package/dist/resources/system.js.map +1 -0
- package/dist/resources/users.d.ts +48 -0
- package/dist/resources/users.d.ts.map +1 -0
- package/dist/resources/users.js +103 -0
- package/dist/resources/users.js.map +1 -0
- package/dist/types/common.d.ts +27 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +23 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/dm.d.ts +33 -0
- package/dist/types/dm.d.ts.map +1 -0
- package/dist/types/dm.js +2 -0
- package/dist/types/dm.js.map +1 -0
- package/dist/types/event.d.ts +101 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +2 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/friend.d.ts +51 -0
- package/dist/types/friend.d.ts.map +1 -0
- package/dist/types/friend.js +2 -0
- package/dist/types/friend.js.map +1 -0
- package/dist/types/image.d.ts +33 -0
- package/dist/types/image.d.ts.map +1 -0
- package/dist/types/image.js +3 -0
- package/dist/types/image.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/room.d.ts +98 -0
- package/dist/types/room.d.ts.map +1 -0
- package/dist/types/room.js +2 -0
- package/dist/types/room.js.map +1 -0
- package/dist/types/server.d.ts +134 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/server.js +2 -0
- package/dist/types/server.js.map +1 -0
- package/dist/types/system.d.ts +14 -0
- package/dist/types/system.d.ts.map +1 -0
- package/dist/types/system.js +2 -0
- package/dist/types/system.js.map +1 -0
- package/dist/types/user.d.ts +61 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +2 -0
- package/dist/types/user.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server invites sub-resource. Hung off `client.servers.invites` for
|
|
3
|
+
* discoverability. Most methods scope to a single server, except `preview`
|
|
4
|
+
* and `join` which operate purely on an invite code.
|
|
5
|
+
*/
|
|
6
|
+
export class ServerInvitesResource {
|
|
7
|
+
http;
|
|
8
|
+
constructor(http) {
|
|
9
|
+
this.http = http;
|
|
10
|
+
}
|
|
11
|
+
/** GET /servers/:id/invites - list active invites for a server (admin/owner). */
|
|
12
|
+
list(serverId) {
|
|
13
|
+
return this.http.request({
|
|
14
|
+
method: 'GET',
|
|
15
|
+
path: `/servers/${encodeURIComponent(serverId)}/invites`,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/** POST /servers/:id/invites - generate a new invite code. */
|
|
19
|
+
create(serverId, body = {}) {
|
|
20
|
+
return this.http.request({
|
|
21
|
+
method: 'POST',
|
|
22
|
+
path: `/servers/${encodeURIComponent(serverId)}/invites`,
|
|
23
|
+
body,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** DELETE /servers/:id/invites/:inviteId - revoke an invite. */
|
|
27
|
+
revoke(serverId, inviteId) {
|
|
28
|
+
return this.http.request({
|
|
29
|
+
method: 'DELETE',
|
|
30
|
+
path: `/servers/${encodeURIComponent(serverId)}/invites/${encodeURIComponent(inviteId)}`,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* GET /servers/invite/:code - public preview of an invite (no auth needed
|
|
35
|
+
* server-side, but the SDK still sends the bearer token, which is fine).
|
|
36
|
+
*/
|
|
37
|
+
preview(code) {
|
|
38
|
+
return this.http.request({
|
|
39
|
+
method: 'GET',
|
|
40
|
+
path: `/servers/invite/${encodeURIComponent(code)}`,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** POST /servers/join/:code - join a server via an invite code. */
|
|
44
|
+
join(code) {
|
|
45
|
+
return this.http.request({
|
|
46
|
+
method: 'POST',
|
|
47
|
+
path: `/servers/join/${encodeURIComponent(code)}`,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** POST /servers/:id/invite-friend - directly invite a single friend (no code). */
|
|
51
|
+
inviteFriend(serverId, userId) {
|
|
52
|
+
return this.http.request({
|
|
53
|
+
method: 'POST',
|
|
54
|
+
path: `/servers/${encodeURIComponent(serverId)}/invite-friend`,
|
|
55
|
+
body: { userId },
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=server-invites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-invites.js","sourceRoot":"","sources":["../../src/resources/server-invites.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,iFAAiF;IACjF,IAAI,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAiB;YACvC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,UAAU;SACzD,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,QAAgB,EAAE,OAAyB,EAAE;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAe;YACrC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,UAAU;YACxD,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,QAAgB,EAAE,QAAgB;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,EAAE;SACzF,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAsB;YAC5C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAS;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,mFAAmF;IACnF,YAAY,CAAC,QAAgB,EAAE,MAAc;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAoB;YAC1C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,gBAAgB;YAC9D,IAAI,EAAE,EAAE,MAAM,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { BanMemberBody, MuteMemberBody, ServerBan, ServerMute } from '../types/server.js';
|
|
3
|
+
/**
|
|
4
|
+
* Server member moderation. The "list members" call lives on
|
|
5
|
+
* `client.servers.get(id)` since the API returns members inline with the
|
|
6
|
+
* server detail; this resource focuses on kick / ban / mute actions and the
|
|
7
|
+
* paginated lists of active bans / mutes.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ServerMembersResource {
|
|
10
|
+
private readonly http;
|
|
11
|
+
constructor(http: HttpClient);
|
|
12
|
+
/** DELETE /servers/:id/members/:userId - kick a member (admin/owner only). */
|
|
13
|
+
kick(serverId: string, userId: string): Promise<void>;
|
|
14
|
+
/** GET /servers/:id/bans - list currently active bans. */
|
|
15
|
+
listBans(serverId: string): Promise<ServerBan[]>;
|
|
16
|
+
/** POST /servers/:id/bans/:userId - ban a member (optionally with a reason and duration in minutes). */
|
|
17
|
+
ban(serverId: string, userId: string, body?: BanMemberBody): Promise<ServerBan>;
|
|
18
|
+
/** DELETE /servers/:id/bans/:userId - lift an existing ban. */
|
|
19
|
+
unban(serverId: string, userId: string): Promise<void>;
|
|
20
|
+
/** GET /servers/:id/mutes - list currently active mutes. */
|
|
21
|
+
listMutes(serverId: string): Promise<ServerMute[]>;
|
|
22
|
+
/** POST /servers/:id/mutes/:userId - mute a member (optionally with a reason and duration in minutes). */
|
|
23
|
+
mute(serverId: string, userId: string, body?: MuteMemberBody): Promise<ServerMute>;
|
|
24
|
+
/** DELETE /servers/:id/mutes/:userId - lift an existing mute. */
|
|
25
|
+
unmute(serverId: string, userId: string): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=server-members.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-members.d.ts","sourceRoot":"","sources":["../../src/resources/server-members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,8EAA8E;IAC9E,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAOhD,wGAAwG;IACxG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAQnF,+DAA+D;IAC/D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD,4DAA4D;IAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAOlD,0GAA0G;IAC1G,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAQtF,iEAAiE;IACjE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMxD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server member moderation. The "list members" call lives on
|
|
3
|
+
* `client.servers.get(id)` since the API returns members inline with the
|
|
4
|
+
* server detail; this resource focuses on kick / ban / mute actions and the
|
|
5
|
+
* paginated lists of active bans / mutes.
|
|
6
|
+
*/
|
|
7
|
+
export class ServerMembersResource {
|
|
8
|
+
http;
|
|
9
|
+
constructor(http) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/** DELETE /servers/:id/members/:userId - kick a member (admin/owner only). */
|
|
13
|
+
kick(serverId, userId) {
|
|
14
|
+
return this.http.request({
|
|
15
|
+
method: 'DELETE',
|
|
16
|
+
path: `/servers/${encodeURIComponent(serverId)}/members/${encodeURIComponent(userId)}`,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** GET /servers/:id/bans - list currently active bans. */
|
|
20
|
+
listBans(serverId) {
|
|
21
|
+
return this.http.request({
|
|
22
|
+
method: 'GET',
|
|
23
|
+
path: `/servers/${encodeURIComponent(serverId)}/bans`,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/** POST /servers/:id/bans/:userId - ban a member (optionally with a reason and duration in minutes). */
|
|
27
|
+
ban(serverId, userId, body = {}) {
|
|
28
|
+
return this.http.request({
|
|
29
|
+
method: 'POST',
|
|
30
|
+
path: `/servers/${encodeURIComponent(serverId)}/bans/${encodeURIComponent(userId)}`,
|
|
31
|
+
body,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** DELETE /servers/:id/bans/:userId - lift an existing ban. */
|
|
35
|
+
unban(serverId, userId) {
|
|
36
|
+
return this.http.request({
|
|
37
|
+
method: 'DELETE',
|
|
38
|
+
path: `/servers/${encodeURIComponent(serverId)}/bans/${encodeURIComponent(userId)}`,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** GET /servers/:id/mutes - list currently active mutes. */
|
|
42
|
+
listMutes(serverId) {
|
|
43
|
+
return this.http.request({
|
|
44
|
+
method: 'GET',
|
|
45
|
+
path: `/servers/${encodeURIComponent(serverId)}/mutes`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** POST /servers/:id/mutes/:userId - mute a member (optionally with a reason and duration in minutes). */
|
|
49
|
+
mute(serverId, userId, body = {}) {
|
|
50
|
+
return this.http.request({
|
|
51
|
+
method: 'POST',
|
|
52
|
+
path: `/servers/${encodeURIComponent(serverId)}/mutes/${encodeURIComponent(userId)}`,
|
|
53
|
+
body,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/** DELETE /servers/:id/mutes/:userId - lift an existing mute. */
|
|
57
|
+
unmute(serverId, userId) {
|
|
58
|
+
return this.http.request({
|
|
59
|
+
method: 'DELETE',
|
|
60
|
+
path: `/servers/${encodeURIComponent(serverId)}/mutes/${encodeURIComponent(userId)}`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=server-members.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-members.js","sourceRoot":"","sources":["../../src/resources/server-members.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,8EAA8E;IAC9E,IAAI,CAAC,QAAgB,EAAE,MAAc;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE;SACvF,CAAC,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,QAAQ,CAAC,QAAgB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAc;YACpC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,OAAO;SACtD,CAAC,CAAC;IACL,CAAC;IAED,wGAAwG;IACxG,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,OAAsB,EAAE;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAY;YAClC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE;YACnF,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,QAAgB,EAAE,MAAc;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,EAAE;SACpF,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAe;YACrC,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,QAAQ;SACvD,CAAC,CAAC;IACL,CAAC;IAED,0GAA0G;IAC1G,IAAI,CAAC,QAAgB,EAAE,MAAc,EAAE,OAAuB,EAAE;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAa;YACnC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE;YACpF,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,QAAgB,EAAE,MAAc;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE;SACrF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { AssignRoleBody, AssignRoleResponse, CreateRoleBody, ServerRoleObject, UpdateRoleBody } from '../types/server.js';
|
|
3
|
+
/**
|
|
4
|
+
* Server roles. Roles are bitfield-based: combine `Permission.*` constants
|
|
5
|
+
* with bitwise OR to build the `permissions` field. Default roles
|
|
6
|
+
* (Owner, Admin, Member) cannot have their permissions edited; the API
|
|
7
|
+
* returns 400 if you try.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ServerRolesResource {
|
|
10
|
+
private readonly http;
|
|
11
|
+
constructor(http: HttpClient);
|
|
12
|
+
/** GET /servers/:id/roles - all roles in the server, sorted by `sortOrder`. */
|
|
13
|
+
list(serverId: string): Promise<ServerRoleObject[]>;
|
|
14
|
+
/** POST /servers/:id/roles - create a new custom role. */
|
|
15
|
+
create(serverId: string, body: CreateRoleBody): Promise<ServerRoleObject>;
|
|
16
|
+
/** PATCH /servers/:id/roles/:roleId - update a custom role. */
|
|
17
|
+
update(serverId: string, roleId: string, body: UpdateRoleBody): Promise<ServerRoleObject>;
|
|
18
|
+
/** DELETE /servers/:id/roles/:roleId - delete a custom role. */
|
|
19
|
+
delete(serverId: string, roleId: string): Promise<void>;
|
|
20
|
+
/** PUT /servers/:id/members/:userId/role - assign a role to a member. */
|
|
21
|
+
assignToMember(serverId: string, userId: string, body: AssignRoleBody): Promise<AssignRoleResponse>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=server-roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-roles.d.ts","sourceRoot":"","sources":["../../src/resources/server-roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,+EAA+E;IAC/E,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOnD,0DAA0D;IAC1D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQzE,+DAA+D;IAC/D,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAQ5B,gEAAgE;IAChE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,yEAAyE;IACzE,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,kBAAkB,CAAC;CAO/B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server roles. Roles are bitfield-based: combine `Permission.*` constants
|
|
3
|
+
* with bitwise OR to build the `permissions` field. Default roles
|
|
4
|
+
* (Owner, Admin, Member) cannot have their permissions edited; the API
|
|
5
|
+
* returns 400 if you try.
|
|
6
|
+
*/
|
|
7
|
+
export class ServerRolesResource {
|
|
8
|
+
http;
|
|
9
|
+
constructor(http) {
|
|
10
|
+
this.http = http;
|
|
11
|
+
}
|
|
12
|
+
/** GET /servers/:id/roles - all roles in the server, sorted by `sortOrder`. */
|
|
13
|
+
list(serverId) {
|
|
14
|
+
return this.http.request({
|
|
15
|
+
method: 'GET',
|
|
16
|
+
path: `/servers/${encodeURIComponent(serverId)}/roles`,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/** POST /servers/:id/roles - create a new custom role. */
|
|
20
|
+
create(serverId, body) {
|
|
21
|
+
return this.http.request({
|
|
22
|
+
method: 'POST',
|
|
23
|
+
path: `/servers/${encodeURIComponent(serverId)}/roles`,
|
|
24
|
+
body,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/** PATCH /servers/:id/roles/:roleId - update a custom role. */
|
|
28
|
+
update(serverId, roleId, body) {
|
|
29
|
+
return this.http.request({
|
|
30
|
+
method: 'PATCH',
|
|
31
|
+
path: `/servers/${encodeURIComponent(serverId)}/roles/${encodeURIComponent(roleId)}`,
|
|
32
|
+
body,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** DELETE /servers/:id/roles/:roleId - delete a custom role. */
|
|
36
|
+
delete(serverId, roleId) {
|
|
37
|
+
return this.http.request({
|
|
38
|
+
method: 'DELETE',
|
|
39
|
+
path: `/servers/${encodeURIComponent(serverId)}/roles/${encodeURIComponent(roleId)}`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** PUT /servers/:id/members/:userId/role - assign a role to a member. */
|
|
43
|
+
assignToMember(serverId, userId, body) {
|
|
44
|
+
return this.http.request({
|
|
45
|
+
method: 'PUT',
|
|
46
|
+
path: `/servers/${encodeURIComponent(serverId)}/members/${encodeURIComponent(userId)}/role`,
|
|
47
|
+
body,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=server-roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-roles.js","sourceRoot":"","sources":["../../src/resources/server-roles.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,+EAA+E;IAC/E,IAAI,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAqB;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,QAAQ;SACvD,CAAC,CAAC;IACL,CAAC;IAED,0DAA0D;IAC1D,MAAM,CAAC,QAAgB,EAAE,IAAoB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAmB;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,QAAQ;YACtD,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,MAAM,CACJ,QAAgB,EAChB,MAAc,EACd,IAAoB;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAmB;YACzC,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE;YACpF,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,QAAgB,EAAE,MAAc;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,EAAE;SACrF,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,cAAc,CACZ,QAAgB,EAChB,MAAc,EACd,IAAoB;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAqB;YAC3C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,kBAAkB,CAAC,QAAQ,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,OAAO;YAC3F,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { CreateServerBody, Server, ServerIconUploadBody, ServerIconUploadResponse, ServerWithDetails, UpdateServerBody } from '../types/server.js';
|
|
3
|
+
import { ServerInvitesResource } from './server-invites.js';
|
|
4
|
+
import { ServerMembersResource } from './server-members.js';
|
|
5
|
+
import { ServerRolesResource } from './server-roles.js';
|
|
6
|
+
import { RoomsResource } from './rooms.js';
|
|
7
|
+
/**
|
|
8
|
+
* Servers resource. The top-level CRUD plus four nested sub-resources:
|
|
9
|
+
*
|
|
10
|
+
* - `client.servers.invites` - create/list/revoke invites, join via code
|
|
11
|
+
* - `client.servers.members` - kick/ban/mute members, list bans/mutes
|
|
12
|
+
* - `client.servers.roles` - role CRUD and assignment
|
|
13
|
+
* - `client.servers.rooms` - voice rooms; `.messages` for chat in those rooms
|
|
14
|
+
*/
|
|
15
|
+
export declare class ServersResource {
|
|
16
|
+
private readonly http;
|
|
17
|
+
readonly invites: ServerInvitesResource;
|
|
18
|
+
readonly members: ServerMembersResource;
|
|
19
|
+
readonly roles: ServerRolesResource;
|
|
20
|
+
readonly rooms: RoomsResource;
|
|
21
|
+
constructor(http: HttpClient);
|
|
22
|
+
/** GET /servers/me - servers the caller is a member of. */
|
|
23
|
+
list(): Promise<Server[]>;
|
|
24
|
+
/** POST /servers - create a new server (capped at 1 owned per free user). */
|
|
25
|
+
create(body: CreateServerBody): Promise<Server>;
|
|
26
|
+
/** GET /servers/:id - server detail with rooms, members, and the caller's role. */
|
|
27
|
+
get(id: string): Promise<ServerWithDetails>;
|
|
28
|
+
/** PATCH /servers/:id - update name, icon URL, or icon emoji. */
|
|
29
|
+
update(id: string, body: UpdateServerBody): Promise<Server>;
|
|
30
|
+
/** POST /servers/:id/icon - upload a base64-encoded server icon image. */
|
|
31
|
+
uploadIcon(id: string, body: ServerIconUploadBody): Promise<ServerIconUploadResponse>;
|
|
32
|
+
/** DELETE /servers/:id - delete the server (owner only). */
|
|
33
|
+
delete(id: string): Promise<void>;
|
|
34
|
+
/** DELETE /servers/:id/leave - leave a server (members only; owners cannot leave). */
|
|
35
|
+
leave(id: string): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=servers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../src/resources/servers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,gBAAgB,EAChB,MAAM,EACN,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;GAOG;AACH,qBAAa,eAAe;IAMd,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,SAAgB,OAAO,EAAE,qBAAqB,CAAC;IAC/C,SAAgB,OAAO,EAAE,qBAAqB,CAAC;IAC/C,SAAgB,KAAK,EAAE,mBAAmB,CAAC;IAC3C,SAAgB,KAAK,EAAE,aAAa,CAAC;gBAER,IAAI,EAAE,UAAU;IAO7C,2DAA2D;IAC3D,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzB,6EAA6E;IAC7E,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/C,mFAAmF;IACnF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAO3C,iEAAiE;IACjE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3D,0EAA0E;IAC1E,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAQrF,4DAA4D;IAC5D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjC,sFAAsF;IACtF,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMjC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { ServerInvitesResource } from './server-invites.js';
|
|
2
|
+
import { ServerMembersResource } from './server-members.js';
|
|
3
|
+
import { ServerRolesResource } from './server-roles.js';
|
|
4
|
+
import { RoomsResource } from './rooms.js';
|
|
5
|
+
/**
|
|
6
|
+
* Servers resource. The top-level CRUD plus four nested sub-resources:
|
|
7
|
+
*
|
|
8
|
+
* - `client.servers.invites` - create/list/revoke invites, join via code
|
|
9
|
+
* - `client.servers.members` - kick/ban/mute members, list bans/mutes
|
|
10
|
+
* - `client.servers.roles` - role CRUD and assignment
|
|
11
|
+
* - `client.servers.rooms` - voice rooms; `.messages` for chat in those rooms
|
|
12
|
+
*/
|
|
13
|
+
export class ServersResource {
|
|
14
|
+
http;
|
|
15
|
+
invites;
|
|
16
|
+
members;
|
|
17
|
+
roles;
|
|
18
|
+
rooms;
|
|
19
|
+
constructor(http) {
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.invites = new ServerInvitesResource(http);
|
|
22
|
+
this.members = new ServerMembersResource(http);
|
|
23
|
+
this.roles = new ServerRolesResource(http);
|
|
24
|
+
this.rooms = new RoomsResource(http);
|
|
25
|
+
}
|
|
26
|
+
/** GET /servers/me - servers the caller is a member of. */
|
|
27
|
+
list() {
|
|
28
|
+
return this.http.request({ method: 'GET', path: '/servers/me' });
|
|
29
|
+
}
|
|
30
|
+
/** POST /servers - create a new server (capped at 1 owned per free user). */
|
|
31
|
+
create(body) {
|
|
32
|
+
return this.http.request({ method: 'POST', path: '/servers', body });
|
|
33
|
+
}
|
|
34
|
+
/** GET /servers/:id - server detail with rooms, members, and the caller's role. */
|
|
35
|
+
get(id) {
|
|
36
|
+
return this.http.request({
|
|
37
|
+
method: 'GET',
|
|
38
|
+
path: `/servers/${encodeURIComponent(id)}`,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** PATCH /servers/:id - update name, icon URL, or icon emoji. */
|
|
42
|
+
update(id, body) {
|
|
43
|
+
return this.http.request({
|
|
44
|
+
method: 'PATCH',
|
|
45
|
+
path: `/servers/${encodeURIComponent(id)}`,
|
|
46
|
+
body,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** POST /servers/:id/icon - upload a base64-encoded server icon image. */
|
|
50
|
+
uploadIcon(id, body) {
|
|
51
|
+
return this.http.request({
|
|
52
|
+
method: 'POST',
|
|
53
|
+
path: `/servers/${encodeURIComponent(id)}/icon`,
|
|
54
|
+
body,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/** DELETE /servers/:id - delete the server (owner only). */
|
|
58
|
+
delete(id) {
|
|
59
|
+
return this.http.request({
|
|
60
|
+
method: 'DELETE',
|
|
61
|
+
path: `/servers/${encodeURIComponent(id)}`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/** DELETE /servers/:id/leave - leave a server (members only; owners cannot leave). */
|
|
65
|
+
leave(id) {
|
|
66
|
+
return this.http.request({
|
|
67
|
+
method: 'DELETE',
|
|
68
|
+
path: `/servers/${encodeURIComponent(id)}/leave`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=servers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/resources/servers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAMG;IALb,OAAO,CAAwB;IAC/B,OAAO,CAAwB;IAC/B,KAAK,CAAsB;IAC3B,KAAK,CAAgB;IAErC,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,2DAA2D;IAC3D,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,6EAA6E;IAC7E,MAAM,CAAC,IAAsB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,mFAAmF;IACnF,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAoB;YAC1C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,EAAU,EAAE,IAAsB;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAS;YAC/B,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE;YAC1C,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,UAAU,CAAC,EAAU,EAAE,IAA0B;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAA2B;YACjD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,OAAO;YAC/C,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,sFAAsF;IACtF,KAAK,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAO;YAC7B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY,kBAAkB,CAAC,EAAE,CAAC,QAAQ;SACjD,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { HealthResponse, SystemStatusResponse, VersionResponse } from '../types/system.js';
|
|
3
|
+
import type { UserConfig } from '../types/user.js';
|
|
4
|
+
/**
|
|
5
|
+
* System endpoints. These are intentionally minimal: health and version are
|
|
6
|
+
* unauthenticated, and `config` returns the calling user's feature flags.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SystemResource {
|
|
9
|
+
private readonly http;
|
|
10
|
+
constructor(http: HttpClient);
|
|
11
|
+
/** GET /health - liveness probe and version stamp. */
|
|
12
|
+
health(): Promise<HealthResponse>;
|
|
13
|
+
/** GET /version - server version string only. */
|
|
14
|
+
version(): Promise<VersionResponse>;
|
|
15
|
+
/** GET /system-status - global flags (upgrade window, outage, waitlist). */
|
|
16
|
+
status(): Promise<SystemStatusResponse>;
|
|
17
|
+
/** GET /config - per-user feature flags resolved by the API. */
|
|
18
|
+
config(): Promise<UserConfig>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/resources/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,sDAAsD;IACtD,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAIjC,iDAAiD;IACjD,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;IAInC,4EAA4E;IAC5E,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIvC,gEAAgE;IAChE,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;CAG9B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System endpoints. These are intentionally minimal: health and version are
|
|
3
|
+
* unauthenticated, and `config` returns the calling user's feature flags.
|
|
4
|
+
*/
|
|
5
|
+
export class SystemResource {
|
|
6
|
+
http;
|
|
7
|
+
constructor(http) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
}
|
|
10
|
+
/** GET /health - liveness probe and version stamp. */
|
|
11
|
+
health() {
|
|
12
|
+
return this.http.request({ method: 'GET', path: '/health' });
|
|
13
|
+
}
|
|
14
|
+
/** GET /version - server version string only. */
|
|
15
|
+
version() {
|
|
16
|
+
return this.http.request({ method: 'GET', path: '/version' });
|
|
17
|
+
}
|
|
18
|
+
/** GET /system-status - global flags (upgrade window, outage, waitlist). */
|
|
19
|
+
status() {
|
|
20
|
+
return this.http.request({ method: 'GET', path: '/system-status' });
|
|
21
|
+
}
|
|
22
|
+
/** GET /config - per-user feature flags resolved by the API. */
|
|
23
|
+
config() {
|
|
24
|
+
return this.http.request({ method: 'GET', path: '/config' });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/resources/system.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,sDAAsD;IACtD,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,iDAAiD;IACjD,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,4EAA4E;IAC5E,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAuB,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,gEAAgE;IAChE,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { HttpClient } from '../http.js';
|
|
2
|
+
import type { AvatarUploadBody, AvatarUploadResponse, CheckUsernameResponse, PushTokenBody, SetupUserBody, SteamActivityResponse, SteamLookupResponse, UpdateUserBody, User } from '../types/user.js';
|
|
3
|
+
/**
|
|
4
|
+
* Users resource. Covers the calling user's own profile (`/users/me/*`) and
|
|
5
|
+
* lookups for other users (`/users/:id`, `/users/search`, `/users/check-username`).
|
|
6
|
+
*
|
|
7
|
+
* Setup-related endpoints (`/users/me/setup`) and Steam integration are also
|
|
8
|
+
* exposed since they belong to the public user-facing surface, but they will
|
|
9
|
+
* only succeed for callers using a Supabase JWT (PATs are issued *after*
|
|
10
|
+
* setup is complete).
|
|
11
|
+
*/
|
|
12
|
+
export declare class UsersResource {
|
|
13
|
+
private readonly http;
|
|
14
|
+
constructor(http: HttpClient);
|
|
15
|
+
/** GET /users/me - the currently authenticated user. */
|
|
16
|
+
me(): Promise<User>;
|
|
17
|
+
/** PATCH /users/me - update display name, avatar URL, or Steam ID. */
|
|
18
|
+
updateMe(body: UpdateUserBody): Promise<User>;
|
|
19
|
+
/** POST /users/me/setup - one-time account setup (username + display name). */
|
|
20
|
+
setup(body: SetupUserBody): Promise<User>;
|
|
21
|
+
/** POST /users/me/avatar - upload a profile avatar (base64 image). */
|
|
22
|
+
uploadAvatar(body: AvatarUploadBody): Promise<AvatarUploadResponse>;
|
|
23
|
+
/** POST /users/me/push-token - register a mobile push notification token. */
|
|
24
|
+
registerPushToken(body: PushTokenBody): Promise<{
|
|
25
|
+
ok: true;
|
|
26
|
+
}>;
|
|
27
|
+
/** DELETE /users/me/push-token - drop a previously registered push token. */
|
|
28
|
+
removePushToken(token: string): Promise<{
|
|
29
|
+
ok: true;
|
|
30
|
+
}>;
|
|
31
|
+
/** POST /users/me/request-deletion - schedule account deletion (7-day grace period). */
|
|
32
|
+
requestDeletion(): Promise<User>;
|
|
33
|
+
/** POST /users/me/cancel-deletion - cancel a pending account deletion. */
|
|
34
|
+
cancelDeletion(): Promise<User>;
|
|
35
|
+
/** GET /users/me/steam-lookup?q=... - resolve a Steam profile by ID, vanity name, or URL. */
|
|
36
|
+
steamLookup(query: string): Promise<SteamLookupResponse>;
|
|
37
|
+
/** POST /users/me/steam-avatar - import a Steam avatar to the Lag profile. */
|
|
38
|
+
importSteamAvatar(avatarUrl: string): Promise<AvatarUploadResponse>;
|
|
39
|
+
/** GET /users/me/steam-activity - current game name from Steam, if linked. */
|
|
40
|
+
steamActivity(): Promise<SteamActivityResponse>;
|
|
41
|
+
/** GET /users/check-username?username=... - check whether a username is available. */
|
|
42
|
+
checkUsername(username: string): Promise<CheckUsernameResponse>;
|
|
43
|
+
/** GET /users/search?q=... - search users by username (max 20 results). */
|
|
44
|
+
search(query: string): Promise<User[]>;
|
|
45
|
+
/** GET /users/:id - fetch a user by ID. */
|
|
46
|
+
get(id: string): Promise<User>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=users.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,IAAI,EACL,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,wDAAwD;IACxD,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAInB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,+EAA+E;IAC/E,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,sEAAsE;IACtE,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQnE,6EAA6E;IAC7E,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IAQ7D,6EAA6E;IAC7E,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC;IAQrD,wFAAwF;IACxF,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC,0EAA0E;IAC1E,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,6FAA6F;IAC7F,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQxD,8EAA8E;IAC9E,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQnE,8EAA8E;IAC9E,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAO/C,sFAAsF;IACtF,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ/D,2EAA2E;IAC3E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQtC,2CAA2C;IAC3C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Users resource. Covers the calling user's own profile (`/users/me/*`) and
|
|
3
|
+
* lookups for other users (`/users/:id`, `/users/search`, `/users/check-username`).
|
|
4
|
+
*
|
|
5
|
+
* Setup-related endpoints (`/users/me/setup`) and Steam integration are also
|
|
6
|
+
* exposed since they belong to the public user-facing surface, but they will
|
|
7
|
+
* only succeed for callers using a Supabase JWT (PATs are issued *after*
|
|
8
|
+
* setup is complete).
|
|
9
|
+
*/
|
|
10
|
+
export class UsersResource {
|
|
11
|
+
http;
|
|
12
|
+
constructor(http) {
|
|
13
|
+
this.http = http;
|
|
14
|
+
}
|
|
15
|
+
/** GET /users/me - the currently authenticated user. */
|
|
16
|
+
me() {
|
|
17
|
+
return this.http.request({ method: 'GET', path: '/users/me' });
|
|
18
|
+
}
|
|
19
|
+
/** PATCH /users/me - update display name, avatar URL, or Steam ID. */
|
|
20
|
+
updateMe(body) {
|
|
21
|
+
return this.http.request({ method: 'PATCH', path: '/users/me', body });
|
|
22
|
+
}
|
|
23
|
+
/** POST /users/me/setup - one-time account setup (username + display name). */
|
|
24
|
+
setup(body) {
|
|
25
|
+
return this.http.request({ method: 'POST', path: '/users/me/setup', body });
|
|
26
|
+
}
|
|
27
|
+
/** POST /users/me/avatar - upload a profile avatar (base64 image). */
|
|
28
|
+
uploadAvatar(body) {
|
|
29
|
+
return this.http.request({
|
|
30
|
+
method: 'POST',
|
|
31
|
+
path: '/users/me/avatar',
|
|
32
|
+
body,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** POST /users/me/push-token - register a mobile push notification token. */
|
|
36
|
+
registerPushToken(body) {
|
|
37
|
+
return this.http.request({
|
|
38
|
+
method: 'POST',
|
|
39
|
+
path: '/users/me/push-token',
|
|
40
|
+
body,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/** DELETE /users/me/push-token - drop a previously registered push token. */
|
|
44
|
+
removePushToken(token) {
|
|
45
|
+
return this.http.request({
|
|
46
|
+
method: 'DELETE',
|
|
47
|
+
path: '/users/me/push-token',
|
|
48
|
+
body: { token },
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** POST /users/me/request-deletion - schedule account deletion (7-day grace period). */
|
|
52
|
+
requestDeletion() {
|
|
53
|
+
return this.http.request({ method: 'POST', path: '/users/me/request-deletion' });
|
|
54
|
+
}
|
|
55
|
+
/** POST /users/me/cancel-deletion - cancel a pending account deletion. */
|
|
56
|
+
cancelDeletion() {
|
|
57
|
+
return this.http.request({ method: 'POST', path: '/users/me/cancel-deletion' });
|
|
58
|
+
}
|
|
59
|
+
/** GET /users/me/steam-lookup?q=... - resolve a Steam profile by ID, vanity name, or URL. */
|
|
60
|
+
steamLookup(query) {
|
|
61
|
+
return this.http.request({
|
|
62
|
+
method: 'GET',
|
|
63
|
+
path: '/users/me/steam-lookup',
|
|
64
|
+
query: { q: query },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** POST /users/me/steam-avatar - import a Steam avatar to the Lag profile. */
|
|
68
|
+
importSteamAvatar(avatarUrl) {
|
|
69
|
+
return this.http.request({
|
|
70
|
+
method: 'POST',
|
|
71
|
+
path: '/users/me/steam-avatar',
|
|
72
|
+
body: { avatarUrl },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/** GET /users/me/steam-activity - current game name from Steam, if linked. */
|
|
76
|
+
steamActivity() {
|
|
77
|
+
return this.http.request({
|
|
78
|
+
method: 'GET',
|
|
79
|
+
path: '/users/me/steam-activity',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** GET /users/check-username?username=... - check whether a username is available. */
|
|
83
|
+
checkUsername(username) {
|
|
84
|
+
return this.http.request({
|
|
85
|
+
method: 'GET',
|
|
86
|
+
path: '/users/check-username',
|
|
87
|
+
query: { username },
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/** GET /users/search?q=... - search users by username (max 20 results). */
|
|
91
|
+
search(query) {
|
|
92
|
+
return this.http.request({
|
|
93
|
+
method: 'GET',
|
|
94
|
+
path: '/users/search',
|
|
95
|
+
query: { q: query },
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/** GET /users/:id - fetch a user by ID. */
|
|
99
|
+
get(id) {
|
|
100
|
+
return this.http.request({ method: 'GET', path: `/users/${encodeURIComponent(id)}` });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=users.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/resources/users.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User presence status. The string `in-game` is hyphenated server-side; the
|
|
3
|
+
* SDK preserves it verbatim instead of normalizing to camelCase.
|
|
4
|
+
*/
|
|
5
|
+
export type UserStatus = 'online' | 'offline' | 'in-game' | 'idle';
|
|
6
|
+
/**
|
|
7
|
+
* Server permission bitflags. These are the same numeric values used by the
|
|
8
|
+
* Lag API and stored on `serverRoles.permissions`. Permissions compose with
|
|
9
|
+
* bitwise OR.
|
|
10
|
+
*/
|
|
11
|
+
export declare const Permission: {
|
|
12
|
+
readonly MANAGE_SERVER: number;
|
|
13
|
+
readonly MANAGE_ROLES: number;
|
|
14
|
+
readonly MANAGE_ROOMS: number;
|
|
15
|
+
readonly MANAGE_MESSAGES: number;
|
|
16
|
+
readonly MANAGE_MEMBERS: number;
|
|
17
|
+
readonly KICK_MEMBERS: number;
|
|
18
|
+
readonly BAN_MEMBERS: number;
|
|
19
|
+
readonly MUTE_MEMBERS: number;
|
|
20
|
+
readonly MANAGE_EVENTS: number;
|
|
21
|
+
readonly MENTION_EVERYONE: number;
|
|
22
|
+
readonly CREATE_INVITES: number;
|
|
23
|
+
};
|
|
24
|
+
export type Permission = (typeof Permission)[keyof typeof Permission];
|
|
25
|
+
/** Test whether a permission bitfield grants a specific permission. */
|
|
26
|
+
export declare function hasPermission(perms: number, perm: number): boolean;
|
|
27
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;CAYb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAElE"}
|