actly 1.1.5 → 1.2.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/README.md +232 -434
- package/dist/core/act.cjs +353 -35
- package/dist/core/act.d.ts.map +1 -1
- package/dist/core/act.js +355 -37
- package/dist/core/act.js.map +1 -1
- package/dist/core/executor.cjs +2 -0
- package/dist/core/executor.d.ts +6 -1
- package/dist/core/executor.d.ts.map +1 -1
- package/dist/core/executor.js +2 -0
- package/dist/core/executor.js.map +1 -1
- package/dist/core/health.cjs +34 -0
- package/dist/core/health.d.ts +18 -0
- package/dist/core/health.d.ts.map +1 -0
- package/dist/core/health.js +28 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/shutdown.cjs +60 -0
- package/dist/core/shutdown.d.ts +8 -0
- package/dist/core/shutdown.d.ts.map +1 -0
- package/dist/core/shutdown.js +56 -0
- package/dist/core/shutdown.js.map +1 -0
- package/dist/core/tenant.cjs +71 -0
- package/dist/core/tenant.d.ts +29 -0
- package/dist/core/tenant.d.ts.map +1 -0
- package/dist/core/tenant.js +68 -0
- package/dist/core/tenant.js.map +1 -0
- package/dist/errors.cjs +182 -0
- package/dist/errors.d.ts +151 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +171 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.cjs +44 -4
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/observability.cjs +45 -0
- package/dist/observability.d.ts +145 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +43 -0
- package/dist/observability.js.map +1 -0
- package/dist/policies/bulkhead.cjs +97 -0
- package/dist/policies/bulkhead.d.ts +3 -0
- package/dist/policies/bulkhead.d.ts.map +1 -0
- package/dist/policies/bulkhead.js +95 -0
- package/dist/policies/bulkhead.js.map +1 -0
- package/dist/policies/cache.cjs +168 -31
- package/dist/policies/cache.d.ts +17 -4
- package/dist/policies/cache.d.ts.map +1 -1
- package/dist/policies/cache.js +168 -31
- package/dist/policies/cache.js.map +1 -1
- package/dist/policies/circuitBreaker.cjs +85 -0
- package/dist/policies/circuitBreaker.d.ts +3 -0
- package/dist/policies/circuitBreaker.d.ts.map +1 -0
- package/dist/policies/circuitBreaker.js +83 -0
- package/dist/policies/circuitBreaker.js.map +1 -0
- package/dist/policies/dedupe.cjs +74 -45
- package/dist/policies/dedupe.d.ts +10 -28
- package/dist/policies/dedupe.d.ts.map +1 -1
- package/dist/policies/dedupe.js +74 -45
- package/dist/policies/dedupe.js.map +1 -1
- package/dist/policies/rateLimit.cjs +35 -0
- package/dist/policies/rateLimit.d.ts +3 -0
- package/dist/policies/rateLimit.d.ts.map +1 -0
- package/dist/policies/rateLimit.js +33 -0
- package/dist/policies/rateLimit.js.map +1 -0
- package/dist/policies/retry.cjs +45 -8
- package/dist/policies/retry.d.ts.map +1 -1
- package/dist/policies/retry.js +45 -8
- package/dist/policies/retry.js.map +1 -1
- package/dist/policies/timeout.cjs +25 -53
- package/dist/policies/timeout.d.ts +2 -33
- package/dist/policies/timeout.d.ts.map +1 -1
- package/dist/policies/timeout.js +31 -48
- package/dist/policies/timeout.js.map +1 -1
- package/dist/state/store.cjs +3 -3
- package/dist/state/store.d.ts +3 -3
- package/dist/state/store.js +3 -3
- package/dist/stores/memory.cjs +126 -53
- package/dist/stores/memory.d.ts +35 -16
- package/dist/stores/memory.d.ts.map +1 -1
- package/dist/stores/memory.js +125 -53
- package/dist/stores/memory.js.map +1 -1
- package/dist/types/index.d.ts +176 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/abort.cjs +108 -38
- package/dist/utils/abort.d.ts +43 -19
- package/dist/utils/abort.d.ts.map +1 -1
- package/dist/utils/abort.js +108 -38
- package/dist/utils/abort.js.map +1 -1
- package/dist/utils/abortPool.cjs +26 -0
- package/dist/utils/abortPool.d.ts +4 -0
- package/dist/utils/abortPool.d.ts.map +1 -0
- package/dist/utils/abortPool.js +22 -0
- package/dist/utils/abortPool.js.map +1 -0
- package/dist/utils/backoff.cjs +12 -1
- package/dist/utils/backoff.d.ts.map +1 -1
- package/dist/utils/backoff.js +12 -1
- package/dist/utils/backoff.js.map +1 -1
- package/dist/utils/key.cjs +77 -0
- package/dist/utils/key.d.ts +29 -0
- package/dist/utils/key.d.ts.map +1 -0
- package/dist/utils/key.js +75 -0
- package/dist/utils/key.js.map +1 -0
- package/dist/utils/limits.cjs +40 -0
- package/dist/utils/limits.d.ts +39 -0
- package/dist/utils/limits.d.ts.map +1 -0
- package/dist/utils/limits.js +38 -0
- package/dist/utils/limits.js.map +1 -0
- package/dist/utils/sanitize.cjs +29 -0
- package/dist/utils/sanitize.d.ts +3 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +26 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/validate.cjs +90 -16
- package/dist/utils/validate.d.ts +11 -0
- package/dist/utils/validate.d.ts.map +1 -1
- package/dist/utils/validate.js +85 -16
- package/dist/utils/validate.js.map +1 -1
- package/package.json +6 -5
package/dist/utils/validate.js
CHANGED
|
@@ -1,33 +1,44 @@
|
|
|
1
|
+
import { LIMITS } from './limits.js';
|
|
2
|
+
import { sanitizeKey } from './key.js';
|
|
1
3
|
/**
|
|
2
4
|
* Validate user-facing option shapes. Throws `RangeError` / `TypeError` on
|
|
3
5
|
* invalid input — these are programmer errors, not runtime failures, so
|
|
4
6
|
* throwing (rather than returning an `ActFailure`) is the right call.
|
|
5
7
|
*
|
|
6
8
|
* Called once at the top of `act()` so policies can assume well-formed input.
|
|
9
|
+
*
|
|
10
|
+
* # Caps
|
|
11
|
+
*
|
|
12
|
+
* Every numeric input is bounded by {@link LIMITS}. This prevents memory
|
|
13
|
+
* exhaustion (huge TTLs), CPU exhaustion (huge retry counts), and timer
|
|
14
|
+
* overflow (huge delays). See `limits.ts` for rationale.
|
|
7
15
|
*/
|
|
8
16
|
export function assertKey(key) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (key.length === 0) {
|
|
13
|
-
throw new RangeError("Actly: key must be non-empty. An empty key collapses every caller " +
|
|
14
|
-
"onto the same dedupe/cache slot — almost certainly a bug.");
|
|
15
|
-
}
|
|
16
|
-
// Reject reserved internal prefixes so user keys cannot collide with
|
|
17
|
-
// dedupe/cache namespace prefixes.
|
|
18
|
-
if (key.startsWith('dedupe:') || key.startsWith('cache:') || key.startsWith('__inflight:')) {
|
|
19
|
-
throw new RangeError(`Actly: key must not start with reserved prefix "dedupe:", "cache:", or "__inflight:" (got ${JSON.stringify(key)}).`);
|
|
20
|
-
}
|
|
17
|
+
// Delegated to the dedicated sanitiser — keeps key rules in one place
|
|
18
|
+
// for security centralisation. See `key.ts` for the full rule set.
|
|
19
|
+
sanitizeKey(key);
|
|
21
20
|
}
|
|
22
21
|
export function assertRetryOptions(opts) {
|
|
23
22
|
if (!Number.isInteger(opts.attempts) || opts.attempts < 1) {
|
|
24
23
|
throw new RangeError(`Actly: retry.attempts must be a positive integer, got ${opts.attempts}`);
|
|
25
24
|
}
|
|
25
|
+
if (opts.attempts > LIMITS.MAX_RETRY_ATTEMPTS) {
|
|
26
|
+
throw new RangeError(`Actly: retry.attempts ${opts.attempts} exceeds limit ${LIMITS.MAX_RETRY_ATTEMPTS}. ` +
|
|
27
|
+
`If you genuinely need more, use an outer supervisor.`);
|
|
28
|
+
}
|
|
26
29
|
if (opts.delayMs !== undefined) {
|
|
27
|
-
assertNonNegativeFinite('retry.delayMs', opts.delayMs);
|
|
30
|
+
assertNonNegativeFinite('retry.delayMs', opts.delayMs, LIMITS.MAX_RETRY_DELAY_MS);
|
|
28
31
|
}
|
|
29
32
|
if (opts.maxDelay !== undefined) {
|
|
30
|
-
assertNonNegativeFinite('retry.maxDelay', opts.maxDelay);
|
|
33
|
+
assertNonNegativeFinite('retry.maxDelay', opts.maxDelay, LIMITS.MAX_RETRY_DELAY_MS);
|
|
34
|
+
}
|
|
35
|
+
if (opts.backoff !== undefined && !BACKOFF_MODES.has(opts.backoff)) {
|
|
36
|
+
throw new RangeError(`Actly: retry.backoff must be one of ${[...BACKOFF_MODES].map((m) => JSON.stringify(m)).join(' | ')}, ` +
|
|
37
|
+
`got ${JSON.stringify(opts.backoff)}`);
|
|
38
|
+
}
|
|
39
|
+
if (opts.jitter !== undefined && !JITTER_MODES.has(opts.jitter)) {
|
|
40
|
+
throw new RangeError(`Actly: retry.jitter must be one of ${[...JITTER_MODES].map((m) => JSON.stringify(m)).join(' | ')}, ` +
|
|
41
|
+
`got ${JSON.stringify(opts.jitter)}`);
|
|
31
42
|
}
|
|
32
43
|
if (opts.shouldRetry !== undefined && typeof opts.shouldRetry !== 'function') {
|
|
33
44
|
throw new TypeError(`Actly: retry.shouldRetry must be a function, got ${typeof opts.shouldRetry}`);
|
|
@@ -37,15 +48,21 @@ export function assertTimeoutOptions(opts, field) {
|
|
|
37
48
|
if (typeof opts.ms !== 'number' || !Number.isFinite(opts.ms) || opts.ms <= 0) {
|
|
38
49
|
throw new RangeError(`Actly: ${field}.ms must be a positive finite number, got ${opts.ms}`);
|
|
39
50
|
}
|
|
51
|
+
if (opts.ms > LIMITS.MAX_TIMEOUT_MS) {
|
|
52
|
+
throw new RangeError(`Actly: ${field}.ms ${opts.ms} exceeds limit ${LIMITS.MAX_TIMEOUT_MS}.`);
|
|
53
|
+
}
|
|
40
54
|
}
|
|
41
55
|
export function assertCacheOptions(opts) {
|
|
42
56
|
if (typeof opts.ttl !== 'number' || !Number.isFinite(opts.ttl) || opts.ttl <= 0) {
|
|
43
57
|
throw new RangeError(`Actly: cache.ttl must be a positive finite number, got ${opts.ttl}`);
|
|
44
58
|
}
|
|
59
|
+
if (opts.ttl > LIMITS.MAX_CACHE_TTL) {
|
|
60
|
+
throw new RangeError(`Actly: cache.ttl ${opts.ttl} exceeds limit ${LIMITS.MAX_CACHE_TTL} (~24h).`);
|
|
61
|
+
}
|
|
45
62
|
}
|
|
46
63
|
export function assertDedupeOptions(opts) {
|
|
47
64
|
if (opts.inflightTtl !== undefined) {
|
|
48
|
-
assertNonNegativeFinite('dedupe.inflightTtl', opts.inflightTtl);
|
|
65
|
+
assertNonNegativeFinite('dedupe.inflightTtl', opts.inflightTtl, LIMITS.MAX_INFLIGHT_TTL);
|
|
49
66
|
}
|
|
50
67
|
}
|
|
51
68
|
export function assertOptions(options) {
|
|
@@ -63,10 +80,62 @@ export function assertOptions(options) {
|
|
|
63
80
|
if (options.signal !== undefined && !(options.signal instanceof AbortSignal)) {
|
|
64
81
|
throw new TypeError(`Actly: signal must be an AbortSignal, got ${options.signal === null ? 'null' : typeof options.signal}`);
|
|
65
82
|
}
|
|
83
|
+
if (options.circuitBreaker)
|
|
84
|
+
assertCircuitBreakerOptions(options.circuitBreaker);
|
|
85
|
+
if (options.bulkhead)
|
|
86
|
+
assertBulkheadOptions(options.bulkhead);
|
|
87
|
+
if (options.rateLimit)
|
|
88
|
+
assertRateLimitOptions(options.rateLimit);
|
|
89
|
+
if (options.hedge)
|
|
90
|
+
assertHedgeOptions(options.hedge);
|
|
91
|
+
if (options.audit)
|
|
92
|
+
assertAuditOptions(options.audit);
|
|
66
93
|
}
|
|
67
|
-
function
|
|
94
|
+
export function assertAuditOptions(opts) {
|
|
95
|
+
if (typeof opts.log !== 'function') {
|
|
96
|
+
throw new TypeError(`Actly: audit.log must be a function, got ${opts.log === null ? 'null' : typeof opts.log}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export function assertCircuitBreakerOptions(opts) {
|
|
100
|
+
if (!Number.isInteger(opts.threshold) || opts.threshold < 1) {
|
|
101
|
+
throw new RangeError(`Actly: circuitBreaker.threshold must be a positive integer, got ${opts.threshold}`);
|
|
102
|
+
}
|
|
103
|
+
if (typeof opts.cooldownMs !== 'number' || !Number.isFinite(opts.cooldownMs) || opts.cooldownMs <= 0) {
|
|
104
|
+
throw new RangeError(`Actly: circuitBreaker.cooldownMs must be a positive finite number, got ${opts.cooldownMs}`);
|
|
105
|
+
}
|
|
106
|
+
if (opts.resetTimeoutMs !== undefined) {
|
|
107
|
+
assertNonNegativeFinite('circuitBreaker.resetTimeoutMs', opts.resetTimeoutMs, Number.POSITIVE_INFINITY);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export function assertBulkheadOptions(opts) {
|
|
111
|
+
if (!Number.isInteger(opts.maxConcurrent) || opts.maxConcurrent < 1) {
|
|
112
|
+
throw new RangeError(`Actly: bulkhead.maxConcurrent must be a positive integer, got ${opts.maxConcurrent}`);
|
|
113
|
+
}
|
|
114
|
+
if (opts.queueTimeoutMs !== undefined) {
|
|
115
|
+
assertNonNegativeFinite('bulkhead.queueTimeoutMs', opts.queueTimeoutMs, Number.POSITIVE_INFINITY);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export function assertRateLimitOptions(opts) {
|
|
119
|
+
if (!Number.isInteger(opts.maxCalls) || opts.maxCalls < 1) {
|
|
120
|
+
throw new RangeError(`Actly: rateLimit.maxCalls must be a positive integer, got ${opts.maxCalls}`);
|
|
121
|
+
}
|
|
122
|
+
if (typeof opts.windowMs !== 'number' || !Number.isFinite(opts.windowMs) || opts.windowMs <= 0) {
|
|
123
|
+
throw new RangeError(`Actly: rateLimit.windowMs must be a positive finite number, got ${opts.windowMs}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export function assertHedgeOptions(opts) {
|
|
127
|
+
if (typeof opts.delayMs !== 'number' || !Number.isFinite(opts.delayMs) || opts.delayMs <= 0) {
|
|
128
|
+
throw new RangeError(`Actly: hedge.delayMs must be a positive finite number, got ${opts.delayMs}`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function assertNonNegativeFinite(field, value, max) {
|
|
68
132
|
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
|
|
69
133
|
throw new RangeError(`Actly: ${field} must be a non-negative finite number, got ${value}`);
|
|
70
134
|
}
|
|
135
|
+
if (value > max) {
|
|
136
|
+
throw new RangeError(`Actly: ${field} ${value} exceeds limit ${max}.`);
|
|
137
|
+
}
|
|
71
138
|
}
|
|
139
|
+
const BACKOFF_MODES = new Set(['none', 'linear', 'exponential']);
|
|
140
|
+
const JITTER_MODES = new Set(['none', 'full', 'equal', 'decorrelated']);
|
|
72
141
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "actly",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "A reliability
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "A typed reliability kernel for async execution.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"reliability",
|
|
7
7
|
"retry",
|
|
@@ -33,17 +33,18 @@
|
|
|
33
33
|
"LICENSE"
|
|
34
34
|
],
|
|
35
35
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
36
|
+
"node": ">=20"
|
|
37
37
|
},
|
|
38
38
|
"sideEffects": false,
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "tsc --project tsconfig.build.json && tsc --project tsconfig.cjs.json && node scripts/postbuild.mjs",
|
|
41
41
|
"typecheck": "tsc --noEmit",
|
|
42
42
|
"test": "vitest run",
|
|
43
|
-
"test:watch": "vitest"
|
|
43
|
+
"test:watch": "vitest",
|
|
44
|
+
"bench": "node bench/index.mjs"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@types/node": "^
|
|
47
|
+
"@types/node": "^20.11.0",
|
|
47
48
|
"typescript": "^5.4.0",
|
|
48
49
|
"vitest": "^1.6.0"
|
|
49
50
|
}
|