valkyries 0.8.1 → 0.8.2
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/clients.d.mts +3 -0
- package/dist/clients.d.mts.map +1 -1
- package/dist/clients.mjs +41 -4
- package/dist/clients.mjs.map +1 -1
- package/docs/dynamic-config.md +2 -0
- package/package.json +2 -2
package/dist/clients.d.mts
CHANGED
|
@@ -47,6 +47,9 @@ export declare function buildDynamicConfigSubscriptionClientConfig(url: string):
|
|
|
47
47
|
lazyConnect: boolean;
|
|
48
48
|
inflightRequestsLimit: number;
|
|
49
49
|
requestTimeout: number;
|
|
50
|
+
advancedConfiguration: {
|
|
51
|
+
connectionTimeout: number;
|
|
52
|
+
};
|
|
50
53
|
pubsubSubscriptions: {
|
|
51
54
|
channelsAndPatterns: {
|
|
52
55
|
1: Set<string>;
|
package/dist/clients.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.d.mts","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EAEX,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"clients.d.mts","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EAEX,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAQ9B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,eAAe,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAG5D,eAAO,MAAM,iBAAiB,aAE5B,CAAC;AACH,eAAO,MAAM,uBAAuB,aAElC,CAAC;AACH,eAAO,MAAM,yBAAyB,aAEpC,CAAC;AAIH,KAAK,oBAAoB,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;AAGrD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE9E;AAeD,wBAAgB,2CAA2C,IAAI,OAAO,CAAC,WAAW,CAAC,CAqClF;AAED,wBAAsB,0CAA0C,IAAI,OAAO,CAAC,IAAI,CAAC,CAShF;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAEjD;AAED,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,WAAW,CAAC,CA0BtB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;EA0B5E;AAED,wBAAgB,0CAA0C,CAAC,GAAG,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;EAWrE"}
|
package/dist/clients.mjs
CHANGED
|
@@ -3,6 +3,8 @@ import { ALL_PATTERNS, GlideClient, GlideClientConfiguration, } from "@valkey/va
|
|
|
3
3
|
import { config } from "./config.mjs";
|
|
4
4
|
import { handleValkeyError } from "./errors.mjs";
|
|
5
5
|
const CLIENT_CLOSE_SETTLE_MS = 100;
|
|
6
|
+
const SUBSCRIPTION_CONNECTION_TIMEOUT_MS = 2_000;
|
|
7
|
+
const SUBSCRIPTION_CREATION_TIMEOUT_MS = 5_000;
|
|
6
8
|
export const urlsToClients = new Map();
|
|
7
9
|
const urlsToClientPromises = new Map();
|
|
8
10
|
export const cacheValkeyClient = await upsertValkeyClientByUrl(config.cache_url, {
|
|
@@ -22,14 +24,48 @@ export function addPubSubMessageHandler(handler) {
|
|
|
22
24
|
export function removePubSubMessageHandler(handler) {
|
|
23
25
|
pubSubMessageHandlers.delete(handler);
|
|
24
26
|
}
|
|
27
|
+
function reportSubscriptionError(error) {
|
|
28
|
+
try {
|
|
29
|
+
handleValkeyError(error);
|
|
30
|
+
}
|
|
31
|
+
catch (cause) {
|
|
32
|
+
// Error reporting must not replace the native failure or reject an ignored observer.
|
|
33
|
+
process.emitWarning(new AggregateError([error, cause], "DynamicConfig subscription error handler threw", {
|
|
34
|
+
cause,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
25
38
|
export function ensureDynamicConfigValkeySubscriptionClient() {
|
|
26
39
|
if (dynamicConfigValkeySubscriptionClientPromise)
|
|
27
40
|
return dynamicConfigValkeySubscriptionClientPromise;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
41
|
+
let expired = false;
|
|
42
|
+
let timer;
|
|
43
|
+
const deadline = new Promise((_, reject) => {
|
|
44
|
+
timer = setTimeout(() => {
|
|
45
|
+
expired = true;
|
|
46
|
+
reject(new Error("DynamicConfig subscription client creation timed out after 5000 ms"));
|
|
47
|
+
}, SUBSCRIPTION_CREATION_TIMEOUT_MS);
|
|
48
|
+
});
|
|
49
|
+
const creation = Promise.resolve()
|
|
50
|
+
.then(() => GlideClient.createClient(buildDynamicConfigSubscriptionClientConfig(config.dynamic_config_url)))
|
|
51
|
+
.then((client) => {
|
|
52
|
+
if (expired)
|
|
53
|
+
client.close();
|
|
54
|
+
return client;
|
|
32
55
|
});
|
|
56
|
+
// Observe late native rejection/close failure after the deadline has already won.
|
|
57
|
+
creation.catch((error) => {
|
|
58
|
+
if (expired)
|
|
59
|
+
reportSubscriptionError(error);
|
|
60
|
+
});
|
|
61
|
+
const clientPromise = Promise.race([creation, deadline])
|
|
62
|
+
.catch((error) => {
|
|
63
|
+
if (dynamicConfigValkeySubscriptionClientPromise === clientPromise)
|
|
64
|
+
dynamicConfigValkeySubscriptionClientPromise = null;
|
|
65
|
+
reportSubscriptionError(error);
|
|
66
|
+
throw error;
|
|
67
|
+
})
|
|
68
|
+
.finally(() => clearTimeout(timer));
|
|
33
69
|
dynamicConfigValkeySubscriptionClientPromise = clientPromise;
|
|
34
70
|
return clientPromise;
|
|
35
71
|
}
|
|
@@ -106,6 +142,7 @@ export function glideConfigFromUrl(url, options) {
|
|
|
106
142
|
export function buildDynamicConfigSubscriptionClientConfig(url) {
|
|
107
143
|
return {
|
|
108
144
|
...glideConfigFromUrl(url, { readFrom: "preferReplica", lazyConnect: false }),
|
|
145
|
+
advancedConfiguration: { connectionTimeout: SUBSCRIPTION_CONNECTION_TIMEOUT_MS },
|
|
109
146
|
pubsubSubscriptions: {
|
|
110
147
|
channelsAndPatterns: {
|
|
111
148
|
[GlideClientConfiguration.PubSubChannelModes.Pattern]: new Set(["dynamic-config:*"]),
|
package/dist/clients.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.mjs","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,WAAW,EACX,wBAAwB,GAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,sBAAsB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"clients.mjs","sourceRoot":"","sources":["../clients.mts"],"names":[],"mappings":"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"}
|
package/docs/dynamic-config.md
CHANGED
|
@@ -77,6 +77,8 @@ config.waitForInitialization(): Promise<void>
|
|
|
77
77
|
|
|
78
78
|
Waits for field validation, default writes, initial field loading, pub/sub subscription, and timer creation.
|
|
79
79
|
|
|
80
|
+
The shared subscription client uses a 2-second native connection timeout and a 5-second creation deadline. If creation rejects or reaches that deadline, the cached attempt is cleared and callers receive the failure; a later explicit call can start a new attempt. A client that finishes creation after the deadline is closed rather than retained. This does not automatically retry initialization or cancel an unresolved native creation operation.
|
|
81
|
+
|
|
80
82
|
## `getFields()`
|
|
81
83
|
|
|
82
84
|
```ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valkyries",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Valkey utilities for caches, bloom filters, dynamic configuration, and rate limiting.",
|
|
5
5
|
"homepage": "https://github.com/jonathanong/valkyries#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@types/node": "^26.1.0",
|
|
71
71
|
"@vitest/coverage-v8": "^5.0.0",
|
|
72
72
|
"github-actionlint": "^1.7.12",
|
|
73
|
-
"oxfmt": "^0.
|
|
73
|
+
"oxfmt": "^0.70.0",
|
|
74
74
|
"oxlint": "^1.65.0",
|
|
75
75
|
"oxlint-tsgolint": "^7.0.2001",
|
|
76
76
|
"tsx": "^4.22.1",
|