@discordkit/core 3.2.0 → 4.0.1

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 (247) hide show
  1. package/CHANGELOG.md +423 -0
  2. package/README.md +52 -0
  3. package/dist/index.d.mts +23 -0
  4. package/dist/index.mjs +23 -0
  5. package/dist/requests/DiscordSession.d.mts +72 -0
  6. package/dist/requests/DiscordSession.d.mts.map +1 -0
  7. package/dist/requests/DiscordSession.mjs +262 -0
  8. package/dist/requests/DiscordSession.mjs.map +1 -0
  9. package/dist/requests/addParams.d.mts +16 -0
  10. package/dist/requests/addParams.d.mts.map +1 -0
  11. package/dist/requests/addParams.mjs +26 -0
  12. package/dist/requests/addParams.mjs.map +1 -0
  13. package/dist/requests/buildURL.d.mts +8 -0
  14. package/dist/requests/buildURL.d.mts.map +1 -0
  15. package/dist/requests/buildURL.mjs +9 -0
  16. package/dist/requests/buildURL.mjs.map +1 -0
  17. package/dist/requests/getAsset.d.mts +8 -0
  18. package/dist/requests/getAsset.d.mts.map +1 -0
  19. package/dist/requests/getAsset.mjs +8 -0
  20. package/dist/requests/getAsset.mjs.map +1 -0
  21. package/dist/requests/index.d.mts +9 -0
  22. package/dist/requests/index.mjs +9 -0
  23. package/dist/requests/methods.d.mts +64 -0
  24. package/dist/requests/methods.d.mts.map +1 -0
  25. package/dist/requests/methods.mjs +12 -0
  26. package/dist/requests/methods.mjs.map +1 -0
  27. package/dist/requests/request.d.mts +28 -0
  28. package/dist/requests/request.d.mts.map +1 -0
  29. package/dist/requests/request.mjs +31 -0
  30. package/dist/requests/request.mjs.map +1 -0
  31. package/dist/requests/toProcedure.d.mts +41 -0
  32. package/dist/requests/toProcedure.d.mts.map +1 -0
  33. package/dist/requests/toProcedure.mjs +29 -0
  34. package/dist/requests/toProcedure.mjs.map +1 -0
  35. package/dist/requests/toQuery.d.mts +37 -0
  36. package/dist/requests/toQuery.d.mts.map +1 -0
  37. package/dist/requests/toQuery.mjs +10 -0
  38. package/dist/requests/toQuery.mjs.map +1 -0
  39. package/dist/requests/toValidated.d.mts +17 -0
  40. package/dist/requests/toValidated.d.mts.map +1 -0
  41. package/dist/requests/toValidated.mjs +27 -0
  42. package/dist/requests/toValidated.mjs.map +1 -0
  43. package/dist/requests/{verifyKey.d.ts → verifyKey.d.mts} +5 -1
  44. package/dist/requests/verifyKey.d.mts.map +1 -0
  45. package/dist/requests/verifyKey.mjs +64 -0
  46. package/dist/requests/verifyKey.mjs.map +1 -0
  47. package/dist/utils/isBetween.d.mts +5 -0
  48. package/dist/utils/isBetween.d.mts.map +1 -0
  49. package/dist/utils/isBetween.mjs +6 -0
  50. package/dist/utils/isBetween.mjs.map +1 -0
  51. package/dist/utils/{isNonNullable.js → isNonNullable.d.mts} +6 -2
  52. package/dist/utils/isNonNullable.d.mts.map +1 -0
  53. package/dist/utils/isNonNullable.mjs +24 -0
  54. package/dist/utils/isNonNullable.mjs.map +1 -0
  55. package/dist/utils/isNumericString.d.mts +5 -0
  56. package/dist/utils/isNumericString.d.mts.map +1 -0
  57. package/dist/utils/isNumericString.mjs +6 -0
  58. package/dist/utils/isNumericString.mjs.map +1 -0
  59. package/dist/utils/isObject.d.mts +5 -0
  60. package/dist/utils/isObject.d.mts.map +1 -0
  61. package/dist/utils/isObject.mjs +6 -0
  62. package/dist/utils/isObject.mjs.map +1 -0
  63. package/dist/utils/sleep.d.mts +8 -0
  64. package/dist/utils/sleep.d.mts.map +1 -0
  65. package/dist/utils/sleep.mjs +9 -0
  66. package/dist/utils/sleep.mjs.map +1 -0
  67. package/dist/utils/toCamelCase.d.mts +5 -0
  68. package/dist/utils/toCamelCase.d.mts.map +1 -0
  69. package/dist/utils/toCamelCase.mjs +6 -0
  70. package/dist/utils/toCamelCase.mjs.map +1 -0
  71. package/dist/utils/toCamelKeys.d.mts +20 -0
  72. package/dist/utils/toCamelKeys.d.mts.map +1 -0
  73. package/dist/utils/toCamelKeys.mjs +15 -0
  74. package/dist/utils/toCamelKeys.mjs.map +1 -0
  75. package/dist/utils/toSnakeCase.d.mts +5 -0
  76. package/dist/utils/toSnakeCase.d.mts.map +1 -0
  77. package/dist/utils/toSnakeCase.mjs +6 -0
  78. package/dist/utils/toSnakeCase.mjs.map +1 -0
  79. package/dist/utils/toSnakeKeys.d.mts +24 -0
  80. package/dist/utils/toSnakeKeys.d.mts.map +1 -0
  81. package/dist/utils/toSnakeKeys.mjs +15 -0
  82. package/dist/utils/toSnakeKeys.mjs.map +1 -0
  83. package/dist/validations/asDigits.d.mts +13 -0
  84. package/dist/validations/asDigits.d.mts.map +1 -0
  85. package/dist/validations/asDigits.mjs +12 -0
  86. package/dist/validations/asDigits.mjs.map +1 -0
  87. package/dist/validations/asInteger.d.mts +13 -0
  88. package/dist/validations/asInteger.d.mts.map +1 -0
  89. package/dist/validations/asInteger.mjs +12 -0
  90. package/dist/validations/asInteger.mjs.map +1 -0
  91. package/dist/validations/bitfield.d.mts +24 -0
  92. package/dist/validations/bitfield.d.mts.map +1 -0
  93. package/dist/validations/bitfield.mjs +22 -0
  94. package/dist/validations/bitfield.mjs.map +1 -0
  95. package/dist/validations/boundedArray.d.mts +14 -0
  96. package/dist/validations/boundedArray.d.mts.map +1 -0
  97. package/dist/validations/boundedArray.mjs +11 -0
  98. package/dist/validations/boundedArray.mjs.map +1 -0
  99. package/dist/validations/boundedInteger.d.mts +14 -0
  100. package/dist/validations/boundedInteger.d.mts.map +1 -0
  101. package/dist/validations/boundedInteger.mjs +11 -0
  102. package/dist/validations/boundedInteger.mjs.map +1 -0
  103. package/dist/validations/boundedString.d.mts +15 -0
  104. package/dist/validations/boundedString.d.mts.map +1 -0
  105. package/dist/validations/boundedString.mjs +12 -0
  106. package/dist/validations/boundedString.mjs.map +1 -0
  107. package/dist/validations/datauri.d.mts +25 -0
  108. package/dist/validations/datauri.d.mts.map +1 -0
  109. package/dist/validations/datauri.mjs +19 -0
  110. package/dist/validations/datauri.mjs.map +1 -0
  111. package/dist/validations/fileUpload.d.mts +130 -0
  112. package/dist/validations/fileUpload.d.mts.map +1 -0
  113. package/dist/validations/fileUpload.mjs +116 -0
  114. package/dist/validations/fileUpload.mjs.map +1 -0
  115. package/dist/validations/hasMimeType.d.mts +17 -0
  116. package/dist/validations/hasMimeType.d.mts.map +1 -0
  117. package/dist/validations/hasMimeType.mjs +18 -0
  118. package/dist/validations/hasMimeType.mjs.map +1 -0
  119. package/dist/validations/hasSize.d.mts +11 -0
  120. package/dist/validations/hasSize.d.mts.map +1 -0
  121. package/dist/validations/hasSize.mjs +14 -0
  122. package/dist/validations/hasSize.mjs.map +1 -0
  123. package/dist/validations/index.d.mts +15 -0
  124. package/dist/validations/index.mjs +15 -0
  125. package/dist/validations/schema.d.mts +103 -0
  126. package/dist/validations/schema.d.mts.map +1 -0
  127. package/dist/validations/schema.mjs +111 -0
  128. package/dist/validations/schema.mjs.map +1 -0
  129. package/dist/validations/{snowflake.d.ts → snowflake.d.mts} +10 -7
  130. package/dist/validations/snowflake.d.mts.map +1 -0
  131. package/dist/validations/snowflake.mjs +30 -0
  132. package/dist/validations/snowflake.mjs.map +1 -0
  133. package/dist/validations/timestamp.d.mts +8 -0
  134. package/dist/validations/timestamp.d.mts.map +1 -0
  135. package/dist/validations/timestamp.mjs +8 -0
  136. package/dist/validations/timestamp.mjs.map +1 -0
  137. package/dist/validations/toBlob.d.mts +8 -0
  138. package/dist/validations/toBlob.d.mts.map +1 -0
  139. package/dist/validations/toBlob.mjs +19 -0
  140. package/dist/validations/toBlob.mjs.map +1 -0
  141. package/dist/validations/url.d.mts +7 -0
  142. package/dist/validations/url.d.mts.map +1 -0
  143. package/dist/validations/url.mjs +7 -0
  144. package/dist/validations/url.mjs.map +1 -0
  145. package/package.json +10 -23
  146. package/dist/index.d.ts +0 -2
  147. package/dist/index.js +0 -3
  148. package/dist/index.js.map +0 -1
  149. package/dist/requests/DiscordSession.d.ts +0 -25
  150. package/dist/requests/DiscordSession.js +0 -255
  151. package/dist/requests/DiscordSession.js.map +0 -1
  152. package/dist/requests/addParams.d.ts +0 -2
  153. package/dist/requests/addParams.js +0 -11
  154. package/dist/requests/addParams.js.map +0 -1
  155. package/dist/requests/buildURL.d.ts +0 -2
  156. package/dist/requests/buildURL.js +0 -4
  157. package/dist/requests/buildURL.js.map +0 -1
  158. package/dist/requests/getAsset.d.ts +0 -2
  159. package/dist/requests/getAsset.js +0 -3
  160. package/dist/requests/getAsset.js.map +0 -1
  161. package/dist/requests/index.d.ts +0 -8
  162. package/dist/requests/index.js +0 -9
  163. package/dist/requests/index.js.map +0 -1
  164. package/dist/requests/methods.d.ts +0 -13
  165. package/dist/requests/methods.js +0 -8
  166. package/dist/requests/methods.js.map +0 -1
  167. package/dist/requests/request.d.ts +0 -2
  168. package/dist/requests/request.js +0 -30
  169. package/dist/requests/request.js.map +0 -1
  170. package/dist/requests/toProcedure.d.ts +0 -31
  171. package/dist/requests/toProcedure.js +0 -36
  172. package/dist/requests/toProcedure.js.map +0 -1
  173. package/dist/requests/toQuery.d.ts +0 -28
  174. package/dist/requests/toQuery.js +0 -9
  175. package/dist/requests/toQuery.js.map +0 -1
  176. package/dist/requests/toValidated.d.ts +0 -13
  177. package/dist/requests/toValidated.js +0 -29
  178. package/dist/requests/toValidated.js.map +0 -1
  179. package/dist/requests/verifyKey.js +0 -91
  180. package/dist/requests/verifyKey.js.map +0 -1
  181. package/dist/utils/isBetween.d.ts +0 -1
  182. package/dist/utils/isBetween.js +0 -2
  183. package/dist/utils/isBetween.js.map +0 -1
  184. package/dist/utils/isNonNullable.d.ts +0 -20
  185. package/dist/utils/isNonNullable.js.map +0 -1
  186. package/dist/utils/isNumericString.d.ts +0 -1
  187. package/dist/utils/isNumericString.js +0 -2
  188. package/dist/utils/isNumericString.js.map +0 -1
  189. package/dist/utils/isObject.d.ts +0 -1
  190. package/dist/utils/isObject.js +0 -2
  191. package/dist/utils/isObject.js.map +0 -1
  192. package/dist/utils/sleep.d.ts +0 -4
  193. package/dist/utils/sleep.js +0 -5
  194. package/dist/utils/sleep.js.map +0 -1
  195. package/dist/utils/toCamelCase.d.ts +0 -1
  196. package/dist/utils/toCamelCase.js +0 -2
  197. package/dist/utils/toCamelCase.js.map +0 -1
  198. package/dist/utils/toCamelKeys.d.ts +0 -2
  199. package/dist/utils/toCamelKeys.js +0 -16
  200. package/dist/utils/toCamelKeys.js.map +0 -1
  201. package/dist/utils/toSnakeCase.d.ts +0 -1
  202. package/dist/utils/toSnakeCase.js +0 -4
  203. package/dist/utils/toSnakeCase.js.map +0 -1
  204. package/dist/utils/toSnakeKeys.d.ts +0 -2
  205. package/dist/utils/toSnakeKeys.js +0 -16
  206. package/dist/utils/toSnakeKeys.js.map +0 -1
  207. package/dist/validations/asDigits.d.ts +0 -6
  208. package/dist/validations/asDigits.js +0 -6
  209. package/dist/validations/asDigits.js.map +0 -1
  210. package/dist/validations/asInteger.d.ts +0 -6
  211. package/dist/validations/asInteger.js +0 -6
  212. package/dist/validations/asInteger.js.map +0 -1
  213. package/dist/validations/bitfield.d.ts +0 -17
  214. package/dist/validations/bitfield.js +0 -37
  215. package/dist/validations/bitfield.js.map +0 -1
  216. package/dist/validations/boundedArray.d.ts +0 -6
  217. package/dist/validations/boundedArray.js +0 -8
  218. package/dist/validations/boundedArray.js.map +0 -1
  219. package/dist/validations/boundedInteger.d.ts +0 -6
  220. package/dist/validations/boundedInteger.js +0 -8
  221. package/dist/validations/boundedInteger.js.map +0 -1
  222. package/dist/validations/boundedString.d.ts +0 -6
  223. package/dist/validations/boundedString.js +0 -8
  224. package/dist/validations/boundedString.js.map +0 -1
  225. package/dist/validations/datauri.d.ts +0 -20
  226. package/dist/validations/datauri.js +0 -20
  227. package/dist/validations/datauri.js.map +0 -1
  228. package/dist/validations/hasMimeType.d.ts +0 -10
  229. package/dist/validations/hasMimeType.js +0 -18
  230. package/dist/validations/hasMimeType.js.map +0 -1
  231. package/dist/validations/hasSize.d.ts +0 -5
  232. package/dist/validations/hasSize.js +0 -13
  233. package/dist/validations/hasSize.js.map +0 -1
  234. package/dist/validations/index.d.ts +0 -12
  235. package/dist/validations/index.js +0 -13
  236. package/dist/validations/index.js.map +0 -1
  237. package/dist/validations/snowflake.js +0 -39
  238. package/dist/validations/snowflake.js.map +0 -1
  239. package/dist/validations/timestamp.d.ts +0 -3
  240. package/dist/validations/timestamp.js +0 -4
  241. package/dist/validations/timestamp.js.map +0 -1
  242. package/dist/validations/toBlob.d.ts +0 -4
  243. package/dist/validations/toBlob.js +0 -19
  244. package/dist/validations/toBlob.js.map +0 -1
  245. package/dist/validations/url.d.ts +0 -2
  246. package/dist/validations/url.js +0 -3
  247. package/dist/validations/url.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ import { CheckAction } from "valibot";
