@welshman/signer 0.1.2 → 0.1.4

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.
Files changed (188) hide show
  1. package/LICENSE +21 -0
  2. package/dist/lib/src/Deferred.d.ts +21 -0
  3. package/dist/lib/src/Deferred.d.ts.map +1 -0
  4. package/dist/lib/src/Deferred.js +21 -0
  5. package/dist/lib/src/Deferred.js.map +1 -0
  6. package/dist/lib/src/Emitter.d.ts +14 -0
  7. package/dist/lib/src/Emitter.d.ts.map +1 -0
  8. package/dist/lib/src/Emitter.js +18 -0
  9. package/dist/lib/src/Emitter.js.map +1 -0
  10. package/dist/lib/src/LRUCache.d.ts +42 -0
  11. package/dist/lib/src/LRUCache.d.ts.map +1 -0
  12. package/dist/lib/src/LRUCache.js +62 -0
  13. package/dist/lib/src/LRUCache.js.map +1 -0
  14. package/dist/lib/src/TaskQueue.d.ts +18 -0
  15. package/dist/lib/src/TaskQueue.d.ts.map +1 -0
  16. package/dist/lib/src/TaskQueue.js +47 -0
  17. package/dist/lib/src/TaskQueue.js.map +1 -0
  18. package/dist/lib/src/Tools.d.ts +630 -0
  19. package/dist/lib/src/Tools.d.ts.map +1 -0
  20. package/dist/lib/src/Tools.js +1061 -0
  21. package/dist/lib/src/Tools.js.map +1 -0
  22. package/dist/lib/src/index.d.ts +7 -0
  23. package/dist/lib/src/index.d.ts.map +1 -0
  24. package/dist/lib/src/index.js +7 -0
  25. package/dist/lib/src/index.js.map +1 -0
  26. package/dist/lib/src/normalize-url/index.d.ts +286 -0
  27. package/dist/lib/src/normalize-url/index.d.ts.map +1 -0
  28. package/dist/lib/src/normalize-url/index.js +252 -0
  29. package/dist/lib/src/normalize-url/index.js.map +1 -0
  30. package/dist/net/src/adapter.d.ts +44 -0
  31. package/dist/net/src/adapter.d.ts.map +1 -0
  32. package/dist/net/src/adapter.js +91 -0
  33. package/dist/net/src/adapter.js.map +1 -0
  34. package/dist/net/src/auth.d.ts +42 -0
  35. package/dist/net/src/auth.d.ts.map +1 -0
  36. package/dist/net/src/auth.js +100 -0
  37. package/dist/net/src/auth.js.map +1 -0
  38. package/dist/net/src/context.d.ts +13 -0
  39. package/dist/net/src/context.d.ts.map +1 -0
  40. package/dist/net/src/context.js +10 -0
  41. package/dist/net/src/context.js.map +1 -0
  42. package/dist/net/src/diff.d.ts +54 -0
  43. package/dist/net/src/diff.d.ts.map +1 -0
  44. package/dist/net/src/diff.js +147 -0
  45. package/dist/net/src/diff.js.map +1 -0
  46. package/dist/net/src/index.d.ts +13 -0
  47. package/dist/net/src/index.d.ts.map +1 -0
  48. package/dist/net/src/index.js +13 -0
  49. package/dist/net/src/index.js.map +1 -0
  50. package/dist/net/src/message.d.ts +60 -0
  51. package/dist/net/src/message.d.ts.map +1 -0
  52. package/dist/net/src/message.js +35 -0
  53. package/dist/net/src/message.js.map +1 -0
  54. package/dist/net/src/negentropy.d.ts +48 -0
  55. package/dist/net/src/negentropy.d.ts.map +1 -0
  56. package/dist/net/src/negentropy.js +536 -0
  57. package/dist/net/src/negentropy.js.map +1 -0
  58. package/dist/net/src/policy.d.ts +40 -0
  59. package/dist/net/src/policy.d.ts.map +1 -0
  60. package/dist/net/src/policy.js +180 -0
  61. package/dist/net/src/policy.js.map +1 -0
  62. package/dist/net/src/pool.d.ts +21 -0
  63. package/dist/net/src/pool.d.ts.map +1 -0
  64. package/dist/net/src/pool.js +67 -0
  65. package/dist/net/src/pool.js.map +1 -0
  66. package/dist/net/src/publish.d.ts +45 -0
  67. package/dist/net/src/publish.d.ts.map +1 -0
  68. package/dist/net/src/publish.js +125 -0
  69. package/dist/net/src/publish.js.map +1 -0
  70. package/dist/net/src/request.d.ts +89 -0
  71. package/dist/net/src/request.d.ts.map +1 -0
  72. package/dist/net/src/request.js +200 -0
  73. package/dist/net/src/request.js.map +1 -0
  74. package/dist/net/src/socket.d.ts +43 -0
  75. package/dist/net/src/socket.d.ts.map +1 -0
  76. package/dist/net/src/socket.js +115 -0
  77. package/dist/net/src/socket.js.map +1 -0
  78. package/dist/net/src/tracker.d.ts +16 -0
  79. package/dist/net/src/tracker.d.ts.map +1 -0
  80. package/dist/net/src/tracker.js +63 -0
  81. package/dist/net/src/tracker.js.map +1 -0
  82. package/dist/net/src/util.d.ts +2 -0
  83. package/dist/net/src/util.d.ts.map +1 -0
  84. package/dist/net/src/util.js +2 -0
  85. package/dist/net/src/util.js.map +1 -0
  86. package/dist/relay/src/index.d.ts +3 -0
  87. package/dist/relay/src/index.d.ts.map +1 -0
  88. package/dist/relay/src/index.js +3 -0
  89. package/dist/relay/src/index.js.map +1 -0
  90. package/dist/relay/src/relay.d.ts +13 -0
  91. package/dist/relay/src/relay.d.ts.map +1 -0
  92. package/dist/relay/src/relay.js +48 -0
  93. package/dist/relay/src/relay.js.map +1 -0
  94. package/dist/relay/src/repository.d.ts +63 -0
  95. package/dist/relay/src/repository.d.ts.map +1 -0
  96. package/dist/relay/src/repository.js +270 -0
  97. package/dist/relay/src/repository.js.map +1 -0
  98. package/{build → dist/signer}/src/index.d.ts +1 -0
  99. package/dist/signer/src/index.d.ts.map +1 -0
  100. package/dist/signer/src/index.js.map +1 -0
  101. package/{build → dist/signer}/src/nip59.d.ts +1 -0
  102. package/dist/signer/src/nip59.d.ts.map +1 -0
  103. package/dist/signer/src/nip59.js.map +1 -0
  104. package/{build → dist/signer}/src/signers/nip01.d.ts +1 -0
  105. package/dist/signer/src/signers/nip01.d.ts.map +1 -0
  106. package/dist/signer/src/signers/nip01.js.map +1 -0
  107. package/{build → dist/signer}/src/signers/nip07.d.ts +1 -0
  108. package/dist/signer/src/signers/nip07.d.ts.map +1 -0
  109. package/dist/signer/src/signers/nip07.js.map +1 -0
  110. package/{build → dist/signer}/src/signers/nip46.d.ts +1 -0
  111. package/dist/signer/src/signers/nip46.d.ts.map +1 -0
  112. package/dist/signer/src/signers/nip46.js.map +1 -0
  113. package/{build → dist/signer}/src/signers/nip55.d.ts +1 -0
  114. package/dist/signer/src/signers/nip55.d.ts.map +1 -0
  115. package/dist/signer/src/signers/nip55.js.map +1 -0
  116. package/{build → dist/signer}/src/util.d.ts +3 -2
  117. package/dist/signer/src/util.d.ts.map +1 -0
  118. package/dist/signer/src/util.js.map +1 -0
  119. package/dist/tsconfig.build.tsbuildinfo +1 -0
  120. package/dist/util/src/Address.d.ts +21 -0
  121. package/dist/util/src/Address.d.ts.map +1 -0
  122. package/dist/util/src/Address.js +43 -0
  123. package/dist/util/src/Address.js.map +1 -0
  124. package/dist/util/src/Encryptable.d.ts +34 -0
  125. package/dist/util/src/Encryptable.d.ts.map +1 -0
  126. package/dist/util/src/Encryptable.js +52 -0
  127. package/dist/util/src/Encryptable.js.map +1 -0
  128. package/dist/util/src/Events.d.ts +77 -0
  129. package/dist/util/src/Events.d.ts.map +1 -0
  130. package/dist/util/src/Events.js +62 -0
  131. package/dist/util/src/Events.js.map +1 -0
  132. package/dist/util/src/Filters.d.ts +48 -0
  133. package/dist/util/src/Filters.d.ts.map +1 -0
  134. package/dist/util/src/Filters.js +185 -0
  135. package/dist/util/src/Filters.js.map +1 -0
  136. package/dist/util/src/Handler.d.ts +17 -0
  137. package/dist/util/src/Handler.d.ts.map +1 -0
  138. package/dist/util/src/Handler.js +33 -0
  139. package/dist/util/src/Handler.js.map +1 -0
  140. package/dist/util/src/Kinds.d.ts +159 -0
  141. package/dist/util/src/Kinds.d.ts.map +1 -0
  142. package/dist/util/src/Kinds.js +160 -0
  143. package/dist/util/src/Kinds.js.map +1 -0
  144. package/dist/util/src/Links.d.ts +3 -0
  145. package/dist/util/src/Links.d.ts.map +1 -0
  146. package/dist/util/src/Links.js +3 -0
  147. package/dist/util/src/Links.js.map +1 -0
  148. package/dist/util/src/List.d.ts +32 -0
  149. package/dist/util/src/List.d.ts.map +1 -0
  150. package/dist/util/src/List.js +67 -0
  151. package/dist/util/src/List.js.map +1 -0
  152. package/dist/util/src/Profile.d.ts +33 -0
  153. package/dist/util/src/Profile.d.ts.map +1 -0
  154. package/dist/util/src/Profile.js +49 -0
  155. package/dist/util/src/Profile.js.map +1 -0
  156. package/dist/util/src/Relay.d.ts +26 -0
  157. package/dist/util/src/Relay.d.ts.map +1 -0
  158. package/dist/util/src/Relay.js +42 -0
  159. package/dist/util/src/Relay.js.map +1 -0
  160. package/dist/util/src/Tags.d.ts +32 -0
  161. package/dist/util/src/Tags.d.ts.map +1 -0
  162. package/dist/util/src/Tags.js +74 -0
  163. package/dist/util/src/Tags.js.map +1 -0
  164. package/dist/util/src/Zaps.d.ts +20 -0
  165. package/dist/util/src/Zaps.d.ts.map +1 -0
  166. package/dist/util/src/Zaps.js +93 -0
  167. package/dist/util/src/Zaps.js.map +1 -0
  168. package/dist/util/src/index.d.ts +13 -0
  169. package/dist/util/src/index.d.ts.map +1 -0
  170. package/dist/util/src/index.js +13 -0
  171. package/dist/util/src/index.js.map +1 -0
  172. package/package.json +18 -24
  173. package/README.md +0 -93
  174. package/build/src/index.js.map +0 -1
  175. package/build/src/nip59.js.map +0 -1
  176. package/build/src/signers/nip01.js.map +0 -1
  177. package/build/src/signers/nip07.js.map +0 -1
  178. package/build/src/signers/nip46.js.map +0 -1
  179. package/build/src/signers/nip55.js.map +0 -1
  180. package/build/src/util.js.map +0 -1
  181. package/build/tsconfig.tsbuildinfo +0 -1
  182. /package/{build → dist/signer}/src/index.js +0 -0
  183. /package/{build → dist/signer}/src/nip59.js +0 -0
  184. /package/{build → dist/signer}/src/signers/nip01.js +0 -0
  185. /package/{build → dist/signer}/src/signers/nip07.js +0 -0
  186. /package/{build → dist/signer}/src/signers/nip46.js +0 -0
  187. /package/{build → dist/signer}/src/signers/nip55.js +0 -0
  188. /package/{build → dist/signer}/src/util.js +0 -0
