@welshman/store 0.5.3 → 0.6.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.
Files changed (93) hide show
  1. package/dist/lib/src/Tools.d.ts +15 -0
  2. package/dist/lib/src/Tools.d.ts.map +1 -1
  3. package/dist/lib/src/Tools.js +22 -0
  4. package/dist/lib/src/Tools.js.map +1 -1
  5. package/dist/net/src/adapter.d.ts +47 -0
  6. package/dist/net/src/adapter.d.ts.map +1 -0
  7. package/dist/net/src/adapter.js +126 -0
  8. package/dist/net/src/adapter.js.map +1 -0
  9. package/dist/net/src/auth.d.ts +40 -0
  10. package/dist/net/src/auth.d.ts.map +1 -0
  11. package/dist/net/src/auth.js +118 -0
  12. package/dist/net/src/auth.js.map +1 -0
  13. package/dist/net/src/context.d.ts +13 -0
  14. package/dist/net/src/context.d.ts.map +1 -0
  15. package/dist/net/src/context.js +10 -0
  16. package/dist/net/src/context.js.map +1 -0
  17. package/dist/net/src/diff.d.ts +56 -0
  18. package/dist/net/src/diff.d.ts.map +1 -0
  19. package/dist/net/src/diff.js +151 -0
  20. package/dist/net/src/diff.js.map +1 -0
  21. package/dist/net/src/index.d.ts +15 -0
  22. package/dist/net/src/index.d.ts.map +1 -0
  23. package/dist/net/src/index.js +15 -0
  24. package/dist/net/src/index.js.map +1 -0
  25. package/dist/net/src/message.d.ts +60 -0
  26. package/dist/net/src/message.d.ts.map +1 -0
  27. package/dist/net/src/message.js +35 -0
  28. package/dist/net/src/message.js.map +1 -0
  29. package/dist/net/src/negentropy.d.ts +48 -0
  30. package/dist/net/src/negentropy.d.ts.map +1 -0
  31. package/dist/net/src/negentropy.js +535 -0
  32. package/dist/net/src/negentropy.js.map +1 -0
  33. package/dist/net/src/policy.d.ts +41 -0
  34. package/dist/net/src/policy.d.ts.map +1 -0
  35. package/dist/net/src/policy.js +168 -0
  36. package/dist/net/src/policy.js.map +1 -0
  37. package/dist/net/src/pool.d.ts +21 -0
  38. package/dist/net/src/pool.d.ts.map +1 -0
  39. package/dist/net/src/pool.js +67 -0
  40. package/dist/net/src/pool.js.map +1 -0
  41. package/dist/net/src/publish.d.ts +45 -0
  42. package/dist/net/src/publish.d.ts.map +1 -0
  43. package/dist/net/src/publish.js +91 -0
  44. package/dist/net/src/publish.js.map +1 -0
  45. package/dist/{relay → net}/src/repository.d.ts +23 -24
  46. package/dist/net/src/repository.d.ts.map +1 -0
  47. package/dist/{relay → net}/src/repository.js +8 -19
  48. package/dist/net/src/repository.js.map +1 -0
  49. package/dist/net/src/request.d.ts +59 -0
  50. package/dist/net/src/request.d.ts.map +1 -0
  51. package/dist/net/src/request.js +202 -0
  52. package/dist/net/src/request.js.map +1 -0
  53. package/dist/net/src/socket.d.ts +43 -0
  54. package/dist/net/src/socket.d.ts.map +1 -0
  55. package/dist/net/src/socket.js +117 -0
  56. package/dist/net/src/socket.js.map +1 -0
  57. package/dist/net/src/tracker.d.ts +16 -0
  58. package/dist/net/src/tracker.d.ts.map +1 -0
  59. package/dist/net/src/tracker.js +63 -0
  60. package/dist/net/src/tracker.js.map +1 -0
  61. package/dist/net/src/util.d.ts +2 -0
  62. package/dist/net/src/util.d.ts.map +1 -0
  63. package/dist/net/src/util.js +2 -0
  64. package/dist/net/src/util.js.map +1 -0
  65. package/dist/net/src/wrapManager.d.ts +36 -0
  66. package/dist/net/src/wrapManager.d.ts.map +1 -0
  67. package/dist/net/src/wrapManager.js +90 -0
  68. package/dist/net/src/wrapManager.js.map +1 -0
  69. package/dist/store/src/repository.d.ts +1 -1
  70. package/dist/store/src/repository.d.ts.map +1 -1
  71. package/dist/store/src/repository.js.map +1 -1
  72. package/dist/util/src/Events.d.ts +0 -8
  73. package/dist/util/src/Events.d.ts.map +1 -1
  74. package/dist/util/src/Events.js +0 -4
  75. package/dist/util/src/Events.js.map +1 -1
  76. package/dist/util/src/Filters.d.ts.map +1 -1
  77. package/dist/util/src/Filters.js +0 -3
  78. package/dist/util/src/Filters.js.map +1 -1
  79. package/dist/util/src/Kinds.d.ts +6 -0
  80. package/dist/util/src/Kinds.d.ts.map +1 -1
  81. package/dist/util/src/Kinds.js +6 -0
  82. package/dist/util/src/Kinds.js.map +1 -1
  83. package/package.json +4 -4
  84. package/dist/relay/src/index.d.ts +0 -3
  85. package/dist/relay/src/index.d.ts.map +0 -1
  86. package/dist/relay/src/index.js +0 -3
  87. package/dist/relay/src/index.js.map +0 -1
  88. package/dist/relay/src/relay.d.ts +0 -13
  89. package/dist/relay/src/relay.d.ts.map +0 -1
  90. package/dist/relay/src/relay.js +0 -48
  91. package/dist/relay/src/relay.js.map +0 -1
  92. package/dist/relay/src/repository.d.ts.map +0 -1
  93. package/dist/relay/src/repository.js.map +0 -1