2
+
3
+ //#region src/validations/hasSize.d.ts
4
+ /** @__NO_SIDE_EFFECTS__ */
5
+ declare const hasSize: (size: number | {
6
+ min?: number;
7
+ max?: number;
8
+ }, message?: "Data URI is the incorrect size") => CheckAction<string, typeof message>;
9
+ //#endregion
10
+ export { hasSize };
11
+ //# sourceMappingURL=hasSize.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasSize.d.mts","names":[],"sources":["../../src/validations/hasSize.ts"],"mappings":";;;;cAKa,OAAA,GACX,IAAA;EAAiB,GAAA;EAAc,GAAA;AAAA,GAC/B,OAAA,wCACC,WAAW,gBAAgB,OAAA"}
@@ -0,0 +1,14 @@
1
+ import { extractDataURIMetadata, toBase64 } from "./datauri.mjs";
2
+ import { check } from "valibot";
3
+ //#region src/validations/hasSize.ts
4
+ /** @__NO_SIDE_EFFECTS__ */
5
+ const hasSize = (size, message = `Data URI is the incorrect size`) => check((dataURI) => {
6
+ const { data } = extractDataURIMetadata(dataURI);
7
+ if (typeof data === `undefined`) throw new Error(`Received badly formatted Data URI`);
8
+ const actual = toBase64(data).length;
9
+ return typeof size === `number` ? size === actual : actual >= (size.min ?? 0) && actual <= (size.max ?? Infinity);
10
+ }, message);
11
+ //#endregion
12
+ export { hasSize };
13
+
14
+ //# sourceMappingURL=hasSize.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasSize.mjs","names":[],"sources":["../../src/validations/hasSize.ts"],"sourcesContent":["import type { CheckAction } from \"valibot\";\nimport { check } from \"valibot\";\nimport { extractDataURIMetadata, toBase64 } from \"./datauri.js\";\n\n/** @__NO_SIDE_EFFECTS__ */\nexport const hasSize = (\n size: number | { min?: number; max?: number },\n message = `Data URI is the incorrect size` as const\n): CheckAction<string, typeof message> =>\n check((dataURI: string) => {\n const { data } = extractDataURIMetadata(dataURI);\n\n if (typeof data === `undefined`) {\n throw new Error(`Received badly formatted Data URI`);\n }\n\n const actual = toBase64(data).length;\n return typeof size === `number`\n ? size === actual\n : actual >= (size.min ?? 0) && actual <= (size.max ?? Infinity);\n }, message);\n"],"mappings":";;;;AAKA,MAAa,WACX,MACA,UAAU,qCAEV,OAAO,YAAoB;CACzB,MAAM,EAAE,SAAS,uBAAuB,OAAO;CAE/C,IAAI,OAAO,SAAS,aAClB,MAAM,IAAI,MAAM,mCAAmC;CAGrD,MAAM,SAAS,SAAS,IAAI,EAAE;CAC9B,OAAO,OAAO,SAAS,WACnB,SAAS,SACT,WAAW,KAAK,OAAO,MAAM,WAAW,KAAK,OAAO;AAC1D,GAAG,OAAO"}
@@ -0,0 +1,15 @@
1
+ import { Flags, bitfield } from "./bitfield.mjs";
2
+ import { asDigits } from "./asDigits.mjs";
3
+ import { asInteger } from "./asInteger.mjs";
4
+ import { boundedArray } from "./boundedArray.mjs";
5
+ import { boundedInteger } from "./boundedInteger.mjs";
6
+ import { boundedString } from "./boundedString.mjs";
7
+ import { datauri, datauriRegex, extractDataURIMetadata, toBase64 } from "./datauri.mjs";
8
+ import { FileUpload, MULTIPART_MARKER, collectFileUploads, fileUpload, isFileUpload, multipart, shouldSerializeAsMultipart, toMultipartBody } from "./fileUpload.mjs";
9
+ import { hasMimeType } from "./hasMimeType.mjs";
10
+ import { omitFields, partialSchema, pickFields, requiredFields, schema, variantSchema } from "./schema.mjs";
11
+ import { toBlob } from "./toBlob.mjs";
12
+ import { DISCORD_EPOCH, snowflake, snowflakeToDate } from "./snowflake.mjs";
13
+ import { timestamp } from "./timestamp.mjs";
14
+ import { url } from "./url.mjs";
15
+ export { DISCORD_EPOCH, FileUpload, Flags, MULTIPART_MARKER, asDigits, asInteger, bitfield, boundedArray, boundedInteger, boundedString, collectFileUploads, datauri, datauriRegex, extractDataURIMetadata, fileUpload, hasMimeType, isFileUpload, multipart, omitFields, partialSchema, pickFields, requiredFields, schema, shouldSerializeAsMultipart, snowflake, snowflakeToDate, timestamp, toBase64, toBlob, toMultipartBody, url, variantSchema };
@@ -0,0 +1,15 @@
1
+ import { MULTIPART_MARKER, collectFileUploads, fileUpload, isFileUpload, multipart, shouldSerializeAsMultipart, toMultipartBody } from "./fileUpload.mjs";
2
+ import { asDigits } from "./asDigits.mjs";
3
+ import { asInteger } from "./asInteger.mjs";
4
+ import { bitfield } from "./bitfield.mjs";
5
+ import { boundedArray } from "./boundedArray.mjs";
6
+ import { boundedInteger } from "./boundedInteger.mjs";
7
+ import { boundedString } from "./boundedString.mjs";
8
+ import { datauri, datauriRegex, extractDataURIMetadata, toBase64 } from "./datauri.mjs";
9
+ import { hasMimeType } from "./hasMimeType.mjs";
10
+ import { omitFields, partialSchema, pickFields, requiredFields, schema, variantSchema } from "./schema.mjs";
11
+ import { toBlob } from "./toBlob.mjs";
12
+ import { DISCORD_EPOCH, snowflake, snowflakeToDate } from "./snowflake.mjs";
13
+ import { timestamp } from "./timestamp.mjs";
14
+ import { url } from "./url.mjs";
15
+ export { DISCORD_EPOCH, MULTIPART_MARKER, asDigits, asInteger, bitfield, boundedArray, boundedInteger, boundedString, collectFileUploads, datauri, datauriRegex, extractDataURIMetadata, fileUpload, hasMimeType, isFileUpload, multipart, omitFields, partialSchema, pickFields, requiredFields, schema, shouldSerializeAsMultipart, snowflake, snowflakeToDate, timestamp, toBase64, toBlob, toMultipartBody, url, variantSchema };
@@ -0,0 +1,103 @@
1
+ import * as v from "valibot";
2
+
3
+ //#region src/validations/schema.d.ts
4
+ /**
5
+ * Annotate a schema's *published* type as `v.GenericSchema<T>` so
6
+ * downstream `.d.ts` emit stops inlining the inner `ObjectSchema`'s
7
+ * entries map and instead references `T` by name. The runtime value
8
+ * is unchanged.
9
+ *
10
+ * Use at every type-defining schema export:
11
+ *
12
+ * ```ts
13
+ * const _userSchema = v.object({...});
14
+ * export interface User extends v.InferOutput<typeof _userSchema> {}
15
+ * export const userSchema = schema<User>(_userSchema);
16
+ * ```
17
+ *
18
+ * **Why this exists**
19
+ *
20
+ * Without annotation, `typeof userSchema` is the full
21
+ * `v.ObjectSchema<{ id: v.GenericSchema<string>, ... }>` shape. Every
22
+ * downstream file that references `userSchema` (Guild, Application,
23
+ * Member, …) re-inlines that entries map into its own emitted
24
+ * declarations. This causes:
25
+ *
26
+ * - dramatic duplication of nested object shapes in `.d.ts` output
27
+ * - slow IDE hover (tsserver expands the full shape on every
28
+ * reference)
29
+ * - occasional TS2502 / type-too-complex errors on deeply circular
30
+ * schemas (Channel, Message, …)
31
+ *
32
+ * After annotation, downstream `.d.ts` files reference `User` by
33
+ * name from `./user/types/User.d.mts` and never inline its body.
34
+ *
35
+ * **Trade-off**
36
+ *
37
+ * `v.partial(userSchema)`, `v.pick(userSchema, [...])`, `v.omit(...)`,
38
+ * and `userSchema.entries.id` stop type-checking because the constraint
39
+ * is `ObjectSchema<...>` not `GenericSchema<T>`. Use the
40
+ * {@link partialSchema}, {@link pickFields}, {@link omitFields},
41
+ * {@link requiredFields}, and {@link variantSchema} helpers below for
42
+ * the common cases.
43
+ *
44
+ * @__NO_SIDE_EFFECTS__
45
+ */
46
+ declare const schema: <T>(s: v.GenericSchema) => v.GenericSchema<T>;
47
+ /**
48
+ * Make every key of `T` optional, both at the type level and at
49
+ * runtime. Equivalent to Valibot's `v.partial`, but accepts an
50
+ * annotated `GenericSchema<T>` (which `v.partial` would reject because
51
+ * its constraint is `ObjectSchema<...>`).
52
+ *
53
+ * @__NO_SIDE_EFFECTS__
54
+ */
55
+ declare const partialSchema: <T>(s: v.GenericSchema<T>) => v.GenericSchema<Partial<T>>;
56
+ /**
57
+ * Pick a subset of fields from `T` at both type and runtime levels.
58
+ * Equivalent to Valibot's `v.pick`. See {@link partialSchema}.
59
+ *
60
+ * @__NO_SIDE_EFFECTS__
61
+ */
62
+ declare const pickFields: <T, K extends keyof T & string>(s: v.GenericSchema<T>, keys: readonly K[]) => v.GenericSchema<Pick<T, K>>;
63
+ /**
64
+ * Omit a subset of fields from `T` at both type and runtime levels.
65
+ * Equivalent to Valibot's `v.omit`. See {@link partialSchema}.
66
+ *
67
+ * @__NO_SIDE_EFFECTS__
68
+ */
69
+ declare const omitFields: <T, K extends keyof T & string>(s: v.GenericSchema<T>, keys: readonly K[]) => v.GenericSchema<Omit<T, K>>;
70
+ /**
71
+ * Mark a subset of fields on `T` as required at both type and runtime
72
+ * levels. Equivalent to Valibot's `v.required`. See {@link partialSchema}.
73
+ *
74
+ * @__NO_SIDE_EFFECTS__
75
+ */
76
+ declare const requiredFields: <T, K extends keyof T & string>(s: v.GenericSchema<T>, keys: readonly K[]) => v.GenericSchema<T & Required<Pick<T, K>>>;
77
+ /**
78
+ * Build a discriminated union schema. Equivalent to Valibot's
79
+ * `v.variant`, but accepts annotated `GenericSchema<T>` variants
80
+ * (which `v.variant` would reject because its constraint is
81
+ * `ObjectSchema<...>`).
82
+ *
83
+ * Prefer `v.variant` whenever variants share a literal discriminator
84
+ * field — it dispatches on that field at runtime, producing focused
85
+ * error messages and O(1) validation, vs. {@link v.union}'s O(n)
86
+ * try-each behavior.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * export const channelSchema = variantSchema<Channel>(`type`, [
91
+ * guildTextChannelSchema,
92
+ * guildVoiceChannelSchema,
93
+ * threadChannelSchema,
94
+ * // ...
95
+ * ]);
96
+ * ```
97
+ *
98
+ * @__NO_SIDE_EFFECTS__
99
+ */
100
+ declare const variantSchema: <T>(key: keyof T & string, schemas: readonly v.GenericSchema[]) => v.GenericSchema<T>;
101
+ //#endregion
102
+ export { omitFields, partialSchema, pickFields, requiredFields, schema, variantSchema };
103
+ //# sourceMappingURL=schema.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.mts","names":[],"sources":["../../src/validations/schema.ts"],"mappings":";;;;;AA4CA;;;;;;;;;;;;;;;;AAAgE;AAWhE;;;;;;;;;;;;;;;;;;;;AAE4B;AAc5B;;cA3Ba,MAAA,MAAa,CAAA,EAAG,CAAA,CAAE,aAAA,KAAgB,CAAA,CAAE,aAAA,CAAc,CAAA;;;;;;;;;cAWlD,aAAA,MACX,CAAA,EAAG,CAAA,CAAE,aAAA,CAAc,CAAA,MAClB,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,CAAA;;;;;;;cAcd,UAAA,sBAAiC,CAAA,WAC5C,CAAA,EAAG,CAAA,CAAE,aAAA,CAAc,CAAA,GACnB,IAAA,WAAe,CAAA,OACd,CAAA,CAAE,aAAA,CAAc,IAAA,CAAK,CAAA,EAAG,CAAA;;;;;;;cAcd,UAAA,sBAAiC,CAAA,WAC5C,CAAA,EAAG,CAAA,CAAE,aAAA,CAAc,CAAA,GACnB,IAAA,WAAe,CAAA,OACd,CAAA,CAAE,aAAA,CAAc,IAAA,CAAK,CAAA,EAAG,CAAA;;;AAjBC;AAc5B;;;cAiBa,cAAA,sBAAqC,CAAA,WAChD,CAAA,EAAG,CAAA,CAAE,aAAA,CAAc,CAAA,GACnB,IAAA,WAAe,CAAA,OACd,CAAA,CAAE,aAAA,CAAc,CAAA,GAAI,QAAA,CAAS,IAAA,CAAK,CAAA,EAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;cA+B3B,aAAA,MACX,GAAA,QAAW,CAAA,WACX,OAAA,WAAkB,CAAA,CAAE,aAAA,OACnB,CAAA,CAAE,aAAA,CAAc,CAAA"}
@@ -0,0 +1,111 @@
1
+ import * as v from "valibot";
2
+ //#region src/validations/schema.ts
3
+ /**
4
+ * Annotate a schema's *published* type as `v.GenericSchema<T>` so
5
+ * downstream `.d.ts` emit stops inlining the inner `ObjectSchema`'s
6
+ * entries map and instead references `T` by name. The runtime value
7
+ * is unchanged.
8
+ *
9
+ * Use at every type-defining schema export:
10
+ *
11
+ * ```ts
12
+ * const _userSchema = v.object({...});
13
+ * export interface User extends v.InferOutput<typeof _userSchema> {}
14
+ * export const userSchema = schema<User>(_userSchema);
15
+ * ```
16
+ *
17
+ * **Why this exists**
18
+ *
19
+ * Without annotation, `typeof userSchema` is the full
20
+ * `v.ObjectSchema<{ id: v.GenericSchema<string>, ... }>` shape. Every
21
+ * downstream file that references `userSchema` (Guild, Application,
22
+ * Member, …) re-inlines that entries map into its own emitted
23
+ * declarations. This causes:
24
+ *
25
+ * - dramatic duplication of nested object shapes in `.d.ts` output
26
+ * - slow IDE hover (tsserver expands the full shape on every
27
+ * reference)
28
+ * - occasional TS2502 / type-too-complex errors on deeply circular
29
+ * schemas (Channel, Message, …)
30
+ *
31
+ * After annotation, downstream `.d.ts` files reference `User` by
32
+ * name from `./user/types/User.d.mts` and never inline its body.
33
+ *
34
+ * **Trade-off**
35
+ *
36
+ * `v.partial(userSchema)`, `v.pick(userSchema, [...])`, `v.omit(...)`,
37
+ * and `userSchema.entries.id` stop type-checking because the constraint
38
+ * is `ObjectSchema<...>` not `GenericSchema<T>`. Use the
39
+ * {@link partialSchema}, {@link pickFields}, {@link omitFields},
40
+ * {@link requiredFields}, and {@link variantSchema} helpers below for
41
+ * the common cases.
42
+ *
43
+ * @__NO_SIDE_EFFECTS__
44
+ */
45
+ const schema = (s) => s;
46
+ /**
47
+ * Make every key of `T` optional, both at the type level and at
48
+ * runtime. Equivalent to Valibot's `v.partial`, but accepts an
49
+ * annotated `GenericSchema<T>` (which `v.partial` would reject because
50
+ * its constraint is `ObjectSchema<...>`).
51
+ *
52
+ * @__NO_SIDE_EFFECTS__
53
+ */
54
+ const partialSchema = (s) => v.partial(s);
55
+ /**
56
+ * Pick a subset of fields from `T` at both type and runtime levels.
57
+ * Equivalent to Valibot's `v.pick`. See {@link partialSchema}.
58
+ *
59
+ * @__NO_SIDE_EFFECTS__
60
+ */
61
+ const pickFields = (s, keys) => {
62
+ return v.pick(s, keys);
63
+ };
64
+ /**
65
+ * Omit a subset of fields from `T` at both type and runtime levels.
66
+ * Equivalent to Valibot's `v.omit`. See {@link partialSchema}.
67
+ *
68
+ * @__NO_SIDE_EFFECTS__
69
+ */
70
+ const omitFields = (s, keys) => {
71
+ return v.omit(s, keys);
72
+ };
73
+ /**
74
+ * Mark a subset of fields on `T` as required at both type and runtime
75
+ * levels. Equivalent to Valibot's `v.required`. See {@link partialSchema}.
76
+ *
77
+ * @__NO_SIDE_EFFECTS__
78
+ */
79
+ const requiredFields = (s, keys) => {
80
+ return v.required(s, keys);
81
+ };
82
+ /**
83
+ * Build a discriminated union schema. Equivalent to Valibot's
84
+ * `v.variant`, but accepts annotated `GenericSchema<T>` variants
85
+ * (which `v.variant` would reject because its constraint is
86
+ * `ObjectSchema<...>`).
87
+ *
88
+ * Prefer `v.variant` whenever variants share a literal discriminator
89
+ * field — it dispatches on that field at runtime, producing focused
90
+ * error messages and O(1) validation, vs. {@link v.union}'s O(n)
91
+ * try-each behavior.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * export const channelSchema = variantSchema<Channel>(`type`, [
96
+ * guildTextChannelSchema,
97
+ * guildVoiceChannelSchema,
98
+ * threadChannelSchema,
99
+ * // ...
100
+ * ]);
101
+ * ```
102
+ *
103
+ * @__NO_SIDE_EFFECTS__
104
+ */
105
+ const variantSchema = (key, schemas) => {
106
+ return v.variant(key, schemas);
107
+ };
108
+ //#endregion
109
+ export { omitFields, partialSchema, pickFields, requiredFields, schema, variantSchema };
110
+
111
+ //# sourceMappingURL=schema.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.mjs","names":[],"sources":["../../src/validations/schema.ts"],"sourcesContent":["import * as v from \"valibot\";\n\n/**\n * Annotate a schema's *published* type as `v.GenericSchema<T>` so\n * downstream `.d.ts` emit stops inlining the inner `ObjectSchema`'s\n * entries map and instead references `T` by name. The runtime value\n * is unchanged.\n *\n * Use at every type-defining schema export:\n *\n * ```ts\n * const _userSchema = v.object({...});\n * export interface User extends v.InferOutput<typeof _userSchema> {}\n * export const userSchema = schema<User>(_userSchema);\n * ```\n *\n * **Why this exists**\n *\n * Without annotation, `typeof userSchema` is the full\n * `v.ObjectSchema<{ id: v.GenericSchema<string>, ... }>` shape. Every\n * downstream file that references `userSchema` (Guild, Application,\n * Member, …) re-inlines that entries map into its own emitted\n * declarations. This causes:\n *\n * - dramatic duplication of nested object shapes in `.d.ts` output\n * - slow IDE hover (tsserver expands the full shape on every\n * reference)\n * - occasional TS2502 / type-too-complex errors on deeply circular\n * schemas (Channel, Message, …)\n *\n * After annotation, downstream `.d.ts` files reference `User` by\n * name from `./user/types/User.d.mts` and never inline its body.\n *\n * **Trade-off**\n *\n * `v.partial(userSchema)`, `v.pick(userSchema, [...])`, `v.omit(...)`,\n * and `userSchema.entries.id` stop type-checking because the constraint\n * is `ObjectSchema<...>` not `GenericSchema<T>`. Use the\n * {@link partialSchema}, {@link pickFields}, {@link omitFields},\n * {@link requiredFields}, and {@link variantSchema} helpers below for\n * the common cases.\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const schema = <T>(s: v.GenericSchema): v.GenericSchema<T> =>\n s as v.GenericSchema<T>;\n\n/**\n * Make every key of `T` optional, both at the type level and at\n * runtime. Equivalent to Valibot's `v.partial`, but accepts an\n * annotated `GenericSchema<T>` (which `v.partial` would reject because\n * its constraint is `ObjectSchema<...>`).\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const partialSchema = <T>(\n s: v.GenericSchema<T>\n): v.GenericSchema<Partial<T>> =>\n // The runtime cast is sound: schema<T>(...) returns an ObjectSchema\n // we only annotated as GenericSchema. v.partial reads from\n // ObjectSchema.entries, which is still there.\n v.partial(\n s as unknown as v.ObjectSchema<v.ObjectEntries, undefined>\n ) as unknown as v.GenericSchema<Partial<T>>;\n\n/**\n * Pick a subset of fields from `T` at both type and runtime levels.\n * Equivalent to Valibot's `v.pick`. See {@link partialSchema}.\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const pickFields = <T, K extends keyof T & string>(\n s: v.GenericSchema<T>,\n keys: readonly K[]\n): v.GenericSchema<Pick<T, K>> => {\n type Erased = v.ObjectSchema<v.ObjectEntries, undefined>;\n return v.pick(\n s as unknown as Erased,\n keys as unknown as v.ObjectKeys<Erased>\n ) as unknown as v.GenericSchema<Pick<T, K>>;\n};\n\n/**\n * Omit a subset of fields from `T` at both type and runtime levels.\n * Equivalent to Valibot's `v.omit`. See {@link partialSchema}.\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const omitFields = <T, K extends keyof T & string>(\n s: v.GenericSchema<T>,\n keys: readonly K[]\n): v.GenericSchema<Omit<T, K>> => {\n type Erased = v.ObjectSchema<v.ObjectEntries, undefined>;\n return v.omit(\n s as unknown as Erased,\n keys as unknown as v.ObjectKeys<Erased>\n ) as unknown as v.GenericSchema<Omit<T, K>>;\n};\n\n/**\n * Mark a subset of fields on `T` as required at both type and runtime\n * levels. Equivalent to Valibot's `v.required`. See {@link partialSchema}.\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const requiredFields = <T, K extends keyof T & string>(\n s: v.GenericSchema<T>,\n keys: readonly K[]\n): v.GenericSchema<T & Required<Pick<T, K>>> => {\n type Erased = v.ObjectSchema<v.ObjectEntries, undefined>;\n return v.required(\n s as unknown as Erased,\n keys as unknown as v.ObjectKeys<Erased>\n ) as unknown as v.GenericSchema<T & Required<Pick<T, K>>>;\n};\n\n/**\n * Build a discriminated union schema. Equivalent to Valibot's\n * `v.variant`, but accepts annotated `GenericSchema<T>` variants\n * (which `v.variant` would reject because its constraint is\n * `ObjectSchema<...>`).\n *\n * Prefer `v.variant` whenever variants share a literal discriminator\n * field — it dispatches on that field at runtime, producing focused\n * error messages and O(1) validation, vs. {@link v.union}'s O(n)\n * try-each behavior.\n *\n * @example\n * ```ts\n * export const channelSchema = variantSchema<Channel>(`type`, [\n * guildTextChannelSchema,\n * guildVoiceChannelSchema,\n * threadChannelSchema,\n * // ...\n * ]);\n * ```\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const variantSchema = <T>(\n key: keyof T & string,\n schemas: readonly v.GenericSchema[]\n): v.GenericSchema<T> => {\n type Erased = v.ObjectSchema<v.ObjectEntries, undefined>;\n return v.variant(\n key as never,\n schemas as unknown as [Erased, Erased, ...Erased[]]\n ) as unknown as v.GenericSchema<T>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAa,UAAa,MACxB;;;;;;;;;AAUF,MAAa,iBACX,MAKA,EAAE,QACA,CACF;;;;;;;AAQF,MAAa,cACX,GACA,SACgC;CAEhC,OAAO,EAAE,KACP,GACA,IACF;AACF;;;;;;;AAQA,MAAa,cACX,GACA,SACgC;CAEhC,OAAO,EAAE,KACP,GACA,IACF;AACF;;;;;;;AAQA,MAAa,kBACX,GACA,SAC8C;CAE9C,OAAO,EAAE,SACP,GACA,IACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,iBACX,KACA,YACuB;CAEvB,OAAO,EAAE,QACP,KACA,OACF;AACF"}
@@ -1,18 +1,18 @@
1
1
  import * as v from "valibot";
