@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,128 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { BaseResponse, BaseResponseWithPagination } from '../BaseResponse.js';
|
|
3
|
+
import type { KickClient } from '../KickClient.js';
|
|
4
|
+
import { ChannelReward, ChannelRewardDto } from '../resources/ChannelReward.js';
|
|
5
|
+
import { ChannelRewardAcceptRedemptionDto, ChannelRewardRedemption, ChannelRewardRedemptionDto, ChannelRewardRedemptionStatus, ChannelRewardRejectRedemptionDto } from '../resources/ChannelRewardRedemption.js';
|
|
6
|
+
export type FetchChannelRewardsResponse = BaseResponse<ChannelRewardDto[]>;
|
|
7
|
+
export type CreateChannelRewardResponse = BaseResponse<ChannelRewardDto>;
|
|
8
|
+
export type GetChannelRewardRedemptionsResponse = BaseResponseWithPagination<ChannelRewardRedemptionDto[]>;
|
|
9
|
+
export type AcceptRedemptionsResponse = BaseResponse<ChannelRewardAcceptRedemptionDto[]>;
|
|
10
|
+
export type RejectRedemptionsResponse = BaseResponse<ChannelRewardRejectRedemptionDto[]>;
|
|
11
|
+
export declare const createChannelRewardSchema: z.ZodObject<{
|
|
12
|
+
backgroundColor: z.ZodOptional<z.ZodString>;
|
|
13
|
+
cost: z.ZodNumber;
|
|
14
|
+
description: z.ZodOptional<z.ZodString>;
|
|
15
|
+
isEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
16
|
+
isUserInputRequired: z.ZodOptional<z.ZodBoolean>;
|
|
17
|
+
shouldRedemptionsSkipRequestQueue: z.ZodOptional<z.ZodBoolean>;
|
|
18
|
+
title: z.ZodString;
|
|
19
|
+
}, z.z.core.$strip>;
|
|
20
|
+
export type CreateChannelRewardParams = z.infer<typeof createChannelRewardSchema>;
|
|
21
|
+
export declare const updateChannelRewardSchema: z.ZodObject<{
|
|
22
|
+
backgroundColor: z.ZodOptional<z.ZodString>;
|
|
23
|
+
cost: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
description: z.ZodOptional<z.ZodString>;
|
|
25
|
+
isEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
isPaused: z.ZodOptional<z.ZodBoolean>;
|
|
27
|
+
isUserInputRequired: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
shouldRedemptionsSkipRequestQueue: z.ZodOptional<z.ZodBoolean>;
|
|
29
|
+
title: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.z.core.$strip>;
|
|
31
|
+
export type UpdateChannelRewardParams = z.infer<typeof updateChannelRewardSchema>;
|
|
32
|
+
export declare const getChannelRewardRedemptionsSchema: z.ZodObject<{
|
|
33
|
+
rewardId: z.ZodOptional<z.ZodString>;
|
|
34
|
+
status: z.ZodOptional<z.ZodEnum<typeof ChannelRewardRedemptionStatus>>;
|
|
35
|
+
id: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}, z.z.core.$strip>;
|
|
38
|
+
export type GetChannelRewardRedemptionsParams = z.infer<typeof getChannelRewardRedemptionsSchema>;
|
|
39
|
+
export declare const acceptRedemptionsSchema: z.ZodObject<{
|
|
40
|
+
ids: z.ZodArray<z.ZodString>;
|
|
41
|
+
}, z.z.core.$strip>;
|
|
42
|
+
export type AcceptRedemptionsParams = z.infer<typeof acceptRedemptionsSchema>;
|
|
43
|
+
export declare const rejectRedemptionsSchema: z.ZodObject<{
|
|
44
|
+
ids: z.ZodArray<z.ZodString>;
|
|
45
|
+
}, z.z.core.$strip>;
|
|
46
|
+
export type RejectRedemptionsParams = z.infer<typeof rejectRedemptionsSchema>;
|
|
47
|
+
export declare class ChannelRewardsService {
|
|
48
|
+
private readonly CHANNEL_REWARDS_URL;
|
|
49
|
+
protected readonly client: KickClient;
|
|
50
|
+
constructor(client: KickClient);
|
|
51
|
+
/**
|
|
52
|
+
* Get channel rewards for a broadcaster's channel.
|
|
53
|
+
* Channels may have up to 15 rewards, including both enabled and disabled rewards.
|
|
54
|
+
*
|
|
55
|
+
* Required scopes:
|
|
56
|
+
* `channel:rewards:read`
|
|
57
|
+
*
|
|
58
|
+
* @returns An array of `ChannelReward` instances.
|
|
59
|
+
*/
|
|
60
|
+
fetch(): Promise<ChannelReward[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Creates a channel reward in the broadcaster's channel.
|
|
63
|
+
* A maximum of 15 rewards can be created, including both enabled and disabled rewards.
|
|
64
|
+
*
|
|
65
|
+
* Required scopes:
|
|
66
|
+
* `channel:rewards:write`
|
|
67
|
+
*
|
|
68
|
+
* @returns The created `ChannelReward` instance.
|
|
69
|
+
*/
|
|
70
|
+
create({ backgroundColor, cost, description, isEnabled, isUserInputRequired, shouldRedemptionsSkipRequestQueue, title, }: CreateChannelRewardParams): Promise<ChannelReward>;
|
|
71
|
+
/**
|
|
72
|
+
* Deletes a channel reward in the broadcaster's channel. Note that only the app that created the reward can delete it.
|
|
73
|
+
*
|
|
74
|
+
* Required scopes:
|
|
75
|
+
* `channel:rewards:write`
|
|
76
|
+
*
|
|
77
|
+
* @param rewardId The ID of the reward to delete
|
|
78
|
+
*/
|
|
79
|
+
delete(rewardId: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Updates a channel reward in the broadcaster's channel. Note that only the app that created the reward can update it.
|
|
82
|
+
*
|
|
83
|
+
* Required scopes:
|
|
84
|
+
* `channel:rewards:write`
|
|
85
|
+
*
|
|
86
|
+
* @param rewardId The ID of the reward to update
|
|
87
|
+
* @param data The data to update the reward with
|
|
88
|
+
* @returns The updated `ChannelReward` instance.
|
|
89
|
+
*/
|
|
90
|
+
update(rewardId: string, data: UpdateChannelRewardParams): Promise<ChannelReward>;
|
|
91
|
+
/**
|
|
92
|
+
* Get channel reward redemptions for a broadcaster's channel.
|
|
93
|
+
*
|
|
94
|
+
* Required scopes:
|
|
95
|
+
* `channel:rewards:write`
|
|
96
|
+
*
|
|
97
|
+
* @param params The parameters for fetching redemptions
|
|
98
|
+
* @param params.rewardId (Optional) Optionally provide a reward ID to list redemptions for that specific reward.
|
|
99
|
+
* @param params.status (Optional) Optionally provide a specific status to filter by. Defaults to `pending`.
|
|
100
|
+
* @param params.id (Optional) Optionally provide a list of redemption IDs to filter by. You cannot provide any other filters if you filter by redemption IDs.
|
|
101
|
+
* @param params.cursor (Optional) Optionally provide a cursor to paginate through the results.
|
|
102
|
+
* @returns An array of `ChannelRewardRedemption` instances.
|
|
103
|
+
*/
|
|
104
|
+
getRedemptions(params: GetChannelRewardRedemptionsParams): Promise<ChannelRewardRedemption[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Accept channel reward redemptions for a broadcaster's channel. The response will only include data for redemptions that failed to be accepted.
|
|
107
|
+
*
|
|
108
|
+
* Required scopes:
|
|
109
|
+
* `channel:rewards:write`
|
|
110
|
+
*
|
|
111
|
+
* @param params The parameters for accepting redemptions
|
|
112
|
+
* @param params.ids List of redemption IDs to accept. A maximum of 25 redemptions can be accepted per request. IDs must be unique.
|
|
113
|
+
* @returns An array of `ChannelRewardAcceptRedemptionDto` instances for redemptions that failed to be accepted.
|
|
114
|
+
*/
|
|
115
|
+
acceptRedemptions({ ids }: AcceptRedemptionsParams): Promise<ChannelRewardAcceptRedemptionDto[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Reject channel reward redemptions for a broadcaster's channel. The response will only include data for redemptions that failed to be rejected.
|
|
118
|
+
*
|
|
119
|
+
* Required scopes:
|
|
120
|
+
* `channel:rewards:write`
|
|
121
|
+
*
|
|
122
|
+
* @param params The parameters for rejecting redemptions
|
|
123
|
+
* @param params.ids List of redemption IDs to reject. A maximum of 25 redemptions can be rejected per request. IDs must be unique.
|
|
124
|
+
* @returns An array of `ChannelRewardRejectRedemptionDto` instances for redemptions that failed to be rejected.
|
|
125
|
+
*/
|
|
126
|
+
rejectRedemptions({ ids }: RejectRedemptionsParams): Promise<ChannelRewardRejectRedemptionDto[]>;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=ChannelRewardsService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelRewardsService.d.ts","sourceRoot":"","sources":["../../src/services/ChannelRewardsService.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,gCAAgC,EACjC,MAAM,yCAAyC,CAAC;AAMjD,MAAM,MAAM,2BAA2B,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC3E,MAAM,MAAM,2BAA2B,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AACzE,MAAM,MAAM,mCAAmC,GAAG,0BAA0B,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC3G,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC,gCAAgC,EAAE,CAAC,CAAC;AACzF,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC,gCAAgC,EAAE,CAAC,CAAC;AAGzF,eAAO,MAAM,yBAAyB;;;;;;;;mBAQpC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElF,eAAO,MAAM,yBAAyB;;;;;;;;;mBASpC,CAAC;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAElF,eAAO,MAAM,iCAAiC;;;;;mBAM5C,CAAC;AACH,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAElG,eAAO,MAAM,uBAAuB;;mBAElC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB;;mBAA0B,CAAC;AAC/D,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAG9E,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqD;IACzF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAE1B,MAAM,EAAE,UAAU;IAI9B;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAoBvC;;;;;;;;OAQG;IACG,MAAM,CAAC,EACX,eAAe,EACf,IAAI,EACJ,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,iCAAiC,EACjC,KAAK,GACN,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6CrD;;;;;;;OAOG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C;;;;;;;;;OASG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAsCvF;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,MAAM,EAAE,iCAAiC,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA+CnG;;;;;;;;;OASG;IACG,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,gCAAgC,EAAE,CAAC;IA8BtG;;;;;;;;;OASG;IACG,iBAAiB,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,gCAAgC,EAAE,CAAC;CA6BvG"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { ChannelReward } from '../resources/ChannelReward.js';
|
|
3
|
+
import { ChannelRewardRedemption, ChannelRewardRedemptionStatus, } from '../resources/ChannelRewardRedemption.js';
|
|
4
|
+
import { Scope } from '../Scope.js';
|
|
5
|
+
import { constructEndpoint, handleError, parseJSON } from '../utils.js';
|
|
6
|
+
import { Version } from '../Version.js';
|
|
7
|
+
// Schemas
|
|
8
|
+
export const createChannelRewardSchema = z.object({
|
|
9
|
+
backgroundColor: z.string().optional(),
|
|
10
|
+
cost: z.number().min(1),
|
|
11
|
+
description: z.string().max(200).optional(),
|
|
12
|
+
isEnabled: z.boolean().optional(),
|
|
13
|
+
isUserInputRequired: z.boolean().optional(),
|
|
14
|
+
shouldRedemptionsSkipRequestQueue: z.boolean().optional(),
|
|
15
|
+
title: z.string().max(50),
|
|
16
|
+
});
|
|
17
|
+
export const updateChannelRewardSchema = z.object({
|
|
18
|
+
backgroundColor: z.string().optional(),
|
|
19
|
+
cost: z.number().min(1).optional(),
|
|
20
|
+
description: z.string().max(200).optional(),
|
|
21
|
+
isEnabled: z.boolean().optional(),
|
|
22
|
+
isPaused: z.boolean().optional(),
|
|
23
|
+
isUserInputRequired: z.boolean().optional(),
|
|
24
|
+
shouldRedemptionsSkipRequestQueue: z.boolean().optional(),
|
|
25
|
+
title: z.string().max(50).optional(),
|
|
26
|
+
});
|
|
27
|
+
export const getChannelRewardRedemptionsSchema = z.object({
|
|
28
|
+
rewardId: z.string().optional(),
|
|
29
|
+
status: z.enum(ChannelRewardRedemptionStatus).optional(),
|
|
30
|
+
// Cannot provide any other filters if filtering by redemption IDs
|
|
31
|
+
id: z.array(z.string()).max(50).optional(),
|
|
32
|
+
cursor: z.string().optional(),
|
|
33
|
+
});
|
|
34
|
+
export const acceptRedemptionsSchema = z.object({
|
|
35
|
+
ids: z.array(z.string()).min(1).max(25),
|
|
36
|
+
});
|
|
37
|
+
export const rejectRedemptionsSchema = acceptRedemptionsSchema;
|
|
38
|
+
// Service
|
|
39
|
+
export class ChannelRewardsService {
|
|
40
|
+
CHANNEL_REWARDS_URL = constructEndpoint(Version.V1, 'channels/rewards');
|
|
41
|
+
client;
|
|
42
|
+
constructor(client) {
|
|
43
|
+
this.client = client;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get channel rewards for a broadcaster's channel.
|
|
47
|
+
* Channels may have up to 15 rewards, including both enabled and disabled rewards.
|
|
48
|
+
*
|
|
49
|
+
* Required scopes:
|
|
50
|
+
* `channel:rewards:read`
|
|
51
|
+
*
|
|
52
|
+
* @returns An array of `ChannelReward` instances.
|
|
53
|
+
*/
|
|
54
|
+
async fetch() {
|
|
55
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_READ);
|
|
56
|
+
const endpoint = new URL(this.CHANNEL_REWARDS_URL);
|
|
57
|
+
const response = await fetch(endpoint, {
|
|
58
|
+
headers: {
|
|
59
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
handleError(response);
|
|
64
|
+
}
|
|
65
|
+
const json = await parseJSON(response);
|
|
66
|
+
const rewards = json.data.map((reward) => new ChannelReward(this.client, reward));
|
|
67
|
+
return rewards;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Creates a channel reward in the broadcaster's channel.
|
|
71
|
+
* A maximum of 15 rewards can be created, including both enabled and disabled rewards.
|
|
72
|
+
*
|
|
73
|
+
* Required scopes:
|
|
74
|
+
* `channel:rewards:write`
|
|
75
|
+
*
|
|
76
|
+
* @returns The created `ChannelReward` instance.
|
|
77
|
+
*/
|
|
78
|
+
async create({ backgroundColor, cost, description, isEnabled, isUserInputRequired, shouldRedemptionsSkipRequestQueue, title, }) {
|
|
79
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_WRITE);
|
|
80
|
+
const schema = createChannelRewardSchema.safeParse({
|
|
81
|
+
backgroundColor,
|
|
82
|
+
cost,
|
|
83
|
+
description,
|
|
84
|
+
isEnabled,
|
|
85
|
+
isUserInputRequired,
|
|
86
|
+
shouldRedemptionsSkipRequestQueue,
|
|
87
|
+
title,
|
|
88
|
+
});
|
|
89
|
+
if (!schema.success) {
|
|
90
|
+
throw new Error(`Invalid data: ${schema.error.message}`);
|
|
91
|
+
}
|
|
92
|
+
const endpoint = new URL(this.CHANNEL_REWARDS_URL);
|
|
93
|
+
const response = await fetch(endpoint, {
|
|
94
|
+
method: 'POST',
|
|
95
|
+
headers: {
|
|
96
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
97
|
+
'Content-Type': 'application/json',
|
|
98
|
+
},
|
|
99
|
+
body: JSON.stringify({
|
|
100
|
+
background_color: schema.data.backgroundColor,
|
|
101
|
+
cost: schema.data.cost,
|
|
102
|
+
description: schema.data.description,
|
|
103
|
+
is_enabled: schema.data.isEnabled,
|
|
104
|
+
is_user_input_required: schema.data.isUserInputRequired,
|
|
105
|
+
should_redemptions_skip_request_queue: schema.data.shouldRedemptionsSkipRequestQueue,
|
|
106
|
+
title: schema.data.title,
|
|
107
|
+
}),
|
|
108
|
+
});
|
|
109
|
+
if (!response.ok) {
|
|
110
|
+
handleError(response);
|
|
111
|
+
}
|
|
112
|
+
const json = await parseJSON(response);
|
|
113
|
+
const reward = new ChannelReward(this.client, json.data);
|
|
114
|
+
return reward;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Deletes a channel reward in the broadcaster's channel. Note that only the app that created the reward can delete it.
|
|
118
|
+
*
|
|
119
|
+
* Required scopes:
|
|
120
|
+
* `channel:rewards:write`
|
|
121
|
+
*
|
|
122
|
+
* @param rewardId The ID of the reward to delete
|
|
123
|
+
*/
|
|
124
|
+
async delete(rewardId) {
|
|
125
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_WRITE);
|
|
126
|
+
const endpoint = new URL(`${this.CHANNEL_REWARDS_URL}/${rewardId}`);
|
|
127
|
+
const response = await fetch(endpoint, {
|
|
128
|
+
method: 'DELETE',
|
|
129
|
+
headers: {
|
|
130
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
if (!response.ok) {
|
|
134
|
+
handleError(response);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Updates a channel reward in the broadcaster's channel. Note that only the app that created the reward can update it.
|
|
139
|
+
*
|
|
140
|
+
* Required scopes:
|
|
141
|
+
* `channel:rewards:write`
|
|
142
|
+
*
|
|
143
|
+
* @param rewardId The ID of the reward to update
|
|
144
|
+
* @param data The data to update the reward with
|
|
145
|
+
* @returns The updated `ChannelReward` instance.
|
|
146
|
+
*/
|
|
147
|
+
async update(rewardId, data) {
|
|
148
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_WRITE);
|
|
149
|
+
const schema = updateChannelRewardSchema.safeParse(data);
|
|
150
|
+
if (!schema.success) {
|
|
151
|
+
throw new Error(`Invalid data: ${schema.error.message}`);
|
|
152
|
+
}
|
|
153
|
+
const endpoint = new URL(`${this.CHANNEL_REWARDS_URL}/${rewardId}`);
|
|
154
|
+
const response = await fetch(endpoint, {
|
|
155
|
+
method: 'PATCH',
|
|
156
|
+
headers: {
|
|
157
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
158
|
+
'Content-Type': 'application/json',
|
|
159
|
+
},
|
|
160
|
+
body: JSON.stringify({
|
|
161
|
+
background_color: schema.data.backgroundColor,
|
|
162
|
+
cost: schema.data.cost,
|
|
163
|
+
description: schema.data.description,
|
|
164
|
+
is_enabled: schema.data.isEnabled,
|
|
165
|
+
is_paused: schema.data.isPaused,
|
|
166
|
+
is_user_input_required: schema.data.isUserInputRequired,
|
|
167
|
+
should_redemptions_skip_request_queue: schema.data.shouldRedemptionsSkipRequestQueue,
|
|
168
|
+
title: schema.data.title,
|
|
169
|
+
}),
|
|
170
|
+
});
|
|
171
|
+
if (!response.ok) {
|
|
172
|
+
handleError(response);
|
|
173
|
+
}
|
|
174
|
+
const json = await parseJSON(response);
|
|
175
|
+
const reward = new ChannelReward(this.client, json.data);
|
|
176
|
+
return reward;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get channel reward redemptions for a broadcaster's channel.
|
|
180
|
+
*
|
|
181
|
+
* Required scopes:
|
|
182
|
+
* `channel:rewards:write`
|
|
183
|
+
*
|
|
184
|
+
* @param params The parameters for fetching redemptions
|
|
185
|
+
* @param params.rewardId (Optional) Optionally provide a reward ID to list redemptions for that specific reward.
|
|
186
|
+
* @param params.status (Optional) Optionally provide a specific status to filter by. Defaults to `pending`.
|
|
187
|
+
* @param params.id (Optional) Optionally provide a list of redemption IDs to filter by. You cannot provide any other filters if you filter by redemption IDs.
|
|
188
|
+
* @param params.cursor (Optional) Optionally provide a cursor to paginate through the results.
|
|
189
|
+
* @returns An array of `ChannelRewardRedemption` instances.
|
|
190
|
+
*/
|
|
191
|
+
async getRedemptions(params) {
|
|
192
|
+
const schema = getChannelRewardRedemptionsSchema.safeParse(params);
|
|
193
|
+
if (!schema.success) {
|
|
194
|
+
throw new Error(`Invalid data: ${schema.error.message}`);
|
|
195
|
+
}
|
|
196
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_WRITE);
|
|
197
|
+
const { rewardId, status, id, cursor } = schema.data;
|
|
198
|
+
const endpoint = new URL(`${this.CHANNEL_REWARDS_URL}/redemptions`);
|
|
199
|
+
// cannot provide any other filters if filtering by redemption IDs
|
|
200
|
+
if (id && id.length > 0 && (rewardId || status || cursor)) {
|
|
201
|
+
throw new Error('You cannot provide any other filters if you filter by redemption IDs.');
|
|
202
|
+
}
|
|
203
|
+
if (rewardId) {
|
|
204
|
+
endpoint.searchParams.append('reward_id', rewardId);
|
|
205
|
+
}
|
|
206
|
+
if (status) {
|
|
207
|
+
endpoint.searchParams.append('status', status);
|
|
208
|
+
}
|
|
209
|
+
if (id) {
|
|
210
|
+
for (const redemptionId of id) {
|
|
211
|
+
endpoint.searchParams.append('id', redemptionId);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (cursor) {
|
|
215
|
+
endpoint.searchParams.append('cursor', cursor);
|
|
216
|
+
}
|
|
217
|
+
const response = await fetch(endpoint, {
|
|
218
|
+
headers: {
|
|
219
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
if (!response.ok) {
|
|
223
|
+
handleError(response);
|
|
224
|
+
}
|
|
225
|
+
const json = await parseJSON(response);
|
|
226
|
+
const redemptions = json.data.map((redemption) => new ChannelRewardRedemption(this.client, redemption));
|
|
227
|
+
return redemptions;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Accept channel reward redemptions for a broadcaster's channel. The response will only include data for redemptions that failed to be accepted.
|
|
231
|
+
*
|
|
232
|
+
* Required scopes:
|
|
233
|
+
* `channel:rewards:write`
|
|
234
|
+
*
|
|
235
|
+
* @param params The parameters for accepting redemptions
|
|
236
|
+
* @param params.ids List of redemption IDs to accept. A maximum of 25 redemptions can be accepted per request. IDs must be unique.
|
|
237
|
+
* @returns An array of `ChannelRewardAcceptRedemptionDto` instances for redemptions that failed to be accepted.
|
|
238
|
+
*/
|
|
239
|
+
async acceptRedemptions({ ids }) {
|
|
240
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_WRITE);
|
|
241
|
+
const schema = acceptRedemptionsSchema.safeParse({ ids });
|
|
242
|
+
if (!schema.success) {
|
|
243
|
+
throw new Error(`Invalid data: ${schema.error.message}`);
|
|
244
|
+
}
|
|
245
|
+
const endpoint = new URL(`${this.CHANNEL_REWARDS_URL}/redemptions/accept`);
|
|
246
|
+
const response = await fetch(endpoint, {
|
|
247
|
+
method: 'POST',
|
|
248
|
+
headers: {
|
|
249
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
250
|
+
'Content-Type': 'application/json',
|
|
251
|
+
},
|
|
252
|
+
body: JSON.stringify({
|
|
253
|
+
ids: schema.data.ids,
|
|
254
|
+
}),
|
|
255
|
+
});
|
|
256
|
+
if (!response.ok) {
|
|
257
|
+
handleError(response);
|
|
258
|
+
}
|
|
259
|
+
const json = await parseJSON(response);
|
|
260
|
+
return json.data;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Reject channel reward redemptions for a broadcaster's channel. The response will only include data for redemptions that failed to be rejected.
|
|
264
|
+
*
|
|
265
|
+
* Required scopes:
|
|
266
|
+
* `channel:rewards:write`
|
|
267
|
+
*
|
|
268
|
+
* @param params The parameters for rejecting redemptions
|
|
269
|
+
* @param params.ids List of redemption IDs to reject. A maximum of 25 redemptions can be rejected per request. IDs must be unique.
|
|
270
|
+
* @returns An array of `ChannelRewardRejectRedemptionDto` instances for redemptions that failed to be rejected.
|
|
271
|
+
*/
|
|
272
|
+
async rejectRedemptions({ ids }) {
|
|
273
|
+
this.client.requiresScope(Scope.CHANNEL_REWARDS_WRITE);
|
|
274
|
+
const schema = rejectRedemptionsSchema.safeParse({ ids });
|
|
275
|
+
if (!schema.success) {
|
|
276
|
+
throw new Error(`Invalid data: ${schema.error.message}`);
|
|
277
|
+
}
|
|
278
|
+
const endpoint = new URL(`${this.CHANNEL_REWARDS_URL}/redemptions/reject`);
|
|
279
|
+
const response = await fetch(endpoint, {
|
|
280
|
+
method: 'POST',
|
|
281
|
+
headers: {
|
|
282
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
283
|
+
'Content-Type': 'application/json',
|
|
284
|
+
},
|
|
285
|
+
body: JSON.stringify({
|
|
286
|
+
ids: schema.data.ids,
|
|
287
|
+
}),
|
|
288
|
+
});
|
|
289
|
+
if (!response.ok) {
|
|
290
|
+
handleError(response);
|
|
291
|
+
}
|
|
292
|
+
const json = await parseJSON(response);
|
|
293
|
+
return json.data;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=ChannelRewardsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelRewardsService.js","sourceRoot":"","sources":["../../src/services/ChannelRewardsService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { BaseResponse } from '../BaseResponse.js';
|
|
3
|
+
import type { KickClient } from '../KickClient.js';
|
|
4
|
+
import { Channel, ChannelDto } from '../resources/Channel.js';
|
|
5
|
+
export type FetchChannelsResponse = BaseResponse<ChannelDto[]>;
|
|
6
|
+
export declare const updateChannelSchema: z.ZodObject<{
|
|
7
|
+
categoryId: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
customTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
9
|
+
streamTitle: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.z.core.$strip>;
|
|
11
|
+
export type UpdateChannelParams = z.infer<typeof updateChannelSchema>;
|
|
12
|
+
export declare const fetchChannelParamsSchema: z.ZodObject<{
|
|
13
|
+
broadcasterUserId: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
14
|
+
slug: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
|
+
}, z.z.core.$strip>;
|
|
16
|
+
export type FetchChannelParamsDto = z.infer<typeof fetchChannelParamsSchema>;
|
|
17
|
+
export declare class ChannelsService {
|
|
18
|
+
private readonly CHANNELS_URL;
|
|
19
|
+
protected readonly client: KickClient;
|
|
20
|
+
constructor(client: KickClient);
|
|
21
|
+
/**
|
|
22
|
+
* Retrieve channel information based on provided broadcaster user IDs or channel slugs. You can either:
|
|
23
|
+
* 1. Provide no parameters (returns information for the currently authenticated user)
|
|
24
|
+
* 2. Provide only `broadcasterUserId` parameters (up to 50)
|
|
25
|
+
* 3. Provide only `slug` parameters (up to 50, each max 25 characters) Note: You cannot mix `broadcasterUserId` and `slug` parameters in the same request.
|
|
26
|
+
*
|
|
27
|
+
* Required scopes:
|
|
28
|
+
* `channel:read`
|
|
29
|
+
*
|
|
30
|
+
* @param params The parameters for fetching the channel
|
|
31
|
+
* @param params.broadcasterUserId (Optional) Array of broadcaster user IDs (up to 50)
|
|
32
|
+
* @param params.slug (Optional) Array of channel slugs (up to 50, each max 25 characters)
|
|
33
|
+
* @returns An array of `Channel` instances.
|
|
34
|
+
*/
|
|
35
|
+
fetch(params: FetchChannelParamsDto): Promise<Channel[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Fetch a channel by its ID.
|
|
38
|
+
*
|
|
39
|
+
* @param id The ID of the channel to fetch
|
|
40
|
+
* @returns The `Channel` instance.
|
|
41
|
+
*/
|
|
42
|
+
fetchById(id: number): Promise<Channel>;
|
|
43
|
+
/**
|
|
44
|
+
* Fetch a channel by its slug.
|
|
45
|
+
*
|
|
46
|
+
* @param slug The slug of the channel to fetch
|
|
47
|
+
* @returns The `Channel` instance.
|
|
48
|
+
*/
|
|
49
|
+
fetchBySlug(slug: string): Promise<Channel>;
|
|
50
|
+
/**
|
|
51
|
+
* Update the authenticated user's channel information.
|
|
52
|
+
*
|
|
53
|
+
* Required scopes:
|
|
54
|
+
* `channel:write`
|
|
55
|
+
*
|
|
56
|
+
* @param params The parameters for updating the channel
|
|
57
|
+
* @param params.categoryId (Optional) The ID of the category to set for the channel
|
|
58
|
+
* @param params.customTags (Optional) An array of custom tags to set for the channel
|
|
59
|
+
* @param params.streamTitle (Optional) The title of the stream
|
|
60
|
+
* @returns void
|
|
61
|
+
*/
|
|
62
|
+
update(params: UpdateChannelParams): Promise<void>;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=ChannelsService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelsService.d.ts","sourceRoot":"","sources":["../../src/services/ChannelsService.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK9D,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;AAE/D,eAAO,MAAM,mBAAmB;;;;mBAI9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;mBAgBlC,CAAC;AACJ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE7E,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6C;IAC1E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAE1B,MAAM,EAAE,UAAU;IAI9B;;;;;;;;;;;;;OAaG;IACG,KAAK,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAkC9D;;;;;OAKG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7C;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BzD"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import { Channel } from '../resources/Channel.js';
|
|
3
|
+
import { Scope } from '../Scope.js';
|
|
4
|
+
import { constructEndpoint, handleError, parseJSON } from '../utils.js';
|
|
5
|
+
import { Version } from '../Version.js';
|
|
6
|
+
export const updateChannelSchema = z.object({
|
|
7
|
+
categoryId: z.number().optional(),
|
|
8
|
+
customTags: z.array(z.string()).optional(),
|
|
9
|
+
streamTitle: z.string().optional(),
|
|
10
|
+
});
|
|
11
|
+
export const fetchChannelParamsSchema = z
|
|
12
|
+
.object({
|
|
13
|
+
broadcasterUserId: z.array(z.number()).max(50).optional(),
|
|
14
|
+
slug: z.array(z.string().max(25)).max(50).optional(),
|
|
15
|
+
})
|
|
16
|
+
.refine((data) => {
|
|
17
|
+
// Cannot mix broadcasterUserId and slug
|
|
18
|
+
if (data.broadcasterUserId && data.slug) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}, {
|
|
23
|
+
message: 'Cannot mix broadcasterUserId and slug parameters',
|
|
24
|
+
});
|
|
25
|
+
export class ChannelsService {
|
|
26
|
+
CHANNELS_URL = constructEndpoint(Version.V1, 'channels');
|
|
27
|
+
client;
|
|
28
|
+
constructor(client) {
|
|
29
|
+
this.client = client;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Retrieve channel information based on provided broadcaster user IDs or channel slugs. You can either:
|
|
33
|
+
* 1. Provide no parameters (returns information for the currently authenticated user)
|
|
34
|
+
* 2. Provide only `broadcasterUserId` parameters (up to 50)
|
|
35
|
+
* 3. Provide only `slug` parameters (up to 50, each max 25 characters) Note: You cannot mix `broadcasterUserId` and `slug` parameters in the same request.
|
|
36
|
+
*
|
|
37
|
+
* Required scopes:
|
|
38
|
+
* `channel:read`
|
|
39
|
+
*
|
|
40
|
+
* @param params The parameters for fetching the channel
|
|
41
|
+
* @param params.broadcasterUserId (Optional) Array of broadcaster user IDs (up to 50)
|
|
42
|
+
* @param params.slug (Optional) Array of channel slugs (up to 50, each max 25 characters)
|
|
43
|
+
* @returns An array of `Channel` instances.
|
|
44
|
+
*/
|
|
45
|
+
async fetch(params) {
|
|
46
|
+
this.client.requiresScope(Scope.CHANNEL_READ);
|
|
47
|
+
const schema = fetchChannelParamsSchema.safeParse(params);
|
|
48
|
+
if (!schema.success) {
|
|
49
|
+
throw new Error(`Invalid parameters: ${schema.error.message}`);
|
|
50
|
+
}
|
|
51
|
+
const { broadcasterUserId, slug } = schema.data;
|
|
52
|
+
const endpoint = new URL(this.CHANNELS_URL);
|
|
53
|
+
if (broadcasterUserId && broadcasterUserId.length > 0) {
|
|
54
|
+
endpoint.searchParams.append('broadcaster_user_id', broadcasterUserId.join(' '));
|
|
55
|
+
}
|
|
56
|
+
if (slug && slug.length > 0) {
|
|
57
|
+
slug.forEach((s) => endpoint.searchParams.append('slug', s));
|
|
58
|
+
}
|
|
59
|
+
const response = await fetch(endpoint, {
|
|
60
|
+
headers: {
|
|
61
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
handleError(response);
|
|
66
|
+
}
|
|
67
|
+
const json = await parseJSON(response);
|
|
68
|
+
const channels = json.data.map((channel) => new Channel(this.client, channel));
|
|
69
|
+
return channels;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Fetch a channel by its ID.
|
|
73
|
+
*
|
|
74
|
+
* @param id The ID of the channel to fetch
|
|
75
|
+
* @returns The `Channel` instance.
|
|
76
|
+
*/
|
|
77
|
+
async fetchById(id) {
|
|
78
|
+
return (await this.fetch({ broadcasterUserId: [id] }))[0];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Fetch a channel by its slug.
|
|
82
|
+
*
|
|
83
|
+
* @param slug The slug of the channel to fetch
|
|
84
|
+
* @returns The `Channel` instance.
|
|
85
|
+
*/
|
|
86
|
+
async fetchBySlug(slug) {
|
|
87
|
+
return (await this.fetch({ slug: [slug] }))[0];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Update the authenticated user's channel information.
|
|
91
|
+
*
|
|
92
|
+
* Required scopes:
|
|
93
|
+
* `channel:write`
|
|
94
|
+
*
|
|
95
|
+
* @param params The parameters for updating the channel
|
|
96
|
+
* @param params.categoryId (Optional) The ID of the category to set for the channel
|
|
97
|
+
* @param params.customTags (Optional) An array of custom tags to set for the channel
|
|
98
|
+
* @param params.streamTitle (Optional) The title of the stream
|
|
99
|
+
* @returns void
|
|
100
|
+
*/
|
|
101
|
+
async update(params) {
|
|
102
|
+
this.client.requiresScope(Scope.CHANNEL_WRITE);
|
|
103
|
+
const schema = updateChannelSchema.safeParse(params);
|
|
104
|
+
if (!schema.success) {
|
|
105
|
+
throw new Error(`Invalid parameters: ${schema.error.message}`);
|
|
106
|
+
}
|
|
107
|
+
const { categoryId, customTags, streamTitle } = schema.data;
|
|
108
|
+
const endpoint = new URL(this.CHANNELS_URL);
|
|
109
|
+
const response = await fetch(endpoint, {
|
|
110
|
+
method: 'PATCH',
|
|
111
|
+
headers: {
|
|
112
|
+
Authorization: `Bearer ${this.client.token?.access_token}`,
|
|
113
|
+
'Content-Type': 'application/json',
|
|
114
|
+
},
|
|
115
|
+
body: JSON.stringify({
|
|
116
|
+
category_id: categoryId,
|
|
117
|
+
custom_tags: customTags,
|
|
118
|
+
stream_title: streamTitle,
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
handleError(response);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=ChannelsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelsService.js","sourceRoot":"","sources":["../../src/services/ChannelsService.ts"],"names":[],"mappings":"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"}
|