@discordjs/rest 2.6.2 → 2.6.3

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/index.d.mts CHANGED
@@ -6,8 +6,8 @@ import { Collection } from '@discordjs/collection';
6
6
  import { Awaitable } from '@discordjs/util';
7
7
  import { ImageSize, Snowflake } from 'discord-api-types/v10';
8
8
  export { ImageSize } from 'discord-api-types/v10';
9
- import { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';
10
9
  import * as url from 'url';
10
+ import { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';
11
11
 
12
12
  interface IHandler {
13
13
  /**
@@ -928,14 +928,27 @@ declare class REST extends AsyncEventEmitter<RestEvents> {
928
928
  private static generateRouteData;
929
929
  }
930
930
 
931
+ /**
932
+ * Options for serializing URL search parameters.
933
+ */
934
+ interface MakeURLSearchParamsOptions {
935
+ /**
936
+ * How array values should be serialized.
937
+ *
938
+ * @defaultValue `'repeat'`
939
+ * @see {@link https://docs.discord.com/developers/reference#array-query-strings}
940
+ */
941
+ arrayFormat?: 'comma' | 'repeat';
942
+ }
931
943
  /**
932
944
  * Creates and populates an URLSearchParams instance from an object, stripping
933
945
  * out null and undefined values, while also coercing non-strings to strings.
934
946
  *
935
- * @param options - The options to use
947
+ * @param parameters - The parameters to use
948
+ * @param options - The options for serializing URL search parameters
936
949
  * @returns A populated URLSearchParams instance
937
950
  */
938
- declare function makeURLSearchParams<OptionsType extends object>(options?: Readonly<OptionsType>): url.URLSearchParams;
951
+ declare function makeURLSearchParams<ParametersType extends object>(parameters?: Readonly<ParametersType>, options?: MakeURLSearchParamsOptions): url.URLSearchParams;
939
952
  /**
940
953
  * Converts the response to usable data
941
954
  *
@@ -955,4 +968,4 @@ declare function calculateUserDefaultAvatarIndex(userId: Snowflake): number;
955
968
  */
956
969
  declare const version: string;
957
970
 
958
- export { ALLOWED_EXTENSIONS, ALLOWED_SIZES, ALLOWED_STICKER_EXTENSIONS, type APIRequest, type BaseImageURLOptions, BurstHandlerMajorIdKey, CDN, DEPRECATION_WARNING_PREFIX, DefaultRestOptions, DefaultUserAgent, DefaultUserAgentAppendix, DiscordAPIError, type DiscordErrorData, type EmojiURLOptions, type EmojiURLOptionsNotWebp, type EmojiURLOptionsWebp, type GetRateLimitOffsetFunction, HTTPError, type HandlerRequestData, type HashData, type ImageExtension, type ImageURLOptions, type InternalRequest, type InvalidRequestWarningData, type MakeURLOptions, type OAuthErrorData, OverwrittenMimeTypes, REST, RESTEvents, type RESTOptions, type RateLimitData, RateLimitError, type RateLimitQueueFilter, type RawFile, type RequestBody, type RequestData, type RequestHeaders, RequestMethod, type ResponseLike, type RestEvents, type RestEventsMap, type RouteData, type RouteLike, type StickerExtension, calculateUserDefaultAvatarIndex, makeURLSearchParams, parseResponse, version };
971
+ export { ALLOWED_EXTENSIONS, ALLOWED_SIZES, ALLOWED_STICKER_EXTENSIONS, type APIRequest, type BaseImageURLOptions, BurstHandlerMajorIdKey, CDN, DEPRECATION_WARNING_PREFIX, DefaultRestOptions, DefaultUserAgent, DefaultUserAgentAppendix, DiscordAPIError, type DiscordErrorData, type EmojiURLOptions, type EmojiURLOptionsNotWebp, type EmojiURLOptionsWebp, type GetRateLimitOffsetFunction, HTTPError, type HandlerRequestData, type HashData, type ImageExtension, type ImageURLOptions, type InternalRequest, type InvalidRequestWarningData, type MakeURLOptions, type MakeURLSearchParamsOptions, type OAuthErrorData, OverwrittenMimeTypes, REST, RESTEvents, type RESTOptions, type RateLimitData, RateLimitError, type RateLimitQueueFilter, type RawFile, type RequestBody, type RequestData, type RequestHeaders, RequestMethod, type ResponseLike, type RestEvents, type RestEventsMap, type RouteData, type RouteLike, type StickerExtension, calculateUserDefaultAvatarIndex, makeURLSearchParams, parseResponse, version };
package/dist/index.d.ts CHANGED
@@ -6,8 +6,8 @@ import { Collection } from '@discordjs/collection';
6
6
  import { Awaitable } from '@discordjs/util';
7
7
  import { ImageSize, Snowflake } from 'discord-api-types/v10';
8
8
  export { ImageSize } from 'discord-api-types/v10';
9
- import { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';
10
9
  import * as url from 'url';
10
+ import { AsyncEventEmitter } from '@vladfrangu/async_event_emitter';
11
11
 
12
12
  interface IHandler {
13
13
  /**
@@ -928,14 +928,27 @@ declare class REST extends AsyncEventEmitter<RestEvents> {
928
928
  private static generateRouteData;
929
929
  }
930
930
 
931
+ /**
932
+ * Options for serializing URL search parameters.
933
+ */
934
+ interface MakeURLSearchParamsOptions {
935
+ /**
936
+ * How array values should be serialized.
937
+ *
938
+ * @defaultValue `'repeat'`
939
+ * @see {@link https://docs.discord.com/developers/reference#array-query-strings}
940
+ */
941
+ arrayFormat?: 'comma' | 'repeat';
942
+ }
931
943
  /**
932
944
  * Creates and populates an URLSearchParams instance from an object, stripping
933
945
  * out null and undefined values, while also coercing non-strings to strings.
934
946
  *
935
- * @param options - The options to use
947
+ * @param parameters - The parameters to use
948
+ * @param options - The options for serializing URL search parameters
936
949
  * @returns A populated URLSearchParams instance
937
950
  */
938
- declare function makeURLSearchParams<OptionsType extends object>(options?: Readonly<OptionsType>): url.URLSearchParams;
951
+ declare function makeURLSearchParams<ParametersType extends object>(parameters?: Readonly<ParametersType>, options?: MakeURLSearchParamsOptions): url.URLSearchParams;
939
952
  /**
940
953
  * Converts the response to usable data
941
954
  *
@@ -955,4 +968,4 @@ declare function calculateUserDefaultAvatarIndex(userId: Snowflake): number;
955
968
  */
956
969
  declare const version: string;
957
970
 
958
- export { ALLOWED_EXTENSIONS, ALLOWED_SIZES, ALLOWED_STICKER_EXTENSIONS, type APIRequest, type BaseImageURLOptions, BurstHandlerMajorIdKey, CDN, DEPRECATION_WARNING_PREFIX, DefaultRestOptions, DefaultUserAgent, DefaultUserAgentAppendix, DiscordAPIError, type DiscordErrorData, type EmojiURLOptions, type EmojiURLOptionsNotWebp, type EmojiURLOptionsWebp, type GetRateLimitOffsetFunction, HTTPError, type HandlerRequestData, type HashData, type ImageExtension, type ImageURLOptions, type InternalRequest, type InvalidRequestWarningData, type MakeURLOptions, type OAuthErrorData, OverwrittenMimeTypes, REST, RESTEvents, type RESTOptions, type RateLimitData, RateLimitError, type RateLimitQueueFilter, type RawFile, type RequestBody, type RequestData, type RequestHeaders, RequestMethod, type ResponseLike, type RestEvents, type RestEventsMap, type RouteData, type RouteLike, type StickerExtension, calculateUserDefaultAvatarIndex, makeURLSearchParams, parseResponse, version };
971
+ export { ALLOWED_EXTENSIONS, ALLOWED_SIZES, ALLOWED_STICKER_EXTENSIONS, type APIRequest, type BaseImageURLOptions, BurstHandlerMajorIdKey, CDN, DEPRECATION_WARNING_PREFIX, DefaultRestOptions, DefaultUserAgent, DefaultUserAgentAppendix, DiscordAPIError, type DiscordErrorData, type EmojiURLOptions, type EmojiURLOptionsNotWebp, type EmojiURLOptionsWebp, type GetRateLimitOffsetFunction, HTTPError, type HandlerRequestData, type HashData, type ImageExtension, type ImageURLOptions, type InternalRequest, type InvalidRequestWarningData, type MakeURLOptions, type MakeURLSearchParamsOptions, type OAuthErrorData, OverwrittenMimeTypes, REST, RESTEvents, type RESTOptions, type RateLimitData, RateLimitError, type RateLimitQueueFilter, type RawFile, type RequestBody, type RequestData, type RequestHeaders, RequestMethod, type ResponseLike, type RestEvents, type RestEventsMap, type RouteData, type RouteLike, type StickerExtension, calculateUserDefaultAvatarIndex, makeURLSearchParams, parseResponse, version };
package/dist/index.js CHANGED
@@ -127,7 +127,7 @@ var import_v102 = require("discord-api-types/v10");
127
127
  // src/lib/utils/constants.ts
128
128
  var import_util = require("@discordjs/util");
129
129
  var import_v10 = require("discord-api-types/v10");
130
- var DefaultUserAgent = `DiscordBot (https://discord.js.org, 2.6.2)`;
130
+ var DefaultUserAgent = `DiscordBot (https://discord.js.org, 2.6.3)`;
131
131
  var DefaultUserAgentAppendix = (0, import_util.getUserAgentAppendix)();
132
132
  var DefaultRestOptions = {
133
133
  agent: null,
@@ -264,10 +264,29 @@ function serializeSearchParam(value) {
264
264
  }
265
265
  }
266
266
  __name(serializeSearchParam, "serializeSearchParam");
267
- function makeURLSearchParams(options) {
267
+ function makeURLSearchParams(parameters, options = {}) {
268
268
  const params = new URLSearchParams();
269
- if (!options) return params;
270
- for (const [key, value] of Object.entries(options)) {
269
+ if (!parameters) return params;
270
+ const { arrayFormat = "repeat" } = options;
271
+ for (const [key, value] of Object.entries(parameters)) {
272
+ if (Array.isArray(value)) {
273
+ const commaSeparatedElements = arrayFormat === "comma" ? [] : null;
274
+ for (const element of value) {
275
+ const serialized2 = serializeSearchParam(element);
276
+ if (serialized2 === null) {
277
+ continue;
278
+ }
279
+ if (commaSeparatedElements) {
280
+ commaSeparatedElements.push(serialized2);
281
+ } else {
282
+ params.append(key, serialized2);
283
+ }
284
+ }
285
+ if (commaSeparatedElements?.length) {
286
+ params.append(key, commaSeparatedElements.join(","));
287
+ }
288
+ continue;
289
+ }
271
290
  const serialized = serializeSearchParam(value);
272
291
  if (serialized !== null) params.append(key, serialized);
273
292
  }
@@ -1499,7 +1518,7 @@ var REST = class _REST extends import_async_event_emitter.AsyncEventEmitter {
1499
1518
  };
1500
1519
 
1501
1520
  // src/shared.ts
1502
- var version = "2.6.2";
1521
+ var version = "2.6.3";
1503
1522
 
1504
1523
  // src/index.ts
1505
1524
  globalThis.FormData ??= import_undici2.FormData;