2
+
3
+ //#region src/validations/snowflake.d.ts
2
4
  /** UNIX timestamp representing the first second of 2015 */
3
- export declare const DISCORD_EPOCH = 1420070400000n;
5
+ declare const DISCORD_EPOCH = 1420070400000n;
4
6
  /**
5
7
  * Converts a `snowflake` string to a Date relative to the given epoch
6
8
  *
7
9
  * Uses Discord's epoch by default
8
10
  *
9
11
  * https://discord.com/developers/docs/reference#snowflakes
12
+ *
13
+ * @__NO_SIDE_EFFECTS__
10
14
  */
11
- export declare const snowflakeToDate: (
12
- /** A snowflake string to convert */
13
- val: string | number | bigint,
14
- /** time in milliseconds to use as the epoch to derive a Date from */
15
- epoch?: bigint) => Date;
15
+ declare const snowflakeToDate: (/** A snowflake string to convert */val: string | number | bigint, /** time in milliseconds to use as the epoch to derive a Date from */epoch?: bigint) => Date;
16
16
  /**
17
17
  * An up to 64-bit unsigned numeric value derived from a timestamp which
18
18
  * serves as a unique identifier within Discord.
@@ -22,4 +22,7 @@ epoch?: bigint) => Date;
22
22
  * by checking if it's derived timestamp is a valid time at or after
23
23
  * the Discord epoch (the first second of 2015, ie: `1420070400000`).
24
24
  */