@@ -0,0 +1,44 @@
1
+ import EventEmitter from "events";
2
+ import { LocalRelay } from "@welshman/relay";
3
+ import { RelayMessage, ClientMessage } from "./message.js";
4
+ import { Socket } from "./socket.js";
5
+ import { Unsubscriber } from "./util.js";
6
+ import { NetContext } from "./context.js";
7
+ export declare enum AdapterEvent {
8
+ Receive = "adapter:event:receive"
9
+ }
10
+ export type AdapterEvents = {
11
+ [AdapterEvent.Receive]: (message: RelayMessage, url: string) => void;
12
+ };
13
+ export declare abstract class AbstractAdapter extends EventEmitter {
14
+ _unsubscribers: Unsubscriber[];
15
+ abstract urls: string[];
16
+ abstract sockets: Socket[];
17
+ abstract send(message: ClientMessage): void;
18
+ cleanup(): void;
19
+ }
20
+ export declare class SocketAdapter extends AbstractAdapter {
21
+ readonly socket: Socket;
22
+ constructor(socket: Socket);
23
+ get sockets(): Socket[];
24
+ get urls(): string[];
25
+ send(message: ClientMessage): void;
26
+ }
27
+ export declare class LocalAdapter extends AbstractAdapter {
28
+ readonly relay: LocalRelay;
29
+ constructor(relay: LocalRelay);
30
+ get sockets(): never[];
31
+ get urls(): string[];
32
+ send(message: ClientMessage): void;
33
+ }
34
+ export declare class MockAdapter extends AbstractAdapter {
35
+ readonly url: string;
36
+ readonly send: (message: ClientMessage) => void;
37
+ constructor(url: string, send: (message: ClientMessage) => void);
38
+ get sockets(): never[];
39
+ get urls(): string[];
40
+ receive: (message: RelayMessage) => void;
41
+ }
42
+ export type AdapterContext = Partial<NetContext>;
43
+ export declare const getAdapter: (url: string, adapterContext?: AdapterContext) => any;
44
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../net/src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAGjC,OAAO,EAAC,UAAU,EAAkB,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,cAAc,CAAA;AACxD,OAAO,EAAC,MAAM,EAAc,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AACtC,OAAO,EAAa,UAAU,EAAC,MAAM,cAAc,CAAA;AAEnD,oBAAY,YAAY;IACtB,OAAO,0BAA0B;CAClC;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CACrE,CAAA;AAED,8BAAsB,eAAgB,SAAQ,YAAY;IACxD,cAAc,EAAE,YAAY,EAAE,CAAK;IAEnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAE3C,OAAO;CAIR;AAED,qBAAa,aAAc,SAAQ,eAAe;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAUnC,IAAI,OAAO,aAEV;IAED,IAAI,IAAI,aAEP;IAED,IAAI,CAAC,OAAO,EAAE,aAAa;CAG5B;AAED,qBAAa,YAAa,SAAQ,eAAe;IACnC,QAAQ,CAAC,KAAK,EAAE,UAAU;gBAAjB,KAAK,EAAE,UAAU;IAUtC,IAAI,OAAO,YAEV;IAED,IAAI,IAAI,aAEP;IAED,IAAI,CAAC,OAAO,EAAE,aAAa;CAK5B;AAED,qBAAa,WAAY,SAAQ,eAAe;IAE5C,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;gBADtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI;IAKjD,IAAI,OAAO,YAEV;IAED,IAAI,IAAI,aAEP;IAED,OAAO,GAAI,SAAS,YAAY,UAE/B;CACF;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAEhD,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,EAAE,iBAAgB,cAAmB,QAoB1E,CAAA"}
@@ -0,0 +1,91 @@
1
+ import EventEmitter from "events";
2
+ import { call, mergeRight, on } from "@welshman/lib";
3
+ import { isRelayUrl } from "@welshman/util";
4
+ import { LocalRelay, LOCAL_RELAY_URL } from "@welshman/relay";
5
+ import { SocketEvent } from "./socket.js";
6
+ import { netContext } from "./context.js";
7
+ export var AdapterEvent;
8
+ (function (AdapterEvent) {
9
+ AdapterEvent["Receive"] = "adapter:event:receive";
10
+ })(AdapterEvent || (AdapterEvent = {}));
11
+ export class AbstractAdapter extends EventEmitter {
12
+ _unsubscribers = [];
13
+ cleanup() {
14
+ this.removeAllListeners();
15
+ this._unsubscribers.splice(0).forEach(call);
16
+ }
17
+ }
18
+ export class SocketAdapter extends AbstractAdapter {
19
+ socket;
20
+ constructor(socket) {
21
+ super();
22
+ this.socket = socket;
23
+ this._unsubscribers.push(on(socket, SocketEvent.Receive, (message, url) => {
24
+ this.emit(AdapterEvent.Receive, message, url);
25
+ }));
26
+ }
27
+ get sockets() {
28
+ return [this.socket];
29
+ }
30
+ get urls() {
31
+ return [this.socket.url];
32
+ }
33
+ send(message) {
34
+ this.socket.send(message);
35
+ }
36
+ }
37
+ export class LocalAdapter extends AbstractAdapter {
38
+ relay;
39
+ constructor(relay) {
40
+ super();
41
+ this.relay = relay;
42
+ this._unsubscribers.push(on(relay, "*", (...message) => {
43
+ this.emit(AdapterEvent.Receive, message, LOCAL_RELAY_URL);
44
+ }));
45
+ }
46
+ get sockets() {
47
+ return [];
48
+ }
49
+ get urls() {
50
+ return [LOCAL_RELAY_URL];
51
+ }
52
+ send(message) {
53
+ const [type, ...rest] = message;
54
+ this.relay.send(type, ...rest);
55
+ }
56
+ }
57
+ export class MockAdapter extends AbstractAdapter {
58
+ url;
59
+ send;
60
+ constructor(url, send) {
61
+ super();
62
+ this.url = url;
63
+ this.send = send;
64
+ }
65
+ get sockets() {
66
+ return [];
67
+ }
68
+ get urls() {
69
+ return [this.url];
70
+ }
71
+ receive = (message) => {
72
+ this.emit(AdapterEvent.Receive, message, this.url);
73
+ };
74
+ }
75
+ export const getAdapter = (url, adapterContext = {}) => {
76
+ const context = mergeRight(netContext, adapterContext);
77
+ if (context.getAdapter) {
78
+ const adapter = context.getAdapter(url, context);
79
+ if (adapter) {
80
+ return adapter;
81
+ }
82
+ }
83
+ if (url === LOCAL_RELAY_URL) {
84
+ return new LocalAdapter(new LocalRelay(context.repository));
85
+ }
86
+ if (isRelayUrl(url)) {
87
+ return new SocketAdapter(context.pool.get(url));
88
+ }
89
+ throw new Error(`Invalid relay url ${url}`);
90
+ };
91
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../net/src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import EventEmitter from "events";
2
+ import { SignedEvent, StampedEvent } from "@welshman/util";
3
+ import { Socket } from "./socket.js";
4
+ import { Unsubscriber } from "./util.js";
5
+ export declare const makeAuthEvent: (url: string, challenge: string) => {
6
+ kind: number;
7
+ content: string;
8
+ tags: string[][];
9
+ created_at: number;
10
+ };
11
+ export declare enum AuthStatus {
12
+ None = "auth:status:none",
13
+ Requested = "auth:status:requested",
14
+ PendingSignature = "auth:status:pending_signature",
15
+ DeniedSignature = "auth:status:denied_signature",
16
+ PendingResponse = "auth:status:pending_response",
17
+ Forbidden = "auth:status:forbidden",
18
+ Ok = "auth:status:ok"
19
+ }
20
+ export type AuthResult = {
21
+ ok: boolean;
22
+ reason?: string;
23
+ };
24
+ export declare enum AuthStateEvent {
25
+ Status = "auth:event:status"
26
+ }
27
+ export type AuthStateEvents = {
28
+ [AuthStateEvent.Status]: (status: AuthStatus) => void;
29
+ };
30
+ export declare class AuthState extends EventEmitter {
31
+ readonly socket: Socket;
32
+ challenge: string | undefined;
33
+ request: string | undefined;
34
+ details: string | undefined;
35
+ status: AuthStatus;
36
+ _unsubscribers: Unsubscriber[];
37
+ constructor(socket: Socket);
38
+ setStatus(status: AuthStatus): void;
39
+ authenticate(sign: (event: StampedEvent) => Promise<SignedEvent>): Promise<void>;
40
+ cleanup(): void;
41
+ }
42
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../net/src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAA;AAEjC,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAGxD,OAAO,EAAC,MAAM,EAA4B,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AAEtC,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM;;;;;CAMxD,CAAA;AAEJ,oBAAY,UAAU;IACpB,IAAI,qBAAqB;IACzB,SAAS,0BAA0B;IACnC,gBAAgB,kCAAkC;IAClD,eAAe,iCAAiC;IAChD,eAAe,iCAAiC;IAChD,SAAS,0BAA0B;IACnC,EAAE,mBAAmB;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,oBAAY,cAAc;IACxB,MAAM,sBAAsB;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CACtD,CAAA;AAED,qBAAa,SAAU,SAAQ,YAAY;IAO7B,QAAQ,CAAC,MAAM,EAAE,MAAM;IANnC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,aAAkB;IACxB,cAAc,EAAE,YAAY,EAAE,CAAK;gBAEd,MAAM,EAAE,MAAM;IAgDnC,SAAS,CAAC,MAAM,EAAE,UAAU;IAKtB,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC;IAsBtE,OAAO;CAIR"}
@@ -0,0 +1,100 @@
1
+ import EventEmitter from "events";
2
+ import { on, call } from "@welshman/lib";
3
+ import { makeEvent, CLIENT_AUTH } from "@welshman/util";
4
+ import { isRelayAuth, isClientAuth, isRelayOk } from "./message.js";
5
+ import { SocketStatus, SocketEvent } from "./socket.js";
6
+ export const makeAuthEvent = (url, challenge) => makeEvent(CLIENT_AUTH, {
7
+ tags: [
8
+ ["relay", url],
9
+ ["challenge", challenge],
10
+ ],
11
+ });
12
+ export var AuthStatus;
13
+ (function (AuthStatus) {
14
+ AuthStatus["None"] = "auth:status:none";
15
+ AuthStatus["Requested"] = "auth:status:requested";
16
+ AuthStatus["PendingSignature"] = "auth:status:pending_signature";
17
+ AuthStatus["DeniedSignature"] = "auth:status:denied_signature";
18
+ AuthStatus["PendingResponse"] = "auth:status:pending_response";
19
+ AuthStatus["Forbidden"] = "auth:status:forbidden";
20
+ AuthStatus["Ok"] = "auth:status:ok";
21
+ })(AuthStatus || (AuthStatus = {}));
22
+ export var AuthStateEvent;
23
+ (function (AuthStateEvent) {
24
+ AuthStateEvent["Status"] = "auth:event:status";
25
+ })(AuthStateEvent || (AuthStateEvent = {}));
26
+ export class AuthState extends EventEmitter {
27
+ socket;
28
+ challenge;
29
+ request;
30
+ details;
31
+ status = AuthStatus.None;
32
+ _unsubscribers = [];
33
+ constructor(socket) {
34
+ super();
35
+ this.socket = socket;
36
+ this._unsubscribers.push(on(socket, SocketEvent.Receive, (message) => {
37
+ if (isRelayOk(message)) {
38
+ const [_, id, ok, details] = message;
39
+ if (id === this.request) {
40
+ this.details = details;
41
+ if (ok) {
42
+ this.setStatus(AuthStatus.Ok);
43
+ }
44
+ else {
45
+ this.setStatus(AuthStatus.Forbidden);
46
+ }
47
+ }
48
+ }
49
+ if (isRelayAuth(message)) {
50
+ const [_, challenge] = message;
51
+ // Sometimes relays send the same challenge multiple times, no need to
52
+ // respond to it twice
53
+ if (challenge !== this.challenge) {
54
+ this.challenge = challenge;
55
+ this.request = undefined;
56
+ this.details = undefined;
57
+ this.setStatus(AuthStatus.Requested);
58
+ }
59
+ }
60
+ }), on(socket, SocketEvent.Sending, (message) => {
61
+ if (isClientAuth(message)) {
62
+ this.setStatus(AuthStatus.PendingResponse);
63
+ }
64
+ }), on(socket, SocketEvent.Status, (status) => {
65
+ if (status === SocketStatus.Closed) {
66
+ this.challenge = undefined;
67
+ this.request = undefined;
68
+ this.details = undefined;
69
+ this.setStatus(AuthStatus.None);
70
+ }
71
+ }));
72
+ }
73
+ setStatus(status) {
74
+ this.status = status;
75
+ this.emit(AuthStateEvent.Status, status);
76
+ }
77
+ async authenticate(sign) {
78
+ if (!this.challenge) {
79
+ throw new Error("Attempted to authenticate with no challenge");
80
+ }
81
+ if (this.status !== AuthStatus.Requested) {
82
+ throw new Error(`Attempted to authenticate when auth is already ${this.status}`);
83
+ }
84
+ this.setStatus(AuthStatus.PendingSignature);
85
+ const template = makeAuthEvent(this.socket.url, this.challenge);
86
+ const event = await sign(template);
87
+ if (event) {
88
+ this.request = event.id;
89
+ this.socket.send(["AUTH", event]);
90
+ }
91
+ else {
92
+ this.setStatus(AuthStatus.DeniedSignature);
93
+ }
94
+ }
95
+ cleanup() {
96
+ this.removeAllListeners();
97
+ this._unsubscribers.forEach(call);
98
+ }
99
+ }
100
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../net/src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Repository } from "@welshman/relay";
2
+ import { TrustedEvent } from "@welshman/util";
3
+ import { AbstractAdapter } from "./adapter.js";
4
+ import { Pool } from "./pool.js";
5
+ export type NetContext = {
6
+ pool: Pool;
7
+ repository: Repository;
8
+ isEventValid: (event: TrustedEvent, url: string) => boolean;
9
+ isEventDeleted: (event: TrustedEvent, url: string) => boolean;
10
+ getAdapter?: (url: string, context: NetContext) => AbstractAdapter;
11
+ };
12
+ export declare const netContext: NetContext;
13
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../net/src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAc,YAAY,EAAc,MAAM,gBAAgB,CAAA;AACrE,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAE9B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,eAAe,CAAA;CACnE,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,UAKxB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { Repository } from "@welshman/relay";
2
+ import { verifyEvent } from "@welshman/util";
3
+ import { Pool } from "./pool.js";
4
+ export const netContext = {
5
+ pool: Pool.getSingleton(),
6
+ repository: Repository.getSingleton(),
7
+ isEventValid: (event, url) => Boolean(event.sig && verifyEvent(event)),
8
+ isEventDeleted: (event, url) => netContext.repository.isDeleted(event),
9
+ };
10
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../net/src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAC,WAAW,EAA4B,MAAM,gBAAgB,CAAA;AAErE,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAU9B,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;IACzB,UAAU,EAAE,UAAU,CAAC,YAAY,EAAE;IACrC,YAAY,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,WAAW,CAAC,KAAoB,CAAC,CAAC;IACrF,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;CACvE,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { EventEmitter } from "events";
2
+ import { SignedEvent, Filter } from "@welshman/util";
3
+ import { AdapterContext, AbstractAdapter } from "./adapter.js";
4
+ export declare enum DifferenceEvent {
5
+ Message = "difference:event:message",
6
+ Error = "difference:event:error",
7
+ Close = "difference:event:close"
8
+ }
9
+ export type DifferenceEvents = {
10
+ [DifferenceEvent.Message]: (payload: {
11
+ have: string[];
12
+ need: string[];
13
+ }, url: string) => void;
14
+ [DifferenceEvent.Error]: (error: string, url: string) => void;
15
+ [DifferenceEvent.Close]: () => void;
16
+ };
17
+ export type DifferenceOptions = {
18
+ relay: string;
19
+ filter: Filter;
20
+ events: SignedEvent[];
21
+ context?: AdapterContext;
22
+ };
23
+ export declare class Difference extends EventEmitter {
24
+ readonly options: DifferenceOptions;
25
+ have: Set<string>;
26
+ need: Set<string>;
27
+ _id: string;
28
+ _unsubscriber: () => void;
29
+ _adapter: AbstractAdapter;
30
+ _closed: boolean;
31
+ constructor(options: DifferenceOptions);
32
+ close(): void;
33
+ }
34
+ export type DiffOptions = {
35
+ relays: string[];
36
+ filters: Filter[];
37
+ events: SignedEvent[];
38
+ context?: AdapterContext;
39
+ };
40
+ export type DiffItem = {
41
+ relay: string;
42
+ have: Set<string>;
43
+ need: Set<string>;
44
+ };
45
+ export declare const diff: ({ relays, filters, ...options }: DiffOptions) => Promise<{
46
+ relay: string;
47
+ have: string[];
48
+ need: string[];
49
+ }[]>;
50
+ export type PullOptions = DiffOptions;
51
+ export declare const pull: ({ context, ...options }: PullOptions) => Promise<SignedEvent[]>;
52
+ export type PushOptions = DiffOptions;
53
+ export declare const push: ({ context, events, ...options }: PushOptions) => Promise<void>;
54
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../net/src/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAA;AAEnC,OAAO,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAA;AAQlD,OAAO,EAAa,cAAc,EAAE,eAAe,EAAe,MAAM,cAAc,CAAA;AAKtF,oBAAY,eAAe;IACzB,OAAO,6BAA6B;IACpC,KAAK,2BAA2B;IAChC,KAAK,2BAA2B;CACjC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAC,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3F,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7D,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,qBAAa,UAAW,SAAQ,YAAY;IAS9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB;IAR/C,IAAI,cAAoB;IACxB,IAAI,cAAoB;IAExB,GAAG,SAAkC;IACrC,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,QAAQ,EAAE,eAAe,CAAA;IACzB,OAAO,UAAQ;gBAEM,OAAO,EAAE,iBAAiB;IA0D/C,KAAK;CAUN;AAID,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACjB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,IAAI,GAAU,iCAA+B,WAAW;;;;IA8CpE,CAAA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AAErC,eAAO,MAAM,IAAI,GAAU,yBAAuB,WAAW,2BAmC5D,CAAA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AAErC,eAAO,MAAM,IAAI,GAAU,iCAA+B,WAAW,kBAoBpE,CAAA"}
@@ -0,0 +1,147 @@
1
+ import { EventEmitter } from "events";
2
+ import { on, sleep, randomId, groupBy, pushToMapKey, inc, flatten, chunk } from "@welshman/lib";
3
+ import { isRelayNegErr, isRelayNegMsg, RelayMessageType, ClientMessageType, } from "./message.js";
4
+ import { getAdapter, AdapterEvent } from "./adapter.js";
5
+ import { Negentropy, NegentropyStorageVector } from "./negentropy.js";
6
+ import { SingleRequest, RequestEvent } from "./request.js";
7
+ import { MultiPublish, PublishEvent } from "./publish.js";
8
+ export var DifferenceEvent;
9
+ (function (DifferenceEvent) {
10
+ DifferenceEvent["Message"] = "difference:event:message";
11
+ DifferenceEvent["Error"] = "difference:event:error";
12
+ DifferenceEvent["Close"] = "difference:event:close";
13
+ })(DifferenceEvent || (DifferenceEvent = {}));
14
+ export class Difference extends EventEmitter {
15
+ options;
16
+ have = new Set();
17
+ need = new Set();
18
+ _id = `NEG-${randomId().slice(0, 8)}`;
19
+ _unsubscriber;
20
+ _adapter;
21
+ _closed = false;
22
+ constructor(options) {
23
+ super();
24
+ this.options = options;
25
+ // Set up our adapter
26
+ this._adapter = getAdapter(this.options.relay, this.options.context);
27
+ // Set up negentropy
28
+ const storage = new NegentropyStorageVector();
29
+ const neg = new Negentropy(storage, 50_000);
30
+ for (const event of this.options.events) {
31
+ storage.insert(event.created_at, event.id);
32
+ }
33
+ storage.seal();
34
+ // Add listeners
35
+ this._unsubscriber = on(this._adapter, AdapterEvent.Receive, async (message, url) => {
36
+ if (isRelayNegMsg(message)) {
37
+ const [_, negid, msg] = message;
38
+ if (negid === this._id) {
39
+ const [newMsg, have, need] = await neg.reconcile(msg);
40
+ for (const id of have) {
41
+ this.have.add(id);
42
+ }
43
+ for (const id of need) {
44
+ this.need.add(id);
45
+ }
46
+ this.emit(DifferenceEvent.Message, { have, need }, url);
47
+ if (newMsg) {
48
+ this._adapter.send([RelayMessageType.NegMsg, this._id, newMsg]);
49
+ }
50
+ }
51
+ }
52
+ if (isRelayNegErr(message)) {
53
+ const [_, negid, msg] = message;
54
+ if (negid === this._id) {
55
+ this.emit(DifferenceEvent.Error, msg, url);
56
+ }
57
+ }
58
+ });
59
+ neg.initiate().then((msg) => {
60
+ this._adapter.send([ClientMessageType.NegOpen, this._id, this.options.filter, msg]);
61
+ });
62
+ }
63
+ close() {
64
+ if (this._closed)
65
+ return;
66
+ this._adapter.send([ClientMessageType.NegClose, this._id]);
67
+ this.emit(DifferenceEvent.Close);
68
+ this.removeAllListeners();
69
+ this._adapter.cleanup();
70
+ this._unsubscriber();
71
+ this._closed = true;
72
+ }
73
+ }
74
+ export const diff = async ({ relays, filters, ...options }) => {
75
+ const diffs = flatten(await Promise.all(relays.flatMap(async (relay) => {
76
+ return await Promise.all(filters.map(async (filter) => new Promise((resolve, reject) => {
77
+ const diff = new Difference({ relay, filter, ...options });
78
+ diff.on(DifferenceEvent.Close, () => {
79
+ resolve({ relay, have: diff.have, need: diff.need });
80
+ });
81
+ diff.on(DifferenceEvent.Error, (url, message) => {
82
+ reject(message);
83
+ diff.close();
84
+ });
85
+ sleep(30_000).then(() => {
86
+ reject("timeout");
87
+ diff.close();
88
+ });
89
+ })));
90
+ })));
91
+ return Array.from(groupBy(diff => diff.relay, diffs).entries()).map(([relay, diffs]) => {
92
+ const have = new Set();
93
+ const need = new Set();
94
+ for (const diff of diffs) {
95
+ for (const id of diff.have) {
96
+ have.add(id);
97
+ }
98
+ for (const id of diff.need) {
99
+ need.add(id);
100
+ }
101
+ }
102
+ return { relay, have: Array.from(have), need: Array.from(need) };
103
+ });
104
+ };
105
+ export const pull = async ({ context, ...options }) => {
106
+ const countById = new Map();
107
+ const idsByRelay = new Map();
108
+ for (const { relay, need } of await diff({ context, ...options })) {
109
+ for (const id of need) {
110
+ const count = countById.get(id) || 0;
111
+ // Reduce, but don't completely eliminate duplicates, just in case a relay
112
+ // won't give us what we ask for.
113
+ if (count < 2) {
114
+ pushToMapKey(idsByRelay, relay, id);
115
+ countById.set(id, inc(count));
116
+ }
117
+ }
118
+ }
119
+ const result = [];
120
+ await Promise.all(Array.from(idsByRelay.entries()).map(([relay, allIds]) => {
121
+ return Promise.all(chunk(500, allIds).map(ids => {
122
+ return new Promise(resolve => {
123
+ const req = new SingleRequest({ relay, context, filters: [{ ids }], autoClose: true });
124
+ req.on(RequestEvent.Close, resolve);
125
+ req.on(RequestEvent.Event, event => result.push(event));
126
+ });
127
+ }));
128
+ }));
129
+ return result;
130
+ };
131
+ export const push = async ({ context, events, ...options }) => {
132
+ const relaysById = new Map();
133
+ for (const { relay, have } of await diff({ context, events, ...options })) {
134
+ for (const id of have) {
135
+ pushToMapKey(relaysById, id, relay);
136
+ }
137
+ }
138
+ await Promise.all(events.map(async (event) => {
139
+ const relays = relaysById.get(event.id);
140
+ if (relays) {
141
+ new Promise(resolve => {
142
+ new MultiPublish({ event, relays, context }).on(PublishEvent.Complete, resolve);
143
+ });
144
+ }
145
+ }));
146
+ };
147
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../net/src/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from "./adapter.js";
2
+ export * from "./auth.js";
3
+ export * from "./context.js";
4
+ export * from "./diff.js";
5
+ export * from "./message.js";
6
+ export * from "./negentropy.js";
7
+ export * from "./policy.js";
8
+ export * from "./pool.js";
9
+ export * from "./publish.js";
10
+ export * from "./socket.js";
11
+ export * from "./request.js";
12
+ export * from "./tracker.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../net/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,13 @@
1
+ export * from "./adapter.js";
2
+ export * from "./auth.js";
3
+ export * from "./context.js";
4
+ export * from "./diff.js";
5
+ export * from "./message.js";
6
+ export * from "./negentropy.js";
7
+ export * from "./policy.js";
8
+ export * from "./pool.js";
9
+ export * from "./publish.js";
10
+ export * from "./socket.js";
11
+ export * from "./request.js";
12
+ export * from "./tracker.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../net/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}