@teever/ez-hook-effect 0.5.0 → 0.5.19
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/errors/WebhookError.d.ts +295 -0
- package/dist/errors/WebhookError.js +322 -0
- package/dist/errors/WebhookError.js.map +1 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +17 -965
- package/dist/index.js.map +5 -13
- package/dist/layers/Config.d.ts +48 -0
- package/dist/layers/Config.js +166 -0
- package/dist/layers/Config.js.map +1 -0
- package/dist/layers/Default.d.ts +6 -0
- package/dist/layers/Default.js +9 -0
- package/dist/layers/Default.js.map +1 -0
- package/dist/layers/HttpClient.d.ts +84 -0
- package/dist/layers/HttpClient.js +209 -0
- package/dist/layers/HttpClient.js.map +1 -0
- package/dist/layers/index.d.ts +2 -0
- package/dist/layers/index.js +3 -0
- package/dist/layers/index.js.map +1 -0
- package/dist/pipes/Embed.d.ts +51 -0
- package/dist/pipes/Embed.js +198 -0
- package/dist/pipes/Embed.js.map +1 -0
- package/dist/pipes/Webhook.d.ts +38 -0
- package/dist/pipes/Webhook.js +46 -0
- package/dist/pipes/Webhook.js.map +1 -0
- package/dist/pipes/index.d.ts +2 -0
- package/dist/pipes/index.js +3 -0
- package/dist/pipes/index.js.map +1 -0
- package/dist/schemas/Common.d.ts +10 -0
- package/dist/schemas/Common.js +30 -0
- package/dist/schemas/Common.js.map +1 -0
- package/dist/schemas/Discord.d.ts +16 -0
- package/dist/schemas/Discord.js +19 -0
- package/dist/schemas/Discord.js.map +1 -0
- package/dist/schemas/Embed.d.ts +143 -0
- package/dist/schemas/Embed.js +139 -0
- package/dist/schemas/Embed.js.map +1 -0
- package/dist/schemas/Field.d.ts +24 -0
- package/dist/schemas/Field.js +25 -0
- package/dist/schemas/Field.js.map +1 -0
- package/dist/schemas/Webhook.d.ts +88 -0
- package/dist/schemas/Webhook.js +87 -0
- package/dist/schemas/Webhook.js.map +1 -0
- package/dist/schemas/index.d.ts +5 -0
- package/dist/schemas/index.js +6 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/services/WebhookService.d.ts +94 -0
- package/dist/services/WebhookService.js +116 -0
- package/dist/services/WebhookService.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/utils/normalize.d.ts +1 -0
- package/dist/utils/normalize.js +17 -0
- package/dist/utils/normalize.js.map +1 -0
- package/package.json +56 -55
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { Context, Duration, Effect, Layer, Schedule } from "effect";
|
|
2
|
+
import { HttpError, NetworkError, RateLimitError } from "../errors";
|
|
3
|
+
/**
|
|
4
|
+
* HTTP Client service tag
|
|
5
|
+
*/
|
|
6
|
+
export class HttpClient extends Context.Service()("HttpClient") {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse rate limit information from response headers
|
|
10
|
+
*/
|
|
11
|
+
export const parseRateLimitHeaders = (headers) => {
|
|
12
|
+
const retryAfterHeader = headers["retry-after"];
|
|
13
|
+
const rateLimitRemaining = headers["x-ratelimit-remaining"];
|
|
14
|
+
// Check if we have rate limit info
|
|
15
|
+
if (!retryAfterHeader && rateLimitRemaining !== "0") {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
// Parse retry-after (Discord sends this in seconds)
|
|
19
|
+
let retryAfter = 0;
|
|
20
|
+
if (retryAfterHeader) {
|
|
21
|
+
const parsed = Number.parseFloat(retryAfterHeader);
|
|
22
|
+
if (!Number.isNaN(parsed)) {
|
|
23
|
+
// Discord sends seconds, convert to milliseconds
|
|
24
|
+
retryAfter = Math.ceil(parsed * 1000);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Parse other rate limit headers
|
|
28
|
+
const limit = headers["x-ratelimit-limit"];
|
|
29
|
+
const remaining = headers["x-ratelimit-remaining"];
|
|
30
|
+
const resetHeader = headers["x-ratelimit-reset"];
|
|
31
|
+
const resetAfterHeader = headers["x-ratelimit-reset-after"];
|
|
32
|
+
const globalHeader = headers["x-ratelimit-global"];
|
|
33
|
+
let reset;
|
|
34
|
+
if (resetHeader) {
|
|
35
|
+
const resetTimestamp = Number.parseFloat(resetHeader);
|
|
36
|
+
if (!Number.isNaN(resetTimestamp)) {
|
|
37
|
+
reset = new Date(resetTimestamp * 1000);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (resetAfterHeader) {
|
|
41
|
+
const resetAfter = Number.parseFloat(resetAfterHeader);
|
|
42
|
+
if (!Number.isNaN(resetAfter)) {
|
|
43
|
+
reset = new Date(Date.now() + resetAfter * 1000);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// If we still don't have retryAfter, calculate from reset
|
|
47
|
+
if (retryAfter === 0 && reset) {
|
|
48
|
+
retryAfter = Math.max(0, reset.getTime() - Date.now());
|
|
49
|
+
}
|
|
50
|
+
// Default to 1 second if we have no timing info
|
|
51
|
+
if (retryAfter === 0) {
|
|
52
|
+
retryAfter = 1000;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
retryAfter,
|
|
56
|
+
...(limit && { limit: Number.parseInt(limit, 10) }),
|
|
57
|
+
...(remaining && { remaining: Number.parseInt(remaining, 10) }),
|
|
58
|
+
...(reset && { reset }),
|
|
59
|
+
global: globalHeader === "true",
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Default retry configuration
|
|
64
|
+
*/
|
|
65
|
+
export const defaultRetryConfig = {
|
|
66
|
+
maxRetries: 3,
|
|
67
|
+
baseDelay: Duration.seconds(1),
|
|
68
|
+
maxDelay: Duration.seconds(60),
|
|
69
|
+
jitter: true,
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Create retry schedule based on configuration
|
|
73
|
+
*/
|
|
74
|
+
export const createRetrySchedule = (config) => {
|
|
75
|
+
const capDelay = (delay) => Duration.isLessThanOrEqualTo(delay, config.maxDelay)
|
|
76
|
+
? delay
|
|
77
|
+
: config.maxDelay;
|
|
78
|
+
// Exponential backoff with optional jitter
|
|
79
|
+
let policy = Schedule.exponential(config.baseDelay, 2);
|
|
80
|
+
if (config.jitter) {
|
|
81
|
+
policy = policy.pipe(Schedule.modifyDelay((_, delay) => Effect.sync(() => {
|
|
82
|
+
const millis = Duration.toMillis(delay);
|
|
83
|
+
return Duration.millis(millis + Math.random() * millis);
|
|
84
|
+
})));
|
|
85
|
+
}
|
|
86
|
+
// Cap delay to maxDelay
|
|
87
|
+
policy = policy.pipe(Schedule.modifyDelay((_, delay) => Effect.succeed(capDelay(delay))));
|
|
88
|
+
// Apply a max retry cap while keeping output as Duration
|
|
89
|
+
const capped = Schedule.both(policy, Schedule.recurs(config.maxRetries));
|
|
90
|
+
return capped.pipe(Schedule.map(([delay]) => Effect.succeed(delay)));
|
|
91
|
+
};
|
|
92
|
+
// (Note) Rate limit parsing is now handled via parseRateLimitHeaders
|
|
93
|
+
// and returns RateLimitError for 429 responses.
|
|
94
|
+
/**
|
|
95
|
+
* Fetch-based HTTP client implementation
|
|
96
|
+
*/
|
|
97
|
+
export const FetchHttpClient = (retryConfig = defaultRetryConfig) => ({
|
|
98
|
+
retryConfig,
|
|
99
|
+
request: (request) => Effect.gen(function* () {
|
|
100
|
+
const controller = new AbortController();
|
|
101
|
+
const timeout = request.timeout
|
|
102
|
+
? setTimeout(() => controller.abort(), Duration.toMillis(request.timeout))
|
|
103
|
+
: undefined;
|
|
104
|
+
// Build headers as a real `Headers` instance so downstream
|
|
105
|
+
// code can reliably use `get()` in tests and callers.
|
|
106
|
+
const requestHeaders = new Headers({
|
|
107
|
+
"Content-Type": "application/json",
|
|
108
|
+
});
|
|
109
|
+
for (const [key, value] of Object.entries(request.headers ?? {})) {
|
|
110
|
+
requestHeaders.set(key, value);
|
|
111
|
+
}
|
|
112
|
+
const response = yield* Effect.tryPromise({
|
|
113
|
+
try: () => fetch(request.url, {
|
|
114
|
+
method: request.method,
|
|
115
|
+
headers: requestHeaders,
|
|
116
|
+
body: request.body ? JSON.stringify(request.body) : undefined,
|
|
117
|
+
signal: controller.signal,
|
|
118
|
+
}),
|
|
119
|
+
catch: (error) => new NetworkError({
|
|
120
|
+
message: `Network request failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
121
|
+
statusCode: 0,
|
|
122
|
+
}),
|
|
123
|
+
});
|
|
124
|
+
if (timeout)
|
|
125
|
+
clearTimeout(timeout);
|
|
126
|
+
// Read response body as text; handle odd mocks that return a function
|
|
127
|
+
// by invoking it to retrieve the actual string.
|
|
128
|
+
const rawTextOrFn = yield* Effect.tryPromise({
|
|
129
|
+
try: () => response.text(),
|
|
130
|
+
catch: () => new NetworkError({ message: "Failed to read response body" }),
|
|
131
|
+
});
|
|
132
|
+
const text = typeof rawTextOrFn === "function"
|
|
133
|
+
? yield* Effect.tryPromise({
|
|
134
|
+
try: () => rawTextOrFn(),
|
|
135
|
+
catch: () => new NetworkError({ message: "Failed to read response body" }),
|
|
136
|
+
})
|
|
137
|
+
: String(rawTextOrFn ?? "");
|
|
138
|
+
const headers = {};
|
|
139
|
+
response.headers.forEach((value, key) => {
|
|
140
|
+
headers[key.toLowerCase()] = value;
|
|
141
|
+
});
|
|
142
|
+
let body = text;
|
|
143
|
+
if (headers["content-type"]?.includes("application/json") && text) {
|
|
144
|
+
try {
|
|
145
|
+
body = JSON.parse(text);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// Keep as text if JSON parsing fails
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const httpResponse = {
|
|
152
|
+
status: response.status,
|
|
153
|
+
statusText: response.statusText,
|
|
154
|
+
headers,
|
|
155
|
+
body,
|
|
156
|
+
text,
|
|
157
|
+
};
|
|
158
|
+
// Handle HTTP errors
|
|
159
|
+
if (!response.ok) {
|
|
160
|
+
// Handle rate limiting (429) with specific RateLimitError
|
|
161
|
+
if (response.status === 429) {
|
|
162
|
+
const rateLimitInfo = parseRateLimitHeaders(headers);
|
|
163
|
+
return yield* Effect.fail(new RateLimitError({
|
|
164
|
+
message: `Rate limited: retry after ${rateLimitInfo?.retryAfter ?? 1000}ms`,
|
|
165
|
+
retryAfter: rateLimitInfo?.retryAfter ?? 1000,
|
|
166
|
+
...(rateLimitInfo?.limit !== undefined && {
|
|
167
|
+
limit: rateLimitInfo.limit,
|
|
168
|
+
}),
|
|
169
|
+
...(rateLimitInfo?.remaining !== undefined && {
|
|
170
|
+
remaining: rateLimitInfo.remaining,
|
|
171
|
+
}),
|
|
172
|
+
...(rateLimitInfo?.reset !== undefined && {
|
|
173
|
+
reset: rateLimitInfo.reset,
|
|
174
|
+
}),
|
|
175
|
+
}));
|
|
176
|
+
}
|
|
177
|
+
return yield* Effect.fail(new HttpError({
|
|
178
|
+
message: `HTTP ${response.status}: ${response.statusText}`,
|
|
179
|
+
request: {
|
|
180
|
+
method: request.method,
|
|
181
|
+
url: request.url,
|
|
182
|
+
},
|
|
183
|
+
response: {
|
|
184
|
+
status: response.status,
|
|
185
|
+
statusText: response.statusText,
|
|
186
|
+
headers,
|
|
187
|
+
body,
|
|
188
|
+
},
|
|
189
|
+
}));
|
|
190
|
+
}
|
|
191
|
+
return httpResponse;
|
|
192
|
+
}),
|
|
193
|
+
});
|
|
194
|
+
/**
|
|
195
|
+
* Live HTTP client layer with default configuration
|
|
196
|
+
*/
|
|
197
|
+
export const HttpClientLive = Layer.succeed(HttpClient, FetchHttpClient());
|
|
198
|
+
/**
|
|
199
|
+
* HTTP client layer with custom retry configuration
|
|
200
|
+
*/
|
|
201
|
+
export const makeHttpClientLayer = (retryConfig) => Layer.succeed(HttpClient, FetchHttpClient({ ...defaultRetryConfig, ...retryConfig }));
|
|
202
|
+
/**
|
|
203
|
+
* Test HTTP client layer for deterministic unit tests.
|
|
204
|
+
*/
|
|
205
|
+
export const makeTestHttpClient = (resolver, retryConfig = defaultRetryConfig) => Layer.succeed(HttpClient, {
|
|
206
|
+
request: resolver,
|
|
207
|
+
retryConfig,
|
|
208
|
+
});
|
|
209
|
+
//# sourceMappingURL=HttpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpClient.js","sourceRoot":"","sources":["../../src/layers/HttpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layers/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { ValidationError } from "../errors";
|
|
3
|
+
import { Author, Embed as EmbedSchema, Field, Footer, Image, Provider, Thumbnail, Video } from "../schemas";
|
|
4
|
+
type EmbedDraft = Partial<Schema.Schema.Type<typeof EmbedSchema>>;
|
|
5
|
+
export declare const addFieldImpl: (fieldOrName: Field | string, value?: string, inline?: boolean) => (d: EmbedDraft) => Effect.Effect<{
|
|
6
|
+
fields: Field[];
|
|
7
|
+
url?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
type?: "rich";
|
|
10
|
+
description?: string;
|
|
11
|
+
timestamp?: string;
|
|
12
|
+
color?: number;
|
|
13
|
+
footer?: Footer;
|
|
14
|
+
image?: Image;
|
|
15
|
+
thumbnail?: Thumbnail;
|
|
16
|
+
video?: Video;
|
|
17
|
+
provider?: Provider;
|
|
18
|
+
author?: Author;
|
|
19
|
+
}, ValidationError, never>;
|
|
20
|
+
export declare const buildDirect: (d: EmbedDraft) => Effect.Effect<EmbedSchema, ValidationError, never>;
|
|
21
|
+
export declare const addFieldDirect: (fieldOrName: Field | string, value?: string, inline?: boolean) => (d: EmbedDraft) => Effect.Effect<{
|
|
22
|
+
fields: Field[];
|
|
23
|
+
url?: string;
|
|
24
|
+
title?: string;
|
|
25
|
+
type?: "rich";
|
|
26
|
+
description?: string;
|
|
27
|
+
timestamp?: string;
|
|
28
|
+
color?: number;
|
|
29
|
+
footer?: Footer;
|
|
30
|
+
image?: Image;
|
|
31
|
+
thumbnail?: Thumbnail;
|
|
32
|
+
video?: Video;
|
|
33
|
+
provider?: Provider;
|
|
34
|
+
author?: Author;
|
|
35
|
+
}, ValidationError, never>;
|
|
36
|
+
export declare const make: Effect.Effect<EmbedDraft, never>;
|
|
37
|
+
export declare const setTitle: (title: string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
38
|
+
export declare const setURL: (url: string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
39
|
+
export declare const setDescription: (description: string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
40
|
+
export declare const setTimestamp: (date?: Date) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
41
|
+
export declare const setColor: (color: number | string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
42
|
+
export declare const setFooter: (footer: Footer | string, icon_url?: string, proxy_icon_url?: string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
43
|
+
export declare const setImage: (image: Image | string, height?: number, width?: number) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
44
|
+
export declare const setThumbnail: (thumbnail: Thumbnail | string, height?: number, width?: number) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
45
|
+
export declare const setVideo: (video: Video | string, height?: number, width?: number) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
46
|
+
export declare const setProvider: (provider: Provider | string, url?: string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
47
|
+
export declare const setAuthor: (author: Author | string, url?: string, icon_url?: string) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
48
|
+
export declare const addField: (field: Field | string, value?: string, inline?: boolean) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
49
|
+
export declare const setFields: (fields: ReadonlyArray<Field>) => (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<Partial<EmbedSchema>, ValidationError, never>;
|
|
50
|
+
export declare const build: (self: Effect.Effect<EmbedDraft, ValidationError>) => Effect.Effect<EmbedSchema, ValidationError, never>;
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { Effect, pipe, Schema } from "effect";
|
|
2
|
+
import { ValidationError } from "../errors";
|
|
3
|
+
import { Author, ColorCode, Embed as EmbedSchema, Field, Footer, Image, maxLength, Provider, Thumbnail, UrlString, Video, } from "../schemas";
|
|
4
|
+
import { stripUndefined } from "../utils/normalize";
|
|
5
|
+
const createDraft = () => ({});
|
|
6
|
+
const setTitleImpl = (title) => (d) => pipe(Schema.decodeUnknownEffect(maxLength(256))(title), Effect.mapError(() => ValidationError.fromIssue("title", "Title must be 256 characters or less", {
|
|
7
|
+
constraint: "MaxLength",
|
|
8
|
+
expected: "256 characters or less",
|
|
9
|
+
actual: title.length,
|
|
10
|
+
})), Effect.as({ ...d, title }));
|
|
11
|
+
const setURLImpl = (url) => (d) => pipe(Schema.decodeUnknownEffect(UrlString)(url), Effect.mapError(() => ValidationError.fromIssue("url", "Invalid URL", {
|
|
12
|
+
constraint: "URL",
|
|
13
|
+
expected: "valid URL",
|
|
14
|
+
actual: url,
|
|
15
|
+
})), Effect.as({ ...d, url }));
|
|
16
|
+
const setDescriptionImpl = (description) => (d) => pipe(Schema.decodeUnknownEffect(maxLength(4096))(description), Effect.mapError(() => ValidationError.fromIssue("description", "Description must be 4096 characters or less", {
|
|
17
|
+
constraint: "MaxLength",
|
|
18
|
+
expected: "4096 characters or less",
|
|
19
|
+
actual: description.length,
|
|
20
|
+
})), Effect.as({ ...d, description }));
|
|
21
|
+
const setTimestampImpl = (date) => (d) => Effect.succeed({ ...d, timestamp: (date ?? new Date()).toISOString() });
|
|
22
|
+
const setColorImpl = (color) => (d) => {
|
|
23
|
+
const colorValue = typeof color === "string" ? parseInt(color.replace("#", ""), 16) : color;
|
|
24
|
+
return pipe(Schema.decodeUnknownEffect(ColorCode)(colorValue), Effect.mapError(() => ValidationError.fromIssue("color", "Invalid color code (must be 0-16777215)", {
|
|
25
|
+
constraint: "Range",
|
|
26
|
+
expected: "0-16777215",
|
|
27
|
+
actual: colorValue,
|
|
28
|
+
})), Effect.as({ ...d, color: colorValue }));
|
|
29
|
+
};
|
|
30
|
+
const setFooterImpl = (footerOrText, icon_url, proxy_icon_url) => (d) => {
|
|
31
|
+
const footer = typeof footerOrText === "string"
|
|
32
|
+
? {
|
|
33
|
+
text: footerOrText,
|
|
34
|
+
...(icon_url === undefined ? {} : { icon_url }),
|
|
35
|
+
...(proxy_icon_url === undefined ? {} : { proxy_icon_url }),
|
|
36
|
+
}
|
|
37
|
+
: (() => {
|
|
38
|
+
const { text, icon_url, proxy_icon_url } = footerOrText;
|
|
39
|
+
return {
|
|
40
|
+
text,
|
|
41
|
+
...(icon_url === undefined ? {} : { icon_url }),
|
|
42
|
+
...(proxy_icon_url === undefined ? {} : { proxy_icon_url }),
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
return pipe(Schema.decodeUnknownEffect(Footer)(footer), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "footer", value: footer })), Effect.as({ ...d, footer }));
|
|
46
|
+
};
|
|
47
|
+
const setImageImpl = (imageOrUrl, height, width) => (d) => {
|
|
48
|
+
const image = typeof imageOrUrl === "string"
|
|
49
|
+
? {
|
|
50
|
+
url: imageOrUrl,
|
|
51
|
+
...(height === undefined ? {} : { height }),
|
|
52
|
+
...(width === undefined ? {} : { width }),
|
|
53
|
+
}
|
|
54
|
+
: (() => {
|
|
55
|
+
const { url, proxy_url, height, width } = imageOrUrl;
|
|
56
|
+
return {
|
|
57
|
+
url,
|
|
58
|
+
...(proxy_url === undefined ? {} : { proxy_url }),
|
|
59
|
+
...(height === undefined ? {} : { height }),
|
|
60
|
+
...(width === undefined ? {} : { width }),
|
|
61
|
+
};
|
|
62
|
+
})();
|
|
63
|
+
return pipe(Schema.decodeUnknownEffect(Image)(image), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "image", value: image })), Effect.as({ ...d, image }));
|
|
64
|
+
};
|
|
65
|
+
const setThumbnailImpl = (thumbnailOrUrl, height, width) => (d) => {
|
|
66
|
+
const thumbnail = typeof thumbnailOrUrl === "string"
|
|
67
|
+
? {
|
|
68
|
+
url: thumbnailOrUrl,
|
|
69
|
+
...(height === undefined ? {} : { height }),
|
|
70
|
+
...(width === undefined ? {} : { width }),
|
|
71
|
+
}
|
|
72
|
+
: (() => {
|
|
73
|
+
const { url, proxy_url, height, width } = thumbnailOrUrl;
|
|
74
|
+
return {
|
|
75
|
+
url,
|
|
76
|
+
...(proxy_url === undefined ? {} : { proxy_url }),
|
|
77
|
+
...(height === undefined ? {} : { height }),
|
|
78
|
+
...(width === undefined ? {} : { width }),
|
|
79
|
+
};
|
|
80
|
+
})();
|
|
81
|
+
return pipe(Schema.decodeUnknownEffect(Thumbnail)(thumbnail), Effect.mapError((e) => ValidationError.fromParseError(e, {
|
|
82
|
+
field: "thumbnail",
|
|
83
|
+
value: thumbnail,
|
|
84
|
+
})), Effect.as({ ...d, thumbnail }));
|
|
85
|
+
};
|
|
86
|
+
const setVideoImpl = (videoOrUrl, height, width) => (d) => {
|
|
87
|
+
const video = typeof videoOrUrl === "string"
|
|
88
|
+
? {
|
|
89
|
+
url: videoOrUrl,
|
|
90
|
+
...(height === undefined ? {} : { height }),
|
|
91
|
+
...(width === undefined ? {} : { width }),
|
|
92
|
+
}
|
|
93
|
+
: (() => {
|
|
94
|
+
const { url, proxy_url, height, width } = videoOrUrl;
|
|
95
|
+
return {
|
|
96
|
+
...(url === undefined ? {} : { url }),
|
|
97
|
+
...(proxy_url === undefined ? {} : { proxy_url }),
|
|
98
|
+
...(height === undefined ? {} : { height }),
|
|
99
|
+
...(width === undefined ? {} : { width }),
|
|
100
|
+
};
|
|
101
|
+
})();
|
|
102
|
+
return pipe(Schema.decodeUnknownEffect(Video)(video), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "video", value: video })), Effect.as({ ...d, video }));
|
|
103
|
+
};
|
|
104
|
+
const setProviderImpl = (providerOrName, url) => (d) => {
|
|
105
|
+
const provider = typeof providerOrName === "string"
|
|
106
|
+
? {
|
|
107
|
+
name: providerOrName,
|
|
108
|
+
...(url === undefined ? {} : { url }),
|
|
109
|
+
}
|
|
110
|
+
: (() => {
|
|
111
|
+
const { name, url } = providerOrName;
|
|
112
|
+
return {
|
|
113
|
+
...(name === undefined ? {} : { name }),
|
|
114
|
+
...(url === undefined ? {} : { url }),
|
|
115
|
+
};
|
|
116
|
+
})();
|
|
117
|
+
return pipe(Schema.decodeUnknownEffect(Provider)(provider), Effect.mapError((e) => ValidationError.fromParseError(e, {
|
|
118
|
+
field: "provider",
|
|
119
|
+
value: provider,
|
|
120
|
+
})), Effect.as({ ...d, provider }));
|
|
121
|
+
};
|
|
122
|
+
const setAuthorImpl = (authorOrName, url, icon_url) => (d) => {
|
|
123
|
+
const author = typeof authorOrName === "string"
|
|
124
|
+
? {
|
|
125
|
+
name: authorOrName,
|
|
126
|
+
...(url === undefined ? {} : { url }),
|
|
127
|
+
...(icon_url === undefined ? {} : { icon_url }),
|
|
128
|
+
}
|
|
129
|
+
: (() => {
|
|
130
|
+
const { name, url, icon_url, proxy_icon_url } = authorOrName;
|
|
131
|
+
return {
|
|
132
|
+
...(name === undefined ? {} : { name }),
|
|
133
|
+
...(url === undefined ? {} : { url }),
|
|
134
|
+
...(icon_url === undefined ? {} : { icon_url }),
|
|
135
|
+
...(proxy_icon_url === undefined ? {} : { proxy_icon_url }),
|
|
136
|
+
};
|
|
137
|
+
})();
|
|
138
|
+
return pipe(Schema.decodeUnknownEffect(Author)(author), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "author", value: author })), Effect.as({ ...d, author }));
|
|
139
|
+
};
|
|
140
|
+
export const addFieldImpl = (fieldOrName, value, inline = false) => (d) => {
|
|
141
|
+
const currentFields = d.fields || [];
|
|
142
|
+
if (currentFields.length >= 25) {
|
|
143
|
+
return Effect.fail(ValidationError.fromIssue("fields", "Cannot add more than 25 fields", {
|
|
144
|
+
constraint: "MaxItems",
|
|
145
|
+
expected: "25 fields or less",
|
|
146
|
+
actual: currentFields.length + 1,
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
const field = typeof fieldOrName === "string"
|
|
150
|
+
? { name: fieldOrName, value: value ?? "", inline }
|
|
151
|
+
: (() => {
|
|
152
|
+
const { name, value, inline } = fieldOrName;
|
|
153
|
+
return {
|
|
154
|
+
name,
|
|
155
|
+
value,
|
|
156
|
+
...(inline === undefined ? {} : { inline }),
|
|
157
|
+
};
|
|
158
|
+
})();
|
|
159
|
+
return pipe(Schema.decodeUnknownEffect(Field)(field), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "fields", value: field })), Effect.map(() => ({ ...d, fields: [...currentFields, field] })));
|
|
160
|
+
};
|
|
161
|
+
const setFieldsImpl = (fields) => (d) => {
|
|
162
|
+
if (fields.length > 25) {
|
|
163
|
+
return Effect.fail(ValidationError.fromIssue("fields", "Cannot have more than 25 fields", {
|
|
164
|
+
constraint: "MaxItems",
|
|
165
|
+
expected: "25 fields or less",
|
|
166
|
+
actual: fields.length,
|
|
167
|
+
}));
|
|
168
|
+
}
|
|
169
|
+
const normalized = fields.map((field) => {
|
|
170
|
+
const { name, value, inline } = field;
|
|
171
|
+
return {
|
|
172
|
+
name,
|
|
173
|
+
value,
|
|
174
|
+
...(inline === undefined ? {} : { inline }),
|
|
175
|
+
};
|
|
176
|
+
});
|
|
177
|
+
return pipe(Effect.forEach(normalized, (f) => Schema.decodeUnknownEffect(Field)(f)), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "fields", value: fields })), Effect.map((decoded) => ({ ...d, fields: decoded })));
|
|
178
|
+
};
|
|
179
|
+
const buildImpl = (d) => pipe(Schema.decodeUnknownEffect(EmbedSchema)(stripUndefined({ ...d, type: "rich" })), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "embed", value: d })));
|
|
180
|
+
export const buildDirect = buildImpl;
|
|
181
|
+
export const addFieldDirect = addFieldImpl;
|
|
182
|
+
export const make = Effect.succeed(createDraft());
|
|
183
|
+
const chain = (f) => (self) => pipe(self, Effect.flatMap(f));
|
|
184
|
+
export const setTitle = (title) => chain(setTitleImpl(title));
|
|
185
|
+
export const setURL = (url) => chain(setURLImpl(url));
|
|
186
|
+
export const setDescription = (description) => chain(setDescriptionImpl(description));
|
|
187
|
+
export const setTimestamp = (date) => chain(setTimestampImpl(date));
|
|
188
|
+
export const setColor = (color) => chain(setColorImpl(color));
|
|
189
|
+
export const setFooter = (footer, icon_url, proxy_icon_url) => chain(setFooterImpl(footer, icon_url, proxy_icon_url));
|
|
190
|
+
export const setImage = (image, height, width) => chain(setImageImpl(image, height, width));
|
|
191
|
+
export const setThumbnail = (thumbnail, height, width) => chain(setThumbnailImpl(thumbnail, height, width));
|
|
192
|
+
export const setVideo = (video, height, width) => chain(setVideoImpl(video, height, width));
|
|
193
|
+
export const setProvider = (provider, url) => chain(setProviderImpl(provider, url));
|
|
194
|
+
export const setAuthor = (author, url, icon_url) => chain(setAuthorImpl(author, url, icon_url));
|
|
195
|
+
export const addField = (field, value, inline = false) => chain(addFieldImpl(field, value, inline));
|
|
196
|
+
export const setFields = (fields) => chain(setFieldsImpl(fields));
|
|
197
|
+
export const build = (self) => pipe(self, Effect.flatMap(buildImpl));
|
|
198
|
+
//# sourceMappingURL=Embed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Embed.js","sourceRoot":"","sources":["../../src/pipes/Embed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { ValidationError } from "../errors";
|
|
3
|
+
import { type Embed as EmbedSchema, type WebhookFile, WebhookParameter, Webhook as WebhookSchema } from "../schemas";
|
|
4
|
+
type WebhookDraft = Partial<Schema.Schema.Type<typeof WebhookSchema>>;
|
|
5
|
+
export declare const addEmbedImpl: (embed: Schema.Schema.Type<typeof EmbedSchema>) => (d: WebhookDraft) => Effect.Effect<{
|
|
6
|
+
embeds: readonly EmbedSchema[];
|
|
7
|
+
username?: string;
|
|
8
|
+
avatar_url?: string;
|
|
9
|
+
tts?: boolean;
|
|
10
|
+
content?: string;
|
|
11
|
+
file?: string | import("..").Attachment | {
|
|
12
|
+
readonly name: string;
|
|
13
|
+
readonly data: string | Uint8Array<ArrayBuffer>;
|
|
14
|
+
};
|
|
15
|
+
}, ValidationError, never>;
|
|
16
|
+
export declare const buildDirect: (d: WebhookDraft) => Effect.Effect<WebhookSchema, ValidationError, never>;
|
|
17
|
+
export declare const addEmbedDirect: (embed: Schema.Schema.Type<typeof EmbedSchema>) => (d: WebhookDraft) => Effect.Effect<{
|
|
18
|
+
embeds: readonly EmbedSchema[];
|
|
19
|
+
username?: string;
|
|
20
|
+
avatar_url?: string;
|
|
21
|
+
tts?: boolean;
|
|
22
|
+
content?: string;
|
|
23
|
+
file?: string | import("..").Attachment | {
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly data: string | Uint8Array<ArrayBuffer>;
|
|
26
|
+
};
|
|
27
|
+
}, ValidationError, never>;
|
|
28
|
+
export declare const validate: (input: unknown) => Effect.Effect<WebhookSchema, ValidationError, never>;
|
|
29
|
+
export declare const modifyParams: (p: Schema.Schema.Type<typeof WebhookParameter>) => Effect.Effect<WebhookParameter, ValidationError, never>;
|
|
30
|
+
export declare const make: Effect.Effect<WebhookDraft, never>;
|
|
31
|
+
export declare const setUsername: (username: string) => (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<Partial<WebhookSchema>, ValidationError, never>;
|
|
32
|
+
export declare const setAvatarUrl: (url: string) => (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<Partial<WebhookSchema>, ValidationError, never>;
|
|
33
|
+
export declare const setContent: (content: string) => (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<Partial<WebhookSchema>, ValidationError, never>;
|
|
34
|
+
export declare const setTTS: (tts: boolean) => (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<Partial<WebhookSchema>, ValidationError, never>;
|
|
35
|
+
export declare const addEmbed: (embed: Schema.Schema.Type<typeof EmbedSchema>) => (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<Partial<WebhookSchema>, ValidationError, never>;
|
|
36
|
+
export declare const setFile: (file: Schema.Schema.Type<typeof WebhookFile>) => (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<Partial<WebhookSchema>, ValidationError, never>;
|
|
37
|
+
export declare const build: (self: Effect.Effect<WebhookDraft, ValidationError>) => Effect.Effect<WebhookSchema, ValidationError, never>;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Effect, pipe, Schema } from "effect";
|
|
2
|
+
import { ValidationError } from "../errors";
|
|
3
|
+
import { EmbedArray, maxLength, UrlString, WebhookParameter, Webhook as WebhookSchema, } from "../schemas";
|
|
4
|
+
import { stripUndefined } from "../utils/normalize";
|
|
5
|
+
const createDraft = () => ({});
|
|
6
|
+
const setUsernameImpl = (username) => (d) => pipe(Schema.decodeUnknownEffect(maxLength(80))(username), Effect.mapError(() => ValidationError.fromIssue("username", "Username must be 80 characters or less", {
|
|
7
|
+
constraint: "MaxLength",
|
|
8
|
+
expected: "80 characters or less",
|
|
9
|
+
actual: username.length,
|
|
10
|
+
})), Effect.as({ ...d, username }));
|
|
11
|
+
const setAvatarUrlImpl = (avatar_url) => (d) => pipe(Schema.decodeUnknownEffect(UrlString)(avatar_url), Effect.mapError(() => ValidationError.fromIssue("avatar_url", "Invalid avatar URL", {
|
|
12
|
+
constraint: "URL",
|
|
13
|
+
expected: "valid URL",
|
|
14
|
+
actual: avatar_url,
|
|
15
|
+
})), Effect.as({ ...d, avatar_url }));
|
|
16
|
+
const setContentImpl = (content) => (d) => pipe(Schema.decodeUnknownEffect(maxLength(2000))(content), Effect.mapError(() => ValidationError.fromIssue("content", "Content must be 2000 characters or less", {
|
|
17
|
+
constraint: "MaxLength",
|
|
18
|
+
expected: "2000 characters or less",
|
|
19
|
+
actual: content.length,
|
|
20
|
+
})), Effect.as({ ...d, content }));
|
|
21
|
+
const setTTSImpl = (tts) => (d) => Effect.succeed({ ...d, tts });
|
|
22
|
+
export const addEmbedImpl = (embed) => (d) => {
|
|
23
|
+
const current = d.embeds || [];
|
|
24
|
+
const next = [...current, embed];
|
|
25
|
+
return pipe(Schema.decodeUnknownEffect(EmbedArray)(stripUndefined(next)), Effect.mapError(() => ValidationError.fromIssue("embeds", "Cannot have more than 10 embeds", {
|
|
26
|
+
constraint: "MaxItems",
|
|
27
|
+
expected: "10 embeds or less",
|
|
28
|
+
actual: next.length,
|
|
29
|
+
})), Effect.map((decoded) => ({ ...d, embeds: decoded })));
|
|
30
|
+
};
|
|
31
|
+
const setFileImpl = (file) => (d) => Effect.succeed({ ...d, file });
|
|
32
|
+
const buildImpl = (d) => pipe(Schema.decodeUnknownEffect(WebhookSchema)(stripUndefined(d)), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "webhook", value: d })));
|
|
33
|
+
export const buildDirect = buildImpl;
|
|
34
|
+
export const addEmbedDirect = addEmbedImpl;
|
|
35
|
+
export const validate = (input) => pipe(Schema.decodeUnknownEffect(WebhookSchema)(stripUndefined(input)), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "webhook", value: input })));
|
|
36
|
+
export const modifyParams = (p) => pipe(Schema.decodeUnknownEffect(WebhookParameter)(stripUndefined(p)), Effect.mapError((e) => ValidationError.fromParseError(e, { field: "params", value: p })));
|
|
37
|
+
export const make = Effect.succeed(createDraft());
|
|
38
|
+
const chain = (f) => (self) => pipe(self, Effect.flatMap(f));
|
|
39
|
+
export const setUsername = (username) => chain(setUsernameImpl(username));
|
|
40
|
+
export const setAvatarUrl = (url) => chain(setAvatarUrlImpl(url));
|
|
41
|
+
export const setContent = (content) => chain(setContentImpl(content));
|
|
42
|
+
export const setTTS = (tts) => chain(setTTSImpl(tts));
|
|
43
|
+
export const addEmbed = (embed) => chain(addEmbedImpl(embed));
|
|
44
|
+
export const setFile = (file) => chain(setFileImpl(file));
|
|
45
|
+
export const build = (self) => pipe(self, Effect.flatMap(buildImpl));
|
|
46
|
+
//# sourceMappingURL=Webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Webhook.js","sourceRoot":"","sources":["../../src/pipes/Webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
/**
|
|
3
|
+
* Common schema definitions and constraints
|
|
4
|
+
*/
|
|
5
|
+
export declare const maxLength: (max: number) => Schema.String;
|
|
6
|
+
export declare const positiveInt: Schema.Number;
|
|
7
|
+
export declare const UrlString: Schema.String;
|
|
8
|
+
export declare const ISO8601Timestamp: Schema.String;
|
|
9
|
+
export declare const ColorCode: Schema.Number;
|
|
10
|
+
export declare const Uint8ArraySchema: Schema.instanceOf<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
|