@@ -0,0 +1,118 @@
1
+ import EventEmitter from "events";
2
+ import { on, poll, call, tryCatch } from "@welshman/lib";
3
+ import { makeRelayAuth } from "@welshman/util";
4
+ import { isRelayAuth, isClientAuth, isRelayOk } from "./message.js";
5
+ import { SocketStatus, SocketEvent } from "./socket.js";
6
+ export var AuthStatus;
7
+ (function (AuthStatus) {
8
+ AuthStatus["None"] = "none";
9
+ AuthStatus["Requested"] = "requested";
10
+ AuthStatus["PendingSignature"] = "pending_signature";
11
+ AuthStatus["DeniedSignature"] = "denied_signature";
12
+ AuthStatus["PendingResponse"] = "pending_response";
13
+ AuthStatus["Forbidden"] = "forbidden";
14
+ AuthStatus["Ok"] = "ok";
15
+ })(AuthStatus || (AuthStatus = {}));
16
+ export var AuthStateEvent;
17
+ (function (AuthStateEvent) {
18
+ AuthStateEvent["Status"] = "auth:event:status";
19
+ })(AuthStateEvent || (AuthStateEvent = {}));
20
+ export class AuthState extends EventEmitter {
21
+ socket;
22
+ challenge;
23
+ request;
24
+ details;
25
+ status = AuthStatus.None;
26
+ _unsubscribers = [];
27
+ constructor(socket) {
28
+ super();
29
+ this.socket = socket;
30
+ this._unsubscribers.push(on(socket, SocketEvent.Receive, (message) => {
31
+ if (isRelayOk(message)) {
32
+ const [_, id, ok, details] = message;
33
+ if (id === this.request) {
34
+ this.details = details;
35
+ if (ok) {
36
+ this.setStatus(AuthStatus.Ok);
37
+ }
38
+ else {
39
+ this.setStatus(AuthStatus.Forbidden);
40
+ }
41
+ }
42
+ }
43
+ if (isRelayAuth(message)) {
44
+ const [_, challenge] = message;
45
+ // Sometimes relays send the same challenge multiple times, no need to
46
+ // respond to it twice
47
+ if (challenge !== this.challenge) {
48
+ this.challenge = challenge;
49
+ this.request = undefined;
50
+ this.details = undefined;
51
+ this.setStatus(AuthStatus.Requested);
52
+ }
53
+ }
54
+ }), on(socket, SocketEvent.Sending, (message) => {
55
+ if (isClientAuth(message)) {
56
+ this.setStatus(AuthStatus.PendingResponse);
57
+ }
58
+ }), on(socket, SocketEvent.Status, (status) => {
59
+ if (status === SocketStatus.Closed || status === SocketStatus.Error) {
60
+ this.challenge = undefined;
61
+ this.request = undefined;
62
+ this.details = undefined;
63
+ this.setStatus(AuthStatus.None);
64
+ }
65
+ }));
66
+ }
67
+ setStatus(status) {
68
+ this.status = status;
69
+ this.emit(AuthStateEvent.Status, status);
70
+ }
71
+ async doAuth(sign) {
72
+ if (!this.challenge) {
73
+ throw new Error("Attempted to authenticate with no challenge");
74
+ }
75
+ if (this.status !== AuthStatus.Requested) {
76
+ throw new Error(`Attempted to authenticate when auth is already ${this.status}`);
77
+ }
78
+ this.setStatus(AuthStatus.PendingSignature);
79
+ const template = makeRelayAuth(this.socket.url, this.challenge);
80
+ const event = await tryCatch(() => sign(template));
81
+ if (event) {
82
+ this.request = event.id;
83
+ this.socket.send(["AUTH", event]);
84
+ }
85
+ else {
86
+ this.setStatus(AuthStatus.DeniedSignature);
87
+ }
88
+ }
89
+ async attemptAuth(sign) {
90
+ this.socket.attemptToOpen();
91
+ if (![AuthStatus.Forbidden, AuthStatus.Ok].includes(this.status)) {
92
+ await poll({
93
+ signal: AbortSignal.timeout(800),
94
+ condition: () => this.status === AuthStatus.Requested,
95
+ });
96
+ if (this.status === AuthStatus.Requested) {
97
+ await this.doAuth(sign);
98
+ }
99
+ await poll({
100
+ signal: AbortSignal.timeout(800),
101
+ condition: () => this.status !== AuthStatus.PendingResponse,
102
+ });
103
+ }
104
+ }
105
+ async retryAuth(sign) {
106
+ if (this.challenge) {
107
+ this.request = undefined;
108
+ this.details = undefined;
109
+ this.setStatus(AuthStatus.Requested);
110
+ }
111
+ await this.attemptAuth(sign);
112
+ }
113
+ cleanup() {
114
+ this.removeAllListeners();
115
+ this._unsubscribers.forEach(call);
116
+ }
117
+ }
118
+ //# 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 { TrustedEvent } from "@welshman/util";
2
+ import { AbstractAdapter } from "./adapter.js";
3
+ import { Repository } from "./repository.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,YAAY,EAAC,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC1C,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 { verifyEvent } from "@welshman/util";
2
+ import { Repository } from "./repository.js";
3
+ import { Pool } from "./pool.js";
4
+ export const netContext = {
5
+ pool: Pool.get(),
6
+ repository: Repository.get(),
7
+ isEventValid: (event, url) => 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,WAAW,EAAe,MAAM,gBAAgB,CAAA;AAExD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAU9B,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;IAChB,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE;IAC5B,YAAY,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;IAChD,cAAc,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;CACvE,CAAA"}
@@ -0,0 +1,56 @@
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 = "message",
6
+ Error = "error",
7
+ Close = "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
+ signal?: AbortSignal;
22
+ context?: AdapterContext;
23
+ };
24
+ export declare class Difference extends EventEmitter {
25
+ readonly options: DifferenceOptions;
26
+ have: Set<string>;
27
+ need: Set<string>;
28
+ _id: string;
29
+ _unsubscriber: () => void;
30
+ _adapter: AbstractAdapter;
31
+ _closed: boolean;
32
+ constructor(options: DifferenceOptions);
33
+ close(): void;
34
+ }
35
+ export type DiffOptions = {
36
+ relays: string[];
37
+ filters: Filter[];
38
+ events: SignedEvent[];
39
+ signal?: AbortSignal;
40
+ context?: AdapterContext;
41
+ };
42
+ export type DiffItem = {
43
+ relay: string;
44
+ have: Set<string>;
45
+ need: Set<string>;
46
+ };
47
+ export declare const diff: ({ relays, filters, ...options }: DiffOptions) => Promise<{
48
+ relay: string;
49
+ have: string[];
50
+ need: string[];
51
+ }[]>;
52
+ export type PullOptions = DiffOptions;
53
+ export declare const pull: ({ context, ...options }: PullOptions) => Promise<SignedEvent[]>;
54
+ export type PushOptions = DiffOptions;
55
+ export declare const push: ({ context, events, ...options }: PushOptions) => Promise<void>;
56
+ //# 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,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;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,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,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;IAgE/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,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,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;;;;IA4CpE,CAAA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AAErC,eAAO,MAAM,IAAI,GAAU,yBAAuB,WAAW,2BAyC5D,CAAA;AAID,MAAM,MAAM,WAAW,GAAG,WAAW,CAAA;AAErC,eAAO,MAAM,IAAI,GAAU,iCAA+B,WAAW,kBAkBpE,CAAA"}
@@ -0,0 +1,151 @@
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 { requestOne } from "./request.js";
7
+ import { publish } from "./publish.js";
8
+ export var DifferenceEvent;
9
+ (function (DifferenceEvent) {
10
+ DifferenceEvent["Message"] = "message";
11
+ DifferenceEvent["Error"] = "error";
12
+ DifferenceEvent["Close"] = "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
+ // Listen for abort
26
+ options.signal?.addEventListener("abort", () => this.close());
27
+ // Set up our adapter
28
+ this._adapter = getAdapter(this.options.relay, this.options.context);
29
+ // Set up negentropy
30
+ const storage = new NegentropyStorageVector();
31
+ const neg = new Negentropy(storage, 50_000);
32
+ for (const event of this.options.events) {
33
+ storage.insert(event.created_at, event.id);
34
+ }
35
+ storage.seal();
36
+ // Add listeners
37
+ this._unsubscriber = on(this._adapter, AdapterEvent.Receive, async (message, url) => {
38
+ if (isRelayNegMsg(message)) {
39
+ const [_, negid, msg] = message;
40
+ if (negid === this._id) {
41
+ const [newMsg, have, need] = await neg.reconcile(msg);
42
+ for (const id of have) {
43
+ this.have.add(id);
44
+ }
45
+ for (const id of need) {
46
+ this.need.add(id);
47
+ }
48
+ this.emit(DifferenceEvent.Message, { have, need }, url);
49
+ if (newMsg) {
50
+ this._adapter.send([RelayMessageType.NegMsg, this._id, newMsg]);
51
+ }
52
+ else {
53
+ this.close();
54
+ }
55
+ }
56
+ }
57
+ if (isRelayNegErr(message)) {
58
+ const [_, negid, msg] = message;
59
+ if (negid === this._id) {
60
+ this.emit(DifferenceEvent.Error, msg, url);
61
+ this.close();
62
+ }
63
+ }
64
+ });
65
+ neg.initiate().then((msg) => {
66
+ this._adapter.send([ClientMessageType.NegOpen, this._id, this.options.filter, msg]);
67
+ });
68
+ }
69
+ close() {
70
+ if (this._closed)
71
+ return;
72
+ this._adapter.send([ClientMessageType.NegClose, this._id]);
73
+ this.emit(DifferenceEvent.Close);
74
+ this.removeAllListeners();
75
+ this._adapter.cleanup();
76
+ this._unsubscriber();
77
+ this._closed = true;
78
+ }
79
+ }
80
+ export const diff = async ({ relays, filters, ...options }) => {
81
+ const diffs = flatten(await Promise.all(relays.flatMap(async (relay) => {
82
+ return await Promise.all(filters.map(async (filter) => new Promise((resolve, reject) => {
83
+ const diff = new Difference({ relay, filter, ...options });
84
+ diff.on(DifferenceEvent.Close, () => {
85
+ resolve({ relay, have: diff.have, need: diff.need });
86
+ });
87
+ diff.on(DifferenceEvent.Error, (message, url) => {
88
+ console.warn(`Negentropy error on ${url}: ${message}`);
89
+ });
90
+ sleep(30_000).then(() => {
91
+ diff.close();
92
+ });
93
+ })));
94
+ })));
95
+ return Array.from(groupBy(diff => diff.relay, diffs).entries()).map(([relay, diffs]) => {
96
+ const have = new Set();
97
+ const need = new Set();
98
+ for (const diff of diffs) {
99
+ for (const id of diff.have) {
100
+ have.add(id);
101
+ }
102
+ for (const id of diff.need) {
103
+ need.add(id);
104
+ }
105
+ }
106
+ return { relay, have: Array.from(have), need: Array.from(need) };
107
+ });
108
+ };
109
+ export const pull = async ({ context, ...options }) => {
110
+ const countById = new Map();
111
+ const idsByRelay = new Map();
112
+ for (const { relay, need } of await diff({ context, ...options })) {
113
+ for (const id of need) {
114
+ const count = countById.get(id) || 0;
115
+ // Reduce, but don't completely eliminate duplicates, just in case a relay
116
+ // won't give us what we ask for.
117
+ if (count < 2) {
118
+ pushToMapKey(idsByRelay, relay, id);
119
+ countById.set(id, inc(count));
120
+ }
121
+ }
122
+ }
123
+ const result = [];
124
+ await Promise.all(Array.from(idsByRelay.entries()).map(([relay, allIds]) => {
125
+ return Promise.all(chunk(500, allIds).map(ids => new Promise(resolve => requestOne({
126
+ relay,
127
+ context,
128
+ filters: [{ ids }],
129
+ signal: options.signal,
130
+ autoClose: true,
131
+ onClose: resolve,
132
+ onEvent: event => result.push(event),
133
+ }))));
134
+ }));
135
+ return result;
136
+ };
137
+ export const push = async ({ context, events, ...options }) => {
138
+ const relaysById = new Map();
139
+ for (const { relay, have } of await diff({ context, events, ...options })) {
140
+ for (const id of have) {
141
+ pushToMapKey(relaysById, id, relay);
142
+ }
143
+ }
144
+ await Promise.all(events.map(async (event) => {
145
+ const relays = relaysById.get(event.id);
146
+ if (relays) {
147
+ await publish({ event, relays, context, signal: options.signal });
148
+ }
149
+ }));
150
+ };
151
+ //# 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,15 @@
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 "./repository.js";
12
+ export * from "./request.js";
13
+ export * from "./tracker.js";
14
+ export * from "./wrapManager.js";
15
+ //# 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,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,15 @@
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 "./repository.js";
12
+ export * from "./request.js";
13
+ export * from "./tracker.js";
14
+ export * from "./wrapManager.js";
15
+ //# 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,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,60 @@
1
+ import type { SignedEvent, Filter } from "@welshman/util";
2
+ export declare enum RelayMessageType {
3
+ Auth = "AUTH",
4
+ Closed = "CLOSED",
5
+ Eose = "EOSE",
6
+ Event = "EVENT",
7
+ NegErr = "NEG-ERR",
8
+ NegMsg = "NEG-MSG",
9
+ Ok = "OK"
10
+ }
11
+ export type RelayMessage = any[];
12
+ export type RelayAuthPayload = [string];
13
+ export type RelayClosedPayload = [string, string];
14
+ export type RelayEosePayload = [string];
15
+ export type RelayEventPayload = [string, SignedEvent];
16
+ export type RelayNegErrPayload = [string, string];
17
+ export type RelayNegMsgPayload = [string, string];
18
+ export type RelayOkPayload = [string, boolean, string];
19
+ export type RelayAuth = [RelayMessageType.Auth, ...RelayAuthPayload];
20
+ export type RelayClosed = [RelayMessageType.Closed, ...RelayClosedPayload];
21
+ export type RelayEose = [RelayMessageType.Eose, ...RelayEosePayload];
22
+ export type RelayEvent = [RelayMessageType.Event, ...RelayEventPayload];
23
+ export type RelayNegErr = [RelayMessageType.NegErr, ...RelayNegErrPayload];
24
+ export type RelayNegMsg = [RelayMessageType.NegMsg, ...RelayNegMsgPayload];
25
+ export type RelayOk = [RelayMessageType.Ok, ...RelayOkPayload];
26
+ export declare const isRelayAuth: (m: RelayMessage) => m is RelayAuth;
27
+ export declare const isRelayClosed: (m: RelayMessage) => m is RelayClosed;
28
+ export declare const isRelayEose: (m: RelayMessage) => m is RelayEose;
29
+ export declare const isRelayEvent: (m: RelayMessage) => m is RelayEvent;
30
+ export declare const isRelayNegErr: (m: RelayMessage) => m is RelayNegErr;
31
+ export declare const isRelayNegMsg: (m: RelayMessage) => m is RelayNegMsg;
32
+ export declare const isRelayOk: (m: RelayMessage) => m is RelayOk;
33
+ export declare enum ClientMessageType {
34
+ Auth = "AUTH",
35
+ Close = "CLOSE",
36
+ Event = "EVENT",
37
+ NegClose = "NEG-CLOSE",
38
+ NegOpen = "NEG-OPEN",
39
+ Req = "REQ"
40
+ }
41
+ export type ClientMessage = any[];
42
+ export type ClientAuthPayload = [string];
43
+ export type ClientClosePayload = [string];
44
+ export type ClientEventPayload = [SignedEvent];
45
+ export type ClientNegClosePayload = [string];
46
+ export type ClientNegOpenPayload = [string, Filter, string];
47
+ export type ClientReqPayload = [string, Filter];
48
+ export type ClientAuth = [ClientMessageType.Auth, ...ClientAuthPayload];
49
+ export type ClientClose = [ClientMessageType.Close, ...ClientClosePayload];
50
+ export type ClientEvent = [ClientMessageType.Event, ...ClientEventPayload];
51
+ export type ClientNegClose = [ClientMessageType.NegClose, ...ClientNegClosePayload];
52
+ export type ClientNegOpen = [ClientMessageType.NegOpen, ...ClientNegOpenPayload];
53
+ export type ClientReq = [ClientMessageType.Req, ...ClientReqPayload];
54
+ export declare const isClientAuth: (m: ClientMessage) => m is ClientAuth;
55
+ export declare const isClientClose: (m: ClientMessage) => m is ClientClose;
56
+ export declare const isClientEvent: (m: ClientMessage) => m is ClientEvent;
57
+ export declare const isClientNegClose: (m: ClientMessage) => m is ClientNegClose;
58
+ export declare const isClientNegOpen: (m: ClientMessage) => m is ClientNegOpen;
59
+ export declare const isClientReq: (m: ClientMessage) => m is ClientReq;
60
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../net/src/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAA;AAIvD,oBAAY,gBAAgB;IAC1B,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,YAAY;IAClB,MAAM,YAAY;IAClB,EAAE,OAAO;CACV;AAED,MAAM,MAAM,YAAY,GAAG,GAAG,EAAE,CAAA;AAEhC,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAA;AAEvC,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAA;AAEvC,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAErD,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEjD,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEjD,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AAEtD,MAAM,MAAM,SAAS,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,CAAA;AAEpE,MAAM,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAA;AAE1E,MAAM,MAAM,SAAS,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,gBAAgB,CAAC,CAAA;AAEpE,MAAM,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,iBAAiB,CAAC,CAAA;AAEvE,MAAM,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAA;AAE1E,MAAM,MAAM,WAAW,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,kBAAkB,CAAC,CAAA;AAE1E,MAAM,MAAM,OAAO,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,CAAA;AAE9D,eAAO,MAAM,WAAW,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,SAA2C,CAAA;AAE9F,eAAO,MAAM,aAAa,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,WAA+C,CAAA;AAEpG,eAAO,MAAM,WAAW,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,SAA2C,CAAA;AAE9F,eAAO,MAAM,YAAY,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,UAA6C,CAAA;AAEjG,eAAO,MAAM,aAAa,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,WAA+C,CAAA;AAEpG,eAAO,MAAM,aAAa,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,WAA+C,CAAA;AAEpG,eAAO,MAAM,SAAS,GAAI,GAAG,YAAY,KAAG,CAAC,IAAI,OAAuC,CAAA;AAIxF,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,QAAQ,cAAc;IACtB,OAAO,aAAa;IACpB,GAAG,QAAQ;CACZ;AAED,MAAM,MAAM,aAAa,GAAG,GAAG,EAAE,CAAA;AAEjC,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,CAAA;AAExC,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAA;AAEzC,MAAM,MAAM,kBAAkB,GAAG,CAAC,WAAW,CAAC,CAAA;AAE9C,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,CAAC,CAAA;AAE5C,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE/C,MAAM,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,iBAAiB,CAAC,CAAA;AAEvE,MAAM,MAAM,WAAW,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,kBAAkB,CAAC,CAAA;AAE1E,MAAM,MAAM,WAAW,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,kBAAkB,CAAC,CAAA;AAE1E,MAAM,MAAM,cAAc,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,qBAAqB,CAAC,CAAA;AAEnF,MAAM,MAAM,aAAa,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,CAAA;AAEhF,MAAM,MAAM,SAAS,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,CAAA;AAEpE,eAAO,MAAM,YAAY,GAAI,GAAG,aAAa,KAAG,CAAC,IAAI,UAA6C,CAAA;AAElG,eAAO,MAAM,aAAa,GAAI,GAAG,aAAa,KAAG,CAAC,IAAI,WACpB,CAAA;AAElC,eAAO,MAAM,aAAa,GAAI,GAAG,aAAa,KAAG,CAAC,IAAI,WACpB,CAAA;AAElC,eAAO,MAAM,gBAAgB,GAAI,GAAG,aAAa,KAAG,CAAC,IAAI,cACpB,CAAA;AAErC,eAAO,MAAM,eAAe,GAAI,GAAG,aAAa,KAAG,CAAC,IAAI,aACpB,CAAA;AAEpC,eAAO,MAAM,WAAW,GAAI,GAAG,aAAa,KAAG,CAAC,IAAI,SAA2C,CAAA"}
@@ -0,0 +1,35 @@
1
+ // relay -> client
2
+ export var RelayMessageType;
3
+ (function (RelayMessageType) {
4
+ RelayMessageType["Auth"] = "AUTH";
5
+ RelayMessageType["Closed"] = "CLOSED";
6
+ RelayMessageType["Eose"] = "EOSE";
7
+ RelayMessageType["Event"] = "EVENT";
8
+ RelayMessageType["NegErr"] = "NEG-ERR";
9
+ RelayMessageType["NegMsg"] = "NEG-MSG";
10
+ RelayMessageType["Ok"] = "OK";
11
+ })(RelayMessageType || (RelayMessageType = {}));
12
+ export const isRelayAuth = (m) => m[0] === RelayMessageType.Auth;
13
+ export const isRelayClosed = (m) => m[0] === RelayMessageType.Closed;
14
+ export const isRelayEose = (m) => m[0] === RelayMessageType.Eose;
15
+ export const isRelayEvent = (m) => m[0] === RelayMessageType.Event;
16
+ export const isRelayNegErr = (m) => m[0] === RelayMessageType.NegErr;
17
+ export const isRelayNegMsg = (m) => m[0] === RelayMessageType.NegMsg;
18
+ export const isRelayOk = (m) => m[0] === RelayMessageType.Ok;
19
+ // client -> relay
20
+ export var ClientMessageType;
21
+ (function (ClientMessageType) {
22
+ ClientMessageType["Auth"] = "AUTH";
23
+ ClientMessageType["Close"] = "CLOSE";
24
+ ClientMessageType["Event"] = "EVENT";
25
+ ClientMessageType["NegClose"] = "NEG-CLOSE";
26
+ ClientMessageType["NegOpen"] = "NEG-OPEN";
27
+ ClientMessageType["Req"] = "REQ";
28
+ })(ClientMessageType || (ClientMessageType = {}));
29
+ export const isClientAuth = (m) => m[0] === ClientMessageType.Auth;
30
+ export const isClientClose = (m) => m[0] === ClientMessageType.Close;
31
+ export const isClientEvent = (m) => m[0] === ClientMessageType.Event;
32
+ export const isClientNegClose = (m) => m[0] === ClientMessageType.NegClose;
33
+ export const isClientNegOpen = (m) => m[0] === ClientMessageType.NegOpen;
34
+ export const isClientReq = (m) => m[0] === ClientMessageType.Req;
35
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../net/src/message.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAElB,MAAM,CAAN,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,iCAAa,CAAA;IACb,qCAAiB,CAAA;IACjB,iCAAa,CAAA;IACb,mCAAe,CAAA;IACf,sCAAkB,CAAA;IAClB,sCAAkB,CAAA;IAClB,6BAAS,CAAA;AACX,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,QAQ3B;AAgCD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAe,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAA;AAE9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAe,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAA;AAE9F,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAe,EAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,KAAK,CAAA;AAEjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAe,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,MAAM,CAAA;AAEpG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAe,EAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,EAAE,CAAA;AAExF,kBAAkB;AAElB,MAAM,CAAN,IAAY,iBAOX;AAPD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,oCAAe,CAAA;IACf,oCAAe,CAAA;IACf,2CAAsB,CAAA;IACtB,yCAAoB,CAAA;IACpB,gCAAW,CAAA;AACb,CAAC,EAPW,iBAAiB,KAAjB,iBAAiB,QAO5B;AA4BD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAgB,EAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAA;AAElG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAoB,EAAE,CAClE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAA;AAElC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAoB,EAAE,CAClE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,KAAK,CAAA;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAgB,EAAuB,EAAE,CACxE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,QAAQ,CAAA;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAgB,EAAsB,EAAE,CACtE,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,OAAO,CAAA;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAgB,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,GAAG,CAAA"}
@@ -0,0 +1,48 @@
1
+ declare class WrappedBuffer {
2
+ constructor(buffer: any);
3
+ unwrap(): any;
4
+ get capacity(): any;
5
+ extend(buf: any): void;
6
+ shift(): any;
7
+ shiftN(n?: number): any;
8
+ }
9
+ declare class NegentropyStorageVector {
10
+ constructor();
11
+ insert(timestamp: any, id: any): void;
12
+ seal(): void;
13
+ unseal(): void;
14
+ size(): any;
15
+ getItem(i: any): any;
16
+ iterate(begin: any, end: any, cb: any): void;
17
+ findLowerBound(begin: any, end: any, bound: any): any;
18
+ fingerprint(begin: any, end: any): Promise<any>;
19
+ _checkSealed(): void;
20
+ _checkBounds(begin: any, end: any): void;
21
+ _binarySearch(arr: any, first: any, last: any, cmp: any): any;
22
+ }
23
+ declare class Negentropy {
24
+ constructor(storage: any, frameSizeLimit?: number);
25
+ _bound(timestamp: any, id: any): {
26
+ timestamp: any;
27
+ id: any;
28
+ };
29
+ initiate(): Promise<any>;
30
+ setInitiator(): void;
31
+ reconcile(query: any): Promise<any[]>;
32
+ splitRange(lower: any, upper: any, upperBound: any, o: any): Promise<void>;
33
+ _renderOutput(o: any): any;
34
+ exceededFrameSizeLimit(n: any): any;
35
+ decodeTimestampIn(encoded: any): number;
36
+ decodeBound(encoded: any): {
37
+ timestamp: number;
38
+ id: any;
39
+ };
40
+ encodeTimestampOut(timestamp: any): WrappedBuffer;
41
+ encodeBound(key: any): WrappedBuffer;
42
+ getMinimalBound(prev: any, curr: any): {
43
+ timestamp: any;
44
+ id: any;
45
+ };
46
+ }
47
+ export { Negentropy, NegentropyStorageVector };
48
+ //# sourceMappingURL=negentropy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negentropy.d.ts","sourceRoot":"","sources":["../../../../net/src/negentropy.ts"],"names":[],"mappings":"AAcA,cAAM,aAAa;gBACL,MAAM,KAAA;IAKlB,MAAM;IAIN,IAAI,QAAQ,QAEX;IAED,MAAM,CAAC,GAAG,KAAA;IAeV,KAAK;IAOL,MAAM,CAAC,CAAC,SAAI;CAMb;AA0GD,cAAM,uBAAuB;;IAM3B,MAAM,CAAC,SAAS,KAAA,EAAE,EAAE,KAAA;IAOpB,IAAI;IAYJ,MAAM;IAIN,IAAI;IAKJ,OAAO,CAAC,CAAC,KAAA;IAMT,OAAO,CAAC,KAAK,KAAA,EAAE,GAAG,KAAA,EAAE,EAAE,KAAA;IAStB,cAAc,CAAC,KAAK,KAAA,EAAE,GAAG,KAAA,EAAE,KAAK,KAAA;IAO1B,WAAW,CAAC,KAAK,KAAA,EAAE,GAAG,KAAA;IAY5B,YAAY;IAIZ,YAAY,CAAC,KAAK,KAAA,EAAE,GAAG,KAAA;IAIvB,aAAa,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,IAAI,KAAA,EAAE,GAAG,KAAA;CAkBpC;AAED,cAAM,UAAU;gBACF,OAAO,KAAA,EAAE,cAAc,SAAI;IAUvC,MAAM,CAAC,SAAS,KAAA,EAAE,EAAE,KAAA;;;;IAId,QAAQ;IAYd,YAAY;IAIN,SAAS,CAAC,KAAK,KAAA;IA2If,UAAU,CAAC,KAAK,KAAA,EAAE,KAAK,KAAA,EAAE,UAAU,KAAA,EAAE,CAAC,KAAA;IA8C5C,aAAa,CAAC,CAAC,KAAA;IAMf,sBAAsB,CAAC,CAAC,KAAA;IAMxB,iBAAiB,CAAC,OAAO,KAAA;IAYzB,WAAW,CAAC,OAAO,KAAA;;;;IAUnB,kBAAkB,CAAC,SAAS,KAAA;IAY5B,WAAW,CAAC,GAAG,KAAA;IAUf,eAAe,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA;;;;CAgB3B;AAqED,OAAO,EAAC,UAAU,EAAE,uBAAuB,EAAC,CAAA"}