@discordeno/utils 21.0.1-next.fca0b40 → 22.0.1-next.011f0fe
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/Collection.d.ts.map +1 -0
- package/dist/Collection.js +112 -0
- package/dist/{types/base64.d.ts → base64.d.ts} +7 -1
- package/dist/base64.d.ts.map +1 -0
- package/dist/base64.js +339 -0
- package/dist/bucket.d.ts.map +1 -0
- package/dist/bucket.js +81 -0
- package/dist/builders/embeds.d.ts.map +1 -0
- package/dist/builders/embeds.js +305 -0
- package/dist/builders.d.ts.map +1 -0
- package/dist/builders.js +5 -0
- package/dist/casing.d.ts.map +1 -0
- package/dist/casing.js +55 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +467 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +19 -0
- package/dist/{types/images.d.ts → images.d.ts} +40 -64
- package/dist/images.d.ts.map +1 -0
- package/dist/images.js +226 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +115 -0
- package/dist/{types/oauth2.d.ts → oauth2.d.ts} +38 -0
- package/dist/oauth2.d.ts.map +1 -0
- package/dist/oauth2.js +48 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +17 -0
- package/dist/reactions.d.ts.map +1 -0
- package/dist/reactions.js +11 -0
- package/dist/snowflakes.d.ts.map +1 -0
- package/dist/snowflakes.js +11 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +20 -0
- package/dist/{types/typeguards.d.ts → typeguards.d.ts} +1 -2
- package/dist/typeguards.d.ts.map +1 -0
- package/dist/typeguards.js +18 -0
- package/dist/urlToBase64.d.ts.map +1 -0
- package/dist/urlToBase64.js +9 -0
- package/dist/urls.d.ts.map +1 -0
- package/dist/urls.js +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +21 -0
- package/package.json +16 -23
- package/dist/cjs/Collection.cjs +0 -122
- package/dist/cjs/base64.cjs +0 -276
- package/dist/cjs/bucket.cjs +0 -96
- package/dist/cjs/builders/embeds.cjs +0 -306
- package/dist/cjs/builders.cjs +0 -27
- package/dist/cjs/casing.cjs +0 -79
- package/dist/cjs/colors.cjs +0 -456
- package/dist/cjs/constants.cjs +0 -13
- package/dist/cjs/hash.cjs +0 -37
- package/dist/cjs/images.cjs +0 -149
- package/dist/cjs/index.cjs +0 -38
- package/dist/cjs/logger.cjs +0 -139
- package/dist/cjs/oauth2.cjs +0 -26
- package/dist/cjs/permissions.cjs +0 -35
- package/dist/cjs/reactions.cjs +0 -21
- package/dist/cjs/snowflakes.cjs +0 -32
- package/dist/cjs/token.cjs +0 -38
- package/dist/cjs/typeguards.cjs +0 -52
- package/dist/cjs/urlToBase64.cjs +0 -19
- package/dist/cjs/urls.cjs +0 -32
- package/dist/cjs/utils.cjs +0 -40
- package/dist/esm/Collection.js +0 -112
- package/dist/esm/base64.js +0 -262
- package/dist/esm/bucket.js +0 -81
- package/dist/esm/builders/embeds.js +0 -305
- package/dist/esm/builders.js +0 -5
- package/dist/esm/casing.js +0 -55
- package/dist/esm/colors.js +0 -467
- package/dist/esm/constants.js +0 -3
- package/dist/esm/hash.js +0 -19
- package/dist/esm/images.js +0 -204
- package/dist/esm/index.js +0 -21
- package/dist/esm/logger.js +0 -115
- package/dist/esm/oauth2.js +0 -16
- package/dist/esm/permissions.js +0 -17
- package/dist/esm/reactions.js +0 -11
- package/dist/esm/snowflakes.js +0 -11
- package/dist/esm/token.js +0 -20
- package/dist/esm/typeguards.js +0 -22
- package/dist/esm/urlToBase64.js +0 -9
- package/dist/esm/urls.js +0 -11
- package/dist/esm/utils.js +0 -21
- package/dist/types/Collection.d.ts.map +0 -1
- package/dist/types/base64.d.ts.map +0 -1
- package/dist/types/bucket.d.ts.map +0 -1
- package/dist/types/builders/embeds.d.ts.map +0 -1
- package/dist/types/builders.d.ts.map +0 -1
- package/dist/types/casing.d.ts.map +0 -1
- package/dist/types/colors.d.ts.map +0 -1
- package/dist/types/constants.d.ts +0 -2
- package/dist/types/constants.d.ts.map +0 -1
- package/dist/types/hash.d.ts.map +0 -1
- package/dist/types/images.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/logger.d.ts.map +0 -1
- package/dist/types/oauth2.d.ts.map +0 -1
- package/dist/types/permissions.d.ts.map +0 -1
- package/dist/types/reactions.d.ts.map +0 -1
- package/dist/types/snowflakes.d.ts.map +0 -1
- package/dist/types/token.d.ts.map +0 -1
- package/dist/types/typeguards.d.ts.map +0 -1
- package/dist/types/urlToBase64.d.ts.map +0 -1
- package/dist/types/urls.d.ts.map +0 -1
- package/dist/types/utils.d.ts.map +0 -1
- /package/dist/{types/Collection.d.ts → Collection.d.ts} +0 -0
- /package/dist/{types/bucket.d.ts → bucket.d.ts} +0 -0
- /package/dist/{types/builders → builders}/embeds.d.ts +0 -0
- /package/dist/{types/builders.d.ts → builders.d.ts} +0 -0
- /package/dist/{types/casing.d.ts → casing.d.ts} +0 -0
- /package/dist/{types/colors.d.ts → colors.d.ts} +0 -0
- /package/dist/{types/hash.d.ts → hash.d.ts} +0 -0
- /package/dist/{types/index.d.ts → index.d.ts} +0 -0
- /package/dist/{types/logger.d.ts → logger.d.ts} +0 -0
- /package/dist/{types/permissions.d.ts → permissions.d.ts} +0 -0
- /package/dist/{types/reactions.d.ts → reactions.d.ts} +0 -0
- /package/dist/{types/snowflakes.d.ts → snowflakes.d.ts} +0 -0
- /package/dist/{types/token.d.ts → token.d.ts} +0 -0
- /package/dist/{types/urlToBase64.d.ts → urlToBase64.d.ts} +0 -0
- /package/dist/{types/urls.d.ts → urls.d.ts} +0 -0
- /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { type BigString, type GetGuildWidgetImageQuery, type ImageFormat, type ImageSize, StickerFormatTypes } from '@discordeno/types';
|
|
2
|
+
export interface ImageOptions {
|
|
3
|
+
size?: ImageSize;
|
|
4
|
+
format?: ImageFormat;
|
|
5
|
+
}
|
|
2
6
|
/** Help format an image url. */
|
|
3
7
|
export declare function formatImageUrl(url: string, size?: ImageSize, format?: ImageFormat): string;
|
|
4
8
|
/**
|
|
@@ -17,15 +21,29 @@ export declare function emojiUrl(emojiId: BigString, animated?: boolean, format?
|
|
|
17
21
|
* Builds a URL to a user's avatar stored in the Discord CDN.
|
|
18
22
|
*
|
|
19
23
|
* @param userId - The ID of the user to get the avatar of.
|
|
24
|
+
* @param avatar - The user's avatar hash.
|
|
25
|
+
* @param options - The parameters for the building of the URL.
|
|
26
|
+
* @returns The user avatar as a URL.
|
|
27
|
+
*/
|
|
28
|
+
export declare function avatarUrl(userId: BigString, avatar: BigString, options?: ImageOptions): string;
|
|
29
|
+
/**
|
|
30
|
+
* Builds a URL to a user's default avatar stored in the Discord CDN.
|
|
31
|
+
*
|
|
32
|
+
* @param userId - The ID of the user to get the avatar of.
|
|
20
33
|
* @param discriminator - The user's discriminator. (4-digit tag after the hashtag.)
|
|
34
|
+
* @returns The user default avatar as an URL.
|
|
35
|
+
*/
|
|
36
|
+
export declare function defaultAvatarUrl(userId: BigString, discriminator: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Builds a URL to a user's display avatar stored in the Discord CDN.
|
|
39
|
+
*
|
|
40
|
+
* @param userId - The ID of the user to get the avatar of.
|
|
41
|
+
* @param discriminator - The user's discriminator. (4-digit tag after the hashtag.)
|
|
42
|
+
* @param avatar - The user's avatar hash.
|
|
21
43
|
* @param options - The parameters for the building of the URL.
|
|
22
|
-
* @returns The
|
|
44
|
+
* @returns The user display avatar as an URL.
|
|
23
45
|
*/
|
|
24
|
-
export declare function
|
|
25
|
-
avatar: BigString | undefined;
|
|
26
|
-
size?: ImageSize;
|
|
27
|
-
format?: ImageFormat;
|
|
28
|
-
}): string;
|
|
46
|
+
export declare function displayAvatarUrl(userId: BigString, discriminator: string, avatar: BigString | undefined, options?: ImageOptions): string;
|
|
29
47
|
export declare function avatarDecorationUrl(avatarDecoration: BigString): string;
|
|
30
48
|
/**
|
|
31
49
|
* Builds a URL to a user's banner stored in the Discord CDN.
|
|
@@ -34,10 +52,8 @@ export declare function avatarDecorationUrl(avatarDecoration: BigString): string
|
|
|
34
52
|
* @param options - The parameters for the building of the URL.
|
|
35
53
|
* @returns The link to the resource or `undefined` if no banner has not been set.
|
|
36
54
|
*/
|
|
37
|
-
export declare function bannerUrl(userId: BigString, options?: {
|
|
55
|
+
export declare function bannerUrl(userId: BigString, options?: ImageOptions & {
|
|
38
56
|
banner?: BigString;
|
|
39
|
-
size?: ImageSize;
|
|
40
|
-
format?: ImageFormat;
|
|
41
57
|
}): string | undefined;
|
|
42
58
|
/**
|
|
43
59
|
* Builds a URL to the guild banner stored in the Discord CDN.
|
|
@@ -46,10 +62,8 @@ export declare function bannerUrl(userId: BigString, options?: {
|
|
|
46
62
|
* @param options - The parameters for the building of the URL.
|
|
47
63
|
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
48
64
|
*/
|
|
49
|
-
export declare function guildBannerUrl(guildId: BigString, options: {
|
|
65
|
+
export declare function guildBannerUrl(guildId: BigString, options: ImageOptions & {
|
|
50
66
|
banner?: BigString;
|
|
51
|
-
size?: ImageSize;
|
|
52
|
-
format?: ImageFormat;
|
|
53
67
|
}): string | undefined;
|
|
54
68
|
/**
|
|
55
69
|
* Builds a URL to the guild icon stored in the Discord CDN.
|
|
@@ -59,10 +73,7 @@ export declare function guildBannerUrl(guildId: BigString, options: {
|
|
|
59
73
|
* @param options - The parameters for the building of the URL.
|
|
60
74
|
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
61
75
|
*/
|
|
62
|
-
export declare function guildIconUrl(guildId: BigString, imageHash: BigString | undefined, options?:
|
|
63
|
-
size?: ImageSize;
|
|
64
|
-
format?: ImageFormat;
|
|
65
|
-
}): string | undefined;
|
|
76
|
+
export declare function guildIconUrl(guildId: BigString, imageHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
66
77
|
/**
|
|
67
78
|
* Builds the URL to a guild splash stored in the Discord CDN.
|
|
68
79
|
*
|
|
@@ -71,10 +82,7 @@ export declare function guildIconUrl(guildId: BigString, imageHash: BigString |
|
|
|
71
82
|
* @param options - The parameters for the building of the URL.
|
|
72
83
|
* @returns The link to the resource or `undefined` if the guild does not have a splash image set.
|
|
73
84
|
*/
|
|
74
|
-
export declare function guildSplashUrl(guildId: BigString, imageHash: BigString | undefined, options?:
|
|
75
|
-
size?: ImageSize;
|
|
76
|
-
format?: ImageFormat;
|
|
77
|
-
}): string | undefined;
|
|
85
|
+
export declare function guildSplashUrl(guildId: BigString, imageHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
78
86
|
/**
|
|
79
87
|
* Builds the URL to a guild discovery splash stored in the Discord CDN.
|
|
80
88
|
*
|
|
@@ -83,10 +91,7 @@ export declare function guildSplashUrl(guildId: BigString, imageHash: BigString
|
|
|
83
91
|
* @param options - The parameters for the building of the URL.
|
|
84
92
|
* @returns The link to the resource or `undefined` if the guild does not have a splash image set.
|
|
85
93
|
*/
|
|
86
|
-
export declare function guildDiscoverySplashUrl(guildId: BigString, imageHash: BigString | undefined, options?:
|
|
87
|
-
size?: ImageSize;
|
|
88
|
-
format?: ImageFormat;
|
|
89
|
-
}): string | undefined;
|
|
94
|
+
export declare function guildDiscoverySplashUrl(guildId: BigString, imageHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
90
95
|
/**
|
|
91
96
|
* Builds the URL to a guild scheduled event cover stored in the Discord CDN.
|
|
92
97
|
*
|
|
@@ -94,10 +99,8 @@ export declare function guildDiscoverySplashUrl(guildId: BigString, imageHash: B
|
|
|
94
99
|
* @param options - The parameters for the building of the URL.
|
|
95
100
|
* @returns The link to the resource or `undefined`.
|
|
96
101
|
*/
|
|
97
|
-
export declare function guildScheduledEventCoverUrl(eventId: BigString, options: {
|
|
102
|
+
export declare function guildScheduledEventCoverUrl(eventId: BigString, options: ImageOptions & {
|
|
98
103
|
cover?: BigString;
|
|
99
|
-
size?: ImageSize;
|
|
100
|
-
format?: ImageFormat;
|
|
101
104
|
}): string | undefined;
|
|
102
105
|
/**
|
|
103
106
|
* Builds a URL to the guild widget image stored in the Discord CDN.
|
|
@@ -115,10 +118,8 @@ export declare function getWidgetImageUrl(guildId: BigString, options?: GetGuild
|
|
|
115
118
|
* @param options - The parameters for the building of the URL.
|
|
116
119
|
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
117
120
|
*/
|
|
118
|
-
export declare function memberAvatarUrl(guildId: BigString, userId: BigString, options?: {
|
|
121
|
+
export declare function memberAvatarUrl(guildId: BigString, userId: BigString, options?: ImageOptions & {
|
|
119
122
|
avatar?: BigString;
|
|
120
|
-
size?: ImageSize;
|
|
121
|
-
format?: ImageFormat;
|
|
122
123
|
}): string | undefined;
|
|
123
124
|
/**
|
|
124
125
|
* Builds a URL to a member's banner stored in the Discord CDN.
|
|
@@ -128,10 +129,8 @@ export declare function memberAvatarUrl(guildId: BigString, userId: BigString, o
|
|
|
128
129
|
* @param options - The parameters for the building of the URL.
|
|
129
130
|
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
130
131
|
*/
|
|
131
|
-
export declare function memberBannerUrl(guildId: BigString, userId: BigString, options?: {
|
|
132
|
+
export declare function memberBannerUrl(guildId: BigString, userId: BigString, options?: ImageOptions & {
|
|
132
133
|
banner?: BigString;
|
|
133
|
-
size?: ImageSize;
|
|
134
|
-
format?: ImageFormat;
|
|
135
134
|
}): string | undefined;
|
|
136
135
|
/**
|
|
137
136
|
* Builds the URL to an application icon stored in the Discord CDN.
|
|
@@ -141,10 +140,7 @@ export declare function memberBannerUrl(guildId: BigString, userId: BigString, o
|
|
|
141
140
|
* @param options - The parameters for the building of the URL.
|
|
142
141
|
* @returns The link to the resource or `undefined`
|
|
143
142
|
*/
|
|
144
|
-
export declare function applicationIconUrl(applicationId: BigString, iconHash: BigString | undefined, options?:
|
|
145
|
-
size?: ImageSize;
|
|
146
|
-
format?: ImageFormat;
|
|
147
|
-
}): string | undefined;
|
|
143
|
+
export declare function applicationIconUrl(applicationId: BigString, iconHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
148
144
|
/**
|
|
149
145
|
* Builds the URL to an application cover stored in the Discord CDN.
|
|
150
146
|
*
|
|
@@ -153,10 +149,7 @@ export declare function applicationIconUrl(applicationId: BigString, iconHash: B
|
|
|
153
149
|
* @param options - The parameters for the building of the URL.
|
|
154
150
|
* @returns The link to the resource or `undefined`.
|
|
155
151
|
*/
|
|
156
|
-
export declare function applicationCoverUrl(applicationId: BigString, coverHash: BigString | undefined, options?:
|
|
157
|
-
size?: ImageSize;
|
|
158
|
-
format?: ImageFormat;
|
|
159
|
-
}): string | undefined;
|
|
152
|
+
export declare function applicationCoverUrl(applicationId: BigString, coverHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
160
153
|
/**
|
|
161
154
|
* Builds the URL to an application asset stored in the Discord CDN.
|
|
162
155
|
*
|
|
@@ -165,10 +158,7 @@ export declare function applicationCoverUrl(applicationId: BigString, coverHash:
|
|
|
165
158
|
* @param options - The parameters for the building of the URL.
|
|
166
159
|
* @returns The link to the resource or `undefined`.
|
|
167
160
|
*/
|
|
168
|
-
export declare function applicationAssetUrl(applicationId: BigString, assetId: BigString | undefined, options?:
|
|
169
|
-
size?: ImageSize;
|
|
170
|
-
format?: ImageFormat;
|
|
171
|
-
}): string | undefined;
|
|
161
|
+
export declare function applicationAssetUrl(applicationId: BigString, assetId: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
172
162
|
/**
|
|
173
163
|
* Builds the URL to a sticker pack banner stored in the Discord CDN.
|
|
174
164
|
*
|
|
@@ -176,10 +166,7 @@ export declare function applicationAssetUrl(applicationId: BigString, assetId: B
|
|
|
176
166
|
* @param options - The parameters for the building of the URL.
|
|
177
167
|
* @returns The link to the resource or `undefined`.
|
|
178
168
|
*/
|
|
179
|
-
export declare function stickerPackBannerUrl(bannerAssetId: BigString | undefined, options?:
|
|
180
|
-
size?: ImageSize;
|
|
181
|
-
format?: ImageFormat;
|
|
182
|
-
}): string | undefined;
|
|
169
|
+
export declare function stickerPackBannerUrl(bannerAssetId: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
183
170
|
/**
|
|
184
171
|
* Builds the URL to a sticker stored in the Discord CDN.
|
|
185
172
|
*
|
|
@@ -187,9 +174,7 @@ export declare function stickerPackBannerUrl(bannerAssetId: BigString | undefine
|
|
|
187
174
|
* @param options - The parameters for the building of the URL.
|
|
188
175
|
* @returns The link to the resource or `undefined`.
|
|
189
176
|
*/
|
|
190
|
-
export declare function stickerUrl(stickerId: BigString | number, options?: {
|
|
191
|
-
size?: ImageSize;
|
|
192
|
-
format?: ImageFormat;
|
|
177
|
+
export declare function stickerUrl(stickerId: BigString | number, options?: ImageOptions & {
|
|
193
178
|
type?: StickerFormatTypes;
|
|
194
179
|
}): string | undefined;
|
|
195
180
|
/**
|
|
@@ -200,10 +185,7 @@ export declare function stickerUrl(stickerId: BigString | number, options?: {
|
|
|
200
185
|
* @param options - The parameters for the building of the URL.
|
|
201
186
|
* @returns The link to the resource or `undefined`.
|
|
202
187
|
*/
|
|
203
|
-
export declare function teamIconUrl(teamId: BigString, iconHash: BigString | undefined, options?:
|
|
204
|
-
size?: ImageSize;
|
|
205
|
-
format?: ImageFormat;
|
|
206
|
-
}): string | undefined;
|
|
188
|
+
export declare function teamIconUrl(teamId: BigString, iconHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
207
189
|
/**
|
|
208
190
|
* Builds the URL to a role icon stored in the Discord CDN.
|
|
209
191
|
*
|
|
@@ -212,10 +194,7 @@ export declare function teamIconUrl(teamId: BigString, iconHash: BigString | und
|
|
|
212
194
|
* @param options - The parameters for the building of the URL.
|
|
213
195
|
* @returns The link to the resource or `undefined`.
|
|
214
196
|
*/
|
|
215
|
-
export declare function roleIconUrl(roleId: BigString, iconHash: BigString | undefined, options?:
|
|
216
|
-
size?: ImageSize;
|
|
217
|
-
format?: ImageFormat;
|
|
218
|
-
}): string | undefined;
|
|
197
|
+
export declare function roleIconUrl(roleId: BigString, iconHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
219
198
|
/**
|
|
220
199
|
* Builds the URL to a guild tag badge stored in the Discord CDN.
|
|
221
200
|
*
|
|
@@ -224,8 +203,5 @@ export declare function roleIconUrl(roleId: BigString, iconHash: BigString | und
|
|
|
224
203
|
* @param options - The parameters for the building of the URL.
|
|
225
204
|
* @returns The link to the resource or `undefined` if no badge has been set.
|
|
226
205
|
*/
|
|
227
|
-
export declare function guildTagBadgeUrl(guildId: BigString, badgeHash: BigString | undefined, options?:
|
|
228
|
-
size?: ImageSize;
|
|
229
|
-
format?: ImageFormat;
|
|
230
|
-
}): string | undefined;
|
|
206
|
+
export declare function guildTagBadgeUrl(guildId: BigString, badgeHash: BigString | undefined, options?: ImageOptions): string | undefined;
|
|
231
207
|
//# sourceMappingURL=images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"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"}
|
package/dist/images.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { StickerFormatTypes } from '@discordeno/types';
|
|
2
|
+
import { iconBigintToHash } from './hash.js';
|
|
3
|
+
/** Help format an image url. */ export function formatImageUrl(url, size = 128, format) {
|
|
4
|
+
return `${url}.${format ?? (url.includes('/a_') ? 'gif' : 'webp')}?size=${size}`;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Get the url for an emoji.
|
|
8
|
+
*
|
|
9
|
+
* @param emojiId The id of the emoji
|
|
10
|
+
* @param animated Whether or not the emoji is animated
|
|
11
|
+
* @param format The format of the image, defaults to png
|
|
12
|
+
* @returns string
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* The animated parameter is used to specify the animated query parameter valid for webp images or to force the gif if the format is not set to webp.
|
|
16
|
+
*/ export function emojiUrl(emojiId, animated = false, format = 'png') {
|
|
17
|
+
return `https://cdn.discordapp.com/emojis/${emojiId}.${animated ? format === 'webp' ? 'webp' : 'gif' : format}${animated && format === 'webp' ? '?animated=true' : ''}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Builds a URL to a user's avatar stored in the Discord CDN.
|
|
21
|
+
*
|
|
22
|
+
* @param userId - The ID of the user to get the avatar of.
|
|
23
|
+
* @param avatar - The user's avatar hash.
|
|
24
|
+
* @param options - The parameters for the building of the URL.
|
|
25
|
+
* @returns The user avatar as a URL.
|
|
26
|
+
*/ export function avatarUrl(userId, avatar, options) {
|
|
27
|
+
return formatImageUrl(`https://cdn.discordapp.com/avatars/${userId}/${typeof avatar === 'string' ? avatar : iconBigintToHash(avatar)}`, options?.size ?? 128, options?.format);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Builds a URL to a user's default avatar stored in the Discord CDN.
|
|
31
|
+
*
|
|
32
|
+
* @param userId - The ID of the user to get the avatar of.
|
|
33
|
+
* @param discriminator - The user's discriminator. (4-digit tag after the hashtag.)
|
|
34
|
+
* @returns The user default avatar as an URL.
|
|
35
|
+
*/ export function defaultAvatarUrl(userId, discriminator) {
|
|
36
|
+
const isLegacy = discriminator === '0' || discriminator === '0000';
|
|
37
|
+
const index = isLegacy ? (BigInt(userId) >> 22n) % 6n : Number(discriminator) % 5;
|
|
38
|
+
return `https://cdn.discordapp.com/embed/avatars/${index}.png`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Builds a URL to a user's display avatar stored in the Discord CDN.
|
|
42
|
+
*
|
|
43
|
+
* @param userId - The ID of the user to get the avatar of.
|
|
44
|
+
* @param discriminator - The user's discriminator. (4-digit tag after the hashtag.)
|
|
45
|
+
* @param avatar - The user's avatar hash.
|
|
46
|
+
* @param options - The parameters for the building of the URL.
|
|
47
|
+
* @returns The user display avatar as an URL.
|
|
48
|
+
*/ export function displayAvatarUrl(userId, discriminator, avatar, options) {
|
|
49
|
+
return avatar ? avatarUrl(userId, avatar, options) : defaultAvatarUrl(userId, discriminator);
|
|
50
|
+
}
|
|
51
|
+
export function avatarDecorationUrl(avatarDecoration) {
|
|
52
|
+
return `https://cdn.discordapp.com/avatar-decoration-presets/${typeof avatarDecoration === 'string' ? avatarDecoration : iconBigintToHash(avatarDecoration)}.png`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Builds a URL to a user's banner stored in the Discord CDN.
|
|
56
|
+
*
|
|
57
|
+
* @param userId - The ID of the user to get the banner of.
|
|
58
|
+
* @param options - The parameters for the building of the URL.
|
|
59
|
+
* @returns The link to the resource or `undefined` if no banner has not been set.
|
|
60
|
+
*/ export function bannerUrl(userId, options) {
|
|
61
|
+
return options?.banner ? formatImageUrl(`https://cdn.discordapp.com/banners/${userId}/${typeof options.banner === 'string' ? options.banner : iconBigintToHash(options.banner)}`, options?.size ?? 128, options?.format) : undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Builds a URL to the guild banner stored in the Discord CDN.
|
|
65
|
+
*
|
|
66
|
+
* @param guildId - The ID of the guild to get the link to the banner for.
|
|
67
|
+
* @param options - The parameters for the building of the URL.
|
|
68
|
+
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
69
|
+
*/ export function guildBannerUrl(guildId, options) {
|
|
70
|
+
return options.banner ? formatImageUrl(`https://cdn.discordapp.com/banners/${guildId}/${typeof options.banner === 'string' ? options.banner : iconBigintToHash(options.banner)}`, options.size ?? 128, options.format) : undefined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Builds a URL to the guild icon stored in the Discord CDN.
|
|
74
|
+
*
|
|
75
|
+
* @param guildId - The ID of the guild to get the link to the banner for.
|
|
76
|
+
* @param imageHash - The hash identifying the event cover image.
|
|
77
|
+
* @param options - The parameters for the building of the URL.
|
|
78
|
+
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
79
|
+
*/ export function guildIconUrl(guildId, imageHash, options) {
|
|
80
|
+
return imageHash ? formatImageUrl(`https://cdn.discordapp.com/icons/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Builds the URL to a guild splash stored in the Discord CDN.
|
|
84
|
+
*
|
|
85
|
+
* @param guildId - The ID of the guild to get the splash of.
|
|
86
|
+
* @param imageHash - The hash identifying the splash image.
|
|
87
|
+
* @param options - The parameters for the building of the URL.
|
|
88
|
+
* @returns The link to the resource or `undefined` if the guild does not have a splash image set.
|
|
89
|
+
*/ export function guildSplashUrl(guildId, imageHash, options) {
|
|
90
|
+
return imageHash ? formatImageUrl(`https://cdn.discordapp.com/splashes/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Builds the URL to a guild discovery splash stored in the Discord CDN.
|
|
94
|
+
*
|
|
95
|
+
* @param guildId - The ID of the guild to get the splash of.
|
|
96
|
+
* @param imageHash - The hash identifying the discovery splash image.
|
|
97
|
+
* @param options - The parameters for the building of the URL.
|
|
98
|
+
* @returns The link to the resource or `undefined` if the guild does not have a splash image set.
|
|
99
|
+
*/ export function guildDiscoverySplashUrl(guildId, imageHash, options) {
|
|
100
|
+
return imageHash ? formatImageUrl(`https://cdn.discordapp.com/discovery-splashes/${guildId}/${typeof imageHash === 'string' ? imageHash : iconBigintToHash(imageHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Builds the URL to a guild scheduled event cover stored in the Discord CDN.
|
|
104
|
+
*
|
|
105
|
+
* @param eventId - The ID of the scheduled event to get the cover of.
|
|
106
|
+
* @param options - The parameters for the building of the URL.
|
|
107
|
+
* @returns The link to the resource or `undefined`.
|
|
108
|
+
*/ export function guildScheduledEventCoverUrl(eventId, options) {
|
|
109
|
+
return options.cover ? formatImageUrl(`https://cdn.discordapp.com/guild-events/${eventId}/${typeof options.cover === 'string' ? options.cover : iconBigintToHash(options.cover)}`, options.size ?? 128, options.format) : undefined;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Builds a URL to the guild widget image stored in the Discord CDN.
|
|
113
|
+
*
|
|
114
|
+
* @param guildId - The ID of the guild to get the link to the widget image for.
|
|
115
|
+
* @param options - The parameters for the building of the URL.
|
|
116
|
+
* @returns The link to the resource.
|
|
117
|
+
*/ export function getWidgetImageUrl(guildId, options) {
|
|
118
|
+
let url = `https://discordapp.com/api/guilds/${guildId}/widget.png`;
|
|
119
|
+
if (options?.style) {
|
|
120
|
+
url += `?style=${options.style}`;
|
|
121
|
+
}
|
|
122
|
+
return url;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Builds a URL to a member's avatar stored in the Discord CDN.
|
|
126
|
+
*
|
|
127
|
+
* @param guildId - The ID of the guild where the member is
|
|
128
|
+
* @param userId - The ID of the user to get the avatar of.
|
|
129
|
+
* @param options - The parameters for the building of the URL.
|
|
130
|
+
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
131
|
+
*/ export function memberAvatarUrl(guildId, userId, options) {
|
|
132
|
+
return options?.avatar ? formatImageUrl(`https://cdn.discordapp.com/guilds/${guildId}/users/${userId}/avatars/${typeof options.avatar === 'string' ? options.avatar : iconBigintToHash(options.avatar)}`, options?.size ?? 128, options?.format) : undefined;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Builds a URL to a member's banner stored in the Discord CDN.
|
|
136
|
+
*
|
|
137
|
+
* @param guildId - The ID of the guild where the member is
|
|
138
|
+
* @param userId - The ID of the user to get the banner of.
|
|
139
|
+
* @param options - The parameters for the building of the URL.
|
|
140
|
+
* @returns The link to the resource or `undefined` if no banner has been set.
|
|
141
|
+
*/ export function memberBannerUrl(guildId, userId, options) {
|
|
142
|
+
return options?.banner ? formatImageUrl(`https://cdn.discordapp.com/guilds/${guildId}/users/${userId}/banners/${typeof options.banner === 'string' ? options.banner : iconBigintToHash(options.banner)}`, options?.size ?? 128, options?.format) : undefined;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Builds the URL to an application icon stored in the Discord CDN.
|
|
146
|
+
*
|
|
147
|
+
* @param applicationId - The ID of the application to get the icon of.
|
|
148
|
+
* @param iconHash - The hash identifying the application icon.
|
|
149
|
+
* @param options - The parameters for the building of the URL.
|
|
150
|
+
* @returns The link to the resource or `undefined`
|
|
151
|
+
*/ export function applicationIconUrl(applicationId, iconHash, options) {
|
|
152
|
+
return iconHash ? formatImageUrl(`https://cdn.discordapp.com/app-icons/${applicationId}/${typeof iconHash === 'string' ? iconHash : iconBigintToHash(iconHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Builds the URL to an application cover stored in the Discord CDN.
|
|
156
|
+
*
|
|
157
|
+
* @param applicationId - The ID of the application to get the cover of.
|
|
158
|
+
* @param coverHash - The hash identifying the application cover.
|
|
159
|
+
* @param options - The parameters for the building of the URL.
|
|
160
|
+
* @returns The link to the resource or `undefined`.
|
|
161
|
+
*/ export function applicationCoverUrl(applicationId, coverHash, options) {
|
|
162
|
+
return coverHash ? formatImageUrl(`https://cdn.discordapp.com/app-icons/${applicationId}/${typeof coverHash === 'string' ? coverHash : iconBigintToHash(coverHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Builds the URL to an application asset stored in the Discord CDN.
|
|
166
|
+
*
|
|
167
|
+
* @param applicationId - The ID of the application to get the asset of.
|
|
168
|
+
* @param assetId - The id identifying the application asset.
|
|
169
|
+
* @param options - The parameters for the building of the URL.
|
|
170
|
+
* @returns The link to the resource or `undefined`.
|
|
171
|
+
*/ export function applicationAssetUrl(applicationId, assetId, options) {
|
|
172
|
+
return assetId ? formatImageUrl(`https://cdn.discordapp.com/app-icons/${applicationId}/${typeof assetId === 'string' ? assetId : iconBigintToHash(assetId)}`, options?.size ?? 128, options?.format) : undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Builds the URL to a sticker pack banner stored in the Discord CDN.
|
|
176
|
+
*
|
|
177
|
+
* @param bannerAssetId - The ID of the banner asset for the sticker pack.
|
|
178
|
+
* @param options - The parameters for the building of the URL.
|
|
179
|
+
* @returns The link to the resource or `undefined`.
|
|
180
|
+
*/ export function stickerPackBannerUrl(bannerAssetId, options) {
|
|
181
|
+
return bannerAssetId ? formatImageUrl(`https://cdn.discordapp.com/app-assets/710982414301790216/store/${typeof bannerAssetId === 'string' ? bannerAssetId : iconBigintToHash(bannerAssetId)}`, options?.size ?? 128, options?.format) : undefined;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Builds the URL to a sticker stored in the Discord CDN.
|
|
185
|
+
*
|
|
186
|
+
* @param stickerId - The ID of the sticker to get the icon of
|
|
187
|
+
* @param options - The parameters for the building of the URL.
|
|
188
|
+
* @returns The link to the resource or `undefined`.
|
|
189
|
+
*/ export function stickerUrl(stickerId, options) {
|
|
190
|
+
if (!stickerId) return;
|
|
191
|
+
const url = options?.type === StickerFormatTypes.Gif ? `https://media.discordapp.net/stickers/${stickerId}` : `https://cdn.discordapp.com/stickers/${stickerId}`;
|
|
192
|
+
return formatImageUrl(url, options?.size ?? 128, options?.format);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Builds the URL to a team icon stored in the Discord CDN.
|
|
196
|
+
*
|
|
197
|
+
* @param teamId - The ID of the team to get the icon of
|
|
198
|
+
* @param iconHash - The hash of the team icon.
|
|
199
|
+
* @param options - The parameters for the building of the URL.
|
|
200
|
+
* @returns The link to the resource or `undefined`.
|
|
201
|
+
*/ export function teamIconUrl(teamId, iconHash, options) {
|
|
202
|
+
return iconHash ? formatImageUrl(`https://cdn.discordapp.com/team-icons/${teamId}/store/${typeof iconHash === 'string' ? iconHash : iconBigintToHash(iconHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Builds the URL to a role icon stored in the Discord CDN.
|
|
206
|
+
*
|
|
207
|
+
* @param roleId - The ID of the role to get the icon of
|
|
208
|
+
* @param iconHash - The hash of the role icon.
|
|
209
|
+
* @param options - The parameters for the building of the URL.
|
|
210
|
+
* @returns The link to the resource or `undefined`.
|
|
211
|
+
*/ export function roleIconUrl(roleId, iconHash, options) {
|
|
212
|
+
return iconHash ? formatImageUrl(`https://cdn.discordapp.com/role-icons/${roleId}/${typeof iconHash === 'string' ? iconHash : iconBigintToHash(iconHash)}`, options?.size ?? 128, options?.format) : undefined;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Builds the URL to a guild tag badge stored in the Discord CDN.
|
|
216
|
+
*
|
|
217
|
+
* @param guildId - The ID of the guild to get the tag badge of
|
|
218
|
+
* @param badgeHash - The hash identifying the guild tag badge.
|
|
219
|
+
* @param options - The parameters for the building of the URL.
|
|
220
|
+
* @returns The link to the resource or `undefined` if no badge has been set.
|
|
221
|
+
*/ export function guildTagBadgeUrl(guildId, badgeHash, options) {
|
|
222
|
+
if (badgeHash === undefined) return undefined;
|
|
223
|
+
return formatImageUrl(`https://cdn.discordapp.com/guild-tag-badges/${guildId}/${badgeHash}`, options?.size ?? 128, options?.format);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbWFnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCaWdTdHJpbmcsIHR5cGUgR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5LCB0eXBlIEltYWdlRm9ybWF0LCB0eXBlIEltYWdlU2l6ZSwgU3RpY2tlckZvcm1hdFR5cGVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgeyBpY29uQmlnaW50VG9IYXNoIH0gZnJvbSAnLi9oYXNoLmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlT3B0aW9ucyB7XG4gIHNpemU/OiBJbWFnZVNpemVcbiAgZm9ybWF0PzogSW1hZ2VGb3JtYXRcbn1cblxuLyoqIEhlbHAgZm9ybWF0IGFuIGltYWdlIHVybC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRJbWFnZVVybCh1cmw6IHN0cmluZywgc2l6ZTogSW1hZ2VTaXplID0gMTI4LCBmb3JtYXQ/OiBJbWFnZUZvcm1hdCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHt1cmx9LiR7Zm9ybWF0ID8/ICh1cmwuaW5jbHVkZXMoJy9hXycpID8gJ2dpZicgOiAnd2VicCcpfT9zaXplPSR7c2l6ZX1gXG59XG5cbi8qKlxuICogR2V0IHRoZSB1cmwgZm9yIGFuIGVtb2ppLlxuICpcbiAqIEBwYXJhbSBlbW9qaUlkIFRoZSBpZCBvZiB0aGUgZW1vamlcbiAqIEBwYXJhbSBhbmltYXRlZCBXaGV0aGVyIG9yIG5vdCB0aGUgZW1vamkgaXMgYW5pbWF0ZWRcbiAqIEBwYXJhbSBmb3JtYXQgVGhlIGZvcm1hdCBvZiB0aGUgaW1hZ2UsIGRlZmF1bHRzIHRvIHBuZ1xuICogQHJldHVybnMgc3RyaW5nXG4gKlxuICogQHJlbWFya3NcbiAqIFRoZSBhbmltYXRlZCBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBhbmltYXRlZCBxdWVyeSBwYXJhbWV0ZXIgdmFsaWQgZm9yIHdlYnAgaW1hZ2VzIG9yIHRvIGZvcmNlIHRoZSBnaWYgaWYgdGhlIGZvcm1hdCBpcyBub3Qgc2V0IHRvIHdlYnAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbW9qaVVybChlbW9qaUlkOiBCaWdTdHJpbmcsIGFuaW1hdGVkID0gZmFsc2UsIGZvcm1hdDogSW1hZ2VGb3JtYXQgPSAncG5nJyk6IHN0cmluZyB7XG4gIHJldHVybiBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZW1vamlzLyR7ZW1vamlJZH0uJHthbmltYXRlZCA/IChmb3JtYXQgPT09ICd3ZWJwJyA/ICd3ZWJwJyA6ICdnaWYnKSA6IGZvcm1hdH0ke2FuaW1hdGVkICYmIGZvcm1hdCA9PT0gJ3dlYnAnID8gJz9hbmltYXRlZD10cnVlJyA6ICcnfWBcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gYSB1c2VyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGF2YXRhciBvZi5cbiAqIEBwYXJhbSBhdmF0YXIgLSBUaGUgdXNlcidzIGF2YXRhciBoYXNoLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgdXNlciBhdmF0YXIgYXMgYSBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdmF0YXJVcmwodXNlcklkOiBCaWdTdHJpbmcsIGF2YXRhcjogQmlnU3RyaW5nLCBvcHRpb25zPzogSW1hZ2VPcHRpb25zKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdEltYWdlVXJsKFxuICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXJzLyR7dXNlcklkfS8ke3R5cGVvZiBhdmF0YXIgPT09ICdzdHJpbmcnID8gYXZhdGFyIDogaWNvbkJpZ2ludFRvSGFzaChhdmF0YXIpfWAsXG4gICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgb3B0aW9ucz8uZm9ybWF0LFxuICApXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgdXNlcidzIGRlZmF1bHQgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHVzZXJJZCAtIFRoZSBJRCBvZiB0aGUgdXNlciB0byBnZXQgdGhlIGF2YXRhciBvZi5cbiAqIEBwYXJhbSBkaXNjcmltaW5hdG9yIC0gVGhlIHVzZXIncyBkaXNjcmltaW5hdG9yLiAoNC1kaWdpdCB0YWcgYWZ0ZXIgdGhlIGhhc2h0YWcuKVxuICogQHJldHVybnMgVGhlIHVzZXIgZGVmYXVsdCBhdmF0YXIgYXMgYW4gVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEF2YXRhclVybCh1c2VySWQ6IEJpZ1N0cmluZywgZGlzY3JpbWluYXRvcjogc3RyaW5nKSB7XG4gIGNvbnN0IGlzTGVnYWN5ID0gZGlzY3JpbWluYXRvciA9PT0gJzAnIHx8IGRpc2NyaW1pbmF0b3IgPT09ICcwMDAwJ1xuICBjb25zdCBpbmRleCA9IGlzTGVnYWN5ID8gKEJpZ0ludCh1c2VySWQpID4+IDIybikgJSA2biA6IE51bWJlcihkaXNjcmltaW5hdG9yKSAlIDVcblxuICByZXR1cm4gYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2VtYmVkL2F2YXRhcnMvJHtpbmRleH0ucG5nYFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byBhIHVzZXIncyBkaXNwbGF5IGF2YXRhciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBhdmF0YXIgb2YuXG4gKiBAcGFyYW0gZGlzY3JpbWluYXRvciAtIFRoZSB1c2VyJ3MgZGlzY3JpbWluYXRvci4gKDQtZGlnaXQgdGFnIGFmdGVyIHRoZSBoYXNodGFnLilcbiAqIEBwYXJhbSBhdmF0YXIgLSBUaGUgdXNlcidzIGF2YXRhciBoYXNoLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgdXNlciBkaXNwbGF5IGF2YXRhciBhcyBhbiBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5QXZhdGFyVXJsKHVzZXJJZDogQmlnU3RyaW5nLCBkaXNjcmltaW5hdG9yOiBzdHJpbmcsIGF2YXRhcjogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLCBvcHRpb25zPzogSW1hZ2VPcHRpb25zKTogc3RyaW5nIHtcbiAgcmV0dXJuIGF2YXRhciA/IGF2YXRhclVybCh1c2VySWQsIGF2YXRhciwgb3B0aW9ucykgOiBkZWZhdWx0QXZhdGFyVXJsKHVzZXJJZCwgZGlzY3JpbWluYXRvcilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF2YXRhckRlY29yYXRpb25VcmwoYXZhdGFyRGVjb3JhdGlvbjogQmlnU3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hdmF0YXItZGVjb3JhdGlvbi1wcmVzZXRzLyR7XG4gICAgdHlwZW9mIGF2YXRhckRlY29yYXRpb24gPT09ICdzdHJpbmcnID8gYXZhdGFyRGVjb3JhdGlvbiA6IGljb25CaWdpbnRUb0hhc2goYXZhdGFyRGVjb3JhdGlvbilcbiAgfS5wbmdgXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgdXNlcidzIGJhbm5lciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIG5vdCBiZWVuIHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhbm5lclVybCh1c2VySWQ6IEJpZ1N0cmluZywgb3B0aW9ucz86IEltYWdlT3B0aW9ucyAmIHsgYmFubmVyPzogQmlnU3RyaW5nIH0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucz8uYmFubmVyXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2Jhbm5lcnMvJHt1c2VySWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgYmFubmVyIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEJhbm5lclVybChndWlsZElkOiBCaWdTdHJpbmcsIG9wdGlvbnM6IEltYWdlT3B0aW9ucyAmIHsgYmFubmVyPzogQmlnU3RyaW5nIH0pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3B0aW9ucy5iYW5uZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vYmFubmVycy8ke2d1aWxkSWR9LyR7dHlwZW9mIG9wdGlvbnMuYmFubmVyID09PSAnc3RyaW5nJyA/IG9wdGlvbnMuYmFubmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmJhbm5lcil9YCxcbiAgICAgICAgb3B0aW9ucy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBVUkwgdG8gdGhlIGd1aWxkIGljb24gc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaW5rIHRvIHRoZSBiYW5uZXIgZm9yLlxuICogQHBhcmFtIGltYWdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBldmVudCBjb3ZlciBpbWFnZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgIGlmIG5vIGJhbm5lciBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZEljb25VcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9ucz86IEltYWdlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpbWFnZUhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vaWNvbnMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHNwbGFzaCBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHNwbGFzaCBvZi5cbiAqIEBwYXJhbSBpbWFnZUhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgc3BsYXNoIGltYWdlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGd1aWxkIGRvZXMgbm90IGhhdmUgYSBzcGxhc2ggaW1hZ2Ugc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRTcGxhc2hVcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBpbWFnZUhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9ucz86IEltYWdlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpbWFnZUhhc2hcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIGRpc2NvdmVyeSBzcGxhc2ggc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBzcGxhc2ggb2YuXG4gKiBAcGFyYW0gaW1hZ2VIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIGRpc2NvdmVyeSBzcGxhc2ggaW1hZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZ3VpbGQgZG9lcyBub3QgaGF2ZSBhIHNwbGFzaCBpbWFnZSBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZERpc2NvdmVyeVNwbGFzaFVybChndWlsZElkOiBCaWdTdHJpbmcsIGltYWdlSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLCBvcHRpb25zPzogSW1hZ2VPcHRpb25zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGltYWdlSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9kaXNjb3Zlcnktc3BsYXNoZXMvJHtndWlsZElkfS8ke3R5cGVvZiBpbWFnZUhhc2ggPT09ICdzdHJpbmcnID8gaW1hZ2VIYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpbWFnZUhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHNjaGVkdWxlZCBldmVudCBjb3ZlciBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBldmVudElkIC0gVGhlIElEIG9mIHRoZSBzY2hlZHVsZWQgZXZlbnQgdG8gZ2V0IHRoZSBjb3ZlciBvZi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3VpbGRTY2hlZHVsZWRFdmVudENvdmVyVXJsKGV2ZW50SWQ6IEJpZ1N0cmluZywgb3B0aW9uczogSW1hZ2VPcHRpb25zICYgeyBjb3Zlcj86IEJpZ1N0cmluZyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnMuY292ZXJcbiAgICA/IGZvcm1hdEltYWdlVXJsKFxuICAgICAgICBgaHR0cHM6Ly9jZG4uZGlzY29yZGFwcC5jb20vZ3VpbGQtZXZlbnRzLyR7ZXZlbnRJZH0vJHt0eXBlb2Ygb3B0aW9ucy5jb3ZlciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmNvdmVyIDogaWNvbkJpZ2ludFRvSGFzaChvcHRpb25zLmNvdmVyKX1gLFxuICAgICAgICBvcHRpb25zLnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zLmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyBhIFVSTCB0byB0aGUgZ3VpbGQgd2lkZ2V0IGltYWdlIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHRvIGdldCB0aGUgbGluayB0byB0aGUgd2lkZ2V0IGltYWdlIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lkZ2V0SW1hZ2VVcmwoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogR2V0R3VpbGRXaWRnZXRJbWFnZVF1ZXJ5KTogc3RyaW5nIHtcbiAgbGV0IHVybCA9IGBodHRwczovL2Rpc2NvcmRhcHAuY29tL2FwaS9ndWlsZHMvJHtndWlsZElkfS93aWRnZXQucG5nYFxuXG4gIGlmIChvcHRpb25zPy5zdHlsZSkge1xuICAgIHVybCArPSBgP3N0eWxlPSR7b3B0aW9ucy5zdHlsZX1gXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYXZhdGFyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBhdmF0YXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQXZhdGFyVXJsKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMgJiB7IGF2YXRhcj86IEJpZ1N0cmluZyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmF2YXRhclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYXZhdGFycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmF2YXRhciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmF2YXRhciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5hdmF0YXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIGEgVVJMIHRvIGEgbWVtYmVyJ3MgYmFubmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGd1aWxkSWQgLSBUaGUgSUQgb2YgdGhlIGd1aWxkIHdoZXJlIHRoZSBtZW1iZXIgaXNcbiAqIEBwYXJhbSB1c2VySWQgLSBUaGUgSUQgb2YgdGhlIHVzZXIgdG8gZ2V0IHRoZSBiYW5uZXIgb2YuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYW5uZXIgaGFzIGJlZW4gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtYmVyQmFubmVyVXJsKGd1aWxkSWQ6IEJpZ1N0cmluZywgdXNlcklkOiBCaWdTdHJpbmcsIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMgJiB7IGJhbm5lcj86IEJpZ1N0cmluZyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmJhbm5lclxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9ndWlsZHMvJHtndWlsZElkfS91c2Vycy8ke3VzZXJJZH0vYmFubmVycy8ke1xuICAgICAgICAgIHR5cGVvZiBvcHRpb25zLmJhbm5lciA9PT0gJ3N0cmluZycgPyBvcHRpb25zLmJhbm5lciA6IGljb25CaWdpbnRUb0hhc2gob3B0aW9ucy5iYW5uZXIpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYW4gYXBwbGljYXRpb24gaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBhcHBsaWNhdGlvbklkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiB0byBnZXQgdGhlIGljb24gb2YuXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gaWNvbi5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkljb25VcmwoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBpY29uSGFzaDogQmlnU3RyaW5nIHwgdW5kZWZpbmVkLCBvcHRpb25zPzogSW1hZ2VPcHRpb25zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGljb25IYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2FwcC1pY29ucy8ke2FwcGxpY2F0aW9uSWR9LyR7dHlwZW9mIGljb25IYXNoID09PSAnc3RyaW5nJyA/IGljb25IYXNoIDogaWNvbkJpZ2ludFRvSGFzaChpY29uSGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGFuIGFwcGxpY2F0aW9uIGNvdmVyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgY292ZXIgb2YuXG4gKiBAcGFyYW0gY292ZXJIYXNoIC0gVGhlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIGFwcGxpY2F0aW9uIGNvdmVyLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBsaWNhdGlvbkNvdmVyVXJsKGFwcGxpY2F0aW9uSWQ6IEJpZ1N0cmluZywgY292ZXJIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gY292ZXJIYXNoXG4gICAgPyBmb3JtYXRJbWFnZVVybChcbiAgICAgICAgYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2FwcC1pY29ucy8ke2FwcGxpY2F0aW9uSWR9LyR7dHlwZW9mIGNvdmVySGFzaCA9PT0gJ3N0cmluZycgPyBjb3Zlckhhc2ggOiBpY29uQmlnaW50VG9IYXNoKGNvdmVySGFzaCl9YCxcbiAgICAgICAgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsXG4gICAgICAgIG9wdGlvbnM/LmZvcm1hdCxcbiAgICAgIClcbiAgICA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgVVJMIHRvIGFuIGFwcGxpY2F0aW9uIGFzc2V0IHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIGFwcGxpY2F0aW9uSWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIGdldCB0aGUgYXNzZXQgb2YuXG4gKiBAcGFyYW0gYXNzZXRJZCAtIFRoZSBpZCBpZGVudGlmeWluZyB0aGUgYXBwbGljYXRpb24gYXNzZXQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uQXNzZXRVcmwoYXBwbGljYXRpb25JZDogQmlnU3RyaW5nLCBhc3NldElkOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYXNzZXRJZFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtaWNvbnMvJHthcHBsaWNhdGlvbklkfS8ke3R5cGVvZiBhc3NldElkID09PSAnc3RyaW5nJyA/IGFzc2V0SWQgOiBpY29uQmlnaW50VG9IYXNoKGFzc2V0SWQpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHN0aWNrZXIgcGFjayBiYW5uZXIgc3RvcmVkIGluIHRoZSBEaXNjb3JkIENETi5cbiAqXG4gKiBAcGFyYW0gYmFubmVyQXNzZXRJZCAtIFRoZSBJRCBvZiB0aGUgYmFubmVyIGFzc2V0IGZvciB0aGUgc3RpY2tlciBwYWNrLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGlja2VyUGFja0Jhbm5lclVybChiYW5uZXJBc3NldElkOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gYmFubmVyQXNzZXRJZFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9hcHAtYXNzZXRzLzcxMDk4MjQxNDMwMTc5MDIxNi9zdG9yZS8ke1xuICAgICAgICAgIHR5cGVvZiBiYW5uZXJBc3NldElkID09PSAnc3RyaW5nJyA/IGJhbm5lckFzc2V0SWQgOiBpY29uQmlnaW50VG9IYXNoKGJhbm5lckFzc2V0SWQpXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zPy5zaXplID8/IDEyOCxcbiAgICAgICAgb3B0aW9ucz8uZm9ybWF0LFxuICAgICAgKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBVUkwgdG8gYSBzdGlja2VyIHN0b3JlZCBpbiB0aGUgRGlzY29yZCBDRE4uXG4gKlxuICogQHBhcmFtIHN0aWNrZXJJZCAtIFRoZSBJRCBvZiB0aGUgc3RpY2tlciB0byBnZXQgdGhlIGljb24gb2ZcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBidWlsZGluZyBvZiB0aGUgVVJMLlxuICogQHJldHVybnMgVGhlIGxpbmsgdG8gdGhlIHJlc291cmNlIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RpY2tlclVybChzdGlja2VySWQ6IEJpZ1N0cmluZyB8IG51bWJlciwgb3B0aW9ucz86IEltYWdlT3B0aW9ucyAmIHsgdHlwZT86IFN0aWNrZXJGb3JtYXRUeXBlcyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzdGlja2VySWQpIHJldHVyblxuXG4gIGNvbnN0IHVybCA9XG4gICAgb3B0aW9ucz8udHlwZSA9PT0gU3RpY2tlckZvcm1hdFR5cGVzLkdpZlxuICAgICAgPyBgaHR0cHM6Ly9tZWRpYS5kaXNjb3JkYXBwLm5ldC9zdGlja2Vycy8ke3N0aWNrZXJJZH1gXG4gICAgICA6IGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9zdGlja2Vycy8ke3N0aWNrZXJJZH1gXG5cbiAgcmV0dXJuIGZvcm1hdEltYWdlVXJsKHVybCwgb3B0aW9ucz8uc2l6ZSA/PyAxMjgsIG9wdGlvbnM/LmZvcm1hdClcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHRlYW0gaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSB0ZWFtSWQgLSBUaGUgSUQgb2YgdGhlIHRlYW0gdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBvZiB0aGUgdGVhbSBpY29uLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZWFtSWNvblVybCh0ZWFtSWQ6IEJpZ1N0cmluZywgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9ucz86IEltYWdlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS90ZWFtLWljb25zLyR7dGVhbUlkfS9zdG9yZS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIHJvbGUgaWNvbiBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gZ2V0IHRoZSBpY29uIG9mXG4gKiBAcGFyYW0gaWNvbkhhc2ggLSBUaGUgaGFzaCBvZiB0aGUgcm9sZSBpY29uLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJ1aWxkaW5nIG9mIHRoZSBVUkwuXG4gKiBAcmV0dXJucyBUaGUgbGluayB0byB0aGUgcmVzb3VyY2Ugb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb2xlSWNvblVybChyb2xlSWQ6IEJpZ1N0cmluZywgaWNvbkhhc2g6IEJpZ1N0cmluZyB8IHVuZGVmaW5lZCwgb3B0aW9ucz86IEltYWdlT3B0aW9ucyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBpY29uSGFzaFxuICAgID8gZm9ybWF0SW1hZ2VVcmwoXG4gICAgICAgIGBodHRwczovL2Nkbi5kaXNjb3JkYXBwLmNvbS9yb2xlLWljb25zLyR7cm9sZUlkfS8ke3R5cGVvZiBpY29uSGFzaCA9PT0gJ3N0cmluZycgPyBpY29uSGFzaCA6IGljb25CaWdpbnRUb0hhc2goaWNvbkhhc2gpfWAsXG4gICAgICAgIG9wdGlvbnM/LnNpemUgPz8gMTI4LFxuICAgICAgICBvcHRpb25zPy5mb3JtYXQsXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIFVSTCB0byBhIGd1aWxkIHRhZyBiYWRnZSBzdG9yZWQgaW4gdGhlIERpc2NvcmQgQ0ROLlxuICpcbiAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0byBnZXQgdGhlIHRhZyBiYWRnZSBvZlxuICogQHBhcmFtIGJhZGdlSGFzaCAtIFRoZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBndWlsZCB0YWcgYmFkZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgYnVpbGRpbmcgb2YgdGhlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBsaW5rIHRvIHRoZSByZXNvdXJjZSBvciBgdW5kZWZpbmVkYCBpZiBubyBiYWRnZSBoYXMgYmVlbiBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWlsZFRhZ0JhZGdlVXJsKGd1aWxkSWQ6IEJpZ1N0cmluZywgYmFkZ2VIYXNoOiBCaWdTdHJpbmcgfCB1bmRlZmluZWQsIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoYmFkZ2VIYXNoID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWRcblxuICByZXR1cm4gZm9ybWF0SW1hZ2VVcmwoYGh0dHBzOi8vY2RuLmRpc2NvcmRhcHAuY29tL2d1aWxkLXRhZy1iYWRnZXMvJHtndWlsZElkfS8ke2JhZGdlSGFzaH1gLCBvcHRpb25zPy5zaXplID8/IDEyOCwgb3B0aW9ucz8uZm9ybWF0KVxufVxuIl0sIm5hbWVzIjpbIlN0aWNrZXJGb3JtYXRUeXBlcyIsImljb25CaWdpbnRUb0hhc2giLCJmb3JtYXRJbWFnZVVybCIsInVybCIsInNpemUiLCJmb3JtYXQiLCJpbmNsdWRlcyIsImVtb2ppVXJsIiwiZW1vamlJZCIsImFuaW1hdGVkIiwiYXZhdGFyVXJsIiwidXNlcklkIiwiYXZhdGFyIiwib3B0aW9ucyIsImRlZmF1bHRBdmF0YXJVcmwiLCJkaXNjcmltaW5hdG9yIiwiaXNMZWdhY3kiLCJpbmRleCIsIkJpZ0ludCIsIk51bWJlciIsImRpc3BsYXlBdmF0YXJVcmwiLCJhdmF0YXJEZWNvcmF0aW9uVXJsIiwiYXZhdGFyRGVjb3JhdGlvbiIsImJhbm5lclVybCIsImJhbm5lciIsInVuZGVmaW5lZCIsImd1aWxkQmFubmVyVXJsIiwiZ3VpbGRJZCIsImd1aWxkSWNvblVybCIsImltYWdlSGFzaCIsImd1aWxkU3BsYXNoVXJsIiwiZ3VpbGREaXNjb3ZlcnlTcGxhc2hVcmwiLCJndWlsZFNjaGVkdWxlZEV2ZW50Q292ZXJVcmwiLCJldmVudElkIiwiY292ZXIiLCJnZXRXaWRnZXRJbWFnZVVybCIsInN0eWxlIiwibWVtYmVyQXZhdGFyVXJsIiwibWVtYmVyQmFubmVyVXJsIiwiYXBwbGljYXRpb25JY29uVXJsIiwiYXBwbGljYXRpb25JZCIsImljb25IYXNoIiwiYXBwbGljYXRpb25Db3ZlclVybCIsImNvdmVySGFzaCIsImFwcGxpY2F0aW9uQXNzZXRVcmwiLCJhc3NldElkIiwic3RpY2tlclBhY2tCYW5uZXJVcmwiLCJiYW5uZXJBc3NldElkIiwic3RpY2tlclVybCIsInN0aWNrZXJJZCIsInR5cGUiLCJHaWYiLCJ0ZWFtSWNvblVybCIsInRlYW1JZCIsInJvbGVJY29uVXJsIiwicm9sZUlkIiwiZ3VpbGRUYWdCYWRnZVVybCIsImJhZGdlSGFzaCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBMEZBLGtCQUFrQixRQUFRLG9CQUFtQjtBQUN2SSxTQUFTQyxnQkFBZ0IsUUFBUSxZQUFXO0FBTzVDLDhCQUE4QixHQUM5QixPQUFPLFNBQVNDLGVBQWVDLEdBQVcsRUFBRUMsT0FBa0IsR0FBRyxFQUFFQyxNQUFvQjtJQUNyRixPQUFPLEdBQUdGLElBQUksQ0FBQyxFQUFFRSxVQUFXRixDQUFBQSxJQUFJRyxRQUFRLENBQUMsU0FBUyxRQUFRLE1BQUssRUFBRyxNQUFNLEVBQUVGLE1BQU07QUFDbEY7QUFFQTs7Ozs7Ozs7OztDQVVDLEdBQ0QsT0FBTyxTQUFTRyxTQUFTQyxPQUFrQixFQUFFQyxXQUFXLEtBQUssRUFBRUosU0FBc0IsS0FBSztJQUN4RixPQUFPLENBQUMsa0NBQWtDLEVBQUVHLFFBQVEsQ0FBQyxFQUFFQyxXQUFZSixXQUFXLFNBQVMsU0FBUyxRQUFTQSxTQUFTSSxZQUFZSixXQUFXLFNBQVMsbUJBQW1CLElBQUk7QUFDM0s7QUFFQTs7Ozs7OztDQU9DLEdBQ0QsT0FBTyxTQUFTSyxVQUFVQyxNQUFpQixFQUFFQyxNQUFpQixFQUFFQyxPQUFzQjtJQUNwRixPQUFPWCxlQUNMLENBQUMsbUNBQW1DLEVBQUVTLE9BQU8sQ0FBQyxFQUFFLE9BQU9DLFdBQVcsV0FBV0EsU0FBU1gsaUJBQWlCVyxTQUFTLEVBQ2hIQyxTQUFTVCxRQUFRLEtBQ2pCUyxTQUFTUjtBQUViO0FBRUE7Ozs7OztDQU1DLEdBQ0QsT0FBTyxTQUFTUyxpQkFBaUJILE1BQWlCLEVBQUVJLGFBQXFCO0lBQ3ZFLE1BQU1D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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export * from './base64.js';
|
|
2
|
+
export * from './bucket.js';
|
|
3
|
+
export * from './builders.js';
|
|
4
|
+
export * from './Collection.js';
|
|
5
|
+
export * from './casing.js';
|
|
6
|
+
export * from './colors.js';
|
|
7
|
+
export * from './constants.js';
|
|
8
|
+
export * from './hash.js';
|
|
9
|
+
export * from './images.js';
|
|
10
|
+
export * from './logger.js';
|
|
11
|
+
export * from './oauth2.js';
|
|
12
|
+
export * from './permissions.js';
|
|
13
|
+
export * from './reactions.js';
|
|
14
|
+
export * from './snowflakes.js';
|
|
15
|
+
export * from './token.js';
|
|
16
|
+
export * from './typeguards.js';
|
|
17
|
+
export * from './urls.js';
|
|
18
|
+
export * from './urlToBase64.js';
|
|
19
|
+
export * from './utils.js';
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2U2NC5qcydcbmV4cG9ydCAqIGZyb20gJy4vYnVja2V0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVycy5qcydcbmV4cG9ydCAqIGZyb20gJy4vQ29sbGVjdGlvbi5qcydcbmV4cG9ydCAqIGZyb20gJy4vY2FzaW5nLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9jb2xvcnMuanMnXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy5qcydcbmV4cG9ydCAqIGZyb20gJy4vaGFzaC5qcydcbmV4cG9ydCAqIGZyb20gJy4vaW1hZ2VzLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9sb2dnZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL29hdXRoMi5qcydcbmV4cG9ydCAqIGZyb20gJy4vcGVybWlzc2lvbnMuanMnXG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aW9ucy5qcydcbmV4cG9ydCAqIGZyb20gJy4vc25vd2ZsYWtlcy5qcydcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4uanMnXG5leHBvcnQgKiBmcm9tICcuL3R5cGVndWFyZHMuanMnXG5leHBvcnQgKiBmcm9tICcuL3VybHMuanMnXG5leHBvcnQgKiBmcm9tICcuL3VybFRvQmFzZTY0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy5qcydcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWE7QUFDM0IsY0FBYyxjQUFhO0FBQzNCLGNBQWMsZ0JBQWU7QUFDN0IsY0FBYyxrQkFBaUI7QUFDL0IsY0FBYyxjQUFhO0FBQzNCLGNBQWMsY0FBYTtBQUMzQixjQUFjLGlCQUFnQjtBQUM5QixjQUFjLFlBQVc7QUFDekIsY0FBYyxjQUFhO0FBQzNCLGNBQWMsY0FBYTtBQUMzQixjQUFjLGNBQWE7QUFDM0IsY0FBYyxtQkFBa0I7QUFDaEMsY0FBYyxpQkFBZ0I7QUFDOUIsY0FBYyxrQkFBaUI7QUFDL0IsY0FBYyxhQUFZO0FBQzFCLGNBQWMsa0JBQWlCO0FBQy9CLGNBQWMsWUFBVztBQUN6QixjQUFjLG1CQUFrQjtBQUNoQyxjQUFjLGFBQVkifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,oBAAY,SAAS;IACnB,KAAK,IAAA;IACL,IAAI,IAAA;IACJ,IAAI,IAAA;IACJ,KAAK,IAAA;IACL,KAAK,IAAA;CACN;AAmBD,wBAAgB,YAAY,CAAC,EAAE,QAAyB,EAAE,IAAI,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO;iBACxF,SAAS,WAAW,GAAG,EAAE;sBA8BpB,SAAS;qBAIV,GAAG,EAAE;oBAIN,GAAG,EAAE;oBAIL,GAAG,EAAE;qBAIJ,GAAG,EAAE;qBAIL,GAAG,EAAE;EAa9B;AAED,eAAO,MAAM,MAAM;iBAjEG,SAAS,WAAW,GAAG,EAAE;sBA8BpB,SAAS;qBAIV,GAAG,EAAE;oBAIN,GAAG,EAAE;oBAIL,GAAG,EAAE;qBAIJ,GAAG,EAAE;qBAIL,GAAG,EAAE;CAe2B,CAAA;AAC1D,eAAe,MAAM,CAAA"}
|