@discordeno/utils 21.0.1-next.fca0b40 → 22.0.0-beta.2

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 (129) hide show
  1. package/dist/Collection.d.ts.map +1 -0
  2. package/dist/Collection.js +112 -0
  3. package/dist/{types/base64.d.ts → base64.d.ts} +7 -1
  4. package/dist/base64.d.ts.map +1 -0
  5. package/dist/base64.js +339 -0
  6. package/dist/bucket.d.ts.map +1 -0
  7. package/dist/bucket.js +81 -0
  8. package/dist/{types/builders → builders}/embeds.d.ts +3 -3
  9. package/dist/builders/embeds.d.ts.map +1 -0
  10. package/dist/builders/embeds.js +305 -0
  11. package/dist/builders.d.ts.map +1 -0
  12. package/dist/builders.js +5 -0
  13. package/dist/casing.d.ts.map +1 -0
  14. package/dist/casing.js +53 -0
  15. package/dist/colors.d.ts.map +1 -0
  16. package/dist/colors.js +467 -0
  17. package/dist/constants.d.ts +2 -0
  18. package/dist/constants.d.ts.map +1 -0
  19. package/dist/constants.js +3 -0
  20. package/dist/hash.d.ts.map +1 -0
  21. package/dist/hash.js +19 -0
  22. package/dist/{types/images.d.ts → images.d.ts} +40 -64
  23. package/dist/images.d.ts.map +1 -0
  24. package/dist/images.js +228 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +21 -0
  27. package/dist/logger.d.ts.map +1 -0
  28. package/dist/logger.js +115 -0
  29. package/dist/oauth2.d.ts +107 -0
  30. package/dist/oauth2.d.ts.map +1 -0
  31. package/dist/oauth2.js +48 -0
  32. package/dist/permissions.d.ts.map +1 -0
  33. package/dist/permissions.js +17 -0
  34. package/dist/reactions.d.ts.map +1 -0
  35. package/dist/{esm/reactions.js → reactions.js} +1 -1
  36. package/dist/snowflakes.d.ts.map +1 -0
  37. package/dist/snowflakes.js +11 -0
  38. package/dist/token.d.ts.map +1 -0
  39. package/dist/token.js +20 -0
  40. package/dist/typeguards.d.ts +6 -0
  41. package/dist/typeguards.d.ts.map +1 -0
  42. package/dist/typeguards.js +15 -0
  43. package/dist/urlToBase64.d.ts.map +1 -0
  44. package/dist/urlToBase64.js +9 -0
  45. package/dist/urls.d.ts.map +1 -0
  46. package/dist/urls.js +11 -0
  47. package/dist/utils.d.ts.map +1 -0
  48. package/dist/utils.js +21 -0
  49. package/package.json +23 -32
  50. package/dist/cjs/Collection.cjs +0 -122
  51. package/dist/cjs/base64.cjs +0 -276
  52. package/dist/cjs/bucket.cjs +0 -96
  53. package/dist/cjs/builders/embeds.cjs +0 -306
  54. package/dist/cjs/builders.cjs +0 -27
  55. package/dist/cjs/casing.cjs +0 -79
  56. package/dist/cjs/colors.cjs +0 -456
  57. package/dist/cjs/constants.cjs +0 -13
  58. package/dist/cjs/hash.cjs +0 -37
  59. package/dist/cjs/images.cjs +0 -149
  60. package/dist/cjs/index.cjs +0 -38
  61. package/dist/cjs/logger.cjs +0 -139
  62. package/dist/cjs/oauth2.cjs +0 -26
  63. package/dist/cjs/permissions.cjs +0 -35
  64. package/dist/cjs/reactions.cjs +0 -21
  65. package/dist/cjs/snowflakes.cjs +0 -32
  66. package/dist/cjs/token.cjs +0 -38
  67. package/dist/cjs/typeguards.cjs +0 -52
  68. package/dist/cjs/urlToBase64.cjs +0 -19
  69. package/dist/cjs/urls.cjs +0 -32
  70. package/dist/cjs/utils.cjs +0 -40
  71. package/dist/esm/Collection.js +0 -112
  72. package/dist/esm/base64.js +0 -262
  73. package/dist/esm/bucket.js +0 -81
  74. package/dist/esm/builders/embeds.js +0 -305
  75. package/dist/esm/builders.js +0 -5
  76. package/dist/esm/casing.js +0 -55
  77. package/dist/esm/colors.js +0 -467
  78. package/dist/esm/constants.js +0 -3
  79. package/dist/esm/hash.js +0 -19
  80. package/dist/esm/images.js +0 -204
  81. package/dist/esm/index.js +0 -21
  82. package/dist/esm/logger.js +0 -115
  83. package/dist/esm/oauth2.js +0 -16
  84. package/dist/esm/permissions.js +0 -17
  85. package/dist/esm/snowflakes.js +0 -11
  86. package/dist/esm/token.js +0 -20
  87. package/dist/esm/typeguards.js +0 -22
  88. package/dist/esm/urlToBase64.js +0 -9
  89. package/dist/esm/urls.js +0 -11
  90. package/dist/esm/utils.js +0 -21
  91. package/dist/types/Collection.d.ts.map +0 -1
  92. package/dist/types/base64.d.ts.map +0 -1
  93. package/dist/types/bucket.d.ts.map +0 -1
  94. package/dist/types/builders/embeds.d.ts.map +0 -1
  95. package/dist/types/builders.d.ts.map +0 -1
  96. package/dist/types/casing.d.ts.map +0 -1
  97. package/dist/types/colors.d.ts.map +0 -1
  98. package/dist/types/constants.d.ts +0 -2
  99. package/dist/types/constants.d.ts.map +0 -1
  100. package/dist/types/hash.d.ts.map +0 -1
  101. package/dist/types/images.d.ts.map +0 -1
  102. package/dist/types/index.d.ts.map +0 -1
  103. package/dist/types/logger.d.ts.map +0 -1
  104. package/dist/types/oauth2.d.ts +0 -69
  105. package/dist/types/oauth2.d.ts.map +0 -1
  106. package/dist/types/permissions.d.ts.map +0 -1
  107. package/dist/types/reactions.d.ts.map +0 -1
  108. package/dist/types/snowflakes.d.ts.map +0 -1
  109. package/dist/types/token.d.ts.map +0 -1
  110. package/dist/types/typeguards.d.ts +0 -8
  111. package/dist/types/typeguards.d.ts.map +0 -1
  112. package/dist/types/urlToBase64.d.ts.map +0 -1
  113. package/dist/types/urls.d.ts.map +0 -1
  114. package/dist/types/utils.d.ts.map +0 -1
  115. /package/dist/{types/Collection.d.ts → Collection.d.ts} +0 -0
  116. /package/dist/{types/bucket.d.ts → bucket.d.ts} +0 -0
  117. /package/dist/{types/builders.d.ts → builders.d.ts} +0 -0
  118. /package/dist/{types/casing.d.ts → casing.d.ts} +0 -0
  119. /package/dist/{types/colors.d.ts → colors.d.ts} +0 -0
  120. /package/dist/{types/hash.d.ts → hash.d.ts} +0 -0
  121. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  122. /package/dist/{types/logger.d.ts → logger.d.ts} +0 -0
  123. /package/dist/{types/permissions.d.ts → permissions.d.ts} +0 -0
  124. /package/dist/{types/reactions.d.ts → reactions.d.ts} +0 -0
  125. /package/dist/{types/snowflakes.d.ts → snowflakes.d.ts} +0 -0
  126. /package/dist/{types/token.d.ts → token.d.ts} +0 -0
  127. /package/dist/{types/urlToBase64.d.ts → urlToBase64.d.ts} +0 -0
  128. /package/dist/{types/urls.d.ts → urls.d.ts} +0 -0
  129. /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