25
- export declare const snowflake: v.GenericSchema<string>;
25
+ declare const snowflake: v.GenericSchema<string>;
26
+ //#endregion
27
+ export { DISCORD_EPOCH, snowflake, snowflakeToDate };
28
+ //# sourceMappingURL=snowflake.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snowflake.d.mts","names":[],"sources":["../../src/validations/snowflake.ts"],"mappings":";;;;cAKa,aAAA;AAAb;;;;AAA0B;AAW1B;;;;AAXA,cAWa,eAAA,uCAEX,GAAA,iGAEA,KAAA,cACC,IAAsD;AAWzD;;;;AAAuC;;;;;AAAvC,cAAa,SAAA,EAAW,CAAA,CAAE,aAAa"}
@@ -0,0 +1,30 @@
1
+ import { isNonNullable } from "../utils/isNonNullable.mjs";
2
+ import { isNumericString } from "../utils/isNumericString.mjs";
3
+ import * as v from "valibot";
4
+ //#region src/validations/snowflake.ts
5
+ /** UNIX timestamp representing the first second of 2015 */
6
+ const DISCORD_EPOCH = 1420070400000n;
7
+ /**
8
+ * Converts a `snowflake` string to a Date relative to the given epoch
9
+ *
10
+ * Uses Discord's epoch by default
11
+ *
12
+ * https://discord.com/developers/docs/reference#snowflakes
13
+ *
14
+ * @__NO_SIDE_EFFECTS__
15
+ */
16
+ const snowflakeToDate = (val, epoch = DISCORD_EPOCH) => new Date(Number((BigInt(val) >> 22n) + epoch));
17
+ /**
18
+ * An up to 64-bit unsigned numeric value derived from a timestamp which
19
+ * serves as a unique identifier within Discord.
20
+ *
21
+ * Validates whether a given `number`, `bigint`, or numeric `string` is
22
+ * a valid [Snowflake](https://discord.com/developers/docs/reference#snowflakes)
23
+ * by checking if it's derived timestamp is a valid time at or after
24
+ * the Discord epoch (the first second of 2015, ie: `1420070400000`).
25
+ */
26
+ const snowflake = v.pipe(v.custom((val) => isNonNullable(val) && (typeof val === `bigint` || typeof val === `number` || isNumericString(val)) && snowflakeToDate(val).getTime() >= 1420070400000n, `Invalid Snowflake`), v.title(`snowflake`));
27
+ //#endregion
28
+ export { DISCORD_EPOCH, snowflake, snowflakeToDate };
29
+
30
+ //# sourceMappingURL=snowflake.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snowflake.mjs","names":[],"sources":["../../src/validations/snowflake.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { isNonNullable } from \"../utils/isNonNullable.js\";\nimport { isNumericString } from \"../utils/isNumericString.js\";\n\n/** UNIX timestamp representing the first second of 2015 */\nexport const DISCORD_EPOCH = 1420070400000n;\n\n/**\n * Converts a `snowflake` string to a Date relative to the given epoch\n *\n * Uses Discord's epoch by default\n *\n * https://discord.com/developers/docs/reference#snowflakes\n *\n * @__NO_SIDE_EFFECTS__\n */\nexport const snowflakeToDate = (\n /** A snowflake string to convert */\n val: string | number | bigint,\n /** time in milliseconds to use as the epoch to derive a Date from */\n epoch = DISCORD_EPOCH\n): Date => new Date(Number((BigInt(val) >> 22n) + epoch));\n\n/**\n * An up to 64-bit unsigned numeric value derived from a timestamp which\n * serves as a unique identifier within Discord.\n *\n * Validates whether a given `number`, `bigint`, or numeric `string` is\n * a valid [Snowflake](https://discord.com/developers/docs/reference#snowflakes)\n * by checking if it's derived timestamp is a valid time at or after\n * the Discord epoch (the first second of 2015, ie: `1420070400000`).\n */\nexport const snowflake: v.GenericSchema<string> = v.pipe(\n v.custom<string, `Invalid Snowflake`>(\n (val) =>\n // at runtime this could be any value, so filter out\n // obviously invalid input first\n isNonNullable(val) &&\n // then verify we have a numeric value\n (typeof val === `bigint` ||\n typeof val === `number` ||\n isNumericString(val)) &&\n // finally, verify that it accurately represents ms\n // at or after the Discord epoch (timestamps before\n // that cannot possibly be a valid Discord snowflake)\n snowflakeToDate(val).getTime() >= DISCORD_EPOCH,\n `Invalid Snowflake`\n ),\n v.title(`snowflake`)\n);\n"],"mappings":";;;;;AAKA,MAAa,gBAAgB;;;;;;;;;;AAW7B,MAAa,mBAEX,KAEA,QAAQ,kBACC,IAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,OAAO,KAAK,CAAC;;;;;;;;;;AAWxD,MAAa,YAAqC,EAAE,KAClD,EAAE,QACC,QAGC,cAAc,GAAG,MAEhB,OAAO,QAAQ,YACd,OAAO,QAAQ,YACf,gBAAgB,GAAG,MAIrB,gBAAgB,GAAG,EAAE,QAAQ,KAAA,gBAC/B,mBACF,GACA,EAAE,MAAM,WAAW,CACrB"}
@@ -0,0 +1,8 @@
1
+ import * as v from "valibot";
2
+
3
+ //#region src/validations/timestamp.d.ts
4
+ /** An [ISO8601](https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf) timestamp */
5
+ declare const timestamp: v.GenericSchema<string>;
6
+ //#endregion
7
+ export { timestamp };
8
+ //# sourceMappingURL=timestamp.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamp.d.mts","names":[],"sources":["../../src/validations/timestamp.ts"],"mappings":";;;;cAGa,SAAA,EAGR,CAAA,CAAE,aAAa"}
@@ -0,0 +1,8 @@
1
+ import * as v from "valibot";
2
+ //#region src/validations/timestamp.ts
3
+ /** An [ISO8601](https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf) timestamp */
4
+ const timestamp = v.message(v.pipe(v.string(), v.isoTimestamp()), (issue) => `Expected a valid timestamp, received: ${issue.received}`);
5
+ //#endregion
6
+ export { timestamp };
7
+
8
+ //# sourceMappingURL=timestamp.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamp.mjs","names":[],"sources":["../../src/validations/timestamp.ts"],"sourcesContent":["import * as v from \"valibot\";\n\n/** An [ISO8601](https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf) timestamp */\nexport const timestamp = v.message(\n v.pipe(v.string(), v.isoTimestamp()),\n (issue) => `Expected a valid timestamp, received: ${issue.received}`\n) as v.GenericSchema<string>;\n"],"mappings":";;;AAGA,MAAa,YAAY,EAAE,QACzB,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,aAAa,CAAC,IAClC,UAAU,yCAAyC,MAAM,UAC5D"}
@@ -0,0 +1,8 @@
1
+ //#region src/validations/toBlob.d.ts
2
+ /**
3
+ * Transforms a `datauri` string to a Blob
4
+ */
5
+ declare const toBlob: import("valibot").TransformAction<string, Blob>;
6
+ //#endregion
7
+ export { toBlob };
8
+ //# sourceMappingURL=toBlob.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toBlob.d.mts","names":[],"sources":["../../src/validations/toBlob.ts"],"mappings":";;AAMA;;cAAa,MAAA,oBAAM,eAAA,SAAA,IAAA"}
@@ -0,0 +1,19 @@
1
+ import { extractDataURIMetadata, toBase64 } from "./datauri.mjs";
2
+ import { transform } from "valibot";
3
+ //#region src/validations/toBlob.ts
4
+ /**
5
+ * Transforms a `datauri` string to a Blob
6
+ */
7
+ const toBlob = transform((dataURI) => {
8
+ const { mimeType, data } = extractDataURIMetadata(dataURI);
9
+ if (typeof mimeType === `undefined` || typeof data === `undefined`) throw new Error(`Received badly formatted Data URI`);
10
+ const base64 = toBase64(data);
11
+ const ab = new ArrayBuffer(base64.length);
12
+ const ia = new Uint8Array(ab);
13
+ for (let i = 0; i < base64.length; i++) ia[i] = base64.charCodeAt(i);
14
+ return new Blob([ab], { type: mimeType });
15
+ });
16
+ //#endregion
17
+ export { toBlob };
18
+
19
+ //# sourceMappingURL=toBlob.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toBlob.mjs","names":[],"sources":["../../src/validations/toBlob.ts"],"sourcesContent":["import { transform } from \"valibot\";\nimport { extractDataURIMetadata, toBase64 } from \"./datauri.js\";\n\n/**\n * Transforms a `datauri` string to a Blob\n */\nexport const toBlob = transform((dataURI: string): Blob => {\n const { mimeType, data } = extractDataURIMetadata(dataURI);\n\n if (typeof mimeType === `undefined` || typeof data === `undefined`) {\n throw new Error(`Received badly formatted Data URI`);\n }\n\n const base64 = toBase64(data);\n\n const ab = new ArrayBuffer(base64.length);\n const ia = new Uint8Array(ab);\n\n for (let i = 0; i < base64.length; i++) {\n ia[i] = base64.charCodeAt(i);\n }\n\n return new Blob([ab], { type: mimeType });\n});\n"],"mappings":";;;;;;AAMA,MAAa,SAAS,WAAW,YAA0B;CACzD,MAAM,EAAE,UAAU,SAAS,uBAAuB,OAAO;CAEzD,IAAI,OAAO,aAAa,eAAe,OAAO,SAAS,aACrD,MAAM,IAAI,MAAM,mCAAmC;CAGrD,MAAM,SAAS,SAAS,IAAI;CAE5B,MAAM,KAAK,IAAI,YAAY,OAAO,MAAM;CACxC,MAAM,KAAK,IAAI,WAAW,EAAE;CAE5B,KAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KACjC,GAAG,KAAK,OAAO,WAAW,CAAC;CAG7B,OAAO,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+
3
+ //#region src/validations/url.d.ts
4
+ declare const url: v.GenericSchema<string>;
5
+ //#endregion
6
+ export { url };
7
+ //# sourceMappingURL=url.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.mts","names":[],"sources":["../../src/validations/url.ts"],"mappings":";;;cAEa,GAAA,EAAK,CAAA,CAAE,aAAa"}
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+ //#region src/validations/url.ts
3
+ const url = v.message(v.pipe(v.string(), v.url()), (issue) => `Expected a valid URL, received: ${issue.received}`);
4
+ //#endregion
5
+ export { url };
6
+
7
+ //# sourceMappingURL=url.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.mjs","names":[],"sources":["../../src/validations/url.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nexport const url: v.GenericSchema<string> = v.message(\n v.pipe(v.string(), v.url()),\n (issue) => `Expected a valid URL, received: ${issue.received}`\n);\n"],"mappings":";;AAEA,MAAa,MAA+B,EAAE,QAC5C,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,IAAI,CAAC,IACzB,UAAU,mCAAmC,MAAM,UACtD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@discordkit/core",
3
3
  "description": "Core utility functions for Discordkit",
