@phxgg/kick.js 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/dist/BaseResponse.d.ts +10 -0
- package/dist/BaseResponse.d.ts.map +1 -0
- package/dist/BaseResponse.js +2 -0
- package/dist/BaseResponse.js.map +1 -0
- package/dist/Errors.d.ts +25 -0
- package/dist/Errors.d.ts.map +1 -0
- package/dist/Errors.js +49 -0
- package/dist/Errors.js.map +1 -0
- package/dist/EventManager.d.ts +15 -0
- package/dist/EventManager.d.ts.map +1 -0
- package/dist/EventManager.js +35 -0
- package/dist/EventManager.js.map +1 -0
- package/dist/KickClient.d.ts +46 -0
- package/dist/KickClient.d.ts.map +1 -0
- package/dist/KickClient.js +88 -0
- package/dist/KickClient.js.map +1 -0
- package/dist/OAuth.d.ts +77 -0
- package/dist/OAuth.d.ts.map +1 -0
- package/dist/OAuth.js +162 -0
- package/dist/OAuth.js.map +1 -0
- package/dist/Scope.d.ts +14 -0
- package/dist/Scope.d.ts.map +1 -0
- package/dist/Scope.js +15 -0
- package/dist/Scope.js.map +1 -0
- package/dist/Serializable.d.ts +15 -0
- package/dist/Serializable.d.ts.map +1 -0
- package/dist/Serializable.js +111 -0
- package/dist/Serializable.js.map +1 -0
- package/dist/Version.d.ts +5 -0
- package/dist/Version.d.ts.map +1 -0
- package/dist/Version.js +6 -0
- package/dist/Version.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/Category.d.ts +20 -0
- package/dist/resources/Category.d.ts.map +1 -0
- package/dist/resources/Category.js +26 -0
- package/dist/resources/Category.js.map +1 -0
- package/dist/resources/Channel.d.ts +48 -0
- package/dist/resources/Channel.d.ts.map +1 -0
- package/dist/resources/Channel.js +51 -0
- package/dist/resources/Channel.js.map +1 -0
- package/dist/resources/ChannelReward.d.ts +28 -0
- package/dist/resources/ChannelReward.d.ts.map +1 -0
- package/dist/resources/ChannelReward.js +38 -0
- package/dist/resources/ChannelReward.js.map +1 -0
- package/dist/resources/ChannelRewardRedemption.d.ts +59 -0
- package/dist/resources/ChannelRewardRedemption.d.ts.map +1 -0
- package/dist/resources/ChannelRewardRedemption.js +38 -0
- package/dist/resources/ChannelRewardRedemption.js.map +1 -0
- package/dist/resources/EventSubscription.d.ts +26 -0
- package/dist/resources/EventSubscription.d.ts.map +1 -0
- package/dist/resources/EventSubscription.js +35 -0
- package/dist/resources/EventSubscription.js.map +1 -0
- package/dist/resources/Leaderboard.d.ts +22 -0
- package/dist/resources/Leaderboard.d.ts.map +1 -0
- package/dist/resources/Leaderboard.js +20 -0
- package/dist/resources/Leaderboard.js.map +1 -0
- package/dist/resources/Livestream.d.ts +38 -0
- package/dist/resources/Livestream.d.ts.map +1 -0
- package/dist/resources/Livestream.js +48 -0
- package/dist/resources/Livestream.js.map +1 -0
- package/dist/resources/Message.d.ts +14 -0
- package/dist/resources/Message.d.ts.map +1 -0
- package/dist/resources/Message.js +17 -0
- package/dist/resources/Message.js.map +1 -0
- package/dist/resources/User.d.ts +18 -0
- package/dist/resources/User.d.ts.map +1 -0
- package/dist/resources/User.js +23 -0
- package/dist/resources/User.js.map +1 -0
- package/dist/services/CategoriesService.d.ts +39 -0
- package/dist/services/CategoriesService.d.ts.map +1 -0
- package/dist/services/CategoriesService.js +73 -0
- package/dist/services/CategoriesService.js.map +1 -0
- package/dist/services/CategoriesServiceV2.d.ts +39 -0
- package/dist/services/CategoriesServiceV2.d.ts.map +1 -0
- package/dist/services/CategoriesServiceV2.js +89 -0
- package/dist/services/CategoriesServiceV2.js.map +1 -0
- package/dist/services/ChannelRewardsService.d.ts +128 -0
- package/dist/services/ChannelRewardsService.d.ts.map +1 -0
- package/dist/services/ChannelRewardsService.js +296 -0
- package/dist/services/ChannelRewardsService.js.map +1 -0
- package/dist/services/ChannelsService.d.ts +64 -0
- package/dist/services/ChannelsService.d.ts.map +1 -0
- package/dist/services/ChannelsService.js +126 -0
- package/dist/services/ChannelsService.js.map +1 -0
- package/dist/services/ChatService.d.ts +49 -0
- package/dist/services/ChatService.d.ts.map +1 -0
- package/dist/services/ChatService.js +90 -0
- package/dist/services/ChatService.js.map +1 -0
- package/dist/services/EventsService.d.ts +96 -0
- package/dist/services/EventsService.d.ts.map +1 -0
- package/dist/services/EventsService.js +145 -0
- package/dist/services/EventsService.js.map +1 -0
- package/dist/services/KICKsService.d.ts +26 -0
- package/dist/services/KICKsService.d.ts.map +1 -0
- package/dist/services/KICKsService.js +49 -0
- package/dist/services/KICKsService.js.map +1 -0
- package/dist/services/LivestreamsService.d.ts +39 -0
- package/dist/services/LivestreamsService.d.ts.map +1 -0
- package/dist/services/LivestreamsService.js +92 -0
- package/dist/services/LivestreamsService.js.map +1 -0
- package/dist/services/ModerationService.d.ts +65 -0
- package/dist/services/ModerationService.d.ts.map +1 -0
- package/dist/services/ModerationService.js +132 -0
- package/dist/services/ModerationService.js.map +1 -0
- package/dist/services/PublicKeyService.d.ts +22 -0
- package/dist/services/PublicKeyService.d.ts.map +1 -0
- package/dist/services/PublicKeyService.js +58 -0
- package/dist/services/PublicKeyService.js.map +1 -0
- package/dist/services/UsersService.d.ts +23 -0
- package/dist/services/UsersService.d.ts.map +1 -0
- package/dist/services/UsersService.js +44 -0
- package/dist/services/UsersService.js.map +1 -0
- package/dist/utils.d.ts +21 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +66 -0
- package/dist/utils.js.map +1 -0
- package/dist/webhooks/WebhookEvents.d.ts +27 -0
- package/dist/webhooks/WebhookEvents.d.ts.map +1 -0
- package/dist/webhooks/WebhookEvents.js +14 -0
- package/dist/webhooks/WebhookEvents.js.map +1 -0
- package/dist/webhooks/dispatch.d.ts +10 -0
- package/dist/webhooks/dispatch.d.ts.map +1 -0
- package/dist/webhooks/dispatch.js +16 -0
- package/dist/webhooks/dispatch.js.map +1 -0
- package/dist/webhooks/v1/Properties.d.ts +50 -0
- package/dist/webhooks/v1/Properties.d.ts.map +1 -0
- package/dist/webhooks/v1/Properties.js +2 -0
- package/dist/webhooks/v1/Properties.js.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelFollowed.d.ts +6 -0
- package/dist/webhooks/v1/payloads/ChannelFollowed.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelFollowed.js +2 -0
- package/dist/webhooks/v1/payloads/ChannelFollowed.js.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelRewardRedemptionUpdated.d.ts +17 -0
- package/dist/webhooks/v1/payloads/ChannelRewardRedemptionUpdated.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelRewardRedemptionUpdated.js +2 -0
- package/dist/webhooks/v1/payloads/ChannelRewardRedemptionUpdated.js.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionGifts.d.ts +9 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionGifts.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionGifts.js +2 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionGifts.js.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionNew.d.ts +9 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionNew.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionNew.js +2 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionNew.js.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionRenewal.d.ts +9 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionRenewal.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionRenewal.js +2 -0
- package/dist/webhooks/v1/payloads/ChannelSubscriptionRenewal.js.map +1 -0
- package/dist/webhooks/v1/payloads/ChatMessageSent.d.ts +15 -0
- package/dist/webhooks/v1/payloads/ChatMessageSent.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ChatMessageSent.js +2 -0
- package/dist/webhooks/v1/payloads/ChatMessageSent.js.map +1 -0
- package/dist/webhooks/v1/payloads/KicksGifted.d.ts +8 -0
- package/dist/webhooks/v1/payloads/KicksGifted.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/KicksGifted.js +2 -0
- package/dist/webhooks/v1/payloads/KicksGifted.js.map +1 -0
- package/dist/webhooks/v1/payloads/LivestreamMetadataUpdated.d.ts +6 -0
- package/dist/webhooks/v1/payloads/LivestreamMetadataUpdated.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/LivestreamMetadataUpdated.js +2 -0
- package/dist/webhooks/v1/payloads/LivestreamMetadataUpdated.js.map +1 -0
- package/dist/webhooks/v1/payloads/LivestreamStatusUpdated.d.ts +9 -0
- package/dist/webhooks/v1/payloads/LivestreamStatusUpdated.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/LivestreamStatusUpdated.js +2 -0
- package/dist/webhooks/v1/payloads/LivestreamStatusUpdated.js.map +1 -0
- package/dist/webhooks/v1/payloads/ModerationBanned.d.ts +12 -0
- package/dist/webhooks/v1/payloads/ModerationBanned.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/ModerationBanned.js +2 -0
- package/dist/webhooks/v1/payloads/ModerationBanned.js.map +1 -0
- package/dist/webhooks/v1/payloads/index.d.ts +12 -0
- package/dist/webhooks/v1/payloads/index.d.ts.map +1 -0
- package/dist/webhooks/v1/payloads/index.js +2 -0
- package/dist/webhooks/v1/payloads/index.js.map +1 -0
- package/dist/webhooks/verify.d.ts +21 -0
- package/dist/webhooks/verify.d.ts.map +1 -0
- package/dist/webhooks/verify.js +15 -0
- package/dist/webhooks/verify.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import type { KickClient } from '../KickClient.js';
|
|
3
|
+
export declare const banUserSchema: z.ZodObject<{
|
|
4
|
+
broadcasterUserId: z.ZodNumber;
|
|
5
|
+
userId: z.ZodNumber;
|
|
6
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.z.core.$strip>;
|
|
8
|
+
export type BanUserParams = z.infer<typeof banUserSchema>;
|
|
9
|
+
export declare const timeoutUserSchema: z.ZodObject<{
|
|
10
|
+
broadcasterUserId: z.ZodNumber;
|
|
11
|
+
userId: z.ZodNumber;
|
|
12
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
13
|
+
duration: z.ZodNumber;
|
|
14
|
+
}, z.z.core.$strip>;
|
|
15
|
+
export type TimeoutUserParams = z.infer<typeof timeoutUserSchema>;
|
|
16
|
+
export declare const removeBanSchema: z.ZodObject<{
|
|
17
|
+
broadcasterUserId: z.ZodNumber;
|
|
18
|
+
userId: z.ZodNumber;
|
|
19
|
+
}, z.z.core.$strip>;
|
|
20
|
+
export type RemoveBanParams = z.infer<typeof removeBanSchema>;
|
|
21
|
+
export declare class ModerationService {
|
|
22
|
+
private readonly MODERATION_URL;
|
|
23
|
+
protected readonly client: KickClient;
|
|
24
|
+
constructor(client: KickClient);
|
|
25
|
+
/**
|
|
26
|
+
* Ban a user from a channel.
|
|
27
|
+
*
|
|
28
|
+
* Required scopes:
|
|
29
|
+
* `moderation:ban`
|
|
30
|
+
*
|
|
31
|
+
* @param params The parameters for banning a user
|
|
32
|
+
* @param params.broadcasterUserId The ID of the broadcaster from whose channel the user is being banned
|
|
33
|
+
* @param params.userId The ID of the user to be banned
|
|
34
|
+
* @param params.reason (Optional) The reason for the ban
|
|
35
|
+
* @returns void
|
|
36
|
+
*/
|
|
37
|
+
banUser(params: BanUserParams): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Timeout a user in a channel.
|
|
40
|
+
*
|
|
41
|
+
* Required scopes:
|
|
42
|
+
* `moderation:ban`
|
|
43
|
+
*
|
|
44
|
+
* @param params The parameters for timing out a user
|
|
45
|
+
* @param params.broadcasterUserId The ID of the broadcaster from whose channel the user is being timed out
|
|
46
|
+
* @param params.userId The ID of the user to be timed out
|
|
47
|
+
* @param params.reason (Optional) The reason for the timeout
|
|
48
|
+
* @param params.duration The duration of the timeout in seconds (max 7 days)
|
|
49
|
+
* @returns void
|
|
50
|
+
*/
|
|
51
|
+
timeoutUser(params: TimeoutUserParams): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Remove a ban or timeout from a user in a channel.
|
|
54
|
+
*
|
|
55
|
+
* Required scopes:
|
|
56
|
+
* `moderation:ban`
|
|
57
|
+
*
|
|
58
|
+
* @param options The options for removing a ban or timeout
|
|
59
|
+
* @param options.broadcasterUserId The ID of the broadcaster from whose channel the ban/timeout is being removed
|
|
60
|
+
* @param options.userId The ID of the user whose ban/timeout is being removed
|
|
61
|
+
* @returns void
|
|
62
|
+
*/
|
|
63
|
+
removeBan(params: RemoveBanParams): Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ModerationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModerationService.d.ts","sourceRoot":"","sources":["../../src/services/ModerationService.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD,eAAO,MAAM,aAAa;;;;mBAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB;;;;;mBAE5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,eAAe;;;mBAG1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;IAC9E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAE1B,MAAM,EAAE,UAAU;IAI9B;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnD;;;;;;;;;;;;OAYG;IACG,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B3D;;;;;;;;;;OAUG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BxD"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { Scope } from '../Scope.js';
|
|
3
|
+
import { constructEndpoint, handleError } from '../utils.js';
|
|
4
|
+
import { Version } from '../Version.js';
|
|
5
|
+
export const banUserSchema = z.object({
|
|
6
|
+
broadcasterUserId: z.number().int().positive(),
|
|
7
|
+
userId: z.number().int().positive(),
|
|
8
|
+
reason: z.string().max(100).optional(),
|
|
9
|
+
});
|
|
10
|
+
export const timeoutUserSchema = banUserSchema.extend({
|
|
11
|
+
duration: z.number().int().min(1).max(10080), // max 7 days
|
|
12
|
+
});
|
|
13
|
+
export const removeBanSchema = z.object({
|
|
14
|
+
broadcasterUserId: z.number().int().positive(),
|
|
15
|
+
userId: z.number().int().positive(),
|
|
16
|
+
});
|
|
17
|
+
export class ModerationService {
|
|
18
|
+
MODERATION_URL = constructEndpoint(Version.V1, 'moderation');
|
|
19
|
+
client;
|
|
20
|
+
constructor(client) {
|
|
21
|
+
this.client = client;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ban a user from a channel.
|
|
25
|
+
*
|
|
26
|
+
* Required scopes:
|
|
27
|
+
* `moderation:ban`
|
|
28
|
+
*
|
|
29
|
+
* @param params The parameters for banning a user
|
|
30
|
+
* @param params.broadcasterUserId The ID of the broadcaster from whose channel the user is being banned
|
|
31
|
+
* @param params.userId The ID of the user to be banned
|
|
32
|
+
* @param params.reason (Optional) The reason for the ban
|
|
33
|
+
* @returns void
|
|
34
|
+
*/
|
|
35
|
+
async banUser(params) {
|
|
36
|
+
this.client.requiresScope(Scope.MODERATION_BAN);
|
|
37
|
+
const schema = banUserSchema.safeParse(params);
|
|
38
|
+
if (!schema.success) {
|
|
39
|
+
throw new Error(`Invalid parameters: ${schema.error.message}`);
|
|
40
|
+
}
|
|
41
|
+
const { broadcasterUserId, userId, reason } = schema.data;
|
|
42
|
+
const endpoint = new URL(this.MODERATION_URL + '/bans');
|
|
43
|
+
const response = await fetch(endpoint, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
headers: {
|
|
46
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
47
|
+
'Content-Type': 'application/json',
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify({
|
|
50
|
+
broadcaster_user_id: broadcasterUserId,
|
|
51
|
+
user_id: userId,
|
|
52
|
+
reason: reason,
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
handleError(response);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Timeout a user in a channel.
|
|
61
|
+
*
|
|
62
|
+
* Required scopes:
|
|
63
|
+
* `moderation:ban`
|
|
64
|
+
*
|
|
65
|
+
* @param params The parameters for timing out a user
|
|
66
|
+
* @param params.broadcasterUserId The ID of the broadcaster from whose channel the user is being timed out
|
|
67
|
+
* @param params.userId The ID of the user to be timed out
|
|
68
|
+
* @param params.reason (Optional) The reason for the timeout
|
|
69
|
+
* @param params.duration The duration of the timeout in seconds (max 7 days)
|
|
70
|
+
* @returns void
|
|
71
|
+
*/
|
|
72
|
+
async timeoutUser(params) {
|
|
73
|
+
this.client.requiresScope(Scope.MODERATION_BAN);
|
|
74
|
+
const schema = timeoutUserSchema.safeParse(params);
|
|
75
|
+
if (!schema.success) {
|
|
76
|
+
throw new Error(`Invalid parameters: ${schema.error.message}`);
|
|
77
|
+
}
|
|
78
|
+
const { broadcasterUserId, userId, reason, duration } = schema.data;
|
|
79
|
+
const endpoint = new URL(this.MODERATION_URL + '/bans');
|
|
80
|
+
const response = await fetch(endpoint, {
|
|
81
|
+
method: 'POST',
|
|
82
|
+
headers: {
|
|
83
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
84
|
+
'Content-Type': 'application/json',
|
|
85
|
+
},
|
|
86
|
+
body: JSON.stringify({
|
|
87
|
+
broadcaster_user_id: broadcasterUserId,
|
|
88
|
+
user_id: userId,
|
|
89
|
+
reason: reason,
|
|
90
|
+
duration: duration,
|
|
91
|
+
}),
|
|
92
|
+
});
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
handleError(response);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Remove a ban or timeout from a user in a channel.
|
|
99
|
+
*
|
|
100
|
+
* Required scopes:
|
|
101
|
+
* `moderation:ban`
|
|
102
|
+
*
|
|
103
|
+
* @param options The options for removing a ban or timeout
|
|
104
|
+
* @param options.broadcasterUserId The ID of the broadcaster from whose channel the ban/timeout is being removed
|
|
105
|
+
* @param options.userId The ID of the user whose ban/timeout is being removed
|
|
106
|
+
* @returns void
|
|
107
|
+
*/
|
|
108
|
+
async removeBan(params) {
|
|
109
|
+
this.client.requiresScope(Scope.MODERATION_BAN);
|
|
110
|
+
const schema = removeBanSchema.safeParse(params);
|
|
111
|
+
if (!schema.success) {
|
|
112
|
+
throw new Error(`Invalid parameters: ${schema.error.message}`);
|
|
113
|
+
}
|
|
114
|
+
const { broadcasterUserId, userId } = schema.data;
|
|
115
|
+
const endpoint = new URL(this.MODERATION_URL + '/bans');
|
|
116
|
+
const response = await fetch(endpoint, {
|
|
117
|
+
method: 'DELETE',
|
|
118
|
+
headers: {
|
|
119
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
120
|
+
'Content-Type': 'application/json',
|
|
121
|
+
},
|
|
122
|
+
body: JSON.stringify({
|
|
123
|
+
broadcaster_user_id: broadcasterUserId,
|
|
124
|
+
user_id: userId,
|
|
125
|
+
}),
|
|
126
|
+
});
|
|
127
|
+
if (!response.ok) {
|
|
128
|
+
handleError(response);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=ModerationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModerationService.js","sourceRoot":"","sources":["../../src/services/ModerationService.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,aAAa;CAC5D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAGH,MAAM,OAAO,iBAAiB;IACX,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,CAAa;IAEtC,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO,CAAC,MAAqB;QACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE;gBAC1D,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,mBAAmB,EAAE,iBAAiB;gBACtC,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,MAAM;aACf,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,WAAW,CAAC,MAAyB;QACzC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE;gBAC1D,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,mBAAmB,EAAE,iBAAiB;gBACtC,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;aACnB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,SAAS,CAAC,MAAuB;QACrC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE;gBAC1D,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,mBAAmB,EAAE,iBAAiB;gBACtC,OAAO,EAAE,MAAM;aAChB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BaseResponse } from '../BaseResponse.js';
|
|
2
|
+
export type PublicKeyDto = {
|
|
3
|
+
public_key: string;
|
|
4
|
+
};
|
|
5
|
+
export type PublicKeyResponse = BaseResponse<PublicKeyDto>;
|
|
6
|
+
export declare class PublicKeyService {
|
|
7
|
+
private readonly KICK_PUBLIC_KEY_URL;
|
|
8
|
+
private static instance;
|
|
9
|
+
private cache;
|
|
10
|
+
private inFlight?;
|
|
11
|
+
private readonly ttlMs;
|
|
12
|
+
private constructor();
|
|
13
|
+
static getInstance(): PublicKeyService;
|
|
14
|
+
/**
|
|
15
|
+
* Returns the (possibly cached) public key; refreshes when TTL expired.
|
|
16
|
+
* Ensures only one network fetch runs concurrently.
|
|
17
|
+
*/
|
|
18
|
+
getPublicKey(): Promise<string>;
|
|
19
|
+
refresh(): Promise<string>;
|
|
20
|
+
}
|
|
21
|
+
export declare function getKickPublicKey(): Promise<string>;
|
|
22
|
+
//# sourceMappingURL=PublicKeyService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicKeyService.d.ts","sourceRoot":"","sources":["../../src/services/PublicKeyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAClD,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAO3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+C;IAEnF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IA+B/B,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAIjC;AAGD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAExD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { constructEndpoint, handleError, parseJSON } from '../utils.js';
|
|
2
|
+
import { Version } from '../Version.js';
|
|
3
|
+
export class PublicKeyService {
|
|
4
|
+
KICK_PUBLIC_KEY_URL = constructEndpoint(Version.V1, 'public-key');
|
|
5
|
+
static instance;
|
|
6
|
+
cache = null;
|
|
7
|
+
inFlight;
|
|
8
|
+
// Optional TTL (ms). Set to Infinity if Kick public key never rotates.
|
|
9
|
+
ttlMs;
|
|
10
|
+
constructor(ttlMs = 60 * 60 * 1000) {
|
|
11
|
+
this.ttlMs = ttlMs;
|
|
12
|
+
}
|
|
13
|
+
static getInstance() {
|
|
14
|
+
if (!this.instance) {
|
|
15
|
+
this.instance = new PublicKeyService();
|
|
16
|
+
}
|
|
17
|
+
return this.instance;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Returns the (possibly cached) public key; refreshes when TTL expired.
|
|
21
|
+
* Ensures only one network fetch runs concurrently.
|
|
22
|
+
*/
|
|
23
|
+
async getPublicKey() {
|
|
24
|
+
const now = Date.now();
|
|
25
|
+
if (this.cache && now - this.cache.fetchedAt < this.ttlMs) {
|
|
26
|
+
return this.cache.key;
|
|
27
|
+
}
|
|
28
|
+
if (this.inFlight) {
|
|
29
|
+
return this.inFlight;
|
|
30
|
+
}
|
|
31
|
+
this.inFlight = (async () => {
|
|
32
|
+
const endpoint = new URL(this.KICK_PUBLIC_KEY_URL);
|
|
33
|
+
const response = await fetch(endpoint);
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
handleError(response);
|
|
36
|
+
}
|
|
37
|
+
const json = await parseJSON(response);
|
|
38
|
+
const key = json.data.public_key;
|
|
39
|
+
this.cache = { key, fetchedAt: Date.now() };
|
|
40
|
+
this.inFlight = undefined;
|
|
41
|
+
return key;
|
|
42
|
+
})().catch((err) => {
|
|
43
|
+
this.inFlight = undefined;
|
|
44
|
+
throw err;
|
|
45
|
+
});
|
|
46
|
+
return this.inFlight;
|
|
47
|
+
}
|
|
48
|
+
// Force refresh (ignore cache)
|
|
49
|
+
async refresh() {
|
|
50
|
+
this.cache = null;
|
|
51
|
+
return this.getPublicKey();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Convenience exported function if callers prefer a simple API
|
|
55
|
+
export async function getKickPublicKey() {
|
|
56
|
+
return PublicKeyService.getInstance().getPublicKey();
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=PublicKeyService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublicKeyService.js","sourceRoot":"","sources":["../../src/services/PublicKeyService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAUxC,MAAM,OAAO,gBAAgB;IACV,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAE3E,MAAM,CAAC,QAAQ,CAAmB;IAClC,KAAK,GAAsB,IAAI,CAAC;IAChC,QAAQ,CAAmB;IACnC,uEAAuE;IACtD,KAAK,CAAS;IAE/B,YAAoB,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,WAAW,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAoB,QAAQ,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAEjC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAE1B,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,gBAAgB,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseResponse } from '../BaseResponse.js';
|
|
2
|
+
import type { KickClient } from '../KickClient.js';
|
|
3
|
+
import { User, type UserDto } from '../resources/User.js';
|
|
4
|
+
export type FetchUserResponse = BaseResponse<UserDto[]>;
|
|
5
|
+
export declare class UsersService {
|
|
6
|
+
private readonly USERS_URL;
|
|
7
|
+
protected readonly client: KickClient;
|
|
8
|
+
constructor(client: KickClient);
|
|
9
|
+
/**
|
|
10
|
+
* Retrieve user information based on provided user IDs.
|
|
11
|
+
* If no user IDs are specified, the information
|
|
12
|
+
* for the currently authorised user will be returned by default.
|
|
13
|
+
*
|
|
14
|
+
* Required scopes:
|
|
15
|
+
* `user:read`
|
|
16
|
+
*
|
|
17
|
+
* @param ids (Optional) Array of user IDs
|
|
18
|
+
* @returns An array of `User` instances.
|
|
19
|
+
*/
|
|
20
|
+
fetch(ids?: number[]): Promise<User[]>;
|
|
21
|
+
me(): Promise<User>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=UsersService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsersService.d.ts","sourceRoot":"","sources":["../../src/services/UsersService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAK1D,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;AAExD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAE1B,MAAM,EAAE,UAAU;IAI9B;;;;;;;;;;OAUG;IACG,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAwBtC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;CAG1B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { User } from '../resources/User.js';
|
|
2
|
+
import { Scope } from '../Scope.js';
|
|
3
|
+
import { constructEndpoint, handleError, parseJSON } from '../utils.js';
|
|
4
|
+
import { Version } from '../Version.js';
|
|
5
|
+
export class UsersService {
|
|
6
|
+
USERS_URL = constructEndpoint(Version.V1, 'users');
|
|
7
|
+
client;
|
|
8
|
+
constructor(client) {
|
|
9
|
+
this.client = client;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Retrieve user information based on provided user IDs.
|
|
13
|
+
* If no user IDs are specified, the information
|
|
14
|
+
* for the currently authorised user will be returned by default.
|
|
15
|
+
*
|
|
16
|
+
* Required scopes:
|
|
17
|
+
* `user:read`
|
|
18
|
+
*
|
|
19
|
+
* @param ids (Optional) Array of user IDs
|
|
20
|
+
* @returns An array of `User` instances.
|
|
21
|
+
*/
|
|
22
|
+
async fetch(ids) {
|
|
23
|
+
this.client.requiresScope(Scope.USER_READ);
|
|
24
|
+
const endpoint = new URL(this.USERS_URL);
|
|
25
|
+
if (ids) {
|
|
26
|
+
ids.forEach((id) => endpoint.searchParams.append('id', String(id)));
|
|
27
|
+
}
|
|
28
|
+
const response = await fetch(endpoint, {
|
|
29
|
+
headers: {
|
|
30
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
handleError(response);
|
|
35
|
+
}
|
|
36
|
+
const json = await parseJSON(response);
|
|
37
|
+
const data = json.data.map((user) => new User(this.client, user));
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
async me() {
|
|
41
|
+
return (await this.fetch())[0];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=UsersService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsersService.js","sourceRoot":"","sources":["../../src/services/UsersService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAgB,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,MAAM,OAAO,YAAY;IACN,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,CAAa;IAEtC,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAK,CAAC,GAAc;QACxB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE;aAC3D;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,SAAS,CAAoB,QAAQ,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Version } from './Version.js';
|
|
2
|
+
import { WebhookEventNames } from './webhooks/WebhookEvents.js';
|
|
3
|
+
export declare function handleError(response: Response): void;
|
|
4
|
+
export declare function parseJSON<T>(response: Response): Promise<T>;
|
|
5
|
+
export declare function generateCodeVerifier(length?: number): string;
|
|
6
|
+
export declare function generateCodeChallenge(codeVerifier: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Helper function to extract the event unique identifier from different event types
|
|
9
|
+
* @param eventType The type of the webhook event
|
|
10
|
+
* @param payload The payload of the webhook event
|
|
11
|
+
* @returns The unique identifier as a string, or null if not found
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractUniqueId(eventType: WebhookEventNames, payload: any): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Construct the full API endpoint URL
|
|
16
|
+
* @param version API version
|
|
17
|
+
* @param path Endpoint path
|
|
18
|
+
* @returns Full URL as a string
|
|
19
|
+
*/
|
|
20
|
+
export declare function constructEndpoint(version: Version, path: string): string;
|
|
21
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,QAe7C;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAOjE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,SAAK,UAG/C;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,UAGzD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAMzF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxE"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
import { BadRequestError, ForbiddenError, InternalServerError, NotFoundError, RateLimitError, UnauthorizedError, } from './Errors.js';
|
|
3
|
+
import { KICK_BASE_URL } from './KickClient.js';
|
|
4
|
+
export function handleError(response) {
|
|
5
|
+
switch (response.status) {
|
|
6
|
+
case 400:
|
|
7
|
+
throw new BadRequestError();
|
|
8
|
+
case 401:
|
|
9
|
+
throw new UnauthorizedError();
|
|
10
|
+
case 403:
|
|
11
|
+
throw new ForbiddenError();
|
|
12
|
+
case 404:
|
|
13
|
+
throw new NotFoundError();
|
|
14
|
+
case 429:
|
|
15
|
+
throw new RateLimitError();
|
|
16
|
+
case 500:
|
|
17
|
+
throw new InternalServerError();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function parseJSON(response) {
|
|
21
|
+
try {
|
|
22
|
+
const data = await response.json();
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
throw new Error('Failed to parse response body as JSON.');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function generateCodeVerifier(length = 64) {
|
|
30
|
+
const rnd = crypto.randomBytes(length);
|
|
31
|
+
return rnd.toString('base64url');
|
|
32
|
+
}
|
|
33
|
+
export function generateCodeChallenge(codeVerifier) {
|
|
34
|
+
const hash = crypto.createHash('sha256').update(codeVerifier).digest();
|
|
35
|
+
return hash.toString('base64url');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Helper function to extract the event unique identifier from different event types
|
|
39
|
+
* @param eventType The type of the webhook event
|
|
40
|
+
* @param payload The payload of the webhook event
|
|
41
|
+
* @returns The unique identifier as a string, or null if not found
|
|
42
|
+
*/
|
|
43
|
+
export function extractUniqueId(eventType, payload) {
|
|
44
|
+
// Try user_id, then username, then channel_slug
|
|
45
|
+
if (payload.broadcaster?.user_id)
|
|
46
|
+
return payload.broadcaster.user_id.toString();
|
|
47
|
+
if (payload.broadcaster?.username)
|
|
48
|
+
return payload.broadcaster.username.toString();
|
|
49
|
+
if (payload.broadcaster?.channel_slug)
|
|
50
|
+
return payload.broadcaster.channel_slug.toString();
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Construct the full API endpoint URL
|
|
55
|
+
* @param version API version
|
|
56
|
+
* @param path Endpoint path
|
|
57
|
+
* @returns Full URL as a string
|
|
58
|
+
*/
|
|
59
|
+
export function constructEndpoint(version, path) {
|
|
60
|
+
// if path starts with '/', remove it
|
|
61
|
+
if (path.startsWith('/')) {
|
|
62
|
+
path = path.slice(1);
|
|
63
|
+
}
|
|
64
|
+
return `${KICK_BASE_URL}/${version}/${path}`;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,MAAM,IAAI,eAAe,EAAE,CAAC;QAC9B,KAAK,GAAG;YACN,MAAM,IAAI,iBAAiB,EAAE,CAAC;QAChC,KAAK,GAAG;YACN,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7B,KAAK,GAAG;YACN,MAAM,IAAI,aAAa,EAAE,CAAC;QAC5B,KAAK,GAAG;YACN,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7B,KAAK,GAAG;YACN,MAAM,IAAI,mBAAmB,EAAE,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,QAAkB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAM,GAAG,EAAE;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;IACvE,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAA4B,EAAE,OAAY;IACxE,gDAAgD;IAChD,IAAI,OAAO,CAAC,WAAW,EAAE,OAAO;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAChF,IAAI,OAAO,CAAC,WAAW,EAAE,QAAQ;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClF,IAAI,OAAO,CAAC,WAAW,EAAE,YAAY;QAAE,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC1F,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,IAAY;IAC9D,qCAAqC;IACrC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,aAAa,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ChannelFollowedEventPayload, ChannelRewardRedemptionUpdatedEventPayload, ChannelSubscriptionGiftsEventPayload, ChannelSubscriptionNewEventPayload, ChannelSubscriptionRenewalEventPayload, ChatMessageSentEventPayload, KicksGiftedEventPayload, LivestreamMetadataUpdatedEventPayload, LivestreamStatusUpdatedEventPayload, ModerationBannedEventPayload } from './v1/payloads/index.js';
|
|
2
|
+
export declare enum WebhookEvents {
|
|
3
|
+
CHAT_MESSAGE_SENT = "chat.message.sent",
|
|
4
|
+
CHANNEL_FOLLOWED = "channel.followed",
|
|
5
|
+
CHANNEL_SUBSCRIPTION_RENEWAL = "channel.subscription.renewal",
|
|
6
|
+
CHANNEL_SUBSCRIPTION_GIFTS = "channel.subscription.gifts",
|
|
7
|
+
CHANNEL_SUBSCRIPTION_NEW = "channel.subscription.new",
|
|
8
|
+
CHANNEL_REWARD_REDEMPTION_UPDATED = "channel.reward.redemption.updated",
|
|
9
|
+
LIVESTREAM_STATUS_UPDATED = "livestream.status.updated",
|
|
10
|
+
LIVESTREAM_METADATA_UPDATED = "livestream.metadata.updated",
|
|
11
|
+
MODERATION_BANNED = "moderation.banned",
|
|
12
|
+
KICKS_GIFTED = "kicks.gifted"
|
|
13
|
+
}
|
|
14
|
+
export type WebhookEventNames = (typeof WebhookEvents)[keyof typeof WebhookEvents];
|
|
15
|
+
export interface WebhookEventPayloadMap {
|
|
16
|
+
[WebhookEvents.CHAT_MESSAGE_SENT]: ChatMessageSentEventPayload;
|
|
17
|
+
[WebhookEvents.CHANNEL_FOLLOWED]: ChannelFollowedEventPayload;
|
|
18
|
+
[WebhookEvents.CHANNEL_SUBSCRIPTION_RENEWAL]: ChannelSubscriptionRenewalEventPayload;
|
|
19
|
+
[WebhookEvents.CHANNEL_SUBSCRIPTION_GIFTS]: ChannelSubscriptionGiftsEventPayload;
|
|
20
|
+
[WebhookEvents.CHANNEL_SUBSCRIPTION_NEW]: ChannelSubscriptionNewEventPayload;
|
|
21
|
+
[WebhookEvents.CHANNEL_REWARD_REDEMPTION_UPDATED]: ChannelRewardRedemptionUpdatedEventPayload;
|
|
22
|
+
[WebhookEvents.LIVESTREAM_STATUS_UPDATED]: LivestreamStatusUpdatedEventPayload;
|
|
23
|
+
[WebhookEvents.LIVESTREAM_METADATA_UPDATED]: LivestreamMetadataUpdatedEventPayload;
|
|
24
|
+
[WebhookEvents.MODERATION_BANNED]: ModerationBannedEventPayload;
|
|
25
|
+
[WebhookEvents.KICKS_GIFTED]: KicksGiftedEventPayload;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=WebhookEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEvents.d.ts","sourceRoot":"","sources":["../../src/webhooks/WebhookEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,0CAA0C,EAC1C,oCAAoC,EACpC,kCAAkC,EAClC,sCAAsC,EACtC,2BAA2B,EAC3B,uBAAuB,EACvB,qCAAqC,EACrC,mCAAmC,EACnC,4BAA4B,EAC7B,MAAM,wBAAwB,CAAC;AAEhC,oBAAY,aAAa;IACvB,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,4BAA4B,iCAAiC;IAC7D,0BAA0B,+BAA+B;IACzD,wBAAwB,6BAA6B;IACrD,iCAAiC,sCAAsC;IACvE,yBAAyB,8BAA8B;IACvD,2BAA2B,gCAAgC;IAC3D,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAEnF,MAAM,WAAW,sBAAsB;IACrC,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAC/D,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,2BAA2B,CAAC;IAC9D,CAAC,aAAa,CAAC,4BAA4B,CAAC,EAAE,sCAAsC,CAAC;IACrF,CAAC,aAAa,CAAC,0BAA0B,CAAC,EAAE,oCAAoC,CAAC;IACjF,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE,kCAAkC,CAAC;IAC7E,CAAC,aAAa,CAAC,iCAAiC,CAAC,EAAE,0CAA0C,CAAC;IAC9F,CAAC,aAAa,CAAC,yBAAyB,CAAC,EAAE,mCAAmC,CAAC;IAC/E,CAAC,aAAa,CAAC,2BAA2B,CAAC,EAAE,qCAAqC,CAAC;IACnF,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC;IAChE,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACvD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export var WebhookEvents;
|
|
2
|
+
(function (WebhookEvents) {
|
|
3
|
+
WebhookEvents["CHAT_MESSAGE_SENT"] = "chat.message.sent";
|
|
4
|
+
WebhookEvents["CHANNEL_FOLLOWED"] = "channel.followed";
|
|
5
|
+
WebhookEvents["CHANNEL_SUBSCRIPTION_RENEWAL"] = "channel.subscription.renewal";
|
|
6
|
+
WebhookEvents["CHANNEL_SUBSCRIPTION_GIFTS"] = "channel.subscription.gifts";
|
|
7
|
+
WebhookEvents["CHANNEL_SUBSCRIPTION_NEW"] = "channel.subscription.new";
|
|
8
|
+
WebhookEvents["CHANNEL_REWARD_REDEMPTION_UPDATED"] = "channel.reward.redemption.updated";
|
|
9
|
+
WebhookEvents["LIVESTREAM_STATUS_UPDATED"] = "livestream.status.updated";
|
|
10
|
+
WebhookEvents["LIVESTREAM_METADATA_UPDATED"] = "livestream.metadata.updated";
|
|
11
|
+
WebhookEvents["MODERATION_BANNED"] = "moderation.banned";
|
|
12
|
+
WebhookEvents["KICKS_GIFTED"] = "kicks.gifted";
|
|
13
|
+
})(WebhookEvents || (WebhookEvents = {}));
|
|
14
|
+
//# sourceMappingURL=WebhookEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEvents.js","sourceRoot":"","sources":["../../src/webhooks/WebhookEvents.ts"],"names":[],"mappings":"AAaA,MAAM,CAAN,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,wDAAuC,CAAA;IACvC,sDAAqC,CAAA;IACrC,8EAA6D,CAAA;IAC7D,0EAAyD,CAAA;IACzD,sEAAqD,CAAA;IACrD,wFAAuE,CAAA;IACvE,wEAAuD,CAAA;IACvD,4EAA2D,CAAA;IAC3D,wDAAuC,CAAA;IACvC,8CAA6B,CAAA;AAC/B,CAAC,EAXW,aAAa,KAAb,aAAa,QAWxB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WebhookEventNames, WebhookEventPayloadMap } from './WebhookEvents.js';
|
|
2
|
+
/**
|
|
3
|
+
* Routes a verified webhook payload to any `KickClient` subscribed for the
|
|
4
|
+
* targeted broadcaster via `client.on(eventName, listener)`. The lookup uses
|
|
5
|
+
* `broadcaster.user_id`/`username`/`channel_slug` from the payload, in that order.
|
|
6
|
+
*
|
|
7
|
+
* No-op if no client is registered for the resolved unique id.
|
|
8
|
+
*/
|
|
9
|
+
export declare function dispatchWebhookEvent<E extends WebhookEventNames>(eventType: E, payload: WebhookEventPayloadMap[E]): void;
|
|
10
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/webhooks/dispatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEpF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,EAC9D,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,IAAI,CAKN"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { eventManager } from '../EventManager.js';
|
|
2
|
+
import { extractUniqueId } from '../utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* Routes a verified webhook payload to any `KickClient` subscribed for the
|
|
5
|
+
* targeted broadcaster via `client.on(eventName, listener)`. The lookup uses
|
|
6
|
+
* `broadcaster.user_id`/`username`/`channel_slug` from the payload, in that order.
|
|
7
|
+
*
|
|
8
|
+
* No-op if no client is registered for the resolved unique id.
|
|
9
|
+
*/
|
|
10
|
+
export function dispatchWebhookEvent(eventType, payload) {
|
|
11
|
+
const uniqueId = extractUniqueId(eventType, payload);
|
|
12
|
+
if (uniqueId) {
|
|
13
|
+
eventManager.emit(uniqueId, eventType, payload);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/webhooks/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAY,EACZ,OAAkC;IAElC,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,QAAQ,EAAE,CAAC;QACb,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { CategoryDto } from '../../resources/Category.js';
|
|
2
|
+
export type UserIdentityEventProperty = {
|
|
3
|
+
username_color: string;
|
|
4
|
+
badges: {
|
|
5
|
+
text: string;
|
|
6
|
+
type: string;
|
|
7
|
+
count?: number;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
export type UserEventProperty = {
|
|
11
|
+
is_anonymous: boolean;
|
|
12
|
+
user_id: number;
|
|
13
|
+
username: string;
|
|
14
|
+
is_verified: boolean;
|
|
15
|
+
profile_picture: string;
|
|
16
|
+
channel_slug: string;
|
|
17
|
+
identity: UserIdentityEventProperty | null;
|
|
18
|
+
};
|
|
19
|
+
export type WithIdentityNull<T extends {
|
|
20
|
+
identity?: any;
|
|
21
|
+
}> = Omit<T, 'identity'> & {
|
|
22
|
+
identity: null;
|
|
23
|
+
};
|
|
24
|
+
export type WithIdentity<T extends {
|
|
25
|
+
identity?: any;
|
|
26
|
+
}> = Omit<T, 'identity'> & {
|
|
27
|
+
identity: UserIdentityEventProperty;
|
|
28
|
+
};
|
|
29
|
+
export type EmoteEventProperty = {
|
|
30
|
+
emote_id: string;
|
|
31
|
+
positions: {
|
|
32
|
+
s: number;
|
|
33
|
+
e: number;
|
|
34
|
+
}[];
|
|
35
|
+
};
|
|
36
|
+
export type LivestreamMetadataEventProperty = {
|
|
37
|
+
title: string;
|
|
38
|
+
language: string;
|
|
39
|
+
has_mature_content: boolean;
|
|
40
|
+
category: CategoryDto;
|
|
41
|
+
};
|
|
42
|
+
export type GiftEventProperty = {
|
|
43
|
+
amount: number;
|
|
44
|
+
name: string;
|
|
45
|
+
type: string;
|
|
46
|
+
tier: string;
|
|
47
|
+
message: string;
|
|
48
|
+
pinned_time_seconds: number;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=Properties.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Properties.d.ts","sourceRoot":"","sources":["../../../src/webhooks/v1/Properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAGF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,IAAI,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,IAAI,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAEvH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACT,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Properties.js","sourceRoot":"","sources":["../../../src/webhooks/v1/Properties.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { UserEventProperty, WithIdentityNull } from '../Properties.js';
|
|
2
|
+
export type ChannelFollowedEventPayload = {
|
|
3
|
+
broadcaster: WithIdentityNull<UserEventProperty>;
|
|
4
|
+
follower: WithIdentityNull<UserEventProperty>;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=ChannelFollowed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelFollowed.d.ts","sourceRoot":"","sources":["../../../../src/webhooks/v1/payloads/ChannelFollowed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACjD,QAAQ,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;CAC/C,CAAC"}
|