@buape/carbon 0.4.2 → 0.6.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.
Files changed (169) hide show
  1. package/README.md +15 -3
  2. package/dist/package.json +22 -5
  3. package/dist/src/abstracts/BaseChannel.d.ts +22 -21
  4. package/dist/src/abstracts/BaseChannel.d.ts.map +1 -1
  5. package/dist/src/abstracts/BaseChannel.js +37 -27
  6. package/dist/src/abstracts/BaseChannel.js.map +1 -1
  7. package/dist/src/abstracts/BaseComponentInteraction.d.ts +3 -2
  8. package/dist/src/abstracts/BaseComponentInteraction.d.ts.map +1 -1
  9. package/dist/src/abstracts/BaseComponentInteraction.js +3 -4
  10. package/dist/src/abstracts/BaseComponentInteraction.js.map +1 -1
  11. package/dist/src/abstracts/BaseGuildChannel.d.ts +12 -10
  12. package/dist/src/abstracts/BaseGuildChannel.d.ts.map +1 -1
  13. package/dist/src/abstracts/BaseGuildChannel.js +35 -22
  14. package/dist/src/abstracts/BaseGuildChannel.js.map +1 -1
  15. package/dist/src/abstracts/BaseGuildTextChannel.d.ts +13 -9
  16. package/dist/src/abstracts/BaseGuildTextChannel.d.ts.map +1 -1
  17. package/dist/src/abstracts/BaseGuildTextChannel.js +25 -9
  18. package/dist/src/abstracts/BaseGuildTextChannel.js.map +1 -1
  19. package/dist/src/abstracts/BaseInteraction.d.ts +10 -24
  20. package/dist/src/abstracts/BaseInteraction.d.ts.map +1 -1
  21. package/dist/src/abstracts/BaseInteraction.js +21 -15
  22. package/dist/src/abstracts/BaseInteraction.js.map +1 -1
  23. package/dist/src/abstracts/GuildThreadOnlyChannel.d.ts +14 -13
  24. package/dist/src/abstracts/GuildThreadOnlyChannel.d.ts.map +1 -1
  25. package/dist/src/abstracts/GuildThreadOnlyChannel.js +31 -16
  26. package/dist/src/abstracts/GuildThreadOnlyChannel.js.map +1 -1
  27. package/dist/src/abstracts/Plugin.d.ts +14 -0
  28. package/dist/src/abstracts/Plugin.d.ts.map +1 -0
  29. package/dist/src/abstracts/Plugin.js +4 -0
  30. package/dist/src/abstracts/Plugin.js.map +1 -0
  31. package/dist/src/adapters/bun/index.d.ts +16 -0
  32. package/dist/src/adapters/bun/index.d.ts.map +1 -0
  33. package/dist/src/adapters/bun/index.js +20 -0
  34. package/dist/src/adapters/bun/index.js.map +1 -0
  35. package/dist/src/adapters/cloudflare/index.d.ts +16 -0
  36. package/dist/src/adapters/cloudflare/index.d.ts.map +1 -0
  37. package/dist/src/adapters/cloudflare/index.js +17 -0
  38. package/dist/src/adapters/cloudflare/index.js.map +1 -0
  39. package/dist/src/adapters/next/index.d.ts +14 -0
  40. package/dist/src/adapters/next/index.d.ts.map +1 -0
  41. package/dist/src/adapters/next/index.js +17 -0
  42. package/dist/src/adapters/next/index.js.map +1 -0
  43. package/dist/src/adapters/node/index.d.ts +16 -0
  44. package/dist/src/adapters/node/index.d.ts.map +1 -0
  45. package/dist/src/adapters/node/index.js +20 -0
  46. package/dist/src/adapters/node/index.js.map +1 -0
  47. package/dist/src/adapters/shared.d.ts +10 -0
  48. package/dist/src/adapters/shared.d.ts.map +1 -0
  49. package/dist/src/adapters/shared.js +2 -0
  50. package/dist/src/adapters/shared.js.map +1 -0
  51. package/dist/src/classes/Button.d.ts +0 -4
  52. package/dist/src/classes/Button.d.ts.map +1 -1
  53. package/dist/src/classes/Button.js +6 -0
  54. package/dist/src/classes/Button.js.map +1 -1
  55. package/dist/src/classes/Client.d.ts +72 -59
  56. package/dist/src/classes/Client.d.ts.map +1 -1
  57. package/dist/src/classes/Client.js +125 -111
  58. package/dist/src/classes/Client.js.map +1 -1
  59. package/dist/src/classes/Embed.d.ts +2 -1
  60. package/dist/src/classes/Embed.d.ts.map +1 -1
  61. package/dist/src/classes/Embed.js +12 -10
  62. package/dist/src/classes/Embed.js.map +1 -1
  63. package/dist/src/createHandle.d.ts +20 -0
  64. package/dist/src/createHandle.d.ts.map +1 -0
  65. package/dist/src/createHandle.js +57 -0
  66. package/dist/src/createHandle.js.map +1 -0
  67. package/dist/src/factories/channelFactory.d.ts +1 -1
  68. package/dist/src/factories/channelFactory.d.ts.map +1 -1
  69. package/dist/src/index.d.ts +1 -0
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +1 -0
  72. package/dist/src/index.js.map +1 -1
  73. package/dist/src/internals/AutocompleteInteraction.d.ts +2 -3
  74. package/dist/src/internals/AutocompleteInteraction.d.ts.map +1 -1
  75. package/dist/src/internals/AutocompleteInteraction.js +2 -8
  76. package/dist/src/internals/AutocompleteInteraction.js.map +1 -1
  77. package/dist/src/internals/CommandHandler.d.ts.map +1 -1
  78. package/dist/src/internals/CommandHandler.js +4 -2
  79. package/dist/src/internals/CommandHandler.js.map +1 -1
  80. package/dist/src/internals/CommandInteraction.d.ts +3 -4
  81. package/dist/src/internals/CommandInteraction.d.ts.map +1 -1
  82. package/dist/src/internals/CommandInteraction.js +6 -12
  83. package/dist/src/internals/CommandInteraction.js.map +1 -1
  84. package/dist/src/internals/ModalInteraction.d.ts +3 -2
  85. package/dist/src/internals/ModalInteraction.d.ts.map +1 -1
  86. package/dist/src/internals/ModalInteraction.js +3 -3
  87. package/dist/src/internals/ModalInteraction.js.map +1 -1
  88. package/dist/src/internals/OptionsHandler.d.ts +8 -12
  89. package/dist/src/internals/OptionsHandler.d.ts.map +1 -1
  90. package/dist/src/internals/OptionsHandler.js +27 -9
  91. package/dist/src/internals/OptionsHandler.js.map +1 -1
  92. package/dist/src/plugins/linked-roles/LinkedRoles.d.ts +61 -0
  93. package/dist/src/plugins/linked-roles/LinkedRoles.d.ts.map +1 -0
  94. package/dist/src/plugins/linked-roles/LinkedRoles.js +196 -0
  95. package/dist/src/plugins/linked-roles/LinkedRoles.js.map +1 -0
  96. package/dist/src/plugins/linked-roles/index.d.ts +3 -0
  97. package/dist/src/plugins/linked-roles/index.d.ts.map +1 -0
  98. package/dist/src/plugins/linked-roles/index.js +3 -0
  99. package/dist/src/plugins/linked-roles/index.js.map +1 -0
  100. package/dist/src/plugins/linked-roles/types.d.ts +94 -0
  101. package/dist/src/plugins/linked-roles/types.d.ts.map +1 -0
  102. package/dist/src/plugins/linked-roles/types.js +39 -0
  103. package/dist/src/plugins/linked-roles/types.js.map +1 -0
  104. package/dist/src/structures/DmChannel.d.ts +7 -6
  105. package/dist/src/structures/DmChannel.d.ts.map +1 -1
  106. package/dist/src/structures/DmChannel.js +7 -6
  107. package/dist/src/structures/DmChannel.js.map +1 -1
  108. package/dist/src/structures/GroupDmChannel.d.ts +17 -19
  109. package/dist/src/structures/GroupDmChannel.d.ts.map +1 -1
  110. package/dist/src/structures/GroupDmChannel.js +48 -41
  111. package/dist/src/structures/GroupDmChannel.js.map +1 -1
  112. package/dist/src/structures/Guild.d.ts +29 -28
  113. package/dist/src/structures/Guild.d.ts.map +1 -1
  114. package/dist/src/structures/Guild.js +82 -57
  115. package/dist/src/structures/Guild.js.map +1 -1
  116. package/dist/src/structures/GuildAnnouncementChannel.d.ts +3 -4
  117. package/dist/src/structures/GuildAnnouncementChannel.d.ts.map +1 -1
  118. package/dist/src/structures/GuildAnnouncementChannel.js +1 -3
  119. package/dist/src/structures/GuildAnnouncementChannel.js.map +1 -1
  120. package/dist/src/structures/GuildCategoryChannel.d.ts +3 -3
  121. package/dist/src/structures/GuildCategoryChannel.d.ts.map +1 -1
  122. package/dist/src/structures/GuildCategoryChannel.js +0 -1
  123. package/dist/src/structures/GuildCategoryChannel.js.map +1 -1
  124. package/dist/src/structures/GuildForumChannel.d.ts +4 -3
  125. package/dist/src/structures/GuildForumChannel.d.ts.map +1 -1
  126. package/dist/src/structures/GuildForumChannel.js +4 -3
  127. package/dist/src/structures/GuildForumChannel.js.map +1 -1
  128. package/dist/src/structures/GuildMediaChannel.d.ts +3 -7
  129. package/dist/src/structures/GuildMediaChannel.d.ts.map +1 -1
  130. package/dist/src/structures/GuildMediaChannel.js +1 -6
  131. package/dist/src/structures/GuildMediaChannel.js.map +1 -1
  132. package/dist/src/structures/GuildMember.d.ts +28 -26
  133. package/dist/src/structures/GuildMember.d.ts.map +1 -1
  134. package/dist/src/structures/GuildMember.js +95 -57
  135. package/dist/src/structures/GuildMember.js.map +1 -1
  136. package/dist/src/structures/GuildStageOrVoiceChannel.d.ts +12 -11
  137. package/dist/src/structures/GuildStageOrVoiceChannel.d.ts.map +1 -1
  138. package/dist/src/structures/GuildStageOrVoiceChannel.js +22 -13
  139. package/dist/src/structures/GuildStageOrVoiceChannel.js.map +1 -1
  140. package/dist/src/structures/GuildTextChannel.d.ts +6 -6
  141. package/dist/src/structures/GuildTextChannel.d.ts.map +1 -1
  142. package/dist/src/structures/GuildTextChannel.js +9 -7
  143. package/dist/src/structures/GuildTextChannel.js.map +1 -1
  144. package/dist/src/structures/GuildThreadChannel.d.ts +14 -13
  145. package/dist/src/structures/GuildThreadChannel.d.ts.map +1 -1
  146. package/dist/src/structures/GuildThreadChannel.js +59 -28
  147. package/dist/src/structures/GuildThreadChannel.js.map +1 -1
  148. package/dist/src/structures/Message.d.ts +50 -41
  149. package/dist/src/structures/Message.d.ts.map +1 -1
  150. package/dist/src/structures/Message.js +163 -93
  151. package/dist/src/structures/Message.js.map +1 -1
  152. package/dist/src/structures/Role.d.ts +27 -25
  153. package/dist/src/structures/Role.d.ts.map +1 -1
  154. package/dist/src/structures/Role.js +100 -61
  155. package/dist/src/structures/Role.js.map +1 -1
  156. package/dist/src/structures/User.d.ts +34 -32
  157. package/dist/src/structures/User.d.ts.map +1 -1
  158. package/dist/src/structures/User.js +97 -64
  159. package/dist/src/structures/User.js.map +1 -1
  160. package/dist/src/types.d.ts +37 -0
  161. package/dist/src/types.d.ts.map +1 -0
  162. package/dist/src/types.js +2 -0
  163. package/dist/src/types.js.map +1 -0
  164. package/dist/src/utils.d.ts +17 -0
  165. package/dist/src/utils.d.ts.map +1 -1
  166. package/dist/src/utils.js +16 -5
  167. package/dist/src/utils.js.map +1 -1
  168. package/dist/tsconfig.tsbuildinfo +1 -1
  169. package/package.json +23 -6