4
- "version": "3.2.0",
4
+ "version": "4.0.1",
5
5
  "license": "MIT",
6
6
  "author": "Drake Costa <drake@saeris.gg> (https://saeris.gg)",
7
7
  "keywords": [
@@ -20,21 +20,16 @@
20
20
  "registry": "https://registry.npmjs.org"
21
21
  },
22
22
  "type": "module",
23
- "main": "./dist/index.js",
24
- "module": "./dist/index.js",
25
- "types": "./dist/index.d.ts",
26
- "imports": {
27
- "#mock-utils": "../../scripts/mock-utils.ts",
28
- "#test-utils": "../../scripts/test-utils.ts"
29
- },
30
23
  "exports": {
31
24
  ".": {
32
- "types": "./dist/index.d.ts",
33
- "default": "./dist/index.js"
25
+ "@discordkit/source": "./src/index.ts",
26
+ "types": "./dist/index.d.mts",
27
+ "import": "./dist/index.mjs"
34
28
  },
35
29
  "./*": {
36
- "types": "./dist/*.d.ts",
37
- "default": "./dist/*.js"
30
+ "@discordkit/source": "./src/*.ts",
31
+ "types": "./dist/*.d.mts",
32
+ "import": "./dist/*.mjs"
38
33
  },
39
34
  "./package.json": "./package.json"
40
35
  },
