@discordkit/core 3.2.0 → 4.0.0
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/CHANGELOG.md +416 -0
- package/README.md +52 -0
- package/dist/index.d.mts +23 -0
- package/dist/index.mjs +23 -0
- package/dist/requests/DiscordSession.d.mts +30 -0
- package/dist/requests/DiscordSession.mjs +202 -0
- package/dist/requests/addParams.d.mts +15 -0
- package/dist/requests/addParams.mjs +24 -0
- package/dist/requests/buildURL.d.mts +7 -0
- package/dist/requests/buildURL.mjs +7 -0
- package/dist/requests/getAsset.d.mts +7 -0
- package/dist/requests/getAsset.mjs +6 -0
- package/dist/requests/index.d.mts +9 -0
- package/dist/requests/index.mjs +9 -0
- package/dist/requests/methods.d.mts +63 -0
- package/dist/requests/methods.mjs +10 -0
- package/dist/requests/request.d.mts +27 -0
- package/dist/requests/request.mjs +29 -0
- package/dist/requests/toProcedure.d.mts +40 -0
- package/dist/requests/toProcedure.mjs +27 -0
- package/dist/requests/toQuery.d.mts +36 -0
- package/dist/requests/toQuery.mjs +17 -0
- package/dist/requests/toValidated.d.mts +16 -0
- package/dist/requests/toValidated.mjs +25 -0
- package/dist/requests/{verifyKey.d.ts → verifyKey.d.mts} +4 -1
- package/dist/requests/verifyKey.mjs +63 -0
- package/dist/utils/isBetween.d.mts +4 -0
- package/dist/utils/isBetween.mjs +4 -0
- package/dist/utils/{isNonNullable.js → isNonNullable.d.mts} +5 -2
- package/dist/utils/isNonNullable.mjs +22 -0
- package/dist/utils/isNumericString.d.mts +4 -0
- package/dist/utils/isNumericString.mjs +4 -0
- package/dist/utils/isObject.d.mts +4 -0
- package/dist/utils/isObject.mjs +4 -0
- package/dist/utils/sleep.d.mts +7 -0
- package/dist/utils/sleep.mjs +7 -0
- package/dist/utils/toCamelCase.d.mts +4 -0
- package/dist/utils/toCamelCase.mjs +4 -0
- package/dist/utils/toCamelKeys.d.mts +6 -0
- package/dist/utils/toCamelKeys.mjs +13 -0
- package/dist/utils/toSnakeCase.d.mts +4 -0
- package/dist/utils/toSnakeCase.mjs +4 -0
- package/dist/utils/toSnakeKeys.d.mts +6 -0
- package/dist/utils/toSnakeKeys.mjs +13 -0
- package/dist/validations/asDigits.d.mts +12 -0
- package/dist/validations/asDigits.mjs +10 -0
- package/dist/validations/asInteger.d.mts +12 -0
- package/dist/validations/asInteger.mjs +10 -0
- package/dist/validations/bitfield.d.mts +23 -0
- package/dist/validations/bitfield.mjs +20 -0
- package/dist/validations/boundedArray.d.mts +13 -0
- package/dist/validations/boundedArray.mjs +9 -0
- package/dist/validations/boundedInteger.d.mts +13 -0
- package/dist/validations/boundedInteger.mjs +9 -0
- package/dist/validations/boundedString.d.mts +14 -0
- package/dist/validations/boundedString.mjs +10 -0
- package/dist/validations/datauri.d.mts +24 -0
- package/dist/validations/datauri.mjs +17 -0
- package/dist/validations/fileUpload.d.mts +129 -0
- package/dist/validations/fileUpload.mjs +114 -0
- package/dist/validations/hasMimeType.d.mts +16 -0
- package/dist/validations/hasMimeType.mjs +16 -0
- package/dist/validations/hasSize.d.mts +10 -0
- package/dist/validations/hasSize.mjs +12 -0
- package/dist/validations/index.d.mts +15 -0
- package/dist/validations/index.mjs +15 -0
- package/dist/validations/schema.d.mts +102 -0
- package/dist/validations/schema.mjs +109 -0
- package/dist/validations/{snowflake.d.ts → snowflake.d.mts} +9 -7
- package/dist/validations/snowflake.mjs +28 -0
- package/dist/validations/{timestamp.d.ts → timestamp.d.mts} +5 -1
- package/dist/validations/timestamp.mjs +6 -0
- package/dist/validations/toBlob.d.mts +9 -0
- package/dist/validations/toBlob.mjs +17 -0
- package/dist/validations/url.d.mts +6 -0
- package/dist/validations/url.mjs +5 -0
- package/package.json +13 -23
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/requests/DiscordSession.d.ts +0 -25
- package/dist/requests/DiscordSession.js +0 -255
- package/dist/requests/DiscordSession.js.map +0 -1
- package/dist/requests/addParams.d.ts +0 -2
- package/dist/requests/addParams.js +0 -11
- package/dist/requests/addParams.js.map +0 -1
- package/dist/requests/buildURL.d.ts +0 -2
- package/dist/requests/buildURL.js +0 -4
- package/dist/requests/buildURL.js.map +0 -1
- package/dist/requests/getAsset.d.ts +0 -2
- package/dist/requests/getAsset.js +0 -3
- package/dist/requests/getAsset.js.map +0 -1
- package/dist/requests/index.d.ts +0 -8
- package/dist/requests/index.js +0 -9
- package/dist/requests/index.js.map +0 -1
- package/dist/requests/methods.d.ts +0 -13
- package/dist/requests/methods.js +0 -8
- package/dist/requests/methods.js.map +0 -1
- package/dist/requests/request.d.ts +0 -2
- package/dist/requests/request.js +0 -30
- package/dist/requests/request.js.map +0 -1
- package/dist/requests/toProcedure.d.ts +0 -31
- package/dist/requests/toProcedure.js +0 -36
- package/dist/requests/toProcedure.js.map +0 -1
- package/dist/requests/toQuery.d.ts +0 -28
- package/dist/requests/toQuery.js +0 -9
- package/dist/requests/toQuery.js.map +0 -1
- package/dist/requests/toValidated.d.ts +0 -13
- package/dist/requests/toValidated.js +0 -29
- package/dist/requests/toValidated.js.map +0 -1
- package/dist/requests/verifyKey.js +0 -91
- package/dist/requests/verifyKey.js.map +0 -1
- package/dist/utils/isBetween.d.ts +0 -1
- package/dist/utils/isBetween.js +0 -2
- package/dist/utils/isBetween.js.map +0 -1
- package/dist/utils/isNonNullable.d.ts +0 -20
- package/dist/utils/isNonNullable.js.map +0 -1
- package/dist/utils/isNumericString.d.ts +0 -1
- package/dist/utils/isNumericString.js +0 -2
- package/dist/utils/isNumericString.js.map +0 -1
- package/dist/utils/isObject.d.ts +0 -1
- package/dist/utils/isObject.js +0 -2
- package/dist/utils/isObject.js.map +0 -1
- package/dist/utils/sleep.d.ts +0 -4
- package/dist/utils/sleep.js +0 -5
- package/dist/utils/sleep.js.map +0 -1
- package/dist/utils/toCamelCase.d.ts +0 -1
- package/dist/utils/toCamelCase.js +0 -2
- package/dist/utils/toCamelCase.js.map +0 -1
- package/dist/utils/toCamelKeys.d.ts +0 -2
- package/dist/utils/toCamelKeys.js +0 -16
- package/dist/utils/toCamelKeys.js.map +0 -1
- package/dist/utils/toSnakeCase.d.ts +0 -1
- package/dist/utils/toSnakeCase.js +0 -4
- package/dist/utils/toSnakeCase.js.map +0 -1
- package/dist/utils/toSnakeKeys.d.ts +0 -2
- package/dist/utils/toSnakeKeys.js +0 -16
- package/dist/utils/toSnakeKeys.js.map +0 -1
- package/dist/validations/asDigits.d.ts +0 -6
- package/dist/validations/asDigits.js +0 -6
- package/dist/validations/asDigits.js.map +0 -1
- package/dist/validations/asInteger.d.ts +0 -6
- package/dist/validations/asInteger.js +0 -6
- package/dist/validations/asInteger.js.map +0 -1
- package/dist/validations/bitfield.d.ts +0 -17
- package/dist/validations/bitfield.js +0 -37
- package/dist/validations/bitfield.js.map +0 -1
- package/dist/validations/boundedArray.d.ts +0 -6
- package/dist/validations/boundedArray.js +0 -8
- package/dist/validations/boundedArray.js.map +0 -1
- package/dist/validations/boundedInteger.d.ts +0 -6
- package/dist/validations/boundedInteger.js +0 -8
- package/dist/validations/boundedInteger.js.map +0 -1
- package/dist/validations/boundedString.d.ts +0 -6
- package/dist/validations/boundedString.js +0 -8
- package/dist/validations/boundedString.js.map +0 -1
- package/dist/validations/datauri.d.ts +0 -20
- package/dist/validations/datauri.js +0 -20
- package/dist/validations/datauri.js.map +0 -1
- package/dist/validations/hasMimeType.d.ts +0 -10
- package/dist/validations/hasMimeType.js +0 -18
- package/dist/validations/hasMimeType.js.map +0 -1
- package/dist/validations/hasSize.d.ts +0 -5
- package/dist/validations/hasSize.js +0 -13
- package/dist/validations/hasSize.js.map +0 -1
- package/dist/validations/index.d.ts +0 -12
- package/dist/validations/index.js +0 -13
- package/dist/validations/index.js.map +0 -1
- package/dist/validations/snowflake.js +0 -39
- package/dist/validations/snowflake.js.map +0 -1
- package/dist/validations/timestamp.js +0 -4
- package/dist/validations/timestamp.js.map +0 -1
- package/dist/validations/toBlob.d.ts +0 -4
- package/dist/validations/toBlob.js +0 -19
- package/dist/validations/toBlob.js.map +0 -1
- package/dist/validations/url.d.ts +0 -2
- package/dist/validations/url.js +0 -3
- package/dist/validations/url.js.map +0 -1
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { sleep } from "../utils/sleep.js";
|
|
2
|
-
export const endpoint = `https://discord.com/api/v10/`;
|
|
3
|
-
/** @internal */
|
|
4
|
-
export class DiscordSession {
|
|
5
|
-
endpoint = endpoint;
|
|
6
|
-
maxRetries = 5;
|
|
7
|
-
#authToken = null;
|
|
8
|
-
// Rate limit tracking
|
|
9
|
-
#buckets = new Map();
|
|
10
|
-
#globalReset = 0; // Epoch timestamp when global limit resets
|
|
11
|
-
#requestQueue = [];
|
|
12
|
-
#processingQueue = false;
|
|
13
|
-
// Global rate limit: 50 requests per second
|
|
14
|
-
#globalLimit = 50;
|
|
15
|
-
#globalWindow = 1000; // 1 second in ms
|
|
16
|
-
#globalRequestTimestamps = [];
|
|
17
|
-
// Invalid request tracking: 10,000 per 10 minutes
|
|
18
|
-
#invalidRequests = {
|
|
19
|
-
count: 0,
|
|
20
|
-
windowStart: Date.now()
|
|
21
|
-
};
|
|
22
|
-
#invalidRequestLimit = 10000;
|
|
23
|
-
#invalidRequestWindow = 10 * 60 * 1000; // 10 minutes in ms
|
|
24
|
-
get ready() {
|
|
25
|
-
return Boolean(this.#authToken);
|
|
26
|
-
}
|
|
27
|
-
constructor(authToken) {
|
|
28
|
-
if (authToken) {
|
|
29
|
-
this.setToken(authToken);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Clears the current session details, then attempts to set
|
|
34
|
-
* new session values
|
|
35
|
-
*/
|
|
36
|
-
setToken = (token) => {
|
|
37
|
-
this.#authToken = null;
|
|
38
|
-
if (token.length === 0) {
|
|
39
|
-
throw new Error(`Must provide a non-empty string to set Auth Token`);
|
|
40
|
-
}
|
|
41
|
-
if (!token.startsWith(`Bot `) && !token.startsWith(`Bearer `)) {
|
|
42
|
-
throw new Error(`Token must begin with either "Bot " or "Bearer ", received: ${token}`);
|
|
43
|
-
}
|
|
44
|
-
this.#authToken = token;
|
|
45
|
-
return this;
|
|
46
|
-
};
|
|
47
|
-
clearSession = () => {
|
|
48
|
-
this.#authToken = null;
|
|
49
|
-
this.#buckets.clear();
|
|
50
|
-
this.#globalReset = 0;
|
|
51
|
-
this.#requestQueue = [];
|
|
52
|
-
this.#globalRequestTimestamps = [];
|
|
53
|
-
this.#invalidRequests = {
|
|
54
|
-
count: 0,
|
|
55
|
-
windowStart: Date.now()
|
|
56
|
-
};
|
|
57
|
-
return this;
|
|
58
|
-
};
|
|
59
|
-
getSession = () => {
|
|
60
|
-
const token = this.#authToken;
|
|
61
|
-
if (!token) {
|
|
62
|
-
throw new Error(`Auth Token must be set before requests can be made.`);
|
|
63
|
-
}
|
|
64
|
-
return token;
|
|
65
|
-
};
|
|
66
|
-
/**
|
|
67
|
-
* Queue a request to be processed with rate limiting
|
|
68
|
-
*/
|
|
69
|
-
queueRequest = async (resource, method, body) => {
|
|
70
|
-
return new Promise((resolve, reject) => {
|
|
71
|
-
this.#requestQueue.push({
|
|
72
|
-
resource,
|
|
73
|
-
method,
|
|
74
|
-
body,
|
|
75
|
-
resolve,
|
|
76
|
-
reject
|
|
77
|
-
});
|
|
78
|
-
// Start processing if not already running
|
|
79
|
-
void this.#processQueue(); // This will return early if already processing
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Process the request queue with rate limiting
|
|
84
|
-
*/
|
|
85
|
-
#processQueue = async () => {
|
|
86
|
-
if (this.#processingQueue)
|
|
87
|
-
return;
|
|
88
|
-
this.#processingQueue = true;
|
|
89
|
-
while (this.#requestQueue.length > 0) {
|
|
90
|
-
const now = Date.now();
|
|
91
|
-
// Check if we're temporarily banned (invalid request limit)
|
|
92
|
-
if (this.#isTemporarilyBanned()) {
|
|
93
|
-
const waitTime = this.#invalidRequestWindow -
|
|
94
|
-
(now - this.#invalidRequests.windowStart);
|
|
95
|
-
console.warn(`Temporarily banned from Discord API. Waiting ${Math.ceil(waitTime / 1000)}s`);
|
|
96
|
-
await sleep(waitTime);
|
|
97
|
-
this.#resetInvalidRequestCounter();
|
|
98
|
-
}
|
|
99
|
-
// Check global rate limit (50 req/s)
|
|
100
|
-
await this.#enforceGlobalRateLimit();
|
|
101
|
-
// Check if we're under a global rate limit cooldown
|
|
102
|
-
if (this.#globalReset > now / 1000) {
|
|
103
|
-
const waitTime = (this.#globalReset - now / 1000) * 1000;
|
|
104
|
-
await sleep(waitTime);
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
const request = this.#requestQueue[0];
|
|
108
|
-
if (typeof request === `undefined`)
|
|
109
|
-
break;
|
|
110
|
-
const bucket = this.#buckets.get(`${request.method}:${request.resource}`);
|
|
111
|
-
if (bucket?.remaining === 0) {
|
|
112
|
-
const resetTime = bucket.reset * 1000; // Convert to ms
|
|
113
|
-
if (resetTime > now) {
|
|
114
|
-
await sleep(resetTime - now);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Execute the request
|
|
118
|
-
this.#requestQueue.shift();
|
|
119
|
-
try {
|
|
120
|
-
const response = await this.#executeRequest(request);
|
|
121
|
-
request.resolve(response);
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
if (error instanceof Error) {
|
|
125
|
-
request.reject(error);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
this.#processingQueue = false;
|
|
130
|
-
// Check if any requests were added while we were processing the last one
|
|
131
|
-
if (this.#requestQueue.length > 0) {
|
|
132
|
-
void this.#processQueue(); // Restart the processor
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
/**
|
|
136
|
-
* Execute a single request and handle rate limit headers
|
|
137
|
-
*/
|
|
138
|
-
#executeRequest = async (request, retryCount = 0) => {
|
|
139
|
-
const token = this.getSession();
|
|
140
|
-
const now = Date.now();
|
|
141
|
-
// Track this request for global rate limiting
|
|
142
|
-
this.#globalRequestTimestamps.push(now);
|
|
143
|
-
const headers = {
|
|
144
|
-
Authorization: token
|
|
145
|
-
};
|
|
146
|
-
if (request.body) {
|
|
147
|
-
headers[`Content-Type`] = `application/json`;
|
|
148
|
-
}
|
|
149
|
-
const response = await fetch(request.resource.toString(), {
|
|
150
|
-
method: request.method,
|
|
151
|
-
body: request.body,
|
|
152
|
-
headers
|
|
153
|
-
});
|
|
154
|
-
// Update rate limit tracking from headers
|
|
155
|
-
this.#updateRateLimits(response);
|
|
156
|
-
// Handle 429 Too Many Requests
|
|
157
|
-
if (response.status === 429) {
|
|
158
|
-
if (retryCount >= this.maxRetries) {
|
|
159
|
-
console.error(`Max retries (${this.maxRetries}) exceeded for ${request.resource}`);
|
|
160
|
-
return response; // Return the 429 response instead of retrying forever
|
|
161
|
-
}
|
|
162
|
-
const retryAfter = response.headers.get(`Retry-After`) ?? `1`;
|
|
163
|
-
const isGlobal = response.headers.get(`X-RateLimit-Global`) === `true`;
|
|
164
|
-
const scope = response.headers.get(`X-RateLimit-Scope`);
|
|
165
|
-
if (isGlobal || scope === `global`) {
|
|
166
|
-
console.warn(`Hit global rate limit`);
|
|
167
|
-
this.#globalReset = now / 1000 + parseFloat(retryAfter);
|
|
168
|
-
}
|
|
169
|
-
// Wait before retrying
|
|
170
|
-
await sleep(parseFloat(retryAfter) * 1000);
|
|
171
|
-
// Retry with incremented counter
|
|
172
|
-
return this.#executeRequest(request, retryCount + 1);
|
|
173
|
-
}
|
|
174
|
-
// Track invalid requests (401, 403, 429 excluding shared scope)
|
|
175
|
-
if ([401, 403].includes(response.status) ||
|
|
176
|
-
(response.status === 429 &&
|
|
177
|
-
response.headers.get(`X-RateLimit-Scope`) !== `shared`)) {
|
|
178
|
-
this.#trackInvalidRequest();
|
|
179
|
-
}
|
|
180
|
-
return response;
|
|
181
|
-
};
|
|
182
|
-
/**
|
|
183
|
-
* Update rate limit buckets from response headers
|
|
184
|
-
*/
|
|
185
|
-
#updateRateLimits = (response) => {
|
|
186
|
-
const bucket = response.headers.get(`X-RateLimit-Bucket`);
|
|
187
|
-
const limit = response.headers.get(`X-RateLimit-Limit`);
|
|
188
|
-
const remaining = response.headers.get(`X-RateLimit-Remaining`);
|
|
189
|
-
const reset = response.headers.get(`X-RateLimit-Reset`);
|
|
190
|
-
const resetAfter = response.headers.get(`X-RateLimit-Reset-After`);
|
|
191
|
-
if (bucket && limit && remaining && reset && resetAfter) {
|
|
192
|
-
this.#buckets.set(bucket, {
|
|
193
|
-
limit: parseInt(limit, 10),
|
|
194
|
-
remaining: parseInt(remaining, 10),
|
|
195
|
-
reset: parseFloat(reset),
|
|
196
|
-
resetAfter: parseFloat(resetAfter)
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
/**
|
|
201
|
-
* Enforce global rate limit of 50 requests per second
|
|
202
|
-
*/
|
|
203
|
-
#enforceGlobalRateLimit = async () => {
|
|
204
|
-
const now = Date.now();
|
|
205
|
-
// Remove timestamps older than 1 second
|
|
206
|
-
this.#globalRequestTimestamps = this.#globalRequestTimestamps.filter((timestamp) => now - timestamp < this.#globalWindow);
|
|
207
|
-
// If we're at the limit, wait
|
|
208
|
-
if (this.#globalRequestTimestamps.length >= this.#globalLimit) {
|
|
209
|
-
const oldestTimestamp = this.#globalRequestTimestamps[0];
|
|
210
|
-
const waitTime = this.#globalWindow - (now - oldestTimestamp);
|
|
211
|
-
if (waitTime > 0) {
|
|
212
|
-
await sleep(waitTime);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
};
|
|
216
|
-
/**
|
|
217
|
-
* Track invalid requests for Cloudflare ban prevention
|
|
218
|
-
*/
|
|
219
|
-
#trackInvalidRequest = () => {
|
|
220
|
-
const now = Date.now();
|
|
221
|
-
// Reset counter if window has passed
|
|
222
|
-
if (now - this.#invalidRequests.windowStart >= this.#invalidRequestWindow) {
|
|
223
|
-
this.#resetInvalidRequestCounter();
|
|
224
|
-
}
|
|
225
|
-
this.#invalidRequests.count++;
|
|
226
|
-
if (this.#invalidRequests.count >= this.#invalidRequestLimit) {
|
|
227
|
-
console.error(`Approaching invalid request limit! Bot may be temporarily banned.`);
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
/**
|
|
231
|
-
* Check if we're temporarily banned
|
|
232
|
-
*/
|
|
233
|
-
#isTemporarilyBanned = () => {
|
|
234
|
-
const now = Date.now();
|
|
235
|
-
if (now - this.#invalidRequests.windowStart < this.#invalidRequestWindow) {
|
|
236
|
-
return this.#invalidRequests.count >= this.#invalidRequestLimit;
|
|
237
|
-
}
|
|
238
|
-
return false;
|
|
239
|
-
};
|
|
240
|
-
/**
|
|
241
|
-
* Reset invalid request counter
|
|
242
|
-
*/
|
|
243
|
-
#resetInvalidRequestCounter = () => {
|
|
244
|
-
this.#invalidRequests = {
|
|
245
|
-
count: 0,
|
|
246
|
-
windowStart: Date.now()
|
|
247
|
-
};
|
|
248
|
-
};
|
|
249
|
-
/**
|
|
250
|
-
* Get current queue size (useful for monitoring)
|
|
251
|
-
*/
|
|
252
|
-
getQueueSize = () => this.#requestQueue.length;
|
|
253
|
-
}
|
|
254
|
-
export const discord = new DiscordSession();
|
|
255
|
-
//# sourceMappingURL=DiscordSession.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DiscordSession.js","sourceRoot":"","sources":["../../src/requests/DiscordSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { isNonNullable } from "../utils/isNonNullable.js";
|
|
2
|
-
import { toSnakeCase } from "../utils/toSnakeCase.js";
|
|
3
|
-
export const addParams = (url, params) => {
|
|
4
|
-
for (const [key, value] of Object.entries(params)) {
|
|
5
|
-
if (isNonNullable(value)) {
|
|
6
|
-
url.searchParams.set(toSnakeCase(key), value.toString());
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return url;
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=addParams.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"addParams.js","sourceRoot":"","sources":["../../src/requests/addParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAStD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAE,MAAqB,EAAO,EAAE;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildURL.js","sourceRoot":"","sources":["../../src/requests/buildURL.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,QAAgB,EAChB,MAAsB,EACtB,IAAa,EACR,EAAE,CACP,SAAS,CACP,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC,EACtD,MAAM,IAAI,EAAE,CACb,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getAsset.js","sourceRoot":"","sources":["../../src/requests/getAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,QAAgB,EAChB,MAAuC,EAC/B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,6BAA6B,CAAC,CAAC,IAAI,CAAC"}
|
package/dist/requests/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { endpoint, discord } from "./DiscordSession.js";
|
|
2
|
-
export * from "./buildURL.js";
|
|
3
|
-
export * from "./getAsset.js";
|
|
4
|
-
export * from "./methods.js";
|
|
5
|
-
export * from "./toProcedure.js";
|
|
6
|
-
export * from "./toQuery.js";
|
|
7
|
-
export * from "./toValidated.js";
|
|
8
|
-
export * from "./verifyKey.js";
|
package/dist/requests/index.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { endpoint, discord } from "./DiscordSession.js";
|
|
2
|
-
export * from "./buildURL.js";
|
|
3
|
-
export * from "./getAsset.js";
|
|
4
|
-
export * from "./methods.js";
|
|
5
|
-
export * from "./toProcedure.js";
|
|
6
|
-
export * from "./toQuery.js";
|
|
7
|
-
export * from "./toValidated.js";
|
|
8
|
-
export * from "./verifyKey.js";
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/requests/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxD,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { GenericSchema, GenericSchemaAsync, InferOutput } from "valibot";
|
|
2
|
-
import type { RequestParams } from "./addParams.js";
|
|
3
|
-
import type { RequestBody } from "./request.js";
|
|
4
|
-
export type Fetcher<
|
|
5
|
-
/** A schema to validate the input arguments of a fetch call */
|
|
6
|
-
S extends GenericSchema | GenericSchemaAsync | null = null,
|
|
7
|
-
/** The return value expected from the fetch call */
|
|
8
|
-
R = void> = S extends null ? () => Promise<R> : (config: InferOutput<NonNullable<S>>) => Promise<R>;
|
|
9
|
-
export declare const get: <T>(url: string, params?: RequestParams) => Promise<T>;
|
|
10
|
-
export declare const post: <T>(url: string, body?: RequestBody) => Promise<T>;
|
|
11
|
-
export declare const put: <T>(url: string, body?: RequestBody) => Promise<T>;
|
|
12
|
-
export declare const patch: <T>(url: string, body?: RequestBody) => Promise<T>;
|
|
13
|
-
export declare const remove: <T = void>(url: string) => Promise<T>;
|
package/dist/requests/methods.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { buildURL } from "./buildURL.js";
|
|
2
|
-
import { request } from "./request.js";
|
|
3
|
-
export const get = async (url, params) => request(buildURL(url, params));
|
|
4
|
-
export const post = async (url, body) => request(buildURL(url), `POST`, body);
|
|
5
|
-
export const put = async (url, body) => request(buildURL(url), `PUT`, body);
|
|
6
|
-
export const patch = async (url, body) => request(buildURL(url), `PATCH`, body);
|
|
7
|
-
export const remove = async (url) => request(buildURL(url), `DELETE`);
|
|
8
|
-
//# sourceMappingURL=methods.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methods.js","sourceRoot":"","sources":["../../src/requests/methods.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWvC,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAE,MAAsB,EAAc,EAAE,CAC9E,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAK,GAAW,EAAE,IAAkB,EAAc,EAAE,CAC3E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAK,GAAW,EAAE,IAAkB,EAAc,EAAE,CAC1E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAEtC,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAK,GAAW,EAAE,IAAkB,EAAc,EAAE,CAC5E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAExC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAY,GAAW,EAAc,EAAE,CAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC"}
|
package/dist/requests/request.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { discord } from "./DiscordSession.js";
|
|
2
|
-
import { toCamelKeys } from "../utils/toCamelKeys.js";
|
|
3
|
-
import { toSnakeKeys } from "../utils/toSnakeKeys.js";
|
|
4
|
-
export const request = async (resource, method = `GET`, body) => {
|
|
5
|
-
const token = discord.getSession();
|
|
6
|
-
if (!token) {
|
|
7
|
-
throw new Error(`Auth Token must be set before requests can be made.`);
|
|
8
|
-
}
|
|
9
|
-
const json = () => {
|
|
10
|
-
try {
|
|
11
|
-
return body ? JSON.stringify(toSnakeKeys(body)) : body;
|
|
12
|
-
}
|
|
13
|
-
catch (cause) {
|
|
14
|
-
console.error(`Received malformed request body:\n\n`, { body });
|
|
15
|
-
throw new Error(`Failed to stringify request body!`, { cause });
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
// Queue the request through the rate limiter
|
|
19
|
-
const res = await discord.queueRequest(resource, method, json());
|
|
20
|
-
if (!res.ok) {
|
|
21
|
-
throw new Error(`Request to resource '${resource.toString()}' failed:\n\n${res.statusText}`);
|
|
22
|
-
}
|
|
23
|
-
// Return `void` on `204 No Content` responses
|
|
24
|
-
if (res.status === 204) {
|
|
25
|
-
// @ts-expect-error
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
return toCamelKeys(await res.json());
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=request.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/requests/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC1B,QAAa,EACb,MAAM,GAAG,KAAK,EACd,IAAkB,EACN,EAAE;IACd,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,GAA8B,EAAE;QAC3C,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;IAEF,6CAA6C;IAC7C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,CAAC,QAAQ,EAAE,gBACzC,GAAG,CAAC,UACN,EAAE,CACH,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,mBAAmB;QACnB,OAAO;IACT,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type * as v from "valibot";
|
|
2
|
-
import type { AnyProcedureBuilder, MutationProcedure, ProcedureType, QueryProcedure, SubscriptionProcedure } from "@trpc/server/unstable-core-do-not-import";
|
|
3
|
-
import type { Fetcher } from "./methods.js";
|
|
4
|
-
type Result<T = void> = T extends v.GenericSchema | v.GenericSchemaAsync ? v.InferOutput<T> : T;
|
|
5
|
-
type Schema = v.GenericSchema | v.GenericSchemaAsync;
|
|
6
|
-
type ProvedureDef<I extends Schema | null = null, O extends Schema | null = null> = I extends Schema ? O extends Schema ? {
|
|
7
|
-
input: v.InferInput<I>;
|
|
8
|
-
output: v.InferOutput<O>;
|
|
9
|
-
meta: unknown;
|
|
10
|
-
} : {
|
|
11
|
-
input: v.InferInput<I>;
|
|
12
|
-
output: undefined;
|
|
13
|
-
meta: unknown;
|
|
14
|
-
} : O extends Schema ? {
|
|
15
|
-
input: undefined;
|
|
16
|
-
output: v.InferOutput<O>;
|
|
17
|
-
meta: unknown;
|
|
18
|
-
} : {
|
|
19
|
-
input: undefined;
|
|
20
|
-
output: undefined;
|
|
21
|
-
meta: unknown;
|
|
22
|
-
};
|
|
23
|
-
type BaseProcedure<T extends ProcedureType, I extends Schema | null = null, O extends Schema | null = null> = T extends `query` ? QueryProcedure<ProvedureDef<I, O>> : T extends `mutation` ? MutationProcedure<ProvedureDef<I, O>> : SubscriptionProcedure<ProvedureDef<I, O>>;
|
|
24
|
-
/**
|
|
25
|
-
* Given a {@link Fetcher | Fetcher} function and it's associated input and
|
|
26
|
-
* output Zod schemas, this produces a function which accepts a tRPC procedure
|
|
27
|
-
* builder of the given procedure type. This can then be used in a tRPC router
|
|
28
|
-
* to scaffold an API route to forward a request to Discord's API.
|
|
29
|
-
*/
|
|
30
|
-
export declare const toProcedure: <T extends ProcedureType, I extends Schema | null = null, O extends Schema | null = null>(type: T, fn: Fetcher<I extends Schema ? I : null, Result<O>>, input?: I, output?: O) => (procedure: AnyProcedureBuilder, errorHandler?: (error: unknown) => void) => BaseProcedure<T, I, O>;
|
|
31
|
-
export {};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { isNonNullable } from "../utils/isNonNullable.js";
|
|
2
|
-
/**
|
|
3
|
-
* Given a {@link Fetcher | Fetcher} function and it's associated input and
|
|
4
|
-
* output Zod schemas, this produces a function which accepts a tRPC procedure
|
|
5
|
-
* builder of the given procedure type. This can then be used in a tRPC router
|
|
6
|
-
* to scaffold an API route to forward a request to Discord's API.
|
|
7
|
-
*/
|
|
8
|
-
export const toProcedure = (type, fn, input, output) => (procedure, errorHandler) => {
|
|
9
|
-
try {
|
|
10
|
-
if (isNonNullable(input) && isNonNullable(output)) {
|
|
11
|
-
// @ts-expect-error
|
|
12
|
-
return procedure
|
|
13
|
-
.input(input)
|
|
14
|
-
.output(output)[type](async (opts) => fn(opts.input));
|
|
15
|
-
}
|
|
16
|
-
if (isNonNullable(input) && !isNonNullable(output)) {
|
|
17
|
-
// @ts-expect-error
|
|
18
|
-
return procedure.input(input)[type](async (opts) => fn(opts.input));
|
|
19
|
-
}
|
|
20
|
-
if (!isNonNullable(input) && isNonNullable(output)) {
|
|
21
|
-
// @ts-expect-error
|
|
22
|
-
return procedure.output(output)[type](async () => fn());
|
|
23
|
-
}
|
|
24
|
-
// @ts-expect-error
|
|
25
|
-
return procedure[type](async () => fn());
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
if (typeof errorHandler === `function`) {
|
|
29
|
-
errorHandler(error);
|
|
30
|
-
}
|
|
31
|
-
throw new Error(`Unhandled Procedure Error!`, {
|
|
32
|
-
cause: error
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=toProcedure.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toProcedure.js","sourceRoot":"","sources":["../../src/requests/toProcedure.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAsC1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GACtB,CAKE,IAAO,EACP,EAAmD,EACnD,KAAS,EACT,MAAU,EACV,EAAE,CACJ,CACE,SAA8B,EAC9B,YAAuC,EACf,EAAE;IAC1B,IAAI,CAAC;QACH,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,mBAAmB;YACnB,OAAO,SAAS;iBACb,KAAK,CAAC,KAAK,CAAC;iBACZ,MAAM,CAAC,MAAM,CAAC,CACd,IAAI,CAAC,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,mBAAmB;YACnB,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,mBAAmB;YACnB,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,mBAAmB;QACnB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;YACvC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE;YAC5C,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { GenericSchema } from "valibot";
|
|
2
|
-
import type { Fetcher } from "./methods.js";
|
|
3
|
-
interface Register {
|
|
4
|
-
}
|
|
5
|
-
type QueryKey = readonly unknown[];
|
|
6
|
-
type QueryMeta = Register extends {
|
|
7
|
-
queryMeta: infer TQueryMeta;
|
|
8
|
-
} ? TQueryMeta extends Record<string, unknown> ? TQueryMeta : Record<string, unknown> : Record<string, unknown>;
|
|
9
|
-
type FetchDirection = `backward` | `forward`;
|
|
10
|
-
type QueryFunctionContext<TQueryKey extends QueryKey = QueryKey, TPageParam = never> = [TPageParam] extends [never] ? {
|
|
11
|
-
queryKey: TQueryKey;
|
|
12
|
-
signal: AbortSignal;
|
|
13
|
-
meta: QueryMeta | undefined;
|
|
14
|
-
} : {
|
|
15
|
-
queryKey: TQueryKey;
|
|
16
|
-
signal: AbortSignal;
|
|
17
|
-
pageParam: TPageParam;
|
|
18
|
-
direction: FetchDirection;
|
|
19
|
-
meta: QueryMeta | undefined;
|
|
20
|
-
};
|
|
21
|
-
export type QueryFunction<T = unknown, TQueryKey extends QueryKey = QueryKey, TPageParam = never> = (context: QueryFunctionContext<TQueryKey, TPageParam>) => Promise<T> | T;
|
|
22
|
-
/**
|
|
23
|
-
* Given a {@link Fetcher | Fetcher} function, transforms it into a curried function
|
|
24
|
-
* which can then be used with React-Query as a query function without
|
|
25
|
-
* the need for any additional boilerplate.
|
|
26
|
-
*/
|
|
27
|
-
export declare const toQuery: <S extends GenericSchema | null, R, T extends Fetcher<S, R>>(fn: T) => Parameters<T>[`length`] extends 0 ? () => QueryFunction<Awaited<ReturnType<T>>> : (config: Parameters<T>[0]) => QueryFunction<Awaited<ReturnType<T>>>;
|
|
28
|
-
export {};
|
package/dist/requests/toQuery.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Given a {@link Fetcher | Fetcher} function, transforms it into a curried function
|
|
3
|
-
* which can then be used with React-Query as a query function without
|
|
4
|
-
* the need for any additional boilerplate.
|
|
5
|
-
*/
|
|
6
|
-
export const toQuery = (fn) =>
|
|
7
|
-
// @ts-expect-error
|
|
8
|
-
(...config) => async () => fn(...config);
|
|
9
|
-
//# sourceMappingURL=toQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toQuery.js","sourceRoot":"","sources":["../../src/requests/toQuery.ts"],"names":[],"mappings":"AAoCA;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAClB,CACE,EAAK,EAGiE,EAAE;AAC1E,mBAAmB;AACnB,CAAC,GAAG,MAAiB,EAAE,EAAE,CACzB,KAAK,IAAI,EAAE,CACT,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type GenericSchema, type GenericSchemaAsync, type InferOutput } from "valibot";
|
|
2
|
-
import type { Fetcher } from "./methods.js";
|
|
3
|
-
type InferFetcherSchema<F> = F extends Fetcher<infer S, unknown> ? S : never;
|
|
4
|
-
type InferFetcherReturn<F> = F extends Fetcher<GenericSchema | GenericSchemaAsync | null, infer R> ? R : never;
|
|
5
|
-
/**
|
|
6
|
-
* Given a {@link Fetcher | Fetcher} function and it's associated input
|
|
7
|
-
* and output Zod schemas, this returns a new validated {@link Fetcher | Fetcher} function which will validate it's input and result at runtime.
|
|
8
|
-
* This is useful in contexts where you want strong guarantees on runtime
|
|
9
|
-
* type-safety when dealing with raw user input in a framework agnostic
|
|
10
|
-
* environment.
|
|
11
|
-
*/
|
|
12
|
-
export declare const toValidated: <F extends Fetcher<GenericSchema | GenericSchemaAsync, InferOutput<GenericSchema | GenericSchemaAsync>> | Fetcher<GenericSchema | GenericSchemaAsync> | Fetcher<null, null> | Fetcher<null, InferOutput<GenericSchema | GenericSchemaAsync>>>(fn: F, input?: InferFetcherSchema<F> | null, output?: GenericSchema<unknown, InferFetcherReturn<F>> | GenericSchemaAsync<unknown, InferFetcherReturn<F>>) => F;
|
|
13
|
-
export {};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { isOfKind, safeParseAsync, summarize } from "valibot";
|
|
2
|
-
/**
|
|
3
|
-
* Given a {@link Fetcher | Fetcher} function and it's associated input
|
|
4
|
-
* and output Zod schemas, this returns a new validated {@link Fetcher | Fetcher} function which will validate it's input and result at runtime.
|
|
5
|
-
* This is useful in contexts where you want strong guarantees on runtime
|
|
6
|
-
* type-safety when dealing with raw user input in a framework agnostic
|
|
7
|
-
* environment.
|
|
8
|
-
*/
|
|
9
|
-
export const toValidated = (fn, input, output) => new Proxy(fn, {
|
|
10
|
-
async apply(target, _, [config]) {
|
|
11
|
-
// Validate the fetcher args before fetching
|
|
12
|
-
if (input && isOfKind(`schema`, input)) {
|
|
13
|
-
const { issues } = await safeParseAsync(input, config);
|
|
14
|
-
if (issues) {
|
|
15
|
-
throw new Error(`Failed to parse input schema: ${input.reference.name}\n\n${summarize(issues)}`);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
const result = await target(config);
|
|
19
|
-
// Validate the result of the fetch call before returning
|
|
20
|
-
if (output && isOfKind(`schema`, output)) {
|
|
21
|
-
const { issues } = await safeParseAsync(output, result);
|
|
22
|
-
if (issues) {
|
|
23
|
-
throw new Error(`Failed to parse input schema: ${output.reference.name}\n\n${summarize(issues)}`);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=toValidated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toValidated.js","sourceRoot":"","sources":["../../src/requests/toValidated.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,QAAQ,EACR,cAAc,EACd,SAAS,EACV,MAAM,SAAS,CAAC;AASjB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAUzB,EAAK,EACL,KAAoC,EACpC,MAEsD,EACnD,EAAE,CACL,IAAI,KAAK,CAAI,EAAE,EAAE;IACf,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;QAC7B,4CAA4C;QAC5C,IAAI,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,iCAAiC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAChF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpC,yDAAyD;QACzD,IAAI,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,iCAAiC,MAAM,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,MAAuB,CAAC;IACjC,CAAC;CACF,CAAC,CAAC"}
|