@@ -0,0 +1,61 @@
1
+ import { Plugin } from "../../abstracts/Plugin.js";
2
+ import type { Client } from "../../classes/Client.js";
3
+ import { type LinkedRolesOptions } from "./types.js";
4
+ /**
5
+ * This class is the main class that is used for the linked roles feature of Carbon.
6
+ * It handles all the additional routes and oauth.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createHandle, Client, ApplicationRoleConnectionMetadataType } from "@buape/carbon"
11
+ * import { LinkedRoles } from "@buape/carbon/linked-roles"
12
+ *
13
+ * const handle = createHandle((env) => {
14
+ * const client = new Client({ ... }, [ ... ])
15
+ * const linkedRoles = new LinkedRoles(client, {
16
+ * metadata: [
17
+ * {
18
+ * key: 'is_staff',
19
+ * name: 'Verified Staff',
20
+ * description: 'Whether the user is a verified staff member',
21
+ * type: ApplicationRoleConnectionMetadataType.BooleanEqual
22
+ * }
23
+ * ],
24
+ * metadataCheckers: {
25
+ * is_staff: async (userId) => {
26
+ * const allStaff = ["439223656200273932"]
27
+ * return allStaff.includes(userId)
28
+ * }
29
+ * }
30
+ * })
31
+ * return [client, linkedRoles]
32
+ * })
33
+ * ```
34
+ */
35
+ export declare class LinkedRoles extends Plugin {
36
+ client: Client;
37
+ options: LinkedRolesOptions;
38
+ constructor(client: Client, options: LinkedRolesOptions);
39
+ private appendRoutes;
40
+ /**
41
+ * Handle a request to deploy the linked roles to Discord
42
+ * @returns A response
43
+ */
44
+ handleDeployRequest(): Promise<Response>;
45
+ /**
46
+ * Handle the verify user request
47
+ * @returns A response
48
+ */
49
+ handleUserVerificationRequest(): Promise<Response>;
50
+ /**
51
+ * Handle the verify user callback request
52
+ * @param req The request
53
+ * @returns A response
54
+ */
55
+ handleUserVerificationCallbackRequest(req: Request): Promise<Response>;
56
+ private getMetadataFromCheckers;
57
+ private getOAuthTokens;
58
+ private updateMetadata;
59
+ private setMetadata;
60
+ }
61
+ //# sourceMappingURL=LinkedRoles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkedRoles.d.ts","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/LinkedRoles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,YAAY,CAAA;AAenB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,kBAAkB,CAAA;gBAEf,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;IAQvD,OAAO,CAAC,YAAY;IAsBpB;;;OAGG;IACU,mBAAmB;IAKhC;;;OAGG;IACU,6BAA6B;IAS1C;;;;OAIG;IACU,qCAAqC,CAAC,GAAG,EAAE,OAAO;YA4BjD,uBAAuB;YAiCvB,cAAc;YA4Bd,cAAc;YAuBd,WAAW;CAoBzB"}
@@ -0,0 +1,196 @@
1
+ import { Plugin } from "../../abstracts/Plugin.js";
2
+ import { ApplicationRoleConnectionMetadataType } from "./types.js";
3
+ // TODO: IMO, the metadata for this should be handled similarly to the client and its commands
4
+ // That is passing an array of connection instances as the second argument to the constructor
5
+ // That is, maybe, for another pr though
6
+ // TODO: Improve the response messages
7
+ /**
8
+ * This class is the main class that is used for the linked roles feature of Carbon.
9
+ * It handles all the additional routes and oauth.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * import { createHandle, Client, ApplicationRoleConnectionMetadataType } from "@buape/carbon"
14
+ * import { LinkedRoles } from "@buape/carbon/linked-roles"
15
+ *
16
+ * const handle = createHandle((env) => {
17
+ * const client = new Client({ ... }, [ ... ])
18
+ * const linkedRoles = new LinkedRoles(client, {
19
+ * metadata: [
20
+ * {
21
+ * key: 'is_staff',
22
+ * name: 'Verified Staff',
23
+ * description: 'Whether the user is a verified staff member',
24
+ * type: ApplicationRoleConnectionMetadataType.BooleanEqual
25
+ * }
26
+ * ],
27
+ * metadataCheckers: {
28
+ * is_staff: async (userId) => {
29
+ * const allStaff = ["439223656200273932"]
30
+ * return allStaff.includes(userId)
31
+ * }
32
+ * }
33
+ * })
34
+ * return [client, linkedRoles]
35
+ * })
36
+ * ```
37
+ */
38
+ export class LinkedRoles extends Plugin {
39
+ client;
40
+ options;
41
+ constructor(client, options) {
42
+ super();
43
+ this.client = client;
44
+ this.options = { ...options };
45
+ this.appendRoutes();
46
+ }
47
+ appendRoutes() {
48
+ this.routes.push({
49
+ method: "GET",
50
+ path: "/linked-roles/deploy",
51
+ handler: this.handleDeployRequest.bind(this),
52
+ protected: true,
53
+ disabled: this.options.disableDeployRoute
54
+ });
55
+ this.routes.push({
56
+ method: "GET",
57
+ path: "/linked-roles/verify-user",
58
+ handler: this.handleUserVerificationRequest.bind(this),
59
+ disabled: this.options.disableVerifyUserRoute
60
+ });
61
+ this.routes.push({
62
+ method: "GET",
63
+ path: "/linked-roles/verify-user/callback",
64
+ handler: this.handleUserVerificationCallbackRequest.bind(this),
65
+ disabled: this.options.disableVerifyUserCallbackRoute
66
+ });
67
+ }
68
+ /**
69
+ * Handle a request to deploy the linked roles to Discord
70
+ * @returns A response
71
+ */
72
+ async handleDeployRequest() {
73
+ await this.setMetadata(this.options.metadata);
74
+ return new Response("OK", { status: 202 });
75
+ }
76
+ /**
77
+ * Handle the verify user request
78
+ * @returns A response
79
+ */
80
+ async handleUserVerificationRequest() {
81
+ return new Response("Found", {
82
+ status: 302,
83
+ headers: {
84
+ Location: `https://discord.com/oauth2/authorize?client_id=${this.client.options.clientId}&redirect_uri=${encodeURIComponent(`${this.client.options.baseUrl}/linked-roles/verify-user/callback`)}&response_type=code&scope=identify+role_connections.write&prompt=none`
85
+ }
86
+ });
87
+ }
88
+ /**
89
+ * Handle the verify user callback request
90
+ * @param req The request
91
+ * @returns A response
92
+ */
93
+ async handleUserVerificationCallbackRequest(req) {
94
+ const url = new URL(req.url);
95
+ const code = String(url.searchParams.get("code"));
96
+ const tokens = await this.getOAuthTokens(code);
97
+ const authData = await (await fetch("https://discord.com/api/v10/oauth2/@me", {
98
+ headers: {
99
+ Authorization: `Bearer ${tokens.access_token}`
100
+ }
101
+ })).json();
102
+ if (!authData.user)
103
+ return new Response("", {
104
+ status: 307,
105
+ headers: {
106
+ Location: `${this.client.options.baseUrl}/connect`
107
+ }
108
+ });
109
+ const newMetadata = await this.getMetadataFromCheckers(authData.user.id);
110
+ await this.updateMetadata(authData.user?.id, newMetadata, tokens);
111
+ // IDEA: Maybe we can redirect to a success page instead of just a message
112
+ return new Response("You can now close this tab.");
113
+ }
114
+ async getMetadataFromCheckers(userId) {
115
+ const result = {};
116
+ for (const metadata of this.options.metadata) {
117
+ const checker = this.options.metadataCheckers[metadata.key];
118
+ if (!checker)
119
+ throw new Error(`You did not provide a checker for ${metadata.key}`);
120
+ const value = await checker(userId);
121
+ switch (metadata.type) {
122
+ case ApplicationRoleConnectionMetadataType.BooleanEqual:
123
+ case ApplicationRoleConnectionMetadataType.BooleanNotEqual:
124
+ if (typeof value !== "boolean")
125
+ throw new Error(`Expected boolean for ${metadata.key}`);
126
+ break;
127
+ case ApplicationRoleConnectionMetadataType.DatetimeGreaterThanOrEqual:
128
+ case ApplicationRoleConnectionMetadataType.DatetimeLessThanOrEqual:
129
+ if (typeof value !== "number")
130
+ throw new Error(`Expected number for ${metadata.key}`);
131
+ break;
132
+ case ApplicationRoleConnectionMetadataType.IntegerEqual:
133
+ case ApplicationRoleConnectionMetadataType.IntegerNotEqual:
134
+ case ApplicationRoleConnectionMetadataType.IntegerGreaterThanOrEqual:
135
+ case ApplicationRoleConnectionMetadataType.IntegerLessThanOrEqual:
136
+ if (!(typeof value === "number" && Number.isSafeInteger(value)))
137
+ throw new Error(`Expected integer for ${metadata.key}`);
138
+ break;
139
+ default:
140
+ throw new Error(`Unknown metadata type ${metadata.type}`);
141
+ }
142
+ result[metadata.key] = value;
143
+ }
144
+ return result;
145
+ }
146
+ async getOAuthTokens(code) {
147
+ const url = "https://discord.com/api/v10/oauth2/token";
148
+ const body = new URLSearchParams({
149
+ client_id: this.client.options.clientId,
150
+ client_secret: this.client.options.clientSecret,
151
+ grant_type: "authorization_code",
152
+ code,
153
+ redirect_uri: `${this.client.options.baseUrl}/linked-roles/verify-user/callback`
154
+ });
155
+ const response = await fetch(url, {
156
+ body,
157
+ method: "POST",
158
+ headers: {
159
+ "Content-Type": "application/x-www-form-urlencoded"
160
+ }
161
+ });
162
+ if (response.ok) {
163
+ const data = await response.json();
164
+ return data;
165
+ }
166
+ throw new Error(`Error fetching OAuth tokens: [${response.status}] ${JSON.stringify(await response.json())}`);
167
+ }
168
+ async updateMetadata(userId, metadata, tokens) {
169
+ const url = `https://discord.com/api/v10/users/@me/applications/${this.client.options.clientId}/role-connection`;
170
+ const response = await fetch(url, {
171
+ method: "PUT",
172
+ body: JSON.stringify({ metadata }),
173
+ headers: {
174
+ Authorization: `Bearer ${tokens.access_token}`,
175
+ "Content-Type": "application/json"
176
+ }
177
+ });
178
+ if (!response.ok) {
179
+ throw new Error(`Error pushing discord metadata for ${userId}: [${response.status}] ${JSON.stringify(await response.json())}`);
180
+ }
181
+ }
182
+ async setMetadata(data) {
183
+ const response = await fetch(`https://discord.com/api/v10/applications/${this.client.options.clientId}/role-connections/metadata`, {
184
+ method: "PUT",
185
+ body: JSON.stringify(data),
186
+ headers: {
187
+ "Content-Type": "application/json",
188
+ Authorization: `Bot ${this.client.options.token}`
189
+ }
190
+ });
191
+ if (!response.ok) {
192
+ throw new Error(`Error pushing discord metadata: [${response.status}] ${JSON.stringify(await response.json())}`);
193
+ }
194
+ }
195
+ }
196
+ //# sourceMappingURL=LinkedRoles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkedRoles.js","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/LinkedRoles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./LinkedRoles.js";
2
+ export * from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./LinkedRoles.js";
2
+ export * from "./types.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The type of metadata that you can check for
3
+ */
4
+ export declare enum ApplicationRoleConnectionMetadataType {
5
+ /**
6
+ * The metadata value (`integer`) is less than or equal to the guild's configured value (`integer`)
7
+ */
8
+ IntegerLessThanOrEqual = 1,
9
+ /**
10
+ * The metadata value (`integer`) is greater than or equal to the guild's configured value (`integer`)
11
+ */
12
+ IntegerGreaterThanOrEqual = 2,
13
+ /**
14
+ * The metadata value (`integer`) is equal to the guild's configured value (`integer`)
15
+ */
16
+ IntegerEqual = 3,
17
+ /**
18
+ * The metadata value (`integer`) is not equal to the guild's configured value (`integer`)
19
+ */
20
+ IntegerNotEqual = 4,
21
+ /**
22
+ * The metadata value (`ISO8601 string`) is less than or equal to the guild's configured value (`integer`; days before current date)
23
+ */
24
+ DatetimeLessThanOrEqual = 5,
25
+ /**
26
+ * The metadata value (`ISO8601 string`) is greater than or equal to the guild's configured value (`integer`; days before current date)
27
+ */
28
+ DatetimeGreaterThanOrEqual = 6,
29
+ /**
30
+ * The metadata value (`integer`) is equal to the guild's configured value (`integer`; `1`)
31
+ */
32
+ BooleanEqual = 7,
33
+ /**
34
+ * The metadata value (`integer`) is not equal to the guild's configured value (`integer`; `1`)
35
+ */
36
+ BooleanNotEqual = 8
37
+ }
38
+ /**
39
+ * The options for the linked roles package
40
+ */
41
+ export type LinkedRolesOptions = {
42
+ /**
43
+ * The metadata that you want to check for, and that should show to the end-user on Discord.
44
+ */
45
+ metadata: LinkedRoleCriteria[];
46
+ /**
47
+ * The functions that you want to use to check the metadata.
48
+ * @remarks
49
+ * If you are checking a boolean, you should return `true` or `false`.
50
+ * If you are checking an integer, you should return a number that is safe to use as an integer.
51
+ * If you are checking a datetime, you should return a Date.now() timestamp.
52
+ */
53
+ metadataCheckers: {
54
+ [name: string]: (userId: string) => Promise<number | boolean>;
55
+ };
56
+ /**
57
+ * Whether the deploy route should be disabled.
58
+ * @default false
59
+ */
60
+ disableDeployRoute?: boolean;
61
+ /**
62
+ * Whether the connect route should be disabled.
63
+ * @default false
64
+ */
65
+ disableVerifyUserRoute?: boolean;
66
+ /**
67
+ * Whether the connect callback route should be disabled.
68
+ * @default false
69
+ */
70
+ disableVerifyUserCallbackRoute?: boolean;
71
+ };
72
+ /**
73
+ * The metadata that you want to check for, and that should show to the end-user on Discord.
74
+ * @remarks You can only have 5 metadata per application, and they apply across all guilds your app is in.
75
+ */
76
+ export type LinkedRoleCriteria = {
77
+ /**
78
+ * The key of the metadata. This is only used on the code side, and is not seen by the end user.
79
+ */
80
+ key: string;
81
+ /**
82
+ * The type of metadata that you want to check for.
83
+ */
84
+ type: ApplicationRoleConnectionMetadataType;
85
+ /**
86
+ * The name of the metadata. This is what the end user will see.
87
+ */
88
+ name: string;
89
+ /**
90
+ * A description of the metadata.
91
+ */
92
+ description: string;
93
+ };
94
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,qCAAqC;IAChD;;OAEG;IACH,sBAAsB,IAAI;IAC1B;;OAEG;IACH,yBAAyB,IAAI;IAC7B;;OAEG;IACH,YAAY,IAAI;IAChB;;OAEG;IACH,eAAe,IAAI;IACnB;;OAEG;IACH,uBAAuB,IAAI;IAC3B;;OAEG;IACH,0BAA0B,IAAI;IAC9B;;OAEG;IACH,YAAY,IAAI;IAChB;;OAEG;IACH,eAAe,IAAI;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC;;OAEG;IACH,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B;;;;;;OAMG;IACH,gBAAgB,EAAE;QACjB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;KAC7D,CAAA;IACD;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;;OAGG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACxC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,IAAI,EAAE,qCAAqC,CAAA;IAC3C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;CACnB,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The type of metadata that you can check for
3
+ */
4
+ export var ApplicationRoleConnectionMetadataType;
5
+ (function (ApplicationRoleConnectionMetadataType) {
6
+ /**
7
+ * The metadata value (`integer`) is less than or equal to the guild's configured value (`integer`)
8
+ */
9
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["IntegerLessThanOrEqual"] = 1] = "IntegerLessThanOrEqual";
10
+ /**
11
+ * The metadata value (`integer`) is greater than or equal to the guild's configured value (`integer`)
12
+ */
13
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["IntegerGreaterThanOrEqual"] = 2] = "IntegerGreaterThanOrEqual";
14
+ /**
15
+ * The metadata value (`integer`) is equal to the guild's configured value (`integer`)
16
+ */
17
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["IntegerEqual"] = 3] = "IntegerEqual";
18
+ /**
19
+ * The metadata value (`integer`) is not equal to the guild's configured value (`integer`)
20
+ */
21
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["IntegerNotEqual"] = 4] = "IntegerNotEqual";
22
+ /**
23
+ * The metadata value (`ISO8601 string`) is less than or equal to the guild's configured value (`integer`; days before current date)
24
+ */
25
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["DatetimeLessThanOrEqual"] = 5] = "DatetimeLessThanOrEqual";
26
+ /**
27
+ * The metadata value (`ISO8601 string`) is greater than or equal to the guild's configured value (`integer`; days before current date)
28
+ */
29
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["DatetimeGreaterThanOrEqual"] = 6] = "DatetimeGreaterThanOrEqual";
30
+ /**
31
+ * The metadata value (`integer`) is equal to the guild's configured value (`integer`; `1`)
32
+ */
33
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["BooleanEqual"] = 7] = "BooleanEqual";
34
+ /**
35
+ * The metadata value (`integer`) is not equal to the guild's configured value (`integer`; `1`)
36
+ */
37
+ ApplicationRoleConnectionMetadataType[ApplicationRoleConnectionMetadataType["BooleanNotEqual"] = 8] = "BooleanNotEqual";
38
+ })(ApplicationRoleConnectionMetadataType || (ApplicationRoleConnectionMetadataType = {}));
39
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/plugins/linked-roles/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,qCAiCX;AAjCD,WAAY,qCAAqC;IAChD;;OAEG;IACH,qIAA0B,CAAA;IAC1B;;OAEG;IACH,2IAA6B,CAAA;IAC7B;;OAEG;IACH,iHAAgB,CAAA;IAChB;;OAEG;IACH,uHAAmB,CAAA;IACnB;;OAEG;IACH,uIAA2B,CAAA;IAC3B;;OAEG;IACH,6IAA8B,CAAA;IAC9B;;OAEG;IACH,iHAAgB,CAAA;IAChB;;OAEG;IACH,uHAAmB,CAAA;AACpB,CAAC,EAjCW,qCAAqC,KAArC,qCAAqC,QAiChD"}
@@ -1,18 +1,19 @@
1
- import { type APIDMChannel, type APIMessage, ChannelType } from "discord-api-types/v10";
1
+ import { type APIDMChannel, type ChannelType } from "discord-api-types/v10";
2
2
  import { BaseChannel } from "../abstracts/BaseChannel.js";