@@ -42,18 +37,10 @@
42
37
  "dist/**/*"
43
38
  ],
44
39
  "sideEffects": false,
45
- "scripts": {
46
- "dev": "yarn build --watch --declarationmap",
47
- "build": "tsc",
48
- "lint": "eslint --cache"
49
- },
50
40
  "peerDependencies": {
51
- "valibot": ">= 1.0.0"
41
+ "valibot": ">= 1.4.0"
52
42
  },
53
43
  "devDependencies": {
54
- "typescript": "^5.8.3"
55
- },
56
- "dependencies": {
57
- "type-fest": "^4.41.0"
44
+ "@discordkit/test-utils": "^0.0.0"
58
45
  }
59
- }
46
+ }
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./requests/index.js";
2
- export * from "./validations/index.js";
package/dist/index.js DELETED
@@ -1,3 +0,0 @@
1
- export * from "./requests/index.js";
2
- export * from "./validations/index.js";
3
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
@@ -1,25 +0,0 @@
1
- export declare const endpoint = "https://discord.com/api/v10/";
2
- /** @internal */
3
- export declare class DiscordSession {
4
- #private;
5
- endpoint: string;
6
- maxRetries: number;
7
- get ready(): boolean;
8
- constructor(authToken?: `${`Bot` | `Bearer`} ${string}` | null);
9
- /**
10
- * Clears the current session details, then attempts to set
11
- * new session values
12
- */
13
- setToken: (token: `${`Bot` | `Bearer`} ${string}`) => this;
14
- clearSession: () => this;
15
- getSession: () => string;
16
- /**
17
- * Queue a request to be processed with rate limiting
18
- */
19
- queueRequest: (resource: URL, method: string, body?: string | null) => Promise<Response>;
20
- /**
21
- * Get current queue size (useful for monitoring)
22
- */
23
- getQueueSize: () => number;
24
- }
25
- export declare const discord: DiscordSession;