@@ -0,0 +1,305 @@
1
+ /**
2
+ * A builder to help create Discord embeds.
3
+ *
4
+ * @example
5
+ * const embeds = new EmbedsBuilder()
6
+ * .setTitle('My Embed')
7
+ * .setDescription('This is my new embed')
8
+ * .newEmbed()
9
+ * .setTitle('My Second Embed')
10
+ */ export class EmbedsBuilder extends Array {
11
+ #currentEmbedIndex;
12
+ /**
13
+ * Adds a new field to the current embed.
14
+ *
15
+ * @param {string} name - Field name
16
+ * @param {string} value - Field value
17
+ * @param {?boolean} [inline=false] - Field should be inline or not.
18
+ * @returns {EmbedsBuilder}
19
+ */ addField(name, value, inline) {
20
+ if (this.#currentEmbed.fields === undefined) {
21
+ this.#currentEmbed.fields = [];
22
+ }
23
+ this.#currentEmbed.fields.push({
24
+ name,
25
+ value,
26
+ inline
27
+ });
28
+ return this;
29
+ }
30
+ /**
31
+ * Adds multiple new fields to the current embed.
32
+ *
33
+ * @param {DiscordEmbedField[]} fields - The fields to add
34
+ * @returns {EmbedsBuilder}
35
+ */ addFields(fields) {
36
+ if (this.#currentEmbed.fields === undefined) {
37
+ this.#currentEmbed.fields = [];
38
+ }
39
+ this.#currentEmbed.fields.push(...fields);
40
+ return this;
41
+ }
42
+ /**
43
+ * Creates a blank embed.
44
+ *
45
+ * @returns {EmbedsBuilder}
46
+ */ newEmbed() {
47
+ if (this.length >= 10) {
48
+ throw new Error('Maximum embed count exceeded. You can not have more than 10 embeds.');
49
+ }
50
+ this.push({});
51
+ this.setCurrentEmbed();
52
+ return this;
53
+ }
54
+ /**
55
+ * Set the current embed author.
56
+ *
57
+ * @param {string} name - Name of the author
58
+ * @param {?Omit<DiscordEmbedAuthor, 'name'>} [options] - Extra author options
59
+ * @returns {EmbedsBuilder}
60
+ */ setAuthor(name, options) {
61
+ this.#currentEmbed.author = {
62
+ ...this.#currentEmbed.author,
63
+ ...options,
64
+ name
65
+ };
66
+ return this;
67
+ }
68
+ /**
69
+ * Set the color on the side of the current embed.
70
+ *
71
+ * @param {(number | string)} color - The color, in base16 or hex color code
72
+ * @returns {EmbedsBuilder}
73
+ */ setColor(color) {
74
+ if (typeof color === 'string') {
75
+ if (color.toLowerCase() === 'random') {
76
+ return this.setRandomColor();
77
+ }
78
+ const convertedValue = parseInt(color.replace('#', ''), 16);
79
+ color = Number.isNaN(convertedValue) ? 0 : convertedValue;
80
+ }
81
+ this.#currentEmbed.color = color;
82
+ return this;
83
+ }
84
+ /**
85
+ * Set the current embed to a different index.
86
+ *
87
+ * WARNING: Only use this method if you know what you're doing. Make sure to set it back to the latest when you're done.
88
+ *
89
+ * @param {?number} [index] - The index of the embed in the EmbedsBuilder array
90
+ * @returns {EmbedsBuilder}
91
+ */ setCurrentEmbed(index) {
92
+ if (index === undefined) {
93
+ this.#currentEmbedIndex = this.length - 1;
94
+ return this;
95
+ }
96
+ if (index >= this.length || index < 0) {
97
+ throw new Error('Can not set the current embed to a index out of bounds.');
98
+ }
99
+ this.#currentEmbedIndex = index;
100
+ return this;
101
+ }
102
+ /**
103
+ * Set the description of the current embed.
104
+ *
105
+ * @param {string} description - Description
106
+ * @returns {EmbedsBuilder}
107
+ */ setDescription(description) {
108
+ this.#currentEmbed.description = description;
109
+ return this;
110
+ }
111
+ /**
112
+ * Overwrite all fields on the current embed.
113
+ *
114
+ * @param {DiscordEmbedField[]} fields
115
+ * @returns {EmbedsBuilder}
116
+ */ setFields(fields) {
117
+ this.#currentEmbed.fields = fields;
118
+ return this;
119
+ }
120
+ /**
121
+ * Set the footer in the current embed.
122
+ *
123
+ * @param {string} text - The text to display in the footer
124
+ * @param {?Omit<DiscordEmbedFooter, 'text'>} [options]
125
+ * @returns {EmbedsBuilder}
126
+ */ setFooter(text, options) {
127
+ this.#currentEmbed.footer = {
128
+ ...this.#currentEmbed.footer,
129
+ ...options,
130
+ text
131
+ };
132
+ return this;
133
+ }
134
+ /**
135
+ * Set the image in the current embed.
136
+ *
137
+ * @param {string} url - URL of the image
138
+ * @param {?Omit<DiscordEmbedImage, 'url'>} [options]
139
+ * @returns {EmbedsBuilder}
140
+ */ setImage(url, options) {
141
+ this.#currentEmbed.image = {
142
+ ...this.#currentEmbed.image,
143
+ ...options,
144
+ url
145
+ };
146
+ return this;
147
+ }
148
+ /**
149
+ * Set the provider of the current embed.
150
+ *
151
+ * @param {string} name
152
+ * @param {?string} [url]
153
+ * @returns {EmbedsBuilder}
154
+ */ setProvider(name, url) {
155
+ this.#currentEmbed.provider = {
156
+ name,
157
+ url
158
+ };
159
+ return this;
160
+ }
161
+ /**
162
+ * Set the color of the current embed to a random value.
163
+ *
164
+ * @returns {EmbedsBuilder}
165
+ */ setRandomColor() {
166
+ return this.setColor(Math.floor(Math.random() * (0xffffff + 1)));
167
+ }
168
+ /**
169
+ * Set the title of the current embed.
170
+ *
171
+ * @param {string} title
172
+ * @param {?string} [url]
173
+ * @returns {EmbedsBuilder}
174
+ */ setTitle(title, url) {
175
+ this.#currentEmbed.title = title;
176
+ if (url) {
177
+ this.setUrl(url);
178
+ }
179
+ return this;
180
+ }
181
+ /**
182
+ * Set the timestamp of the current embed.
183
+ *
184
+ * @param {?(string | number | Date)} [timestamp]
185
+ * @returns {EmbedsBuilder}
186
+ */ setTimestamp(timestamp) {
187
+ this.#currentEmbed.timestamp = new Date(timestamp ?? Date.now()).toISOString();
188
+ return this;
189
+ }
190
+ /**
191
+ * Set the thumbnail of the current embed.
192
+ *
193
+ * @param {string} url - URL of the image
194
+ * @param {?Omit<DiscordEmbedImage, 'url'>} [options]
195
+ * @returns {EmbedsBuilder}
196
+ */ setThumbnail(url, options) {
197
+ this.#currentEmbed.thumbnail = {
198
+ ...this.#currentEmbed.thumbnail,
199
+ ...options,
200
+ url
201
+ };
202
+ return this;
203
+ }
204
+ /**
205
+ * Set the URL of the current embed title.
206
+ *
207
+ * @param {string} url
208
+ * @returns {EmbedsBuilder}
209
+ */ setUrl(url) {
210
+ this.#currentEmbed.url = url;
211
+ return this;
212
+ }
213
+ /**
214
+ * Set the video of the current embed.
215
+ *
216
+ * @param {string} url
217
+ * @param {?Omit<DiscordEmbedVideo, 'url'>} [options]
218
+ * @returns {EmbedsBuilder}
219
+ */ setVideo(url, options) {
220
+ this.#currentEmbed.video = {
221
+ ...this.#currentEmbed.video,
222
+ ...options,
223
+ url
224
+ };
225
+ return this;
226
+ }
227
+ /**
228
+ * Validate all embeds available against current known Discord limits to help prevent bad requests.
229
+ *
230
+ * @returns {EmbedsBuilder}
231
+ */ validate() {
232
+ let totalCharacters = 0;
233
+ if (this.length > 10) {
234
+ throw new Error('You can not have more than 10 embeds on a single message.');
235
+ }
236
+ this.forEach(({ author, description, fields, footer, title }, index)=>{
237
+ if (title) {
238
+ const trimmedTitle = title.trim();
239
+ if (trimmedTitle.length > 256) {
240
+ throw new Error(`Title of embed ${index} can not be longer than 256 characters.`);
241
+ }
242
+ totalCharacters += trimmedTitle.length;
243
+ }
244
+ if (description) {
245
+ const trimmedDescription = description.trim();
246
+ if (trimmedDescription.length > 4096) {
247
+ throw new Error(`Description of embed ${index} can not be longer than 4096 characters.`);
248
+ }
249
+ totalCharacters += trimmedDescription.length;
250
+ }
251
+ if (fields) {
252
+ if (fields.length > 25) {
253
+ throw new Error(`embed ${index} can not have more than 25 fields.`);
254
+ }
255
+ fields.forEach(({ name, value }, fieldIndex)=>{
256
+ const trimmedName = name.trim();
257
+ const trimmedValue = value.trim();
258
+ if (trimmedName.length > 256) {
259
+ throw new Error(`Name of field ${fieldIndex} on embed ${index} can not be longer than 256 characters.`);
260
+ }
261
+ if (trimmedValue.length > 4096) {
262
+ throw new Error(`Value of field ${fieldIndex} on embed ${index} can not be longer than 1024 characters.`);
263
+ }
264
+ totalCharacters += trimmedName.length;
265
+ totalCharacters += trimmedValue.length;
266
+ });
267
+ }
268
+ if (footer) {
269
+ const trimmedFooterText = footer.text.trim();
270
+ if (trimmedFooterText.length > 2048) {
271
+ throw new Error(`Footer text of embed ${index} can not be longer than 2048 characters.`);
272
+ }
273
+ totalCharacters += trimmedFooterText.length;
274
+ }
275
+ if (author) {
276
+ const trimmedAuthorName = author.name.trim();
277
+ if (trimmedAuthorName.length > 256) {
278
+ throw new Error(`Author name of embed ${index} can not be longer than 256 characters.`);
279
+ }
280
+ totalCharacters += trimmedAuthorName.length;
281
+ }
282
+ });
283
+ if (totalCharacters > 6000) {
284
+ throw new Error('Total character length of all embeds can not exceed 6000 characters.');
285
+ }
286
+ return this;
287
+ }
288
+ /**
289
+ * Returns the current embed.
290
+ *
291
+ * @readonly
292
+ * @type {DiscordEmbed}
293
+ */ get #currentEmbed() {
294
+ if (this.length === 0) {
295
+ this.newEmbed();
296
+ this.setCurrentEmbed();
297
+ }
298
+ return this[this.#currentEmbedIndex];
299
+ }
300
+ constructor(...args){
301
+ super(...args), this.#currentEmbedIndex = 0;
302
+ }
303
+ }
304
+
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9lbWJlZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBEaXNjb3JkRW1iZWQsXG4gIERpc2NvcmRFbWJlZEF1dGhvcixcbiAgRGlzY29yZEVtYmVkRmllbGQsXG4gIERpc2NvcmRFbWJlZEZvb3RlcixcbiAgRGlzY29yZEVtYmVkSW1hZ2UsXG4gIERpc2NvcmRFbWJlZFZpZGVvLFxufSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5cbi8qKlxuICogQSBidWlsZGVyIHRvIGhlbHAgY3JlYXRlIERpc2NvcmQgZW1iZWRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbWJlZHMgPSBuZXcgRW1iZWRzQnVpbGRlcigpXG4gKiAgLnNldFRpdGxlKCdNeSBFbWJlZCcpXG4gKiAgLnNldERlc2NyaXB0aW9uKCdUaGlzIGlzIG15IG5ldyBlbWJlZCcpXG4gKiAgLm5ld0VtYmVkKClcbiAqICAuc2V0VGl0bGUoJ015IFNlY29uZCBFbWJlZCcpXG4gKi9cbmV4cG9ydCBjbGFzcyBFbWJlZHNCdWlsZGVyIGV4dGVuZHMgQXJyYXk8RGlzY29yZEVtYmVkPiB7XG4gICNjdXJyZW50RW1iZWRJbmRleDogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBmaWVsZCB0byB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBGaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIEZpZWxkIHZhbHVlXG4gICAqIEBwYXJhbSB7P2Jvb2xlYW59IFtpbmxpbmU9ZmFsc2VdIC0gRmllbGQgc2hvdWxkIGJlIGlubGluZSBvciBub3QuXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgYWRkRmllbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBpbmxpbmU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRFbWJlZC5maWVsZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcyA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5maWVsZHMucHVzaCh7XG4gICAgICBuYW1lLFxuICAgICAgdmFsdWUsXG4gICAgICBpbmxpbmUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG11bHRpcGxlIG5ldyBmaWVsZHMgdG8gdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7RGlzY29yZEVtYmVkRmllbGRbXX0gZmllbGRzIC0gVGhlIGZpZWxkcyB0byBhZGRcbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBhZGRGaWVsZHMoZmllbGRzOiBEaXNjb3JkRW1iZWRGaWVsZFtdKTogdGhpcyB7XG4gICAgaWYgKHRoaXMuI2N1cnJlbnRFbWJlZC5maWVsZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcyA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5maWVsZHMucHVzaCguLi5maWVsZHMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGJsYW5rIGVtYmVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIG5ld0VtYmVkKCk6IHRoaXMge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+PSAxMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXhpbXVtIGVtYmVkIGNvdW50IGV4Y2VlZGVkLiBZb3UgY2FuIG5vdCBoYXZlIG1vcmUgdGhhbiAxMCBlbWJlZHMuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHt9KTtcbiAgICB0aGlzLnNldEN1cnJlbnRFbWJlZCgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IGVtYmVkIGF1dGhvci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSBhdXRob3JcbiAgICogQHBhcmFtIHs/T21pdDxEaXNjb3JkRW1iZWRBdXRob3IsICduYW1lJz59IFtvcHRpb25zXSAtIEV4dHJhIGF1dGhvciBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0QXV0aG9yKG5hbWU6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8RGlzY29yZEVtYmVkQXV0aG9yLCAnbmFtZSc+KTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmF1dGhvciA9IHtcbiAgICAgIC4uLnRoaXMuI2N1cnJlbnRFbWJlZC5hdXRob3IsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbmFtZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb2xvciBvbiB0aGUgc2lkZSBvZiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHsobnVtYmVyIHwgc3RyaW5nKX0gY29sb3IgLSBUaGUgY29sb3IsIGluIGJhc2UxNiBvciBoZXggY29sb3IgY29kZVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldENvbG9yKGNvbG9yOiBudW1iZXIgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAodHlwZW9mIGNvbG9yID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKGNvbG9yLnRvTG93ZXJDYXNlKCkgPT09ICdyYW5kb20nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFJhbmRvbUNvbG9yKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gcGFyc2VJbnQoY29sb3IucmVwbGFjZSgnIycsICcnKSwgMTYpO1xuICAgICAgY29sb3IgPSBOdW1iZXIuaXNOYU4oY29udmVydGVkVmFsdWUpID8gMCA6IGNvbnZlcnRlZFZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5jb2xvciA9IGNvbG9yO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IGVtYmVkIHRvIGEgZGlmZmVyZW50IGluZGV4LlxuICAgKlxuICAgKiBXQVJOSU5HOiBPbmx5IHVzZSB0aGlzIG1ldGhvZCBpZiB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy4gTWFrZSBzdXJlIHRvIHNldCBpdCBiYWNrIHRvIHRoZSBsYXRlc3Qgd2hlbiB5b3UncmUgZG9uZS5cbiAgICpcbiAgICogQHBhcmFtIHs/bnVtYmVyfSBbaW5kZXhdIC0gVGhlIGluZGV4IG9mIHRoZSBlbWJlZCBpbiB0aGUgRW1iZWRzQnVpbGRlciBhcnJheVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldEN1cnJlbnRFbWJlZChpbmRleD86IG51bWJlcik6IHRoaXMge1xuICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50RW1iZWRJbmRleCA9IHRoaXMubGVuZ3RoIC0gMTtcblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKGluZGV4ID49IHRoaXMubGVuZ3RoIHx8IGluZGV4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gbm90IHNldCB0aGUgY3VycmVudCBlbWJlZCB0byBhIGluZGV4IG91dCBvZiBib3VuZHMuJyk7XG4gICAgfVxuXG4gICAgdGhpcy4jY3VycmVudEVtYmVkSW5kZXggPSBpbmRleDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvbiAtIERlc2NyaXB0aW9uXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogT3ZlcndyaXRlIGFsbCBmaWVsZHMgb24gdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7RGlzY29yZEVtYmVkRmllbGRbXX0gZmllbGRzXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0RmllbGRzKGZpZWxkczogRGlzY29yZEVtYmVkRmllbGRbXSk6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5maWVsZHMgPSBmaWVsZHM7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvb3RlciBpbiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBmb290ZXJcbiAgICogQHBhcmFtIHs/T21pdDxEaXNjb3JkRW1iZWRGb290ZXIsICd0ZXh0Jz59IFtvcHRpb25zXVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldEZvb3Rlcih0ZXh0OiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PERpc2NvcmRFbWJlZEZvb3RlciwgJ3RleHQnPik6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5mb290ZXIgPSB7XG4gICAgICAuLi50aGlzLiNjdXJyZW50RW1iZWQuZm9vdGVyLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHRleHQsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaW1hZ2UgaW4gdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBVUkwgb2YgdGhlIGltYWdlXG4gICAqIEBwYXJhbSB7P09taXQ8RGlzY29yZEVtYmVkSW1hZ2UsICd1cmwnPn0gW29wdGlvbnNdXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0SW1hZ2UodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PERpc2NvcmRFbWJlZEltYWdlLCAndXJsJz4pOiB0aGlzIHtcbiAgICB0aGlzLiNjdXJyZW50RW1iZWQuaW1hZ2UgPSB7XG4gICAgICAuLi50aGlzLiNjdXJyZW50RW1iZWQuaW1hZ2UsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdXJsLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHByb3ZpZGVyIG9mIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0gez9zdHJpbmd9IFt1cmxdXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0UHJvdmlkZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLiNjdXJyZW50RW1iZWQucHJvdmlkZXIgPSB7XG4gICAgICBuYW1lLFxuICAgICAgdXJsLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbG9yIG9mIHRoZSBjdXJyZW50IGVtYmVkIHRvIGEgcmFuZG9tIHZhbHVlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldFJhbmRvbUNvbG9yKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzLnNldENvbG9yKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgweGZmZmZmZiArIDEpKSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0aXRsZSBvZiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gICAqIEBwYXJhbSB7P3N0cmluZ30gW3VybF1cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLiNjdXJyZW50RW1iZWQudGl0bGUgPSB0aXRsZTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHRoaXMuc2V0VXJsKHVybCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0aW1lc3RhbXAgb2YgdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7PyhzdHJpbmcgfCBudW1iZXIgfCBEYXRlKX0gW3RpbWVzdGFtcF1cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRUaW1lc3RhbXAodGltZXN0YW1wPzogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSk6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC50aW1lc3RhbXAgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgPz8gRGF0ZS5ub3coKSkudG9JU09TdHJpbmcoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGh1bWJuYWlsIG9mIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVVJMIG9mIHRoZSBpbWFnZVxuICAgKiBAcGFyYW0gez9PbWl0PERpc2NvcmRFbWJlZEltYWdlLCAndXJsJz59IFtvcHRpb25zXVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldFRodW1ibmFpbCh1cmw6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8RGlzY29yZEVtYmVkSW1hZ2UsICd1cmwnPik6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC50aHVtYm5haWwgPSB7XG4gICAgICAuLi50aGlzLiNjdXJyZW50RW1iZWQudGh1bWJuYWlsLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHVybCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBVUkwgb2YgdGhlIGN1cnJlbnQgZW1iZWQgdGl0bGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRVcmwodXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLiNjdXJyZW50RW1iZWQudXJsID0gdXJsO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2aWRlbyBvZiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICAgKiBAcGFyYW0gez9PbWl0PERpc2NvcmRFbWJlZFZpZGVvLCAndXJsJz59IFtvcHRpb25zXVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldFZpZGVvKHVybDogc3RyaW5nLCBvcHRpb25zPzogT21pdDxEaXNjb3JkRW1iZWRWaWRlbywgJ3VybCc+KTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLnZpZGVvID0ge1xuICAgICAgLi4udGhpcy4jY3VycmVudEVtYmVkLnZpZGVvLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHVybCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIGVtYmVkcyBhdmFpbGFibGUgYWdhaW5zdCBjdXJyZW50IGtub3duIERpc2NvcmQgbGltaXRzIHRvIGhlbHAgcHJldmVudCBiYWQgcmVxdWVzdHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgdmFsaWRhdGUoKTogdGhpcyB7XG4gICAgbGV0IHRvdGFsQ2hhcmFjdGVycyA9IDA7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiAxMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgY2FuIG5vdCBoYXZlIG1vcmUgdGhhbiAxMCBlbWJlZHMgb24gYSBzaW5nbGUgbWVzc2FnZS4nKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvckVhY2goKHsgYXV0aG9yLCBkZXNjcmlwdGlvbiwgZmllbGRzLCBmb290ZXIsIHRpdGxlIH0sIGluZGV4KSA9PiB7XG4gICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZFRpdGxlID0gdGl0bGUudHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkVGl0bGUubGVuZ3RoID4gMjU2KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaXRsZSBvZiBlbWJlZCAke2luZGV4fSBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDI1NiBjaGFyYWN0ZXJzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdG90YWxDaGFyYWN0ZXJzICs9IHRyaW1tZWRUaXRsZS5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICBjb25zdCB0cmltbWVkRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi50cmltKCk7XG5cbiAgICAgICAgaWYgKHRyaW1tZWREZXNjcmlwdGlvbi5sZW5ndGggPiA0MDk2KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEZXNjcmlwdGlvbiBvZiBlbWJlZCAke2luZGV4fSBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDQwOTYgY2hhcmFjdGVycy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvdGFsQ2hhcmFjdGVycyArPSB0cmltbWVkRGVzY3JpcHRpb24ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZHMubGVuZ3RoID4gMjUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGVtYmVkICR7aW5kZXh9IGNhbiBub3QgaGF2ZSBtb3JlIHRoYW4gMjUgZmllbGRzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgZmllbGRzLmZvckVhY2goKHsgbmFtZSwgdmFsdWUgfSwgZmllbGRJbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWROYW1lID0gbmFtZS50cmltKCk7XG4gICAgICAgICAgY29uc3QgdHJpbW1lZFZhbHVlID0gdmFsdWUudHJpbSgpO1xuXG4gICAgICAgICAgaWYgKHRyaW1tZWROYW1lLmxlbmd0aCA+IDI1Nikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOYW1lIG9mIGZpZWxkICR7ZmllbGRJbmRleH0gb24gZW1iZWQgJHtpbmRleH0gY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAyNTYgY2hhcmFjdGVycy5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHJpbW1lZFZhbHVlLmxlbmd0aCA+IDQwOTYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgb2YgZmllbGQgJHtmaWVsZEluZGV4fSBvbiBlbWJlZCAke2luZGV4fSBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDEwMjQgY2hhcmFjdGVycy5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0b3RhbENoYXJhY3RlcnMgKz0gdHJpbW1lZE5hbWUubGVuZ3RoO1xuICAgICAgICAgIHRvdGFsQ2hhcmFjdGVycyArPSB0cmltbWVkVmFsdWUubGVuZ3RoO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvb3Rlcikge1xuICAgICAgICBjb25zdCB0cmltbWVkRm9vdGVyVGV4dCA9IGZvb3Rlci50ZXh0LnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZEZvb3RlclRleHQubGVuZ3RoID4gMjA0OCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRm9vdGVyIHRleHQgb2YgZW1iZWQgJHtpbmRleH0gY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAyMDQ4IGNoYXJhY3RlcnMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbENoYXJhY3RlcnMgKz0gdHJpbW1lZEZvb3RlclRleHQubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXV0aG9yKSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRBdXRob3JOYW1lID0gYXV0aG9yLm5hbWUudHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkQXV0aG9yTmFtZS5sZW5ndGggPiAyNTYpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF1dGhvciBuYW1lIG9mIGVtYmVkICR7aW5kZXh9IGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMjU2IGNoYXJhY3RlcnMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbENoYXJhY3RlcnMgKz0gdHJpbW1lZEF1dGhvck5hbWUubGVuZ3RoO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRvdGFsQ2hhcmFjdGVycyA+IDYwMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVG90YWwgY2hhcmFjdGVyIGxlbmd0aCBvZiBhbGwgZW1iZWRzIGNhbiBub3QgZXhjZWVkIDYwMDAgY2hhcmFjdGVycy4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcmVhZG9ubHlcbiAgICogQHR5cGUge0Rpc2NvcmRFbWJlZH1cbiAgICovXG4gIGdldCAjY3VycmVudEVtYmVkKCk6IERpc2NvcmRFbWJlZCB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLm5ld0VtYmVkKCk7XG4gICAgICB0aGlzLnNldEN1cnJlbnRFbWJlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzW3RoaXMuI2N1cnJlbnRFbWJlZEluZGV4XTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVtYmVkc0J1aWxkZXIiLCJBcnJheSIsImFkZEZpZWxkIiwibmFtZSIsInZhbHVlIiwiaW5saW5lIiwiZmllbGRzIiwidW5kZWZpbmVkIiwicHVzaCIsImFkZEZpZWxkcyIsIm5ld0VtYmVkIiwibGVuZ3RoIiwiRXJyb3IiLCJzZXRDdXJyZW50RW1iZWQiLCJzZXRBdXRob3IiLCJvcHRpb25zIiwiYXV0aG9yIiwic2V0Q29sb3IiLCJjb2xvciIsInRvTG93ZXJDYXNlIiwic2V0UmFuZG9tQ29sb3IiLCJjb252ZXJ0ZWRWYWx1ZSIsInBhcnNlSW50IiwicmVwbGFjZSIsIk51bWJlciIsImlzTmFOIiwiaW5kZXgiLCJzZXREZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwic2V0RmllbGRzIiwic2V0Rm9vdGVyIiwidGV4dCIsImZvb3RlciIsInNldEltYWdlIiwidXJsIiwiaW1hZ2UiLCJzZXRQcm92aWRlciIsInByb3ZpZGVyIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwic2V0VGl0bGUiLCJ0aXRsZSIsInNldFVybCIsInNldFRpbWVzdGFtcCIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJ0b0lTT1N0cmluZyIsInNldFRodW1ibmFpbCIsInRodW1ibmFpbCIsInNldFZpZGVvIiwidmlkZW8iLCJ2YWxpZGF0ZSIsInRvdGFsQ2hhcmFjdGVycyIsImZvckVhY2giLCJ0cmltbWVkVGl0bGUiLCJ0cmltIiwidHJpbW1lZERlc2NyaXB0aW9uIiwiZmllbGRJbmRleCIsInRyaW1tZWROYW1lIiwidHJpbW1lZFZhbHVlIiwidHJpbW1lZEZvb3RlclRleHQiLCJ0cmltbWVkQXV0aG9yTmFtZSJdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7Ozs7OztDQVNDLEdBQ0QsT0FBTyxNQUFNQSxzQkFBc0JDO0lBQ2pDLENBQUEsaUJBQWtCLENBQWE7SUFFL0I7Ozs7Ozs7R0FPQyxHQUNEQyxTQUFTQyxJQUFZLEVBQUVDLEtBQWEsRUFBRUMsTUFBZ0IsRUFBUTtRQUM1RCxJQUFJLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0MsTUFBTSxLQUFLQyxXQUFXO1lBQzNDLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0QsTUFBTSxHQUFHLEVBQUU7UUFDaEM7UUFFQSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDO1lBQzdCTDtZQUNBQztZQUNBQztRQUNGO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7R0FLQyxHQUNESSxVQUFVSCxNQUEyQixFQUFRO1FBQzNDLElBQUksSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxNQUFNLEtBQUtDLFdBQVc7WUFDM0MsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDRCxNQUFNLEdBQUcsRUFBRTtRQUNoQztRQUVBLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsTUFBTSxDQUFDRSxJQUFJLElBQUlGO1FBRWxDLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7R0FJQyxHQUNESSxXQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDQyxNQUFNLElBQUksSUFBSTtZQUNyQixNQUFNLElBQUlDLE1BQU07UUFDbEI7UUFFQSxJQUFJLENBQUNKLElBQUksQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDSyxlQUFlO1FBRXBCLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7OztHQU1DLEdBQ0RDLFVBQVVYLElBQVksRUFBRVksT0FBMEMsRUFBUTtRQUN4RSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNDLE1BQU0sR0FBRztZQUMxQixHQUFHLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsTUFBTTtZQUM1QixHQUFHRCxPQUFPO1lBQ1ZaO1FBQ0Y7UUFFQSxPQUFPLElBQUk7SUFDYjtJQUVBOzs7OztHQUtDLEdBQ0RjLFNBQVNDLEtBQXNCLEVBQVE7UUFDckMsSUFBSSxPQUFPQSxVQUFVLFVBQVU7WUFDN0IsSUFBSUEsTUFBTUMsV0FBVyxPQUFPLFVBQVU7Z0JBQ3BDLE9BQU8sSUFBSSxDQUFDQyxjQUFjO1lBQzVCO1lBRUEsTUFBTUMsaUJBQWlCQyxTQUFTSixNQUFNSyxPQUFPLENBQUMsS0FBSyxLQUFLO1lBQ3hETCxRQUFRTSxPQUFPQyxLQUFLLENBQUNKLGtCQUFrQixJQUFJQTtRQUM3QztRQUVBLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0gsS0FBSyxHQUFHQTtRQUUzQixPQUFPLElBQUk7SUFDYjtJQUVBOzs7Ozs7O0dBT0MsR0FDREwsZ0JBQWdCYSxLQUFjLEVBQVE7UUFDcEMsSUFBSUEsVUFBVW5CLFdBQVc7WUFDdkIsSUFBSSxDQUFDLENBQUEsaUJBQWtCLEdBQUcsSUFBSSxDQUFDSSxNQUFNLEdBQUc7WUFFeEMsT0FBTyxJQUFJO1FBQ2I7UUFFQSxJQUFJZSxTQUFTLElBQUksQ0FBQ2YsTUFBTSxJQUFJZSxRQUFRLEdBQUc7WUFDckMsTUFBTSxJQUFJZCxNQUFNO1FBQ2xCO1FBRUEsSUFBSSxDQUFDLENBQUEsaUJBQWtCLEdBQUdjO1FBRTFCLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7O0dBS0MsR0FDREMsZUFBZUMsV0FBbUIsRUFBUTtRQUN4QyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLFdBQVcsR0FBR0E7UUFFakMsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7R0FLQyxHQUNEQyxVQUFVdkIsTUFBMkIsRUFBUTtRQUMzQyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLE1BQU0sR0FBR0E7UUFFNUIsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7O0dBTUMsR0FDRHdCLFVBQVVDLElBQVksRUFBRWhCLE9BQTBDLEVBQVE7UUFDeEUsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDaUIsTUFBTSxHQUFHO1lBQzFCLEdBQUcsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxNQUFNO1lBQzVCLEdBQUdqQixPQUFPO1lBQ1ZnQjtRQUNGO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7O0dBTUMsR0FDREUsU0FBU0MsR0FBVyxFQUFFbkIsT0FBd0MsRUFBUTtRQUNwRSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNvQixLQUFLLEdBQUc7WUFDekIsR0FBRyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLEtBQUs7WUFDM0IsR0FBR3BCLE9BQU87WUFDVm1CO1FBQ0Y7UUFFQSxPQUFPLElBQUk7SUFDYjtJQUVBOzs7Ozs7R0FNQyxHQUNERSxZQUFZakMsSUFBWSxFQUFFK0IsR0FBWSxFQUFRO1FBQzVDLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0csUUFBUSxHQUFHO1lBQzVCbEM7WUFDQStCO1FBQ0Y7UUFFQSxPQUFPLElBQUk7SUFDYjtJQUVBOzs7O0dBSUMsR0FDRGQsaUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDSCxRQUFRLENBQUNxQixLQUFLQyxLQUFLLENBQUNELEtBQUtFLE1BQU0sS0FBTSxDQUFBLFdBQVcsQ0FBQTtJQUM5RDtJQUVBOzs7Ozs7R0FNQyxHQUNEQyxTQUFTQyxLQUFhLEVBQUVSLEdBQVksRUFBUTtRQUMxQyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNRLEtBQUssR0FBR0E7UUFFM0IsSUFBSVIsS0FBSztZQUNQLElBQUksQ0FBQ1MsTUFBTSxDQUFDVDtRQUNkO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7R0FLQyxHQUNEVSxhQUFhQyxTQUFrQyxFQUFRO1FBQ3JELElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsU0FBUyxHQUFHLElBQUlDLEtBQUtELGFBQWFDLEtBQUtDLEdBQUcsSUFBSUMsV0FBVztRQUU1RSxPQUFPLElBQUk7SUFDYjtJQUVBOzs7Ozs7R0FNQyxHQUNEQyxhQUFhZixHQUFXLEVBQUVuQixPQUF3QyxFQUFRO1FBQ3hFLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ21DLFNBQVMsR0FBRztZQUM3QixHQUFHLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsU0FBUztZQUMvQixHQUFHbkMsT0FBTztZQUNWbUI7UUFDRjtRQUVBLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7O0dBS0MsR0FDRFMsT0FBT1QsR0FBVyxFQUFRO1FBQ3hCLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsR0FBRyxHQUFHQTtRQUV6QixPQUFPLElBQUk7SUFDYjtJQUVBOzs7Ozs7R0FNQyxHQUNEaUIsU0FBU2pCLEdBQVcsRUFBRW5CLE9BQXdDLEVBQVE7UUFDcEUsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDcUMsS0FBSyxHQUFHO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxLQUFLO1lBQzNCLEdBQUdyQyxPQUFPO1lBQ1ZtQjtRQUNGO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7OztHQUlDLEdBQ0RtQixXQUFpQjtRQUNmLElBQUlDLGtCQUFrQjtRQUV0QixJQUFJLElBQUksQ0FBQzNDLE1BQU0sR0FBRyxJQUFJO1lBQ3BCLE1BQU0sSUFBSUMsTUFBTTtRQUNsQjtRQUVBLElBQUksQ0FBQzJDLE9BQU8sQ0FBQyxDQUFDLEVBQUV2QyxNQUFNLEVBQUVZLFdBQVcsRUFBRXRCLE1BQU0sRUFBRTBCLE1BQU0sRUFBRVUsS0FBSyxFQUFFLEVBQUVoQjtZQUM1RCxJQUFJZ0IsT0FBTztnQkFDVCxNQUFNYyxlQUFlZCxNQUFNZSxJQUFJO2dCQUUvQixJQUFJRCxhQUFhN0MsTUFBTSxHQUFHLEtBQUs7b0JBQzdCLE1BQU0sSUFBSUMsTUFBTSxDQUFDLGVBQWUsRUFBRWMsTUFBTSx1Q0FBdUMsQ0FBQztnQkFDbEY7Z0JBRUE0QixtQkFBbUJFLGFBQWE3QyxNQUFNO1lBQ3hDO1lBRUEsSUFBSWlCLGFBQWE7Z0JBQ2YsTUFBTThCLHFCQUFxQjlCLFlBQVk2QixJQUFJO2dCQUUzQyxJQUFJQyxtQkFBbUIvQyxNQUFNLEdBQUcsTUFBTTtvQkFDcEMsTUFBTSxJQUFJQyxNQUFNLENBQUMscUJBQXFCLEVBQUVjLE1BQU0sd0NBQXdDLENBQUM7Z0JBQ3pGO2dCQUVBNEIsbUJBQW1CSSxtQkFBbUIvQyxNQUFNO1lBQzlDO1lBRUEsSUFBSUwsUUFBUTtnQkFDVixJQUFJQSxPQUFPSyxNQUFNLEdBQUcsSUFBSTtvQkFDdEIsTUFBTSxJQUFJQyxNQUFNLENBQUMsTUFBTSxFQUFFYyxNQUFNLGtDQUFrQyxDQUFDO2dCQUNwRTtnQkFFQXBCLE9BQU9pRCxPQUFPLENBQUMsQ0FBQyxFQUFFcEQsSUFBSSxFQUFFQyxLQUFLLEVBQUUsRUFBRXVEO29CQUMvQixNQUFNQyxjQUFjekQsS0FBS3NELElBQUk7b0JBQzdCLE1BQU1JLGVBQWV6RCxNQUFNcUQsSUFBSTtvQkFFL0IsSUFBSUcsWUFBWWpELE1BQU0sR0FBRyxLQUFLO3dCQUM1QixNQUFNLElBQUlDLE1BQU0sQ0FBQyxjQUFjLEVBQUUrQyxXQUFXLFVBQVUsRUFBRWpDLE1BQU0sdUNBQXVDLENBQUM7b0JBQ3hHO29CQUVBLElBQUltQyxhQUFhbEQsTUFBTSxHQUFHLE1BQU07d0JBQzlCLE1BQU0sSUFBSUMsTUFBTSxDQUFDLGVBQWUsRUFBRStDLFdBQVcsVUFBVSxFQUFFakMsTUFBTSx3Q0FBd0MsQ0FBQztvQkFDMUc7b0JBRUE0QixtQkFBbUJNLFlBQVlqRCxNQUFNO29CQUNyQzJDLG1CQUFtQk8sYUFBYWxELE1BQU07Z0JBQ3hDO1lBQ0Y7WUFFQSxJQUFJcUIsUUFBUTtnQkFDVixNQUFNOEIsb0JBQW9COUIsT0FBT0QsSUFBSSxDQUFDMEIsSUFBSTtnQkFFMUMsSUFBSUssa0JBQWtCbkQsTUFBTSxHQUFHLE1BQU07b0JBQ25DLE1BQU0sSUFBSUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFYyxNQUFNLHdDQUF3QyxDQUFDO2dCQUN6RjtnQkFFQTRCLG1CQUFtQlEsa0JBQWtCbkQsTUFBTTtZQUM3QztZQUVBLElBQUlLLFFBQVE7Z0JBQ1YsTUFBTStDLG9CQUFvQi9DLE9BQU9iLElBQUksQ0FBQ3NELElBQUk7Z0JBRTFDLElBQUlNLGtCQUFrQnBELE1BQU0sR0FBRyxLQUFLO29CQUNsQyxNQUFNLElBQUlDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRWMsTUFBTSx1Q0FBdUMsQ0FBQztnQkFDeEY7Z0JBRUE0QixtQkFBbUJTLGtCQUFrQnBELE1BQU07WUFDN0M7UUFDRjtRQUVBLElBQUkyQyxrQkFBa0IsTUFBTTtZQUMxQixNQUFNLElBQUkxQyxNQUFNO1FBQ2xCO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7R0FLQyxHQUNELElBQUksQ0FBQSxZQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUNELE1BQU0sS0FBSyxHQUFHO1lBQ3JCLElBQUksQ0FBQ0QsUUFBUTtZQUNiLElBQUksQ0FBQ0csZUFBZTtRQUN0QjtRQUVBLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLGlCQUFrQixDQUFDO0lBQ3RDOztRQXJYSyxxQkFDTCxDQUFBLGlCQUFrQixHQUFXOztBQXFYL0IifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,cAAc,sBAAsB,CAAC;AAErC,eAAO,MAAM,YAAY,QAAO,aAAoC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { EmbedsBuilder } from './builders/embeds.js';
2
+ export * from './builders/embeds.js';
3
+ export const createEmbeds = ()=>new EmbedsBuilder();
4
+
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbWJlZHNCdWlsZGVyIH0gZnJvbSAnLi9idWlsZGVycy9lbWJlZHMuanMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2J1aWxkZXJzL2VtYmVkcy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFbWJlZHMgPSAoKTogRW1iZWRzQnVpbGRlciA9PiBuZXcgRW1iZWRzQnVpbGRlcigpO1xuIl0sIm5hbWVzIjpbIkVtYmVkc0J1aWxkZXIiLCJjcmVhdGVFbWJlZHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBUSx1QkFBdUI7QUFFckQsY0FBYyx1QkFBdUI7QUFFckMsT0FBTyxNQUFNQyxlQUFlLElBQXFCLElBQUlELGdCQUFnQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"casing.d.ts","sourceRoot":"","sources":["../src/casing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE7D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAclD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAcpD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAepD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAapD"}
package/dist/casing.js ADDED
@@ -0,0 +1,53 @@
1
+ export function camelize(object) {
2
+ if (Array.isArray(object)) {
3
+ return object.map((element)=>camelize(element));
4
+ }
5
+ if (typeof object === 'object' && object !== null) {
6
+ const obj = {};
7
+ Object.keys(object).forEach((key)=>{
8
+ // @ts-expect-error js hack
9
+ obj[snakeToCamelCase(key)] = camelize(object[key]);
10
+ });
11
+ return obj;
12
+ }
13
+ return object;
14
+ }
15
+ export function snakelize(object) {
16
+ if (Array.isArray(object)) {
17
+ return object.map((element)=>snakelize(element));
18
+ }
19
+ if (typeof object === 'object' && object !== null) {
20
+ const obj = {};
21
+ Object.keys(object).forEach((key)=>{
22
+ // @ts-expect-error js hack
23
+ obj[camelToSnakeCase(key)] = snakelize(object[key]);
24
+ });
25
+ return obj;
26
+ }
27
+ return object;
28
+ }
29
+ export function snakeToCamelCase(str) {
30
+ if (!str.includes('_')) return str;
31
+ let result = '';
32
+ for(let i = 0, len = str.length; i < len; ++i){
33
+ if (str[i] === '_') {
34
+ result += str[++i].toUpperCase();
35
+ continue;
36
+ }
37
+ result += str[i];
38
+ }
39
+ return result;
40
+ }
41
+ export function camelToSnakeCase(str) {
42
+ let result = '';
43
+ for(let i = 0, len = str.length; i < len; ++i){
44
+ if (str[i] >= 'A' && str[i] <= 'Z') {
45
+ result += `_${str[i].toLowerCase()}`;
46
+ continue;
47
+ }
48
+ result += str[i];
49
+ }
50
+ return result;
51
+ }
52
+
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYXNpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYW1lbGl6ZSwgU25ha2VsaXplIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FtZWxpemU8VD4ob2JqZWN0OiBUKTogQ2FtZWxpemU8VD4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG9iamVjdC5tYXAoKGVsZW1lbnQpID0+IGNhbWVsaXplKGVsZW1lbnQpKSBhcyBDYW1lbGl6ZTxUPjtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHtcbiAgICBjb25zdCBvYmogPSB7fSBhcyBDYW1lbGl6ZTxUPjtcbiAgICAoT2JqZWN0LmtleXMob2JqZWN0KSBhcyBBcnJheTxrZXlvZiBUPikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGpzIGhhY2tcbiAgICAgIChvYmpbc25ha2VUb0NhbWVsQ2FzZShrZXkpXSBhcyBDYW1lbGl6ZTwoVCAmIG9iamVjdClba2V5b2YgVF0+KSA9IGNhbWVsaXplKG9iamVjdFtrZXldKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIHJldHVybiBvYmplY3QgYXMgQ2FtZWxpemU8VD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbmFrZWxpemU8VD4ob2JqZWN0OiBUKTogU25ha2VsaXplPFQ+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3QubWFwKChlbGVtZW50KSA9PiBzbmFrZWxpemUoZWxlbWVudCkpIGFzIFNuYWtlbGl6ZTxUPjtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHtcbiAgICBjb25zdCBvYmogPSB7fSBhcyBTbmFrZWxpemU8VD47XG4gICAgKE9iamVjdC5rZXlzKG9iamVjdCkgYXMgQXJyYXk8a2V5b2YgVD4pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBqcyBoYWNrXG4gICAgICAob2JqW2NhbWVsVG9TbmFrZUNhc2Uoa2V5KV0gYXMgU25ha2VsaXplPChUICYgb2JqZWN0KVtrZXlvZiBUXT4pID0gc25ha2VsaXplKG9iamVjdFtrZXldKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG4gIHJldHVybiBvYmplY3QgYXMgU25ha2VsaXplPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc25ha2VUb0NhbWVsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghc3RyLmluY2x1ZGVzKCdfJykpIHJldHVybiBzdHI7XG5cbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHN0cltpXSA9PT0gJ18nKSB7XG4gICAgICByZXN1bHQgKz0gc3RyWysraV0udG9VcHBlckNhc2UoKTtcblxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IHN0cltpXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW1lbFRvU25ha2VDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHN0cltpXSA+PSAnQScgJiYgc3RyW2ldIDw9ICdaJykge1xuICAgICAgcmVzdWx0ICs9IGBfJHtzdHJbaV0udG9Mb3dlckNhc2UoKX1gO1xuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXN1bHQgKz0gc3RyW2ldO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJuYW1lcyI6WyJjYW1lbGl6ZSIsIm9iamVjdCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImVsZW1lbnQiLCJvYmoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInNuYWtlVG9DYW1lbENhc2UiLCJzbmFrZWxpemUiLCJjYW1lbFRvU25ha2VDYXNlIiwic3RyIiwiaW5jbHVkZXMiLCJyZXN1bHQiLCJpIiwibGVuIiwibGVuZ3RoIiwidG9VcHBlckNhc2UiLCJ0b0xvd2VyQ2FzZSJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxTQUFTQSxTQUFZQyxNQUFTO0lBQ25DLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ0YsU0FBUztRQUN6QixPQUFPQSxPQUFPRyxHQUFHLENBQUMsQ0FBQ0MsVUFBWUwsU0FBU0s7SUFDMUM7SUFFQSxJQUFJLE9BQU9KLFdBQVcsWUFBWUEsV0FBVyxNQUFNO1FBQ2pELE1BQU1LLE1BQU0sQ0FBQztRQUNaQyxPQUFPQyxJQUFJLENBQUNQLFFBQTJCUSxPQUFPLENBQUMsQ0FBQ0M7WUFDL0MsMkJBQTJCO1lBQzFCSixHQUFHLENBQUNLLGlCQUFpQkQsS0FBSyxHQUF1Q1YsU0FBU0MsTUFBTSxDQUFDUyxJQUFJO1FBQ3hGO1FBQ0EsT0FBT0o7SUFDVDtJQUNBLE9BQU9MO0FBQ1Q7QUFFQSxPQUFPLFNBQVNXLFVBQWFYLE1BQVM7SUFDcEMsSUFBSUMsTUFBTUMsT0FBTyxDQUFDRixTQUFTO1FBQ3pCLE9BQU9BLE9BQU9HLEdBQUcsQ0FBQyxDQUFDQyxVQUFZTyxVQUFVUDtJQUMzQztJQUVBLElBQUksT0FBT0osV0FBVyxZQUFZQSxXQUFXLE1BQU07UUFDakQsTUFBTUssTUFBTSxDQUFDO1FBQ1pDLE9BQU9DLElBQUksQ0FBQ1AsUUFBMkJRLE9BQU8sQ0FBQyxDQUFDQztZQUMvQywyQkFBMkI7WUFDMUJKLEdBQUcsQ0FBQ08saUJBQWlCSCxLQUFLLEdBQXdDRSxVQUFVWCxNQUFNLENBQUNTLElBQUk7UUFDMUY7UUFDQSxPQUFPSjtJQUNUO0lBQ0EsT0FBT0w7QUFDVDtBQUVBLE9BQU8sU0FBU1UsaUJBQWlCRyxHQUFXO0lBQzFDLElBQUksQ0FBQ0EsSUFBSUMsUUFBUSxDQUFDLE1BQU0sT0FBT0Q7SUFFL0IsSUFBSUUsU0FBUztJQUNiLElBQUssSUFBSUMsSUFBSSxHQUFHQyxNQUFNSixJQUFJSyxNQUFNLEVBQUVGLElBQUlDLEtBQUssRUFBRUQsRUFBRztRQUM5QyxJQUFJSCxHQUFHLENBQUNHLEVBQUUsS0FBSyxLQUFLO1lBQ2xCRCxVQUFVRixHQUFHLENBQUMsRUFBRUcsRUFBRSxDQUFDRyxXQUFXO1lBRTlCO1FBQ0Y7UUFFQUosVUFBVUYsR0FBRyxDQUFDRyxFQUFFO0lBQ2xCO0lBRUEsT0FBT0Q7QUFDVDtBQUVBLE9BQU8sU0FBU0gsaUJBQWlCQyxHQUFXO0lBQzFDLElBQUlFLFNBQVM7SUFDYixJQUFLLElBQUlDLElBQUksR0FBR0MsTUFBTUosSUFBSUssTUFBTSxFQUFFRixJQUFJQyxLQUFLLEVBQUVELEVBQUc7UUFDOUMsSUFBSUgsR0FBRyxDQUFDRyxFQUFFLElBQUksT0FBT0gsR0FBRyxDQUFDRyxFQUFFLElBQUksS0FBSztZQUNsQ0QsVUFBVSxDQUFDLENBQUMsRUFBRUYsR0FBRyxDQUFDRyxFQUFFLENBQUNJLFdBQVcsSUFBSTtZQUVwQztRQUNGO1FBRUFMLFVBQVVGLEdBQUcsQ0FBQ0csRUFBRTtJQUNsQjtJQUVBLE9BQU9EO0FBQ1QifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"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"}