3
+ import type { MessagePayload } from "../types.js";
4
+ import { type IfPartial } from "../utils.js";
3
5
  /**
4
6
  * Represents a DM between two users.
5
7
  */
6
- export declare class DmChannel extends BaseChannel<ChannelType.DM> {
8
+ export declare class DmChannel<IsPartial extends boolean = false> extends BaseChannel<ChannelType.DM, IsPartial> {
9
+ rawData: APIDMChannel | null;
7
10
  /**
8
11
  * The name of the channel. This is always null for DM channels.
9
12
  */
10
- name?: null;
11
- type: ChannelType.DM;
12
- protected setSpecificData(data: APIDMChannel): void;
13
+ get name(): IfPartial<IsPartial, null>;
13
14
  /**
14
15
  * Send a message to the channel
15
16
  */
16
- send(message: APIMessage): Promise<void>;
17
+ send(message: MessagePayload): Promise<void>;
17
18
  }
18
19
  //# sourceMappingURL=DmChannel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,WAAW,EAEX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD;;GAEG;AACH,qBAAa,SAAU,SAAQ,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;IACzD;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAO;IAClB,IAAI,EAAE,WAAW,CAAC,EAAE,CAAiB;IAErC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY;IAI5C;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,UAAU;CAK9B"}
1
+ {"version":3,"file":"DmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,WAAW,EAEhB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,aAAa,CAAA;AAE9D;;GAEG;AACH,qBAAa,SAAS,CAAC,SAAS,SAAS,OAAO,GAAG,KAAK,CAAE,SAAQ,WAAW,CAC5E,WAAW,CAAC,EAAE,EACd,SAAS,CACT;IACQ,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAEpC;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAGrC;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc;CAKlC"}
@@ -1,5 +1,6 @@
1
- import { ChannelType, Routes } from "discord-api-types/v10";
1
+ import { Routes } from "discord-api-types/v10";
2
2
  import { BaseChannel } from "../abstracts/BaseChannel.js";
3
+ import { serializePayload } from "../utils.js";
3
4
  /**
4
5
  * Represents a DM between two users.
5
6
  */
@@ -7,17 +8,17 @@ export class DmChannel extends BaseChannel {
7
8
  /**
8
9
  * The name of the channel. This is always null for DM channels.
9
10
  */
10
- name = null;
11
- type = ChannelType.DM;
12
- setSpecificData(data) {
13
- this.name = data.name;
11
+ get name() {
12
+ if (!this.rawData)
13
+ return undefined;
14
+ return null;
14
15
  }
15
16
  /**
16
17
  * Send a message to the channel
17
18
  */
18
19
  async send(message) {
19
20
  this.client.rest.post(Routes.channelMessages(this.id), {
20
- body: { ...message }
21
+ body: serializePayload(message)
21
22
  });
22
23
  }
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DmChannel.js","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,WAAW,EACX,MAAM,EACN,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,WAA2B;IACzD;;OAEG;IACH,IAAI,GAAU,IAAI,CAAA;IAClB,IAAI,GAAmB,WAAW,CAAC,EAAE,CAAA;IAE3B,eAAe,CAAC,IAAkB;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAmB;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACtD,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE;SACpB,CAAC,CAAA;IACH,CAAC;CACD"}
1
+ {"version":3,"file":"DmChannel.js","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,MAAM,EACN,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9D;;GAEG;AACH,MAAM,OAAO,SAA6C,SAAQ,WAGjE;IAGA;;OAEG;IACH,IAAI,IAAI;QACP,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAkB,CAAA;QAC5C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAuB;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACtD,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;SAC/B,CAAC,CAAA;IACH,CAAC;CACD"}
@@ -1,52 +1,52 @@
1
- import { type APIGroupDMChannel, ChannelType } from "discord-api-types/v10";
1
+ import { type APIGroupDMChannel, type ChannelType } from "discord-api-types/v10";
2
2
  import { BaseChannel } from "../abstracts/BaseChannel.js";
3
+ import type { IfPartial } from "../utils.js";
3
4
  import { Message } from "./Message.js";
4
5
  import { User } from "./User.js";
5
6
  /**
6
7
  * Represents a group DM channel.
7
8
  */
8
- export declare class GroupDmChannel extends BaseChannel<ChannelType.GroupDM> {
9
+ export declare class GroupDmChannel<IsPartial extends boolean = false> extends BaseChannel<ChannelType.GroupDM, IsPartial> {
10
+ rawData: APIGroupDMChannel | null;
9
11
  /**
10
12
  * The name of the channel.
11
13
  */
12
- name?: string | null;
14
+ get name(): IfPartial<IsPartial, string | null>;
13
15
  /**
14
16
  * The recipients of the channel.
15
17
  */
16
- recipients?: User[];
17
- type: ChannelType.GroupDM;
18
+ get recipients(): IfPartial<IsPartial, User<boolean>[]>;
18
19
  /**
19
20
  * The ID of the application that created the channel, if it was created by a bot.
20
21
  */
21
- applicationId?: string | null;
22
+ get applicationId(): IfPartial<IsPartial, string | null>;
22
23
  /**
23
24
  * The icon hash of the channel.
24
25
  */
25
- icon?: string | null;
26
+ get icon(): IfPartial<IsPartial, string | null>;
27
+ /**
28
+ * Get the URL of the channel's icon.
29
+ */
30
+ get iconUrl(): IfPartial<IsPartial, string | null>;
26
31
  /**
27
32
  * The ID of the user who created the channel.
28
33
  */
29
- ownerId?: string | null;
34
+ get ownerId(): IfPartial<IsPartial, string | null>;
30
35
  /**
31
36
  * The ID of the last message sent in the channel.
32
37
  *
33
38
  * @remarks
34
39
  * This might not always resolve to a message. The ID still stays a part of the channel's data, even if the message is deleted.
35
40
  */
36
- lastMessageId?: string | null;
41
+ get lastMessageId(): IfPartial<IsPartial, string | null>;
37
42
  /**
38
43
  * Whether the channel is managed by an Oauth2 application.
39
44
  */
40
- managed?: boolean | null;
41
- protected setSpecificData(data: APIGroupDMChannel): void;
42
- /**
43
- * Get the URL of the channel's icon.
44
- */
45
- get iconUrl(): string | null;
45
+ get managed(): IfPartial<IsPartial, boolean>;
46
46
  /**
47
47
  * Get the owner of the channel.
48
48
  */
49
- get owner(): User;
49
+ get owner(): User<true>;
50
50
  /**
51
51
  * The last message sent in the channel.
52
52
  *
@@ -55,13 +55,11 @@ export declare class GroupDmChannel extends BaseChannel<ChannelType.GroupDM> {
55
55
  * This will always return a partial message, so you can use {@link Message.fetch} to get the full message data.
56
56
  *
57
57
  */
58
- get lastMessage(): Message | null;
58
+ get lastMessage(): Message<true> | null;
59
59
  /**
60
60
  * Set the name of the channel
61
61
  * @param name The new name of the channel
62
62
  */
63
63
  setName(name: string): Promise<void>;
64
- addRecipient(user: User | string): Promise<void>;
65
- removeRecipient(user: User | string): Promise<void>;
66
64
  }
67
65
  //# sourceMappingURL=GroupDmChannel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupDmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/GroupDmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,iBAAiB,EACtB,WAAW,EAEX,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;IACnE;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,IAAI,EAAE,CAAA;IACnB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAsB;IAC/C;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAExB,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,iBAAiB;IAUjD;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAI3B;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,CAGhB;IAED;;;;;;;OAOG;IACH,IAAI,WAAW,mBAMd;IAED;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM;IASpB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAiBhC,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;CAYzC"}
1
+ {"version":3,"file":"GroupDmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/GroupDmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAEhB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;GAEG;AACH,qBAAa,cAAc,CAC1B,SAAS,SAAS,OAAO,GAAG,KAAK,CAChC,SAAQ,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5C,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAEzC;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAG9C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAItD;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGvD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAG9C;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAIjD;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGjD;IAED;;;;;OAKG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGvD;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAG3C;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAGtB;IAED;;;;;;;OAOG;IACH,IAAI,WAAW,yBAMd;IAED;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM;CA4B1B"}