@contextvm/sdk 0.1.48 → 0.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/dist/esm/core/constants.d.ts +3 -0
- package/dist/esm/core/constants.d.ts.map +1 -1
- package/dist/esm/core/constants.js +3 -0
- package/dist/esm/core/constants.js.map +1 -1
- package/dist/esm/core/utils/logger.d.ts +1 -1
- package/dist/esm/core/utils/logger.d.ts.map +1 -1
- package/dist/esm/core/utils/lru-cache.d.ts.map +1 -1
- package/dist/esm/core/utils/lru-cache.js +9 -1
- package/dist/esm/core/utils/lru-cache.js.map +1 -1
- package/dist/esm/core/utils/task-queue.d.ts +5 -0
- package/dist/esm/core/utils/task-queue.d.ts.map +1 -1
- package/dist/esm/core/utils/task-queue.js +11 -0
- package/dist/esm/core/utils/task-queue.js.map +1 -1
- package/dist/esm/core/utils/utils.d.ts +8 -0
- package/dist/esm/core/utils/utils.d.ts.map +1 -1
- package/dist/esm/core/utils/utils.js +23 -0
- package/dist/esm/core/utils/utils.js.map +1 -1
- package/dist/esm/relay/applesauce-relay-pool.d.ts +37 -4
- package/dist/esm/relay/applesauce-relay-pool.d.ts.map +1 -1
- package/dist/esm/relay/applesauce-relay-pool.js +165 -11
- package/dist/esm/relay/applesauce-relay-pool.js.map +1 -1
- package/dist/esm/transport/base-nostr-transport.d.ts +1 -1
- package/dist/esm/transport/base-nostr-transport.d.ts.map +1 -1
- package/dist/esm/transport/base-nostr-transport.js +8 -6
- package/dist/esm/transport/base-nostr-transport.js.map +1 -1
- package/dist/esm/transport/nostr-client/correlation-store.d.ts +60 -0
- package/dist/esm/transport/nostr-client/correlation-store.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/correlation-store.js +61 -0
- package/dist/esm/transport/nostr-client/correlation-store.js.map +1 -0
- package/dist/esm/transport/nostr-client/stateless-mode-handler.d.ts +24 -0
- package/dist/esm/transport/nostr-client/stateless-mode-handler.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/stateless-mode-handler.js +61 -0
- package/dist/esm/transport/nostr-client/stateless-mode-handler.js.map +1 -0
- package/dist/esm/transport/nostr-client-transport.d.ts +48 -24
- package/dist/esm/transport/nostr-client-transport.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client-transport.js +92 -131
- package/dist/esm/transport/nostr-client-transport.js.map +1 -1
- package/dist/esm/transport/nostr-server/announcement-manager.d.ts +116 -0
- package/dist/esm/transport/nostr-server/announcement-manager.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/announcement-manager.js +288 -0
- package/dist/esm/transport/nostr-server/announcement-manager.js.map +1 -0
- package/dist/esm/transport/nostr-server/authorization-policy.d.ts +74 -0
- package/dist/esm/transport/nostr-server/authorization-policy.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/authorization-policy.js +91 -0
- package/dist/esm/transport/nostr-server/authorization-policy.js.map +1 -0
- package/dist/esm/transport/nostr-server/correlation-store.d.ts +102 -0
- package/dist/esm/transport/nostr-server/correlation-store.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/correlation-store.js +167 -0
- package/dist/esm/transport/nostr-server/correlation-store.js.map +1 -0
- package/dist/esm/transport/nostr-server/session-store.d.ts +99 -0
- package/dist/esm/transport/nostr-server/session-store.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/session-store.js +123 -0
- package/dist/esm/transport/nostr-server/session-store.js.map +1 -0
- package/dist/esm/transport/nostr-server-transport.d.ts +18 -63
- package/dist/esm/transport/nostr-server-transport.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server-transport.js +135 -378
- package/dist/esm/transport/nostr-server-transport.js.map +1 -1
- package/package.json +11 -12
|
@@ -65,5 +65,8 @@ export declare const NOSTR_TAGS: {
|
|
|
65
65
|
*/
|
|
66
66
|
readonly SUPPORT_ENCRYPTION: "support_encryption";
|
|
67
67
|
};
|
|
68
|
+
export declare const DEFAULT_LRU_SIZE = 5000;
|
|
68
69
|
export declare const announcementMethods: AnnouncementMethods;
|
|
70
|
+
export declare const INITIALIZE_METHOD = "initialize";
|
|
71
|
+
export declare const NOTIFICATIONS_INITIALIZED_METHOD = "notifications/initialized";
|
|
69
72
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,UAAU;;IAErB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,eAAO,MAAM,mBAAmB,EAAE,mBAKxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,UAAU;;IAErB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,eAAO,MAAM,mBAAmB,EAAE,mBAKxB,CAAC;AAEX,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,gCAAgC,8BAA8B,CAAC"}
|
|
@@ -64,10 +64,13 @@ export const NOSTR_TAGS = {
|
|
|
64
64
|
*/
|
|
65
65
|
SUPPORT_ENCRYPTION: 'support_encryption',
|
|
66
66
|
};
|
|
67
|
+
export const DEFAULT_LRU_SIZE = 5000;
|
|
67
68
|
export const announcementMethods = {
|
|
68
69
|
tools: 'tools/list',
|
|
69
70
|
resources: 'resources/list',
|
|
70
71
|
resourceTemplates: 'resources/templates/list',
|
|
71
72
|
prompts: 'prompts/list',
|
|
72
73
|
};
|
|
74
|
+
export const INITIALIZE_METHOD = 'initialize';
|
|
75
|
+
export const NOTIFICATIONS_INITIALIZED_METHOD = 'notifications/initialized';
|
|
73
76
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,QAAQ,EAAE,GAAG;IACb;;OAEG;IACH,UAAU,EAAE,KAAK;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM;IACZ;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,KAAK,EAAE,OAAO;IACd;;OAEG;IACH,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,gBAAgB;IAC3B,iBAAiB,EAAE,0BAA0B;IAC7C,OAAO,EAAE,cAAc;CACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,QAAQ,EAAE,GAAG;IACb;;OAEG;IACH,UAAU,EAAE,KAAK;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM;IACZ;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,KAAK,EAAE,OAAO;IACd;;OAEG;IACH,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,gBAAgB;IAC3B,iBAAiB,EAAE,0BAA0B;IAC7C,OAAO,EAAE,cAAc;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAA2B,CAAC"}
|
|
@@ -19,7 +19,7 @@ export interface Logger {
|
|
|
19
19
|
export interface LoggerConfig {
|
|
20
20
|
/** Minimum log level to output */
|
|
21
21
|
level?: LogLevel;
|
|
22
|
-
/** Optional file path to write logs to. If not specified, logs go to stderr
|
|
22
|
+
/** Optional file path to write logs to. If not specified, logs go to stderr */
|
|
23
23
|
file?: string;
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4HD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAAiB,GACxB,MAAM,CAuCR;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC;IAInB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,KAAK,CAAwB;gBAG3B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,aAAA;IAGnD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAS/B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC;IAInB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,KAAK,CAAwB;gBAG3B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,aAAA;IAGnD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAS/B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAwBhC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAIxC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -31,7 +31,15 @@ export class LruCache {
|
|
|
31
31
|
const evictedValue = this.cache.get(firstKey);
|
|
32
32
|
this.cache.delete(firstKey);
|
|
33
33
|
if (evictedValue !== undefined && this.onEvict) {
|
|
34
|
-
|
|
34
|
+
try {
|
|
35
|
+
this.onEvict(firstKey, evictedValue);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error('Error in LruCache eviction callback', {
|
|
39
|
+
key: firstKey,
|
|
40
|
+
error: error instanceof Error ? error.message : String(error),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
35
43
|
}
|
|
36
44
|
}
|
|
37
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../../../src/core/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAQ;IAGnB,YACU,QAAgB,EAChB,OAAyC;QADzC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAkC;QAJ3C,UAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IAKlC,CAAC;IAEJ;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5B,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"lru-cache.js","sourceRoot":"","sources":["../../../../src/core/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAQ;IAGnB,YACU,QAAgB,EAChB,OAAyC;QADzC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAkC;QAJ3C,UAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IAKlC,CAAC;IAEJ;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW,EAAE,KAAQ;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5B,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC/C,IAAI,CAAC;wBACH,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;oBACvC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE;4BACnD,GAAG,EAAE,QAAQ;4BACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAC9D,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -6,6 +6,7 @@ export declare class TaskQueue {
|
|
|
6
6
|
private concurrency;
|
|
7
7
|
private running;
|
|
8
8
|
private queue;
|
|
9
|
+
private isShutdown;
|
|
9
10
|
/**
|
|
10
11
|
* Creates a new TaskQueue with the specified concurrency limit.
|
|
11
12
|
* @param concurrency - Maximum number of concurrent tasks (default: 5)
|
|
@@ -26,6 +27,10 @@ export declare class TaskQueue {
|
|
|
26
27
|
* @returns The number of running tasks
|
|
27
28
|
*/
|
|
28
29
|
getRunningCount(): number;
|
|
30
|
+
/**
|
|
31
|
+
* Shuts down the queue, clearing pending tasks and preventing new tasks from being added.
|
|
32
|
+
*/
|
|
33
|
+
shutdown(): void;
|
|
29
34
|
/**
|
|
30
35
|
* Processes the next task in the queue if concurrency limit allows.
|
|
31
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-queue.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/task-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"task-queue.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/task-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAS;IASR,OAAO,CAAC,WAAW;IAR/B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAS;IAE3B;;;OAGG;gBACiB,WAAW,GAAE,MAAU;IAE3C;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAQpC;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,OAAO,CAAC,WAAW;CAiBpB"}
|
|
@@ -11,12 +11,16 @@ export class TaskQueue {
|
|
|
11
11
|
this.concurrency = concurrency;
|
|
12
12
|
this.running = 0;
|
|
13
13
|
this.queue = [];
|
|
14
|
+
this.isShutdown = false;
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
17
|
* Adds a task to the queue. It will start immediately if the concurrency limit hasn't been reached.
|
|
17
18
|
* @param task - A function that returns a Promise
|
|
18
19
|
*/
|
|
19
20
|
add(task) {
|
|
21
|
+
if (this.isShutdown) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
20
24
|
this.queue.push(task);
|
|
21
25
|
this.processNext();
|
|
22
26
|
}
|
|
@@ -34,6 +38,13 @@ export class TaskQueue {
|
|
|
34
38
|
getRunningCount() {
|
|
35
39
|
return this.running;
|
|
36
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Shuts down the queue, clearing pending tasks and preventing new tasks from being added.
|
|
43
|
+
*/
|
|
44
|
+
shutdown() {
|
|
45
|
+
this.isShutdown = true;
|
|
46
|
+
this.queue = [];
|
|
47
|
+
}
|
|
37
48
|
/**
|
|
38
49
|
* Processes the next task in the queue if concurrency limit allows.
|
|
39
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../../../../src/core/utils/task-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,SAAS;
|
|
1
|
+
{"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../../../../src/core/utils/task-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,SAAS;IAKpB;;;OAGG;IACH,YAAoB,cAAsB,CAAC;QAAvB,gBAAW,GAAX,WAAW,CAAY;QARnC,YAAO,GAAG,CAAC,CAAC;QACZ,UAAK,GAA+B,EAAE,CAAC;QACvC,eAAU,GAAG,KAAK,CAAC;IAMmB,CAAC;IAE/C;;;OAGG;IACH,GAAG,CAAC,IAAyB;QAC3B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -19,4 +19,12 @@ export declare function validateMessage(message: unknown): JSONRPCMessage | null
|
|
|
19
19
|
* @param clientPubkey The client's Nostr public key to inject.
|
|
20
20
|
*/
|
|
21
21
|
export declare function injectClientPubkey(request: JSONRPCRequest, clientPubkey: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Wraps a Promise with a timeout.
|
|
24
|
+
* @param promise The promise to wrap.
|
|
25
|
+
* @param timeoutMs Timeout in milliseconds.
|
|
26
|
+
* @param errorMessage Error message for the timeout.
|
|
27
|
+
* @returns A promise that resolves or rejects with the original result/error, or rejects on timeout.
|
|
28
|
+
*/
|
|
29
|
+
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, errorMessage?: string): Promise<T>;
|
|
22
30
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,cAAc,EACf,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAMvE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,GACnB,IAAI,CAYN"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,cAAc,EACf,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAMvE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,MAAM,GACnB,IAAI,CAYN;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
|
|
@@ -38,4 +38,27 @@ export function injectClientPubkey(request, clientPubkey) {
|
|
|
38
38
|
request.params._meta.clientPubkey = clientPubkey;
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Wraps a Promise with a timeout.
|
|
43
|
+
* @param promise The promise to wrap.
|
|
44
|
+
* @param timeoutMs Timeout in milliseconds.
|
|
45
|
+
* @param errorMessage Error message for the timeout.
|
|
46
|
+
* @returns A promise that resolves or rejects with the original result/error, or rejects on timeout.
|
|
47
|
+
*/
|
|
48
|
+
export function withTimeout(promise, timeoutMs, errorMessage = 'Operation timed out') {
|
|
49
|
+
return new Promise((resolve, reject) => {
|
|
50
|
+
const timer = setTimeout(() => {
|
|
51
|
+
reject(new Error(errorMessage));
|
|
52
|
+
}, timeoutMs);
|
|
53
|
+
promise
|
|
54
|
+
.then((result) => {
|
|
55
|
+
clearTimeout(timer);
|
|
56
|
+
resolve(result);
|
|
57
|
+
})
|
|
58
|
+
.catch((error) => {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
reject(error);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
41
64
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,GAErB,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAClC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuB,EACvB,YAAoB;IAEpB,+BAA+B;IAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,YAAY,EAAE,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IACnD,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,GAErB,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAClC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuB,EACvB,YAAoB;IAEpB,+BAA+B;IAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,YAAY,EAAE,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,OAAmB,EACnB,SAAiB,EACjB,eAAuB,qBAAqB;IAE5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAClC,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,23 +1,43 @@
|
|
|
1
1
|
import type { NostrEvent, Filter } from 'nostr-tools';
|
|
2
2
|
import { RelayHandler } from '../core/interfaces.js';
|
|
3
|
+
/** Dummy filter that returns no results, used for liveness ping */
|
|
4
|
+
export declare const PING_FILTER: Filter;
|
|
5
|
+
/** Configuration options for ApplesauceRelayPool */
|
|
6
|
+
export interface ApplesauceRelayPoolOptions {
|
|
7
|
+
/** Ping frequency in ms (default: 30000) */
|
|
8
|
+
pingFrequencyMs?: number;
|
|
9
|
+
/** Ping timeout in ms (default: 20000) */
|
|
10
|
+
pingTimeoutMs?: number;
|
|
11
|
+
}
|
|
3
12
|
/**
|
|
4
13
|
* RelayHandler implementation backed by applesauce-relay.
|
|
5
14
|
*/
|
|
6
15
|
export declare class ApplesauceRelayPool implements RelayHandler {
|
|
7
16
|
private readonly relayUrls;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
17
|
+
private relayGroup;
|
|
18
|
+
private subscriptionDescriptors;
|
|
19
|
+
private activeUnsubscribers;
|
|
10
20
|
private static readonly PUBLISH_ATTEMPT_TIMEOUT_MS;
|
|
11
21
|
private static readonly PUBLISH_RETRY_INTERVAL_MS;
|
|
12
22
|
private static readonly PUBLISH_ERROR_LOG_INTERVAL_MS;
|
|
13
23
|
private static readonly RECONNECT_BASE_DELAY_MS;
|
|
14
24
|
private static readonly RECONNECT_MAX_DELAY_MS;
|
|
25
|
+
private readonly pingFrequencyMs;
|
|
26
|
+
private readonly pingTimeoutMs;
|
|
27
|
+
private pingSubscription?;
|
|
28
|
+
private readonly destroy$;
|
|
29
|
+
private lastPingLogAt;
|
|
30
|
+
private lastMessageReceivedAt;
|
|
31
|
+
private rebuildInFlight?;
|
|
32
|
+
private relayObservers;
|
|
33
|
+
private messageSubscriptions;
|
|
15
34
|
private createRelay;
|
|
16
35
|
/**
|
|
17
36
|
* Creates a new ApplesauceRelayPool instance.
|
|
18
37
|
* @param relayUrls - An array of relay URLs to connect to.
|
|
38
|
+
* @param opts - Optional configuration for ping behavior.
|
|
19
39
|
*/
|
|
20
|
-
constructor(relayUrls: string[]);
|
|
40
|
+
constructor(relayUrls: string[], opts?: ApplesauceRelayPoolOptions);
|
|
21
41
|
/**
|
|
22
42
|
* Connects to the configured relays.
|
|
23
43
|
* Validates relay URLs and initializes the relay group.
|
|
@@ -48,7 +68,12 @@ export declare class ApplesauceRelayPool implements RelayHandler {
|
|
|
48
68
|
*/
|
|
49
69
|
disconnect(): Promise<void>;
|
|
50
70
|
/**
|
|
51
|
-
*
|
|
71
|
+
* Stops all active subscriptions without clearing subscription descriptors.
|
|
72
|
+
* Used internally during rebuild to preserve subscription intent for replay.
|
|
73
|
+
*/
|
|
74
|
+
private stopActiveSubscriptions;
|
|
75
|
+
/**
|
|
76
|
+
* Unsubscribes from all active subscriptions and clears subscription descriptors.
|
|
52
77
|
*/
|
|
53
78
|
unsubscribe(): void;
|
|
54
79
|
/**
|
|
@@ -56,5 +81,13 @@ export declare class ApplesauceRelayPool implements RelayHandler {
|
|
|
56
81
|
* @returns An array of relay URLs.
|
|
57
82
|
*/
|
|
58
83
|
getRelayUrls(): string[];
|
|
84
|
+
/** Stops the liveness ping monitor */
|
|
85
|
+
private stopPingMonitor;
|
|
86
|
+
/** Starts the liveness ping monitor (called lazily on first subscribe) */
|
|
87
|
+
private startPingMonitor;
|
|
88
|
+
/** Performs a liveness check and triggers rebuild on timeout */
|
|
89
|
+
private checkLiveness;
|
|
90
|
+
/** Rebuilds the relay group and replays all subscriptions (single-flight) */
|
|
91
|
+
private rebuild;
|
|
59
92
|
}
|
|
60
93
|
//# sourceMappingURL=applesauce-relay-pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applesauce-relay-pool.d.ts","sourceRoot":"","sources":["../../../src/relay/applesauce-relay-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"applesauce-relay-pool.d.ts","sourceRoot":"","sources":["../../../src/relay/applesauce-relay-pool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAkBrD,mEAAmE;AACnE,eAAO,MAAM,WAAW,EAAE,MAGzB,CAAC;AASF,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,uBAAuB,CAAgC;IAC/D,OAAO,CAAC,mBAAmB,CAAyB;IAGpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAU;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAO;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAU;IAG/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAU;IAGxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,OAAO,CAAC,gBAAgB,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,oBAAoB,CAAsB;IAElD,OAAO,CAAC,WAAW;IA2CnB;;;;OAIG;gBACS,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,0BAA0B;IAUlE;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD/C;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;;;;OAKG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACpC,MAAM,CAAC,EAAE,MAAM,IAAI,GAClB,OAAO,CAAC,IAAI,CAAC;IAWhB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,WAAW,IAAI,IAAI;IAWnB;;;OAGG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB,sCAAsC;IACtC,OAAO,CAAC,eAAe;IAOvB,0EAA0E;IAC1E,OAAO,CAAC,gBAAgB;IAgBxB,gEAAgE;YAClD,aAAa;IAiE3B,6EAA6E;IAC7E,OAAO,CAAC,OAAO;CAuChB"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { Relay, RelayGroup } from 'applesauce-relay';
|
|
2
2
|
import { createLogger } from '../core/utils/logger.js';
|
|
3
3
|
import { sleep } from '../core/utils/utils.js';
|
|
4
|
-
import { timer } from 'rxjs';
|
|
4
|
+
import { lastValueFrom, takeUntil, timer, timeout, Subject, filter, take, merge, } from 'rxjs';
|
|
5
5
|
const logger = createLogger('applesauce-relay');
|
|
6
|
+
/** Dummy filter that returns no results, used for liveness ping */
|
|
7
|
+
export const PING_FILTER = {
|
|
8
|
+
ids: ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'],
|
|
9
|
+
limit: 0,
|
|
10
|
+
};
|
|
6
11
|
/**
|
|
7
12
|
* RelayHandler implementation backed by applesauce-relay.
|
|
8
13
|
*/
|
|
@@ -15,14 +20,14 @@ export class ApplesauceRelayPool {
|
|
|
15
20
|
const delay = Math.min(Math.pow(1.5, tries) * ApplesauceRelayPool.RECONNECT_BASE_DELAY_MS, ApplesauceRelayPool.RECONNECT_MAX_DELAY_MS);
|
|
16
21
|
return timer(delay);
|
|
17
22
|
};
|
|
18
|
-
// Observability for connection state monitoring
|
|
19
|
-
relay.connected$.subscribe((connected) => {
|
|
23
|
+
// Observability for connection state monitoring (tracked for cleanup on rebuild)
|
|
24
|
+
const connectedSub = relay.connected$.subscribe((connected) => {
|
|
20
25
|
logger.debug('Connection status changed', {
|
|
21
26
|
relayUrl: relay.url,
|
|
22
27
|
connected,
|
|
23
28
|
});
|
|
24
29
|
});
|
|
25
|
-
relay.error$.subscribe((error) => {
|
|
30
|
+
const errorSub = relay.error$.subscribe((error) => {
|
|
26
31
|
if (!error)
|
|
27
32
|
return;
|
|
28
33
|
logger.error('Relay connection error', {
|
|
@@ -30,15 +35,31 @@ export class ApplesauceRelayPool {
|
|
|
30
35
|
error: error instanceof Error ? error.message : String(error),
|
|
31
36
|
});
|
|
32
37
|
});
|
|
38
|
+
// Track message activity for idle detection
|
|
39
|
+
const messageSub = relay.message$.subscribe(() => {
|
|
40
|
+
this.lastMessageReceivedAt = Date.now();
|
|
41
|
+
});
|
|
42
|
+
this.messageSubscriptions.push(messageSub);
|
|
43
|
+
this.relayObservers.push(connectedSub, errorSub);
|
|
33
44
|
return relay;
|
|
34
45
|
}
|
|
35
46
|
/**
|
|
36
47
|
* Creates a new ApplesauceRelayPool instance.
|
|
37
48
|
* @param relayUrls - An array of relay URLs to connect to.
|
|
49
|
+
* @param opts - Optional configuration for ping behavior.
|
|
38
50
|
*/
|
|
39
|
-
constructor(relayUrls) {
|
|
40
|
-
|
|
51
|
+
constructor(relayUrls, opts) {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
this.subscriptionDescriptors = [];
|
|
54
|
+
this.activeUnsubscribers = [];
|
|
55
|
+
this.destroy$ = new Subject();
|
|
56
|
+
this.lastPingLogAt = 0;
|
|
57
|
+
this.lastMessageReceivedAt = 0;
|
|
58
|
+
this.relayObservers = [];
|
|
59
|
+
this.messageSubscriptions = [];
|
|
41
60
|
this.relayUrls = relayUrls;
|
|
61
|
+
this.pingFrequencyMs = (_a = opts === null || opts === void 0 ? void 0 : opts.pingFrequencyMs) !== null && _a !== void 0 ? _a : 30000;
|
|
62
|
+
this.pingTimeoutMs = (_b = opts === null || opts === void 0 ? void 0 : opts.pingTimeoutMs) !== null && _b !== void 0 ? _b : 20000;
|
|
42
63
|
this.relayGroup = new RelayGroup(relayUrls.map((url) => this.createRelay(url)));
|
|
43
64
|
}
|
|
44
65
|
/**
|
|
@@ -154,24 +175,52 @@ export class ApplesauceRelayPool {
|
|
|
154
175
|
* @param onEose - Optional callback function for end-of-stream events.
|
|
155
176
|
*/
|
|
156
177
|
async subscribe(filters, onEvent, onEose) {
|
|
157
|
-
|
|
178
|
+
// Store the descriptor for replay after rebuild
|
|
179
|
+
this.subscriptionDescriptors.push({ filters, onEvent, onEose });
|
|
180
|
+
// Start the subscription and store the unsubscribe handle
|
|
181
|
+
this.activeUnsubscribers.push(this.createSubscription(filters, onEvent, onEose));
|
|
182
|
+
// Start ping monitor lazily on first subscription
|
|
183
|
+
this.startPingMonitor();
|
|
158
184
|
}
|
|
159
185
|
/**
|
|
160
186
|
* Disconnects from all relays and cleans up resources.
|
|
161
187
|
*/
|
|
162
188
|
async disconnect() {
|
|
189
|
+
this.destroy$.next();
|
|
190
|
+
this.destroy$.complete();
|
|
163
191
|
this.unsubscribe();
|
|
192
|
+
// Clean up relay observers
|
|
193
|
+
for (const sub of this.relayObservers)
|
|
194
|
+
sub.unsubscribe();
|
|
195
|
+
for (const sub of this.messageSubscriptions)
|
|
196
|
+
sub.unsubscribe();
|
|
197
|
+
this.relayObservers = [];
|
|
198
|
+
this.messageSubscriptions = [];
|
|
164
199
|
logger.debug('Disconnected from all relays');
|
|
165
200
|
}
|
|
166
201
|
/**
|
|
167
|
-
*
|
|
202
|
+
* Stops all active subscriptions without clearing subscription descriptors.
|
|
203
|
+
* Used internally during rebuild to preserve subscription intent for replay.
|
|
204
|
+
*/
|
|
205
|
+
stopActiveSubscriptions() {
|
|
206
|
+
logger.debug('Stopping active subscriptions (preserving descriptors)');
|
|
207
|
+
try {
|
|
208
|
+
for (const unsubscribe of this.activeUnsubscribers)
|
|
209
|
+
unsubscribe();
|
|
210
|
+
this.activeUnsubscribers = [];
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
logger.error('Error while stopping active subscriptions', { error });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Unsubscribes from all active subscriptions and clears subscription descriptors.
|
|
168
218
|
*/
|
|
169
219
|
unsubscribe() {
|
|
170
220
|
logger.debug('Unsubscribing from all subscriptions');
|
|
171
221
|
try {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
this.subscriptions = [];
|
|
222
|
+
this.stopActiveSubscriptions();
|
|
223
|
+
this.subscriptionDescriptors = [];
|
|
175
224
|
}
|
|
176
225
|
catch (error) {
|
|
177
226
|
logger.error('Error while unsubscribing from subscriptions', { error });
|
|
@@ -184,6 +233,111 @@ export class ApplesauceRelayPool {
|
|
|
184
233
|
getRelayUrls() {
|
|
185
234
|
return [...this.relayUrls];
|
|
186
235
|
}
|
|
236
|
+
/** Stops the liveness ping monitor */
|
|
237
|
+
stopPingMonitor() {
|
|
238
|
+
if (this.pingSubscription) {
|
|
239
|
+
this.pingSubscription.unsubscribe();
|
|
240
|
+
this.pingSubscription = undefined;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/** Starts the liveness ping monitor (called lazily on first subscribe) */
|
|
244
|
+
startPingMonitor() {
|
|
245
|
+
if (this.pingSubscription)
|
|
246
|
+
return;
|
|
247
|
+
this.pingSubscription = timer(this.pingFrequencyMs, this.pingFrequencyMs)
|
|
248
|
+
.pipe(
|
|
249
|
+
// Stop on destroy
|
|
250
|
+
takeUntil(this.destroy$))
|
|
251
|
+
.subscribe({
|
|
252
|
+
next: () => this.checkLiveness(),
|
|
253
|
+
error: () => {
|
|
254
|
+
/* ignore errors */
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
/** Performs a liveness check and triggers rebuild on timeout */
|
|
259
|
+
async checkLiveness() {
|
|
260
|
+
// Skip if recently active
|
|
261
|
+
if (Date.now() - this.lastMessageReceivedAt < this.pingFrequencyMs) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const relays = this.relayGroup.relays;
|
|
265
|
+
// If no relays in group, trigger rebuild
|
|
266
|
+
if (relays.length === 0) {
|
|
267
|
+
logger.warn('No relays in group, triggering rebuild');
|
|
268
|
+
this.rebuild('no-relays');
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
const connectedRelays = relays.filter((relay) => relay.connected);
|
|
272
|
+
// If relays exist but none connected, trigger rebuild
|
|
273
|
+
if (connectedRelays.length === 0) {
|
|
274
|
+
logger.warn('No connected relays, triggering rebuild');
|
|
275
|
+
this.rebuild('no-connected-relays');
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const pingId = `ping:${Date.now()}`;
|
|
279
|
+
try {
|
|
280
|
+
// Send pings to all connected relays using the internal send method
|
|
281
|
+
// Cast to Relay to access the non-interface send method
|
|
282
|
+
for (const relay of connectedRelays) {
|
|
283
|
+
try {
|
|
284
|
+
relay.send(['REQ', pingId, PING_FILTER]);
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
// If send fails immediately, log but continue - timeout will catch it
|
|
288
|
+
logger.debug('Failed to send ping to relay', {
|
|
289
|
+
url: relay.url,
|
|
290
|
+
error,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
// Wait for any response with timeout using raw message stream
|
|
295
|
+
await lastValueFrom(merge(...connectedRelays.map((relay) => relay.message$)).pipe(filter((msg) => Array.isArray(msg) && msg[0] === 'EOSE' && msg[1] === pingId), take(1), timeout(this.pingTimeoutMs)));
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
if (error instanceof Error && error.name === 'TimeoutError') {
|
|
299
|
+
logger.warn('Liveness check timed out - no response from relays', {
|
|
300
|
+
pingTimeoutMs: this.pingTimeoutMs,
|
|
301
|
+
connectedRelays: connectedRelays.length,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
logger.warn('Liveness check failed, triggering rebuild', { error });
|
|
306
|
+
}
|
|
307
|
+
this.rebuild('liveness-timeout');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/** Rebuilds the relay group and replays all subscriptions (single-flight) */
|
|
311
|
+
rebuild(reason) {
|
|
312
|
+
if (this.rebuildInFlight)
|
|
313
|
+
return;
|
|
314
|
+
this.rebuildInFlight = (async () => {
|
|
315
|
+
logger.info('Rebuilding relay pool', { reason });
|
|
316
|
+
// Pause ping monitor during rebuild to avoid redundant checks
|
|
317
|
+
this.stopPingMonitor();
|
|
318
|
+
// Clean up old relay subscriptions BEFORE creating new ones to prevent leaks
|
|
319
|
+
for (const sub of this.relayObservers)
|
|
320
|
+
sub.unsubscribe();
|
|
321
|
+
for (const sub of this.messageSubscriptions)
|
|
322
|
+
sub.unsubscribe();
|
|
323
|
+
this.relayObservers = [];
|
|
324
|
+
this.messageSubscriptions = [];
|
|
325
|
+
// Stop current subscriptions (preserve descriptors for replay)
|
|
326
|
+
this.stopActiveSubscriptions();
|
|
327
|
+
// Create new relays and group
|
|
328
|
+
this.relayGroup = new RelayGroup(this.relayUrls.map((url) => this.createRelay(url)));
|
|
329
|
+
// Replay all stored subscription descriptors
|
|
330
|
+
// Note: New subscriptions added during rebuild will be replayed after this completes
|
|
331
|
+
for (const desc of this.subscriptionDescriptors) {
|
|
332
|
+
this.activeUnsubscribers.push(this.createSubscription(desc.filters, desc.onEvent, desc.onEose));
|
|
333
|
+
}
|
|
334
|
+
logger.info('Relay pool rebuilt successfully');
|
|
335
|
+
// Resume ping monitor
|
|
336
|
+
this.startPingMonitor();
|
|
337
|
+
})().finally(() => {
|
|
338
|
+
this.rebuildInFlight = undefined;
|
|
339
|
+
});
|
|
340
|
+
}
|
|
187
341
|
}
|
|
188
342
|
// Outbound publish policy
|
|
189
343
|
ApplesauceRelayPool.PUBLISH_ATTEMPT_TIMEOUT_MS = 10000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applesauce-relay-pool.js","sourceRoot":"","sources":["../../../src/relay/applesauce-relay-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"applesauce-relay-pool.js","sourceRoot":"","sources":["../../../src/relay/applesauce-relay-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EACL,aAAa,EAEb,SAAS,EACT,KAAK,EACL,OAAO,EAEP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,GACN,MAAM,MAAM,CAAC;AAEd,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAEhD,mEAAmE;AACnE,MAAM,CAAC,MAAM,WAAW,GAAW;IACjC,GAAG,EAAE,CAAC,kEAAkE,CAAC;IACzE,KAAK,EAAE,CAAC;CACT,CAAC;AAiBF;;GAEG;AACH,MAAM,OAAO,mBAAmB;IA2BtB,WAAW,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;QAE7B,0EAA0E;QAC1E,gEAAgE;QAChE,KAAK,CAAC,cAAc,GAAG,CACrB,MAA0B,EAC1B,KAAK,GAAG,CAAC,EACW,EAAE;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,mBAAmB,CAAC,uBAAuB,EAClE,mBAAmB,CAAC,sBAAsB,CAC3C,CAAC;YACF,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,iFAAiF;QACjF,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5D,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,QAAQ,EAAE,KAAK,CAAC,GAAG;gBACnB,SAAS;aACV,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBACrC,QAAQ,EAAE,KAAK,CAAC,GAAG;gBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;YAC/C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEjD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,YAAY,SAAmB,EAAE,IAAiC;;QAxE1D,4BAAuB,GAA6B,EAAE,CAAC;QACvD,wBAAmB,GAAsB,EAAE,CAAC;QAgBnC,aAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QACxC,kBAAa,GAAG,CAAC,CAAC;QAClB,0BAAqB,GAAG,CAAC,CAAC;QAE1B,mBAAc,GAAmB,EAAE,CAAC;QACpC,yBAAoB,GAAmB,EAAE,CAAC;QAmDhD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,eAAe,mCAAI,KAAM,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,mCAAI,KAAM,CAAC;QAEnD,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,KAAiB;QAC7B,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1E,0DAA0D;QAC1D,yEAAyE;QACzE,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;oBACrD,OAAO,EAAE,mBAAmB,CAAC,0BAA0B;oBACvD,OAAO,EAAE,CAAC;iBACX,CAAC,CAAC;gBAEH,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,IAAI,QAAQ,CAAC,EAAE;wBAAE,YAAY,IAAI,CAAC,CAAC;;wBAC9B,WAAW,IAAI,CAAC,CAAC;gBACxB,CAAC;gBAED,IAAI,YAAY,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAEnE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE;wBACpD,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,WAAW;wBACX,YAAY;qBACb,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtE,CAAC;gBACD,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IACE,GAAG,GAAG,SAAS;oBACf,mBAAmB,CAAC,6BAA6B,EACjD,CAAC;oBACD,SAAS,GAAG,GAAG,CAAC;oBAChB,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;wBACzC,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,OAAO;wBACP,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,KAAK,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB,CACxB,OAAiB,EACjB,OAAoC,EACpC,MAAmB;QAEnB,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAEnD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE;YACzD,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC;YACjC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACjB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACxB,MAAM,aAAN,MAAM,uBAAN,MAAM,EAAI,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxC,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;oBACjC,KAAK;oBACL,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CACb,OAAiB,EACjB,OAAoC,EACpC,MAAmB;QAEnB,gDAAgD;QAChD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,0DAA0D;QAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAClD,CAAC;QACF,kDAAkD;QAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,2BAA2B;QAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc;YAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QACzD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,oBAAoB;YAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACK,uBAAuB;QAC7B,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,mBAAmB;gBAAE,WAAW,EAAE,CAAC;YAClE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,sCAAsC;IAC9B,eAAe;QACrB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAED,0EAA0E;IAClE,gBAAgB;QACtB,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAO;QAElC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC;aACtE,IAAI;QACH,kBAAkB;QAClB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;aACA,SAAS,CAAC;YACT,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;YAChC,KAAK,EAAE,GAAG,EAAE;gBACV,mBAAmB;YACrB,CAAC;SACF,CAAC,CAAC;IACP,CAAC;IAED,gEAAgE;IACxD,KAAK,CAAC,aAAa;QACzB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACnE,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAEtC,yCAAyC;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAElE,sDAAsD;QACtD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,oEAAoE;YACpE,wDAAwD;YACxD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACF,KAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,sEAAsE;oBACtE,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;wBAC3C,GAAG,EAAE,KAAK,CAAC,GAAG;wBACd,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,MAAM,aAAa,CACjB,KAAK,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC3D,MAAM,CACJ,CAAC,GAAG,EAAE,EAAE,CACN,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAC/D,EACD,IAAI,CAAC,CAAC,CAAC,EACP,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAC5B,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE;oBAChE,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,eAAe,EAAE,eAAe,CAAC,MAAM;iBACxC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,6EAA6E;IACrE,OAAO,CAAC,MAAc;QAC5B,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QAEjC,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAEjD,8DAA8D;YAC9D,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,6EAA6E;YAC7E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,cAAc;gBAAE,GAAG,CAAC,WAAW,EAAE,CAAC;YACzD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,oBAAoB;gBAAE,GAAG,CAAC,WAAW,EAAE,CAAC;YAC/D,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAE/B,+DAA+D;YAC/D,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAE/B,8BAA8B;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CACnD,CAAC;YAEF,6CAA6C;YAC7C,qFAAqF;YACrF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAChD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CACjE,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAE/C,sBAAsB;YACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;;AAnZD,0BAA0B;AACF,8CAA0B,GAAG,KAAM,AAAT,CAAU;AACpC,6CAAyB,GAAG,GAAG,AAAN,CAAO;AAChC,iDAA6B,GAAG,KAAM,AAAT,CAAU;AAE/D,2BAA2B;AACH,2CAAuB,GAAG,IAAK,AAAR,CAAS;AAChC,0CAAsB,GAAG,KAAM,AAAT,CAAU"}
|
|
@@ -80,6 +80,6 @@ export declare abstract class BaseNostrTransport {
|
|
|
80
80
|
/**
|
|
81
81
|
* Logs an error and re-throws it for consistent error handling.
|
|
82
82
|
*/
|
|
83
|
-
|
|
83
|
+
protected logAndRethrowError(context: string, error: unknown, metadata?: Record<string, unknown>): never;
|
|
84
84
|
}
|
|
85
85
|
//# sourceMappingURL=base-nostr-transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-nostr-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/base-nostr-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"base-nostr-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/base-nostr-transport.ts"],"names":[],"mappings":"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"}
|