@discordeno/utils 21.0.1-next.fca0b40 → 22.0.1-next.0090dd2

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 (128) 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/builders/embeds.d.ts.map +1 -0
  9. package/dist/builders/embeds.js +305 -0
  10. package/dist/builders.d.ts.map +1 -0
  11. package/dist/builders.js +5 -0
  12. package/dist/casing.d.ts.map +1 -0
  13. package/dist/casing.js +53 -0
  14. package/dist/colors.d.ts.map +1 -0
  15. package/dist/colors.js +467 -0
  16. package/dist/constants.d.ts +2 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +3 -0
  19. package/dist/hash.d.ts.map +1 -0
  20. package/dist/hash.js +19 -0
  21. package/dist/{types/images.d.ts → images.d.ts} +40 -64
  22. package/dist/images.d.ts.map +1 -0
  23. package/dist/images.js +228 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +21 -0
  26. package/dist/logger.d.ts.map +1 -0
  27. package/dist/logger.js +115 -0
  28. package/dist/oauth2.d.ts +107 -0
  29. package/dist/oauth2.d.ts.map +1 -0
  30. package/dist/oauth2.js +48 -0
  31. package/dist/permissions.d.ts.map +1 -0
  32. package/dist/permissions.js +17 -0
  33. package/dist/reactions.d.ts.map +1 -0
  34. package/dist/{esm/reactions.js → reactions.js} +1 -1
  35. package/dist/snowflakes.d.ts.map +1 -0
  36. package/dist/snowflakes.js +11 -0
  37. package/dist/token.d.ts.map +1 -0
  38. package/dist/token.js +20 -0
  39. package/dist/{types/typeguards.d.ts → typeguards.d.ts} +1 -2
  40. package/dist/typeguards.d.ts.map +1 -0
  41. package/dist/typeguards.js +18 -0
  42. package/dist/urlToBase64.d.ts.map +1 -0
  43. package/dist/urlToBase64.js +9 -0
  44. package/dist/urls.d.ts.map +1 -0
  45. package/dist/urls.js +11 -0
  46. package/dist/utils.d.ts.map +1 -0
  47. package/dist/utils.js +21 -0
  48. package/package.json +21 -30
  49. package/dist/cjs/Collection.cjs +0 -122
  50. package/dist/cjs/base64.cjs +0 -276
  51. package/dist/cjs/bucket.cjs +0 -96
  52. package/dist/cjs/builders/embeds.cjs +0 -306
  53. package/dist/cjs/builders.cjs +0 -27
  54. package/dist/cjs/casing.cjs +0 -79
  55. package/dist/cjs/colors.cjs +0 -456
  56. package/dist/cjs/constants.cjs +0 -13
  57. package/dist/cjs/hash.cjs +0 -37
  58. package/dist/cjs/images.cjs +0 -149
  59. package/dist/cjs/index.cjs +0 -38
  60. package/dist/cjs/logger.cjs +0 -139
  61. package/dist/cjs/oauth2.cjs +0 -26
  62. package/dist/cjs/permissions.cjs +0 -35
  63. package/dist/cjs/reactions.cjs +0 -21
  64. package/dist/cjs/snowflakes.cjs +0 -32
  65. package/dist/cjs/token.cjs +0 -38
  66. package/dist/cjs/typeguards.cjs +0 -52
  67. package/dist/cjs/urlToBase64.cjs +0 -19
  68. package/dist/cjs/urls.cjs +0 -32
  69. package/dist/cjs/utils.cjs +0 -40
  70. package/dist/esm/Collection.js +0 -112
  71. package/dist/esm/base64.js +0 -262
  72. package/dist/esm/bucket.js +0 -81
  73. package/dist/esm/builders/embeds.js +0 -305
  74. package/dist/esm/builders.js +0 -5
  75. package/dist/esm/casing.js +0 -55
  76. package/dist/esm/colors.js +0 -467
  77. package/dist/esm/constants.js +0 -3
  78. package/dist/esm/hash.js +0 -19
  79. package/dist/esm/images.js +0 -204
  80. package/dist/esm/index.js +0 -21
  81. package/dist/esm/logger.js +0 -115
  82. package/dist/esm/oauth2.js +0 -16
  83. package/dist/esm/permissions.js +0 -17
  84. package/dist/esm/snowflakes.js +0 -11
  85. package/dist/esm/token.js +0 -20
  86. package/dist/esm/typeguards.js +0 -22
  87. package/dist/esm/urlToBase64.js +0 -9
  88. package/dist/esm/urls.js +0 -11
  89. package/dist/esm/utils.js +0 -21
  90. package/dist/types/Collection.d.ts.map +0 -1
  91. package/dist/types/base64.d.ts.map +0 -1
  92. package/dist/types/bucket.d.ts.map +0 -1
  93. package/dist/types/builders/embeds.d.ts.map +0 -1
  94. package/dist/types/builders.d.ts.map +0 -1
  95. package/dist/types/casing.d.ts.map +0 -1
  96. package/dist/types/colors.d.ts.map +0 -1
  97. package/dist/types/constants.d.ts +0 -2
  98. package/dist/types/constants.d.ts.map +0 -1
  99. package/dist/types/hash.d.ts.map +0 -1
  100. package/dist/types/images.d.ts.map +0 -1
  101. package/dist/types/index.d.ts.map +0 -1
  102. package/dist/types/logger.d.ts.map +0 -1
  103. package/dist/types/oauth2.d.ts +0 -69
  104. package/dist/types/oauth2.d.ts.map +0 -1
  105. package/dist/types/permissions.d.ts.map +0 -1
  106. package/dist/types/reactions.d.ts.map +0 -1
  107. package/dist/types/snowflakes.d.ts.map +0 -1
  108. package/dist/types/token.d.ts.map +0 -1
  109. package/dist/types/typeguards.d.ts.map +0 -1
  110. package/dist/types/urlToBase64.d.ts.map +0 -1
  111. package/dist/types/urls.d.ts.map +0 -1
  112. package/dist/types/utils.d.ts.map +0 -1
  113. /package/dist/{types/Collection.d.ts → Collection.d.ts} +0 -0
  114. /package/dist/{types/bucket.d.ts → bucket.d.ts} +0 -0
  115. /package/dist/{types/builders → builders}/embeds.d.ts +0 -0
  116. /package/dist/{types/builders.d.ts → builders.d.ts} +0 -0
  117. /package/dist/{types/casing.d.ts → casing.d.ts} +0 -0
  118. /package/dist/{types/colors.d.ts → colors.d.ts} +0 -0
  119. /package/dist/{types/hash.d.ts → hash.d.ts} +0 -0
  120. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  121. /package/dist/{types/logger.d.ts → logger.d.ts} +0 -0
  122. /package/dist/{types/permissions.d.ts → permissions.d.ts} +0 -0
  123. /package/dist/{types/reactions.d.ts → reactions.d.ts} +0 -0
  124. /package/dist/{types/snowflakes.d.ts → snowflakes.d.ts} +0 -0
  125. /package/dist/{types/token.d.ts → token.d.ts} +0 -0
  126. /package/dist/{types/urlToBase64.d.ts → urlToBase64.d.ts} +0 -0
  127. /package/dist/{types/urls.d.ts → urls.d.ts} +0 -0
  128. /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<DiscordEmbedThumbnail, '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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVycy9lbWJlZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBEaXNjb3JkRW1iZWQsXG4gIERpc2NvcmRFbWJlZEF1dGhvcixcbiAgRGlzY29yZEVtYmVkRmllbGQsXG4gIERpc2NvcmRFbWJlZEZvb3RlcixcbiAgRGlzY29yZEVtYmVkSW1hZ2UsXG4gIERpc2NvcmRFbWJlZFRodW1ibmFpbCxcbiAgRGlzY29yZEVtYmVkVmlkZW8sXG59IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJztcblxuLyoqXG4gKiBBIGJ1aWxkZXIgdG8gaGVscCBjcmVhdGUgRGlzY29yZCBlbWJlZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGVtYmVkcyA9IG5ldyBFbWJlZHNCdWlsZGVyKClcbiAqICAuc2V0VGl0bGUoJ015IEVtYmVkJylcbiAqICAuc2V0RGVzY3JpcHRpb24oJ1RoaXMgaXMgbXkgbmV3IGVtYmVkJylcbiAqICAubmV3RW1iZWQoKVxuICogIC5zZXRUaXRsZSgnTXkgU2Vjb25kIEVtYmVkJylcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYmVkc0J1aWxkZXIgZXh0ZW5kcyBBcnJheTxEaXNjb3JkRW1iZWQ+IHtcbiAgI2N1cnJlbnRFbWJlZEluZGV4OiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGZpZWxkIHRvIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gRmllbGQgdmFsdWVcbiAgICogQHBhcmFtIHs/Ym9vbGVhbn0gW2lubGluZT1mYWxzZV0gLSBGaWVsZCBzaG91bGQgYmUgaW5saW5lIG9yIG5vdC5cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBhZGRGaWVsZChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGlubGluZT86IGJvb2xlYW4pOiB0aGlzIHtcbiAgICBpZiAodGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50RW1iZWQuZmllbGRzID0gW107XG4gICAgfVxuXG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIGlubGluZSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgbmV3IGZpZWxkcyB0byB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtEaXNjb3JkRW1iZWRGaWVsZFtdfSBmaWVsZHMgLSBUaGUgZmllbGRzIHRvIGFkZFxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIGFkZEZpZWxkcyhmaWVsZHM6IERpc2NvcmRFbWJlZEZpZWxkW10pOiB0aGlzIHtcbiAgICBpZiAodGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNjdXJyZW50RW1iZWQuZmllbGRzID0gW107XG4gICAgfVxuXG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcy5wdXNoKC4uLmZpZWxkcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYmxhbmsgZW1iZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgbmV3RW1iZWQoKTogdGhpcyB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID49IDEwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01heGltdW0gZW1iZWQgY291bnQgZXhjZWVkZWQuIFlvdSBjYW4gbm90IGhhdmUgbW9yZSB0aGFuIDEwIGVtYmVkcy4nKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2goe30pO1xuICAgIHRoaXMuc2V0Q3VycmVudEVtYmVkKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGN1cnJlbnQgZW1iZWQgYXV0aG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIGF1dGhvclxuICAgKiBAcGFyYW0gez9PbWl0PERpc2NvcmRFbWJlZEF1dGhvciwgJ25hbWUnPn0gW29wdGlvbnNdIC0gRXh0cmEgYXV0aG9yIG9wdGlvbnNcbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRBdXRob3IobmFtZTogc3RyaW5nLCBvcHRpb25zPzogT21pdDxEaXNjb3JkRW1iZWRBdXRob3IsICduYW1lJz4pOiB0aGlzIHtcbiAgICB0aGlzLiNjdXJyZW50RW1iZWQuYXV0aG9yID0ge1xuICAgICAgLi4udGhpcy4jY3VycmVudEVtYmVkLmF1dGhvcixcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBuYW1lLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbG9yIG9uIHRoZSBzaWRlIG9mIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcGFyYW0geyhudW1iZXIgfCBzdHJpbmcpfSBjb2xvciAtIFRoZSBjb2xvciwgaW4gYmFzZTE2IG9yIGhleCBjb2xvciBjb2RlXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0Q29sb3IoY29sb3I6IG51bWJlciB8IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoY29sb3IudG9Mb3dlckNhc2UoKSA9PT0gJ3JhbmRvbScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0UmFuZG9tQ29sb3IoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBwYXJzZUludChjb2xvci5yZXBsYWNlKCcjJywgJycpLCAxNik7XG4gICAgICBjb2xvciA9IE51bWJlci5pc05hTihjb252ZXJ0ZWRWYWx1ZSkgPyAwIDogY29udmVydGVkVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmNvbG9yID0gY29sb3I7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGN1cnJlbnQgZW1iZWQgdG8gYSBkaWZmZXJlbnQgaW5kZXguXG4gICAqXG4gICAqIFdBUk5JTkc6IE9ubHkgdXNlIHRoaXMgbWV0aG9kIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLiBNYWtlIHN1cmUgdG8gc2V0IGl0IGJhY2sgdG8gdGhlIGxhdGVzdCB3aGVuIHlvdSdyZSBkb25lLlxuICAgKlxuICAgKiBAcGFyYW0gez9udW1iZXJ9IFtpbmRleF0gLSBUaGUgaW5kZXggb2YgdGhlIGVtYmVkIGluIHRoZSBFbWJlZHNCdWlsZGVyIGFycmF5XG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0Q3VycmVudEVtYmVkKGluZGV4PzogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2N1cnJlbnRFbWJlZEluZGV4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPj0gdGhpcy5sZW5ndGggfHwgaW5kZXggPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBub3Qgc2V0IHRoZSBjdXJyZW50IGVtYmVkIHRvIGEgaW5kZXggb3V0IG9mIGJvdW5kcy4nKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjdXJyZW50RW1iZWRJbmRleCA9IGluZGV4O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlc2NyaXB0aW9uIC0gRGVzY3JpcHRpb25cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVyd3JpdGUgYWxsIGZpZWxkcyBvbiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtEaXNjb3JkRW1iZWRGaWVsZFtdfSBmaWVsZHNcbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRGaWVsZHMoZmllbGRzOiBEaXNjb3JkRW1iZWRGaWVsZFtdKTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmZpZWxkcyA9IGZpZWxkcztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZm9vdGVyIGluIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGZvb3RlclxuICAgKiBAcGFyYW0gez9PbWl0PERpc2NvcmRFbWJlZEZvb3RlciwgJ3RleHQnPn0gW29wdGlvbnNdXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0Rm9vdGVyKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8RGlzY29yZEVtYmVkRm9vdGVyLCAndGV4dCc+KTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLmZvb3RlciA9IHtcbiAgICAgIC4uLnRoaXMuI2N1cnJlbnRFbWJlZC5mb290ZXIsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdGV4dCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBpbWFnZSBpbiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFVSTCBvZiB0aGUgaW1hZ2VcbiAgICogQHBhcmFtIHs/T21pdDxEaXNjb3JkRW1iZWRJbWFnZSwgJ3VybCc+fSBbb3B0aW9uc11cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRJbWFnZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8RGlzY29yZEVtYmVkSW1hZ2UsICd1cmwnPik6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5pbWFnZSA9IHtcbiAgICAgIC4uLnRoaXMuI2N1cnJlbnRFbWJlZC5pbWFnZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB1cmwsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcHJvdmlkZXIgb2YgdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7P3N0cmluZ30gW3VybF1cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRQcm92aWRlcihuYW1lOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC5wcm92aWRlciA9IHtcbiAgICAgIG5hbWUsXG4gICAgICB1cmwsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY29sb3Igb2YgdGhlIGN1cnJlbnQgZW1iZWQgdG8gYSByYW5kb20gdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0UmFuZG9tQ29sb3IoKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuc2V0Q29sb3IoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDB4ZmZmZmZmICsgMSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IGVtYmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGVcbiAgICogQHBhcmFtIHs/c3RyaW5nfSBbdXJsXVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcsIHVybD86IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC50aXRsZSA9IHRpdGxlO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgdGhpcy5zZXRVcmwodXJsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRpbWVzdGFtcCBvZiB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHBhcmFtIHs/KHN0cmluZyB8IG51bWJlciB8IERhdGUpfSBbdGltZXN0YW1wXVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldFRpbWVzdGFtcCh0aW1lc3RhbXA/OiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlKTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLnRpbWVzdGFtcCA9IG5ldyBEYXRlKHRpbWVzdGFtcCA/PyBEYXRlLm5vdygpKS50b0lTT1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0aHVtYm5haWwgb2YgdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgLSBVUkwgb2YgdGhlIGltYWdlXG4gICAqIEBwYXJhbSB7P09taXQ8RGlzY29yZEVtYmVkVGh1bWJuYWlsLCAndXJsJz59IFtvcHRpb25zXVxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHNldFRodW1ibmFpbCh1cmw6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8RGlzY29yZEVtYmVkVGh1bWJuYWlsLCAndXJsJz4pOiB0aGlzIHtcbiAgICB0aGlzLiNjdXJyZW50RW1iZWQudGh1bWJuYWlsID0ge1xuICAgICAgLi4udGhpcy4jY3VycmVudEVtYmVkLnRodW1ibmFpbCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB1cmwsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgVVJMIG9mIHRoZSBjdXJyZW50IGVtYmVkIHRpdGxlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIHtFbWJlZHNCdWlsZGVyfVxuICAgKi9cbiAgc2V0VXJsKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy4jY3VycmVudEVtYmVkLnVybCA9IHVybDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmlkZW8gb2YgdGhlIGN1cnJlbnQgZW1iZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAgICogQHBhcmFtIHs/T21pdDxEaXNjb3JkRW1iZWRWaWRlbywgJ3VybCc+fSBbb3B0aW9uc11cbiAgICogQHJldHVybnMge0VtYmVkc0J1aWxkZXJ9XG4gICAqL1xuICBzZXRWaWRlbyh1cmw6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8RGlzY29yZEVtYmVkVmlkZW8sICd1cmwnPik6IHRoaXMge1xuICAgIHRoaXMuI2N1cnJlbnRFbWJlZC52aWRlbyA9IHtcbiAgICAgIC4uLnRoaXMuI2N1cnJlbnRFbWJlZC52aWRlbyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB1cmwsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFsbCBlbWJlZHMgYXZhaWxhYmxlIGFnYWluc3QgY3VycmVudCBrbm93biBEaXNjb3JkIGxpbWl0cyB0byBoZWxwIHByZXZlbnQgYmFkIHJlcXVlc3RzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RW1iZWRzQnVpbGRlcn1cbiAgICovXG4gIHZhbGlkYXRlKCk6IHRoaXMge1xuICAgIGxldCB0b3RhbENoYXJhY3RlcnMgPSAwO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMTApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGNhbiBub3QgaGF2ZSBtb3JlIHRoYW4gMTAgZW1iZWRzIG9uIGEgc2luZ2xlIG1lc3NhZ2UuJyk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JFYWNoKCh7IGF1dGhvciwgZGVzY3JpcHRpb24sIGZpZWxkcywgZm9vdGVyLCB0aXRsZSB9LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRUaXRsZSA9IHRpdGxlLnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZFRpdGxlLmxlbmd0aCA+IDI1Nikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGl0bGUgb2YgZW1iZWQgJHtpbmRleH0gY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAyNTYgY2hhcmFjdGVycy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvdGFsQ2hhcmFjdGVycyArPSB0cmltbWVkVGl0bGUubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZERlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24udHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkRGVzY3JpcHRpb24ubGVuZ3RoID4gNDA5Nikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGVzY3JpcHRpb24gb2YgZW1iZWQgJHtpbmRleH0gY2FuIG5vdCBiZSBsb25nZXIgdGhhbiA0MDk2IGNoYXJhY3RlcnMuYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0b3RhbENoYXJhY3RlcnMgKz0gdHJpbW1lZERlc2NyaXB0aW9uLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkcykge1xuICAgICAgICBpZiAoZmllbGRzLmxlbmd0aCA+IDI1KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBlbWJlZCAke2luZGV4fSBjYW4gbm90IGhhdmUgbW9yZSB0aGFuIDI1IGZpZWxkcy5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKCh7IG5hbWUsIHZhbHVlIH0sIGZpZWxkSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCB0cmltbWVkTmFtZSA9IG5hbWUudHJpbSgpO1xuICAgICAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHZhbHVlLnRyaW0oKTtcblxuICAgICAgICAgIGlmICh0cmltbWVkTmFtZS5sZW5ndGggPiAyNTYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTmFtZSBvZiBmaWVsZCAke2ZpZWxkSW5kZXh9IG9uIGVtYmVkICR7aW5kZXh9IGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMjU2IGNoYXJhY3RlcnMuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRyaW1tZWRWYWx1ZS5sZW5ndGggPiA0MDk2KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIG9mIGZpZWxkICR7ZmllbGRJbmRleH0gb24gZW1iZWQgJHtpbmRleH0gY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdG90YWxDaGFyYWN0ZXJzICs9IHRyaW1tZWROYW1lLmxlbmd0aDtcbiAgICAgICAgICB0b3RhbENoYXJhY3RlcnMgKz0gdHJpbW1lZFZhbHVlLmxlbmd0aDtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb290ZXIpIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZEZvb3RlclRleHQgPSBmb290ZXIudGV4dC50cmltKCk7XG5cbiAgICAgICAgaWYgKHRyaW1tZWRGb290ZXJUZXh0Lmxlbmd0aCA+IDIwNDgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvb3RlciB0ZXh0IG9mIGVtYmVkICR7aW5kZXh9IGNhbiBub3QgYmUgbG9uZ2VyIHRoYW4gMjA0OCBjaGFyYWN0ZXJzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdG90YWxDaGFyYWN0ZXJzICs9IHRyaW1tZWRGb290ZXJUZXh0Lmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgaWYgKGF1dGhvcikge1xuICAgICAgICBjb25zdCB0cmltbWVkQXV0aG9yTmFtZSA9IGF1dGhvci5uYW1lLnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZEF1dGhvck5hbWUubGVuZ3RoID4gMjU2KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdXRob3IgbmFtZSBvZiBlbWJlZCAke2luZGV4fSBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDI1NiBjaGFyYWN0ZXJzLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgdG90YWxDaGFyYWN0ZXJzICs9IHRyaW1tZWRBdXRob3JOYW1lLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0b3RhbENoYXJhY3RlcnMgPiA2MDAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvdGFsIGNoYXJhY3RlciBsZW5ndGggb2YgYWxsIGVtYmVkcyBjYW4gbm90IGV4Y2VlZCA2MDAwIGNoYXJhY3RlcnMuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBlbWJlZC5cbiAgICpcbiAgICogQHJlYWRvbmx5XG4gICAqIEB0eXBlIHtEaXNjb3JkRW1iZWR9XG4gICAqL1xuICBnZXQgI2N1cnJlbnRFbWJlZCgpOiBEaXNjb3JkRW1iZWQge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5uZXdFbWJlZCgpO1xuICAgICAgdGhpcy5zZXRDdXJyZW50RW1iZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1t0aGlzLiNjdXJyZW50RW1iZWRJbmRleF07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFbWJlZHNCdWlsZGVyIiwiQXJyYXkiLCJhZGRGaWVsZCIsIm5hbWUiLCJ2YWx1ZSIsImlubGluZSIsImZpZWxkcyIsInVuZGVmaW5lZCIsInB1c2giLCJhZGRGaWVsZHMiLCJuZXdFbWJlZCIsImxlbmd0aCIsIkVycm9yIiwic2V0Q3VycmVudEVtYmVkIiwic2V0QXV0aG9yIiwib3B0aW9ucyIsImF1dGhvciIsInNldENvbG9yIiwiY29sb3IiLCJ0b0xvd2VyQ2FzZSIsInNldFJhbmRvbUNvbG9yIiwiY29udmVydGVkVmFsdWUiLCJwYXJzZUludCIsInJlcGxhY2UiLCJOdW1iZXIiLCJpc05hTiIsImluZGV4Iiwic2V0RGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldEZpZWxkcyIsInNldEZvb3RlciIsInRleHQiLCJmb290ZXIiLCJzZXRJbWFnZSIsInVybCIsImltYWdlIiwic2V0UHJvdmlkZXIiLCJwcm92aWRlciIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsInNldFRpdGxlIiwidGl0bGUiLCJzZXRVcmwiLCJzZXRUaW1lc3RhbXAiLCJ0aW1lc3RhbXAiLCJEYXRlIiwibm93IiwidG9JU09TdHJpbmciLCJzZXRUaHVtYm5haWwiLCJ0aHVtYm5haWwiLCJzZXRWaWRlbyIsInZpZGVvIiwidmFsaWRhdGUiLCJ0b3RhbENoYXJhY3RlcnMiLCJmb3JFYWNoIiwidHJpbW1lZFRpdGxlIiwidHJpbSIsInRyaW1tZWREZXNjcmlwdGlvbiIsImZpZWxkSW5kZXgiLCJ0cmltbWVkTmFtZSIsInRyaW1tZWRWYWx1ZSIsInRyaW1tZWRGb290ZXJUZXh0IiwidHJpbW1lZEF1dGhvck5hbWUiXSwibWFwcGluZ3MiOiJBQVVBOzs7Ozs7Ozs7Q0FTQyxHQUNELE9BQU8sTUFBTUEsc0JBQXNCQztJQUNqQyxDQUFBLGlCQUFrQixDQUFhO0lBRS9COzs7Ozs7O0dBT0MsR0FDREMsU0FBU0MsSUFBWSxFQUFFQyxLQUFhLEVBQUVDLE1BQWdCLEVBQVE7UUFDNUQsSUFBSSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNDLE1BQU0sS0FBS0MsV0FBVztZQUMzQyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNELE1BQU0sR0FBRyxFQUFFO1FBQ2hDO1FBRUEsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxNQUFNLENBQUNFLElBQUksQ0FBQztZQUM3Qkw7WUFDQUM7WUFDQUM7UUFDRjtRQUVBLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7O0dBS0MsR0FDREksVUFBVUgsTUFBMkIsRUFBUTtRQUMzQyxJQUFJLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsTUFBTSxLQUFLQyxXQUFXO1lBQzNDLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0QsTUFBTSxHQUFHLEVBQUU7UUFDaEM7UUFFQSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLE1BQU0sQ0FBQ0UsSUFBSSxJQUFJRjtRQUVsQyxPQUFPLElBQUk7SUFDYjtJQUVBOzs7O0dBSUMsR0FDREksV0FBaUI7UUFDZixJQUFJLElBQUksQ0FBQ0MsTUFBTSxJQUFJLElBQUk7WUFDckIsTUFBTSxJQUFJQyxNQUFNO1FBQ2xCO1FBRUEsSUFBSSxDQUFDSixJQUFJLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQ0ssZUFBZTtRQUVwQixPQUFPLElBQUk7SUFDYjtJQUVBOzs7Ozs7R0FNQyxHQUNEQyxVQUFVWCxJQUFZLEVBQUVZLE9BQTBDLEVBQVE7UUFDeEUsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQyxNQUFNLEdBQUc7WUFDMUIsR0FBRyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLE1BQU07WUFDNUIsR0FBR0QsT0FBTztZQUNWWjtRQUNGO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7R0FLQyxHQUNEYyxTQUFTQyxLQUFzQixFQUFRO1FBQ3JDLElBQUksT0FBT0EsVUFBVSxVQUFVO1lBQzdCLElBQUlBLE1BQU1DLFdBQVcsT0FBTyxVQUFVO2dCQUNwQyxPQUFPLElBQUksQ0FBQ0MsY0FBYztZQUM1QjtZQUVBLE1BQU1DLGlCQUFpQkMsU0FBU0osTUFBTUssT0FBTyxDQUFDLEtBQUssS0FBSztZQUN4REwsUUFBUU0sT0FBT0MsS0FBSyxDQUFDSixrQkFBa0IsSUFBSUE7UUFDN0M7UUFFQSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNILEtBQUssR0FBR0E7UUFFM0IsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7OztHQU9DLEdBQ0RMLGdCQUFnQmEsS0FBYyxFQUFRO1FBQ3BDLElBQUlBLFVBQVVuQixXQUFXO1lBQ3ZCLElBQUksQ0FBQyxDQUFBLGlCQUFrQixHQUFHLElBQUksQ0FBQ0ksTUFBTSxHQUFHO1lBRXhDLE9BQU8sSUFBSTtRQUNiO1FBRUEsSUFBSWUsU0FBUyxJQUFJLENBQUNmLE1BQU0sSUFBSWUsUUFBUSxHQUFHO1lBQ3JDLE1BQU0sSUFBSWQsTUFBTTtRQUNsQjtRQUVBLElBQUksQ0FBQyxDQUFBLGlCQUFrQixHQUFHYztRQUUxQixPQUFPLElBQUk7SUFDYjtJQUVBOzs7OztHQUtDLEdBQ0RDLGVBQWVDLFdBQW1CLEVBQVE7UUFDeEMsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxXQUFXLEdBQUdBO1FBRWpDLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7O0dBS0MsR0FDREMsVUFBVXZCLE1BQTJCLEVBQVE7UUFDM0MsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxNQUFNLEdBQUdBO1FBRTVCLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7OztHQU1DLEdBQ0R3QixVQUFVQyxJQUFZLEVBQUVoQixPQUEwQyxFQUFRO1FBQ3hFLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ2lCLE1BQU0sR0FBRztZQUMxQixHQUFHLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsTUFBTTtZQUM1QixHQUFHakIsT0FBTztZQUNWZ0I7UUFDRjtRQUVBLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7OztHQU1DLEdBQ0RFLFNBQVNDLEdBQVcsRUFBRW5CLE9BQXdDLEVBQVE7UUFDcEUsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDb0IsS0FBSyxHQUFHO1lBQ3pCLEdBQUcsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDQSxLQUFLO1lBQzNCLEdBQUdwQixPQUFPO1lBQ1ZtQjtRQUNGO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7O0dBTUMsR0FDREUsWUFBWWpDLElBQVksRUFBRStCLEdBQVksRUFBUTtRQUM1QyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNHLFFBQVEsR0FBRztZQUM1QmxDO1lBQ0ErQjtRQUNGO1FBRUEsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7OztHQUlDLEdBQ0RkLGlCQUF1QjtRQUNyQixPQUFPLElBQUksQ0FBQ0gsUUFBUSxDQUFDcUIsS0FBS0MsS0FBSyxDQUFDRCxLQUFLRSxNQUFNLEtBQU0sQ0FBQSxXQUFXLENBQUE7SUFDOUQ7SUFFQTs7Ozs7O0dBTUMsR0FDREMsU0FBU0MsS0FBYSxFQUFFUixHQUFZLEVBQVE7UUFDMUMsSUFBSSxDQUFDLENBQUEsWUFBYSxDQUFDUSxLQUFLLEdBQUdBO1FBRTNCLElBQUlSLEtBQUs7WUFDUCxJQUFJLENBQUNTLE1BQU0sQ0FBQ1Q7UUFDZDtRQUVBLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7O0dBS0MsR0FDRFUsYUFBYUMsU0FBa0MsRUFBUTtRQUNyRCxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLFNBQVMsR0FBRyxJQUFJQyxLQUFLRCxhQUFhQyxLQUFLQyxHQUFHLElBQUlDLFdBQVc7UUFFNUUsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7O0dBTUMsR0FDREMsYUFBYWYsR0FBVyxFQUFFbkIsT0FBNEMsRUFBUTtRQUM1RSxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNtQyxTQUFTLEdBQUc7WUFDN0IsR0FBRyxJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLFNBQVM7WUFDL0IsR0FBR25DLE9BQU87WUFDVm1CO1FBQ0Y7UUFFQSxPQUFPLElBQUk7SUFDYjtJQUVBOzs7OztHQUtDLEdBQ0RTLE9BQU9ULEdBQVcsRUFBUTtRQUN4QixJQUFJLENBQUMsQ0FBQSxZQUFhLENBQUNBLEdBQUcsR0FBR0E7UUFFekIsT0FBTyxJQUFJO0lBQ2I7SUFFQTs7Ozs7O0dBTUMsR0FDRGlCLFNBQVNqQixHQUFXLEVBQUVuQixPQUF3QyxFQUFRO1FBQ3BFLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ3FDLEtBQUssR0FBRztZQUN6QixHQUFHLElBQUksQ0FBQyxDQUFBLFlBQWEsQ0FBQ0EsS0FBSztZQUMzQixHQUFHckMsT0FBTztZQUNWbUI7UUFDRjtRQUVBLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7R0FJQyxHQUNEbUIsV0FBaUI7UUFDZixJQUFJQyxrQkFBa0I7UUFFdEIsSUFBSSxJQUFJLENBQUMzQyxNQUFNLEdBQUcsSUFBSTtZQUNwQixNQUFNLElBQUlDLE1BQU07UUFDbEI7UUFFQSxJQUFJLENBQUMyQyxPQUFPLENBQUMsQ0FBQyxFQUFFdkMsTUFBTSxFQUFFWSxXQUFXLEVBQUV0QixNQUFNLEVBQUUwQixNQUFNLEVBQUVVLEtBQUssRUFBRSxFQUFFaEI7WUFDNUQsSUFBSWdCLE9BQU87Z0JBQ1QsTUFBTWMsZUFBZWQsTUFBTWUsSUFBSTtnQkFFL0IsSUFBSUQsYUFBYTdDLE1BQU0sR0FBRyxLQUFLO29CQUM3QixNQUFNLElBQUlDLE1BQU0sQ0FBQyxlQUFlLEVBQUVjLE1BQU0sdUNBQXVDLENBQUM7Z0JBQ2xGO2dCQUVBNEIsbUJBQW1CRSxhQUFhN0MsTUFBTTtZQUN4QztZQUVBLElBQUlpQixhQUFhO2dCQUNmLE1BQU04QixxQkFBcUI5QixZQUFZNkIsSUFBSTtnQkFFM0MsSUFBSUMsbUJBQW1CL0MsTUFBTSxHQUFHLE1BQU07b0JBQ3BDLE1BQU0sSUFBSUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFYyxNQUFNLHdDQUF3QyxDQUFDO2dCQUN6RjtnQkFFQTRCLG1CQUFtQkksbUJBQW1CL0MsTUFBTTtZQUM5QztZQUVBLElBQUlMLFFBQVE7Z0JBQ1YsSUFBSUEsT0FBT0ssTUFBTSxHQUFHLElBQUk7b0JBQ3RCLE1BQU0sSUFBSUMsTUFBTSxDQUFDLE1BQU0sRUFBRWMsTUFBTSxrQ0FBa0MsQ0FBQztnQkFDcEU7Z0JBRUFwQixPQUFPaUQsT0FBTyxDQUFDLENBQUMsRUFBRXBELElBQUksRUFBRUMsS0FBSyxFQUFFLEVBQUV1RDtvQkFDL0IsTUFBTUMsY0FBY3pELEtBQUtzRCxJQUFJO29CQUM3QixNQUFNSSxlQUFlekQsTUFBTXFELElBQUk7b0JBRS9CLElBQUlHLFlBQVlqRCxNQUFNLEdBQUcsS0FBSzt3QkFDNUIsTUFBTSxJQUFJQyxNQUFNLENBQUMsY0FBYyxFQUFFK0MsV0FBVyxVQUFVLEVBQUVqQyxNQUFNLHVDQUF1QyxDQUFDO29CQUN4RztvQkFFQSxJQUFJbUMsYUFBYWxELE1BQU0sR0FBRyxNQUFNO3dCQUM5QixNQUFNLElBQUlDLE1BQU0sQ0FBQyxlQUFlLEVBQUUrQyxXQUFXLFVBQVUsRUFBRWpDLE1BQU0sd0NBQXdDLENBQUM7b0JBQzFHO29CQUVBNEIsbUJBQW1CTSxZQUFZakQsTUFBTTtvQkFDckMyQyxtQkFBbUJPLGFBQWFsRCxNQUFNO2dCQUN4QztZQUNGO1lBRUEsSUFBSXFCLFFBQVE7Z0JBQ1YsTUFBTThCLG9CQUFvQjlCLE9BQU9ELElBQUksQ0FBQzBCLElBQUk7Z0JBRTFDLElBQUlLLGtCQUFrQm5ELE1BQU0sR0FBRyxNQUFNO29CQUNuQyxNQUFNLElBQUlDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRWMsTUFBTSx3Q0FBd0MsQ0FBQztnQkFDekY7Z0JBRUE0QixtQkFBbUJRLGtCQUFrQm5ELE1BQU07WUFDN0M7WUFFQSxJQUFJSyxRQUFRO2dCQUNWLE1BQU0rQyxvQkFBb0IvQyxPQUFPYixJQUFJLENBQUNzRCxJQUFJO2dCQUUxQyxJQUFJTSxrQkFBa0JwRCxNQUFNLEdBQUcsS0FBSztvQkFDbEMsTUFBTSxJQUFJQyxNQUFNLENBQUMscUJBQXFCLEVBQUVjLE1BQU0sdUNBQXVDLENBQUM7Z0JBQ3hGO2dCQUVBNEIsbUJBQW1CUyxrQkFBa0JwRCxNQUFNO1lBQzdDO1FBQ0Y7UUFFQSxJQUFJMkMsa0JBQWtCLE1BQU07WUFDMUIsTUFBTSxJQUFJMUMsTUFBTTtRQUNsQjtRQUVBLE9BQU8sSUFBSTtJQUNiO0lBRUE7Ozs7O0dBS0MsR0FDRCxJQUFJLENBQUEsWUFBYTtRQUNmLElBQUksSUFBSSxDQUFDRCxNQUFNLEtBQUssR0FBRztZQUNyQixJQUFJLENBQUNELFFBQVE7WUFDYixJQUFJLENBQUNHLGVBQWU7UUFDdEI7UUFFQSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxpQkFBa0IsQ0FBQztJQUN0Qzs7UUFyWEsscUJBQ0wsQ0FBQSxpQkFBa0IsR0FBVzs7QUFxWC9CIn0=
@@ -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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"}