@vereda/http 1.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/LICENSE +21 -0
- package/README.md +604 -0
- package/dist/adapters/zod.d.ts +14 -0
- package/dist/adapters/zod.d.ts.map +1 -0
- package/dist/adapters/zod.js +14 -0
- package/dist/adapters/zod.js.map +1 -0
- package/dist/core/backoff.d.ts +9 -0
- package/dist/core/backoff.d.ts.map +1 -0
- package/dist/core/backoff.js +23 -0
- package/dist/core/backoff.js.map +1 -0
- package/dist/core/client.d.ts +98 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +781 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/errors.d.ts +87 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +140 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +10 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/listeners.d.ts +14 -0
- package/dist/core/listeners.d.ts.map +1 -0
- package/dist/core/listeners.js +27 -0
- package/dist/core/listeners.js.map +1 -0
- package/dist/core/metrics.d.ts +33 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +24 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/nanoid.d.ts +2 -0
- package/dist/core/nanoid.d.ts.map +1 -0
- package/dist/core/nanoid.js +11 -0
- package/dist/core/nanoid.js.map +1 -0
- package/dist/core/redact.d.ts +12 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +42 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/types.d.ts +261 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +41 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validate.d.ts +19 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +135 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/middleware/index.d.ts +26 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +55 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/queue/bulkhead.d.ts +63 -0
- package/dist/queue/bulkhead.d.ts.map +1 -0
- package/dist/queue/bulkhead.js +192 -0
- package/dist/queue/bulkhead.js.map +1 -0
- package/dist/queue/circuit-breaker.d.ts +81 -0
- package/dist/queue/circuit-breaker.d.ts.map +1 -0
- package/dist/queue/circuit-breaker.js +283 -0
- package/dist/queue/circuit-breaker.js.map +1 -0
- package/dist/queue/executor.d.ts +67 -0
- package/dist/queue/executor.d.ts.map +1 -0
- package/dist/queue/executor.js +273 -0
- package/dist/queue/executor.js.map +1 -0
- package/dist/queue/policy.d.ts +26 -0
- package/dist/queue/policy.d.ts.map +1 -0
- package/dist/queue/policy.js +37 -0
- package/dist/queue/policy.js.map +1 -0
- package/dist/queue/retry.d.ts +58 -0
- package/dist/queue/retry.d.ts.map +1 -0
- package/dist/queue/retry.js +259 -0
- package/dist/queue/retry.js.map +1 -0
- package/dist/queue/semaphore.d.ts +32 -0
- package/dist/queue/semaphore.d.ts.map +1 -0
- package/dist/queue/semaphore.js +83 -0
- package/dist/queue/semaphore.js.map +1 -0
- package/dist/ticket/ticket.d.ts +77 -0
- package/dist/ticket/ticket.d.ts.map +1 -0
- package/dist/ticket/ticket.js +186 -0
- package/dist/ticket/ticket.js.map +1 -0
- package/package.json +85 -0
- package/src/adapters/zod.ts +16 -0
- package/src/core/backoff.ts +26 -0
- package/src/core/client.ts +1048 -0
- package/src/core/errors.ts +194 -0
- package/src/core/index.ts +56 -0
- package/src/core/listeners.ts +28 -0
- package/src/core/metrics.ts +42 -0
- package/src/core/nanoid.ts +11 -0
- package/src/core/redact.ts +46 -0
- package/src/core/types.ts +306 -0
- package/src/core/validate.ts +163 -0
- package/src/middleware/index.ts +63 -0
- package/src/queue/bulkhead.ts +243 -0
- package/src/queue/circuit-breaker.ts +373 -0
- package/src/queue/executor.ts +355 -0
- package/src/queue/policy.ts +49 -0
- package/src/queue/retry.ts +380 -0
- package/src/queue/semaphore.ts +91 -0
- package/src/ticket/ticket.ts +246 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export type AppError = NetworkError | HttpError | RetryableStatusError | TimeoutError | DeadlineExceededError | ValidationError | CancelledError | QueueFullError | ConfigurationError | MaxRetriesExceededError | CircuitOpenError;
|
|
2
|
+
/**
|
|
3
|
+
* Base class for failures that prevent a request from
|
|
4
|
+
* producing a successful result.
|
|
5
|
+
*/
|
|
6
|
+
export declare class RequestError extends Error {
|
|
7
|
+
readonly kind: string;
|
|
8
|
+
cause?: unknown;
|
|
9
|
+
constructor(kind: string, message: string, cause?: unknown);
|
|
10
|
+
}
|
|
11
|
+
export declare class NetworkError extends RequestError {
|
|
12
|
+
readonly kind: "network";
|
|
13
|
+
constructor(message: string, options?: {
|
|
14
|
+
cause?: unknown;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export declare class HttpError extends RequestError {
|
|
18
|
+
readonly kind: "http";
|
|
19
|
+
readonly statusCode: number;
|
|
20
|
+
readonly response: Response;
|
|
21
|
+
constructor(message: string, statusCode: number, response: Response);
|
|
22
|
+
}
|
|
23
|
+
export declare class RetryableStatusError extends RequestError {
|
|
24
|
+
readonly kind: "retryable_status";
|
|
25
|
+
readonly statusCode: number;
|
|
26
|
+
readonly response: Response;
|
|
27
|
+
readonly retryAfterMs?: number;
|
|
28
|
+
constructor(message: string, statusCode: number, response: Response, retryAfterMs?: number);
|
|
29
|
+
}
|
|
30
|
+
/** Sentinel `timeoutMs` value reported on `TimeoutError` when no per-attempt
|
|
31
|
+
* timeout (`TimeoutConfig.attemptMs`) was configured. Callers that construct
|
|
32
|
+
* a `TimeoutError` for an unconfigured timeout should pass this instead of
|
|
33
|
+
* a bare `0` so there is one place this convention is spelled out. */
|
|
34
|
+
export declare const NO_TIMEOUT_CONFIGURED = 0;
|
|
35
|
+
export declare class TimeoutError extends RequestError {
|
|
36
|
+
readonly kind: "timeout";
|
|
37
|
+
readonly timeoutMs: number;
|
|
38
|
+
readonly url: string;
|
|
39
|
+
constructor(url: string, timeoutMs: number);
|
|
40
|
+
}
|
|
41
|
+
export declare class DeadlineExceededError extends RequestError {
|
|
42
|
+
readonly kind: "deadline";
|
|
43
|
+
readonly url: string;
|
|
44
|
+
readonly totalMs: number;
|
|
45
|
+
constructor(url: string, totalMs: number);
|
|
46
|
+
}
|
|
47
|
+
export declare class ValidationError extends RequestError {
|
|
48
|
+
readonly kind: "validation";
|
|
49
|
+
readonly issues: unknown[];
|
|
50
|
+
constructor(message: string, issues: unknown[], cause?: unknown);
|
|
51
|
+
}
|
|
52
|
+
export declare class CancelledError extends RequestError {
|
|
53
|
+
readonly kind: "cancelled";
|
|
54
|
+
constructor(message?: string);
|
|
55
|
+
}
|
|
56
|
+
export declare class QueueFullError extends RequestError {
|
|
57
|
+
readonly kind: "queue_full";
|
|
58
|
+
readonly partition: string;
|
|
59
|
+
readonly queueSize: number;
|
|
60
|
+
readonly maxQueueSize: number;
|
|
61
|
+
constructor(partition: string, queueSize: number, maxQueueSize: number);
|
|
62
|
+
}
|
|
63
|
+
export declare class ConfigurationError extends RequestError {
|
|
64
|
+
readonly kind: "configuration";
|
|
65
|
+
readonly key: string;
|
|
66
|
+
constructor(key: string, options?: {
|
|
67
|
+
cause?: unknown;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export declare class MaxRetriesExceededError extends RequestError {
|
|
71
|
+
readonly kind: "max_retries";
|
|
72
|
+
readonly attempts: number;
|
|
73
|
+
readonly lastError: AppError;
|
|
74
|
+
constructor(attempts: number, lastError: AppError);
|
|
75
|
+
}
|
|
76
|
+
export declare class CircuitOpenError extends RequestError {
|
|
77
|
+
readonly kind: "circuit_open";
|
|
78
|
+
readonly partition: string;
|
|
79
|
+
constructor(partition: string);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Narrows an unknown throw to one of this library's own error classes, so
|
|
83
|
+
* internal catch sites can preserve a pre-typed failure (e.g. a
|
|
84
|
+
* `QueueFullError` from the bulkhead) and wrap anything else.
|
|
85
|
+
*/
|
|
86
|
+
export declare function isAppError(err: unknown): err is AppError;
|
|
87
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for failures that prevent a request from
|
|
3
|
+
* producing a successful result.
|
|
4
|
+
*/
|
|
5
|
+
export class RequestError extends Error {
|
|
6
|
+
kind;
|
|
7
|
+
cause;
|
|
8
|
+
constructor(kind, message, cause) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = this.constructor.name;
|
|
11
|
+
this.kind = kind;
|
|
12
|
+
if (cause !== undefined) {
|
|
13
|
+
this.cause = cause;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class NetworkError extends RequestError {
|
|
18
|
+
constructor(message, options) {
|
|
19
|
+
super("network", message, options?.cause);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class HttpError extends RequestError {
|
|
23
|
+
statusCode;
|
|
24
|
+
response;
|
|
25
|
+
constructor(message, statusCode, response) {
|
|
26
|
+
super("http", message);
|
|
27
|
+
this.statusCode = statusCode;
|
|
28
|
+
this.response = response;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export class RetryableStatusError extends RequestError {
|
|
32
|
+
statusCode;
|
|
33
|
+
response;
|
|
34
|
+
retryAfterMs;
|
|
35
|
+
constructor(message, statusCode, response, retryAfterMs) {
|
|
36
|
+
super("retryable_status", message);
|
|
37
|
+
this.statusCode = statusCode;
|
|
38
|
+
this.response = response;
|
|
39
|
+
if (retryAfterMs !== undefined) {
|
|
40
|
+
this.retryAfterMs = retryAfterMs;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Sentinel `timeoutMs` value reported on `TimeoutError` when no per-attempt
|
|
45
|
+
* timeout (`TimeoutConfig.attemptMs`) was configured. Callers that construct
|
|
46
|
+
* a `TimeoutError` for an unconfigured timeout should pass this instead of
|
|
47
|
+
* a bare `0` so there is one place this convention is spelled out. */
|
|
48
|
+
export const NO_TIMEOUT_CONFIGURED = 0;
|
|
49
|
+
export class TimeoutError extends RequestError {
|
|
50
|
+
timeoutMs;
|
|
51
|
+
url;
|
|
52
|
+
constructor(url, timeoutMs) {
|
|
53
|
+
const message = timeoutMs > NO_TIMEOUT_CONFIGURED
|
|
54
|
+
? `Request to ${url} timed out after ${timeoutMs}ms`
|
|
55
|
+
: `Request to ${url} timed out (no timeout configured)`;
|
|
56
|
+
super("timeout", message);
|
|
57
|
+
this.timeoutMs = timeoutMs;
|
|
58
|
+
this.url = url;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export class DeadlineExceededError extends RequestError {
|
|
62
|
+
url;
|
|
63
|
+
totalMs;
|
|
64
|
+
constructor(url, totalMs) {
|
|
65
|
+
super("deadline", `Request to ${url} exceeded total deadline of ${totalMs}ms`);
|
|
66
|
+
this.url = url;
|
|
67
|
+
this.totalMs = totalMs;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export class ValidationError extends RequestError {
|
|
71
|
+
issues;
|
|
72
|
+
constructor(message, issues, cause) {
|
|
73
|
+
super("validation", message, cause);
|
|
74
|
+
this.issues = issues;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class CancelledError extends RequestError {
|
|
78
|
+
constructor(message = "Request was cancelled") {
|
|
79
|
+
super("cancelled", message);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export class QueueFullError extends RequestError {
|
|
83
|
+
partition;
|
|
84
|
+
queueSize;
|
|
85
|
+
maxQueueSize;
|
|
86
|
+
constructor(partition, queueSize, maxQueueSize) {
|
|
87
|
+
super("queue_full", `Queue for partition '${partition}' is full (${queueSize}/${maxQueueSize})`);
|
|
88
|
+
this.partition = partition;
|
|
89
|
+
this.queueSize = queueSize;
|
|
90
|
+
this.maxQueueSize = maxQueueSize;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export class ConfigurationError extends RequestError {
|
|
94
|
+
key;
|
|
95
|
+
constructor(key, options) {
|
|
96
|
+
super("configuration", `Invalid configuration: ${key}`, options?.cause);
|
|
97
|
+
this.key = key;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export class MaxRetriesExceededError extends RequestError {
|
|
101
|
+
attempts;
|
|
102
|
+
lastError;
|
|
103
|
+
constructor(attempts, lastError) {
|
|
104
|
+
super("max_retries", `Request failed after ${attempts} attempt${attempts === 1 ? "" : "s"}: ${lastError.message}`, lastError);
|
|
105
|
+
this.attempts = attempts;
|
|
106
|
+
this.lastError = lastError;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export class CircuitOpenError extends RequestError {
|
|
110
|
+
partition;
|
|
111
|
+
constructor(partition) {
|
|
112
|
+
super("circuit_open", `Circuit breaker is open for partition '${partition}'`);
|
|
113
|
+
this.partition = partition;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Narrows an unknown throw to one of this library's own error classes, so
|
|
118
|
+
* internal catch sites can preserve a pre-typed failure (e.g. a
|
|
119
|
+
* `QueueFullError` from the bulkhead) and wrap anything else.
|
|
120
|
+
*/
|
|
121
|
+
export function isAppError(err) {
|
|
122
|
+
// instanceof, not a `kind` lookup: a subclass of one of these still carries
|
|
123
|
+
// its fields (e.g. statusCode), whereas a bare RequestError with a matching
|
|
124
|
+
// kind string would not.
|
|
125
|
+
return APP_ERROR_CLASSES.some((cls) => err instanceof cls);
|
|
126
|
+
}
|
|
127
|
+
const APP_ERROR_CLASSES = [
|
|
128
|
+
NetworkError,
|
|
129
|
+
HttpError,
|
|
130
|
+
RetryableStatusError,
|
|
131
|
+
TimeoutError,
|
|
132
|
+
DeadlineExceededError,
|
|
133
|
+
ValidationError,
|
|
134
|
+
CancelledError,
|
|
135
|
+
QueueFullError,
|
|
136
|
+
ConfigurationError,
|
|
137
|
+
MaxRetriesExceededError,
|
|
138
|
+
CircuitOpenError,
|
|
139
|
+
];
|
|
140
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type { RetryPolicy, RetryPolicyContext } from "../queue/policy.ts";
|
|
2
|
+
export { defaultRetryPolicy } from "../queue/policy.ts";
|
|
3
|
+
export type { TicketStatus, TicketUpdate } from "../ticket/ticket.ts";
|
|
4
|
+
export { Ticket } from "../ticket/ticket.ts";
|
|
5
|
+
export { DEFAULT_BASE_DELAY_MS, DEFAULT_JITTER, DEFAULT_MAX_DELAY_MS } from "./backoff.ts";
|
|
6
|
+
export { HttpClient, json } from "./client.ts";
|
|
7
|
+
export type { AppError } from "./errors.ts";
|
|
8
|
+
export { CancelledError, CircuitOpenError, ConfigurationError, DeadlineExceededError, HttpError, MaxRetriesExceededError, NetworkError, NO_TIMEOUT_CONFIGURED, QueueFullError, RequestError, RetryableStatusError, TimeoutError, ValidationError, } from "./errors.ts";
|
|
9
|
+
export type { MetricsSink, MetricTags } from "./metrics.ts";
|
|
10
|
+
export { METRICS } from "./metrics.ts";
|
|
11
|
+
export { redactUrl } from "./redact.ts";
|
|
12
|
+
export type { BackoffFn, BackoffOptions, CircuitBreakerConfig, ClientConfig, ClientTimeoutConfig, CloseOptions, LifecycleEventMap, Logger, ParsedRequestOptions, ParseFn, PartitionConfig, RequestOptions, Result, RetryConfig, TimeoutConfig, UnparsedRequestOptions, } from "./types.ts";
|
|
13
|
+
export { DEFAULT_CONCURRENCY, DEFAULT_FAILURE_THRESHOLD, DEFAULT_GLOBAL_CONCURRENCY, DEFAULT_GLOBAL_QUEUE_SIZE, DEFAULT_HALF_OPEN_MAX_ATTEMPTS, DEFAULT_MAX_QUEUE_SIZE, DEFAULT_MAX_RETRIES, DEFAULT_RESET_TIMEOUT_MS, DEFAULT_RETRY_ON_STATUS, isBoundedMs, } from "./types.ts";
|
|
14
|
+
export { validateConfig } from "./validate.ts";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACX,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,MAAM,EACN,oBAAoB,EACpB,OAAO,EACP,eAAe,EACf,cAAc,EACd,MAAM,EACN,WAAW,EACX,aAAa,EACb,sBAAsB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { defaultRetryPolicy } from "../queue/policy.js";
|
|
2
|
+
export { Ticket } from "../ticket/ticket.js";
|
|
3
|
+
export { DEFAULT_BASE_DELAY_MS, DEFAULT_JITTER, DEFAULT_MAX_DELAY_MS } from "./backoff.js";
|
|
4
|
+
export { HttpClient, json } from "./client.js";
|
|
5
|
+
export { CancelledError, CircuitOpenError, ConfigurationError, DeadlineExceededError, HttpError, MaxRetriesExceededError, NetworkError, NO_TIMEOUT_CONFIGURED, QueueFullError, RequestError, RetryableStatusError, TimeoutError, ValidationError, } from "./errors.js";
|
|
6
|
+
export { METRICS } from "./metrics.js";
|
|
7
|
+
export { redactUrl } from "./redact.js";
|
|
8
|
+
export { DEFAULT_CONCURRENCY, DEFAULT_FAILURE_THRESHOLD, DEFAULT_GLOBAL_CONCURRENCY, DEFAULT_GLOBAL_QUEUE_SIZE, DEFAULT_HALF_OPEN_MAX_ATTEMPTS, DEFAULT_MAX_QUEUE_SIZE, DEFAULT_MAX_RETRIES, DEFAULT_RESET_TIMEOUT_MS, DEFAULT_RETRY_ON_STATUS, isBoundedMs, } from "./types.js";
|
|
9
|
+
export { validateConfig } from "./validate.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,uBAAuB,EACvB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,eAAe,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmBxC,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,WAAW,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { EventEmitter } from "node:events";
|
|
2
|
+
/** Surface an error thrown by user code (an event listener or a metrics sink)
|
|
3
|
+
* without letting it unwind through vereda's internals. It is rethrown on a
|
|
4
|
+
* fresh microtask, so it reaches `process.on("uncaughtException")` exactly
|
|
5
|
+
* like a throwing listener on any other emitter would — the same contract as
|
|
6
|
+
* `node:diagnostics_channel` subscribers. Swallowing it would hide the bug;
|
|
7
|
+
* letting it propagate synchronously would abort whatever state transition
|
|
8
|
+
* was in progress (a ticket that never resolves, B2; a success rewritten
|
|
9
|
+
* as a failure, B3). */
|
|
10
|
+
export declare function reportCallbackError(err: unknown): void;
|
|
11
|
+
/** `emitter.emit()` with per-listener isolation: every listener runs even if
|
|
12
|
+
* an earlier one throws, and no throw escapes to the caller. */
|
|
13
|
+
export declare function emitIsolated(emitter: EventEmitter, event: string, ...args: unknown[]): void;
|
|
14
|
+
//# sourceMappingURL=listeners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../../src/core/listeners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;yBAOyB;AACzB,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAItD;AAED;iEACiE;AACjE,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAS3F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Surface an error thrown by user code (an event listener or a metrics sink)
|
|
2
|
+
* without letting it unwind through vereda's internals. It is rethrown on a
|
|
3
|
+
* fresh microtask, so it reaches `process.on("uncaughtException")` exactly
|
|
4
|
+
* like a throwing listener on any other emitter would — the same contract as
|
|
5
|
+
* `node:diagnostics_channel` subscribers. Swallowing it would hide the bug;
|
|
6
|
+
* letting it propagate synchronously would abort whatever state transition
|
|
7
|
+
* was in progress (a ticket that never resolves, B2; a success rewritten
|
|
8
|
+
* as a failure, B3). */
|
|
9
|
+
export function reportCallbackError(err) {
|
|
10
|
+
queueMicrotask(() => {
|
|
11
|
+
throw err;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/** `emitter.emit()` with per-listener isolation: every listener runs even if
|
|
15
|
+
* an earlier one throws, and no throw escapes to the caller. */
|
|
16
|
+
export function emitIsolated(emitter, event, ...args) {
|
|
17
|
+
// rawListeners, not listeners: calling a `once` wrapper also unregisters it.
|
|
18
|
+
for (const listener of emitter.rawListeners(event)) {
|
|
19
|
+
try {
|
|
20
|
+
listener(...args);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
reportCallbackError(err);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=listeners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.js","sourceRoot":"","sources":["../../src/core/listeners.ts"],"names":[],"mappings":"AAEA;;;;;;;yBAOyB;AACzB,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC/C,cAAc,CAAC,GAAG,EAAE;QACnB,MAAM,GAAG,CAAC;IACX,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;iEACiE;AACjE,MAAM,UAAU,YAAY,CAAC,OAAqB,EAAE,KAAa,EAAE,GAAG,IAAe;IACpF,6EAA6E;IAC7E,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC;YACJ,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Tags attached to every metric emission. All values are strings so that
|
|
2
|
+
* callers can use whatever cardinality they need. */
|
|
3
|
+
export type MetricTags = Record<string, string>;
|
|
4
|
+
/** Pluggable sink for vereda metrics. Implement this interface to wire
|
|
5
|
+
* vereda into OpenTelemetry, Prometheus, Datadog, or any other metrics
|
|
6
|
+
* backend. The client calls these methods at well-defined lifecycle points;
|
|
7
|
+
* all calls are synchronous and non-blocking. */
|
|
8
|
+
export interface MetricsSink {
|
|
9
|
+
/** Monotonically increasing counter (e.g. total requests, total retries). */
|
|
10
|
+
counter(name: string, value: number, tags?: MetricTags): void;
|
|
11
|
+
/** Latency distribution (e.g. request duration in ms). */
|
|
12
|
+
histogram(name: string, value: number, tags?: MetricTags): void;
|
|
13
|
+
/** Point-in-time gauge (e.g. current in-flight requests, queue depth). */
|
|
14
|
+
gauge(name: string, value: number, tags?: MetricTags): void;
|
|
15
|
+
}
|
|
16
|
+
export declare const METRICS: {
|
|
17
|
+
/** Total requests initiated. Tags: partition, method. */
|
|
18
|
+
readonly REQUESTS: "vereda.requests";
|
|
19
|
+
/** Total retries executed. Tags: partition, kind. */
|
|
20
|
+
readonly RETRIES: "vereda.retries";
|
|
21
|
+
/** Request duration in ms (histogram). Tags: partition (omitted when the URL
|
|
22
|
+
* never resolved), kind. */
|
|
23
|
+
readonly DURATION: "vereda.duration_ms";
|
|
24
|
+
/** Current queue depth per partition. Tags: partition. */
|
|
25
|
+
readonly QUEUE_DEPTH: "vereda.queue_depth";
|
|
26
|
+
/** Current in-flight requests across all partitions. */
|
|
27
|
+
readonly IN_FLIGHT: "vereda.in_flight";
|
|
28
|
+
/** Callers currently waiting for a global concurrency permit (the D1 cap). */
|
|
29
|
+
readonly GLOBAL_QUEUE_DEPTH: "vereda.global_queue_depth";
|
|
30
|
+
/** Total circuit breaker trips to open. Tags: partition. */
|
|
31
|
+
readonly CIRCUIT_OPEN: "vereda.circuit_open";
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"AAIA;sDACsD;AACtD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD;;;kDAGkD;AAClD,MAAM,WAAW,WAAW;IAC3B,6EAA6E;IAC7E,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9D,0DAA0D;IAC1D,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAChE,0EAA0E;IAC1E,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC5D;AAMD,eAAO,MAAM,OAAO;IACnB,yDAAyD;;IAEzD,qDAAqD;;IAErD;iCAC6B;;IAE7B,0DAA0D;;IAE1D,wDAAwD;;IAExD,8EAA8E;;IAE9E,4DAA4D;;CAEnD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Metrics sink — pluggable observability (O2)
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Standard metric names
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
export const METRICS = {
|
|
8
|
+
/** Total requests initiated. Tags: partition, method. */
|
|
9
|
+
REQUESTS: "vereda.requests",
|
|
10
|
+
/** Total retries executed. Tags: partition, kind. */
|
|
11
|
+
RETRIES: "vereda.retries",
|
|
12
|
+
/** Request duration in ms (histogram). Tags: partition (omitted when the URL
|
|
13
|
+
* never resolved), kind. */
|
|
14
|
+
DURATION: "vereda.duration_ms",
|
|
15
|
+
/** Current queue depth per partition. Tags: partition. */
|
|
16
|
+
QUEUE_DEPTH: "vereda.queue_depth",
|
|
17
|
+
/** Current in-flight requests across all partitions. */
|
|
18
|
+
IN_FLIGHT: "vereda.in_flight",
|
|
19
|
+
/** Callers currently waiting for a global concurrency permit (the D1 cap). */
|
|
20
|
+
GLOBAL_QUEUE_DEPTH: "vereda.global_queue_depth",
|
|
21
|
+
/** Total circuit breaker trips to open. Tags: partition. */
|
|
22
|
+
CIRCUIT_OPEN: "vereda.circuit_open",
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAmB9E,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,OAAO,GAAG;IACtB,yDAAyD;IACzD,QAAQ,EAAE,iBAAiB;IAC3B,qDAAqD;IACrD,OAAO,EAAE,gBAAgB;IACzB;iCAC6B;IAC7B,QAAQ,EAAE,oBAAoB;IAC9B,0DAA0D;IAC1D,WAAW,EAAE,oBAAoB;IACjC,wDAAwD;IACxD,SAAS,EAAE,kBAAkB;IAC7B,8EAA8E;IAC9E,kBAAkB,EAAE,2BAA2B;IAC/C,4DAA4D;IAC5D,YAAY,EAAE,qBAAqB;CAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nanoid.d.ts","sourceRoot":"","sources":["../../src/core/nanoid.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,IAAI,SAAK,GAAG,MAAM,CAQxC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
export function nanoid(size = 21) {
|
|
3
|
+
const bytes = randomBytes(size);
|
|
4
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
|
|
5
|
+
let id = "";
|
|
6
|
+
for (let i = 0; i < size; i++) {
|
|
7
|
+
id += chars[bytes[i] & 63];
|
|
8
|
+
}
|
|
9
|
+
return id;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=nanoid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nanoid.js","sourceRoot":"","sources":["../../src/core/nanoid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,MAAM,CAAC,IAAI,GAAG,EAAE;IAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,kEAAkE,CAAC;IACjF,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redacts the secret-bearing parts of a URL for safe logging: userinfo
|
|
3
|
+
* credentials become `[redacted]@`, and each query parameter value becomes
|
|
4
|
+
* `[redacted]` while its key is preserved.
|
|
5
|
+
*
|
|
6
|
+
* Example: `https://bob:hunter2@api.example.com/auth?token=abc123&user=joe`
|
|
7
|
+
* → `https://[redacted]@api.example.com/auth?token=[redacted]&user=[redacted]`
|
|
8
|
+
*
|
|
9
|
+
* URLs with neither are returned unchanged.
|
|
10
|
+
*/
|
|
11
|
+
export declare function redactUrl(url: string): string;
|
|
12
|
+
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG7C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// URL redaction for safe logging
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
/** Userinfo in an absolute URL's authority: `scheme://user:pass@`. Greedy up
|
|
5
|
+
* to the last `@` before the path/query/fragment, as the URL spec parses it. */
|
|
6
|
+
const USERINFO = /^([a-zA-Z][a-zA-Z\d+.-]*:\/\/)[^/?#]*@/;
|
|
7
|
+
/**
|
|
8
|
+
* Redacts the secret-bearing parts of a URL for safe logging: userinfo
|
|
9
|
+
* credentials become `[redacted]@`, and each query parameter value becomes
|
|
10
|
+
* `[redacted]` while its key is preserved.
|
|
11
|
+
*
|
|
12
|
+
* Example: `https://bob:hunter2@api.example.com/auth?token=abc123&user=joe`
|
|
13
|
+
* → `https://[redacted]@api.example.com/auth?token=[redacted]&user=[redacted]`
|
|
14
|
+
*
|
|
15
|
+
* URLs with neither are returned unchanged.
|
|
16
|
+
*/
|
|
17
|
+
export function redactUrl(url) {
|
|
18
|
+
const withoutUserinfo = url.replace(USERINFO, "$1[redacted]@");
|
|
19
|
+
return redactQueryValues(withoutUserinfo);
|
|
20
|
+
}
|
|
21
|
+
function redactQueryValues(url) {
|
|
22
|
+
const qIdx = url.indexOf("?");
|
|
23
|
+
if (qIdx === -1)
|
|
24
|
+
return url;
|
|
25
|
+
const base = url.slice(0, qIdx);
|
|
26
|
+
const rest = url.slice(qIdx + 1);
|
|
27
|
+
// Separate fragment from query string (# is the fragment delimiter)
|
|
28
|
+
const fIdx = rest.indexOf("#");
|
|
29
|
+
const query = fIdx === -1 ? rest : rest.slice(0, fIdx);
|
|
30
|
+
const fragment = fIdx === -1 ? "" : rest.slice(fIdx);
|
|
31
|
+
const redacted = query
|
|
32
|
+
.split("&")
|
|
33
|
+
.map((pair) => {
|
|
34
|
+
const eqIdx = pair.indexOf("=");
|
|
35
|
+
if (eqIdx === -1)
|
|
36
|
+
return pair; // bare key, no value
|
|
37
|
+
return `${pair.slice(0, eqIdx + 1)}[redacted]`;
|
|
38
|
+
})
|
|
39
|
+
.join("&");
|
|
40
|
+
return `${base}?${redacted}${fragment}`;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/core/redact.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E;iFACiF;AACjF,MAAM,QAAQ,GAAG,wCAAwC,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACpC,MAAM,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC/D,OAAO,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACrC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAE5B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAEjC,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,KAAK;SACpB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,qBAAqB;QACpD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC;IAChD,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,OAAO,GAAG,IAAI,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;AACzC,CAAC"}
|