@welshman/store 0.14.0-pre4 → 0.14.0-pre5

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 (157) hide show
  1. package/dist/store/src/{repository.d.ts → derive.d.ts} +33 -41
  2. package/dist/store/src/derive.d.ts.map +1 -0
  3. package/dist/store/src/derive.js +706 -0
  4. package/dist/store/src/derive.js.map +1 -0
  5. package/dist/store/src/index.d.ts +9 -1
  6. package/dist/store/src/index.d.ts.map +1 -1
  7. package/dist/store/src/index.js +9 -1
  8. package/dist/store/src/index.js.map +1 -1
  9. package/dist/store/src/misc.d.ts +2 -7
  10. package/dist/store/src/misc.d.ts.map +1 -1
  11. package/dist/store/src/misc.js +1 -1
  12. package/dist/store/src/misc.js.map +1 -1
  13. package/dist/{net/src/repository.d.ts → store/src/repository/adapters/memory.d.ts} +22 -30
  14. package/dist/store/src/repository/adapters/memory.d.ts.map +1 -0
  15. package/dist/{net/src/repository.js → store/src/repository/adapters/memory.js} +96 -106
  16. package/dist/store/src/repository/adapters/memory.js.map +1 -0
  17. package/dist/store/src/repository/adapters/sqlite/engine.d.ts +65 -0
  18. package/dist/store/src/repository/adapters/sqlite/engine.d.ts.map +1 -0
  19. package/dist/store/src/repository/adapters/sqlite/engine.js +420 -0
  20. package/dist/store/src/repository/adapters/sqlite/engine.js.map +1 -0
  21. package/dist/store/src/repository/adapters/sqlite/leader.d.ts +8 -0
  22. package/dist/store/src/repository/adapters/sqlite/leader.d.ts.map +1 -0
  23. package/dist/store/src/repository/adapters/sqlite/leader.js +222 -0
  24. package/dist/store/src/repository/adapters/sqlite/leader.js.map +1 -0
  25. package/dist/store/src/repository/adapters/sqlite/protocol.d.ts +52 -0
  26. package/dist/store/src/repository/adapters/sqlite/protocol.d.ts.map +1 -0
  27. package/dist/store/src/repository/adapters/sqlite/protocol.js +52 -0
  28. package/dist/store/src/repository/adapters/sqlite/protocol.js.map +1 -0
  29. package/dist/store/src/repository/adapters/sqlite/repository.d.ts +54 -0
  30. package/dist/store/src/repository/adapters/sqlite/repository.d.ts.map +1 -0
  31. package/dist/store/src/repository/adapters/sqlite/repository.js +238 -0
  32. package/dist/store/src/repository/adapters/sqlite/repository.js.map +1 -0
  33. package/dist/store/src/repository/adapters/sqlite/serve.d.ts +4 -0
  34. package/dist/store/src/repository/adapters/sqlite/serve.d.ts.map +1 -0
  35. package/dist/store/src/repository/adapters/sqlite/serve.js +39 -0
  36. package/dist/store/src/repository/adapters/sqlite/serve.js.map +1 -0
  37. package/dist/store/src/repository/adapters/sqlite/wasm.d.ts +7 -0
  38. package/dist/store/src/repository/adapters/sqlite/wasm.d.ts.map +1 -0
  39. package/dist/store/src/repository/adapters/sqlite/wasm.js +61 -0
  40. package/dist/store/src/repository/adapters/sqlite/wasm.js.map +1 -0
  41. package/dist/store/src/repository/adapters/sqlite/worker.d.ts +2 -0
  42. package/dist/store/src/repository/adapters/sqlite/worker.d.ts.map +1 -0
  43. package/dist/store/src/repository/adapters/sqlite/worker.js +4 -0
  44. package/dist/store/src/repository/adapters/sqlite/worker.js.map +1 -0
  45. package/dist/store/src/repository/core.d.ts +68 -0
  46. package/dist/store/src/repository/core.d.ts.map +1 -0
  47. package/dist/store/src/repository/core.js +123 -0
  48. package/dist/store/src/repository/core.js.map +1 -0
  49. package/dist/store/src/svelte.d.ts +22 -0
  50. package/dist/store/src/svelte.d.ts.map +1 -0
  51. package/dist/store/src/svelte.js +100 -0
  52. package/dist/store/src/svelte.js.map +1 -0
  53. package/dist/store/src/synced.d.ts +1 -1
  54. package/dist/store/src/synced.d.ts.map +1 -1
  55. package/dist/store/src/synced.js +1 -1
  56. package/dist/store/src/synced.js.map +1 -1
  57. package/dist/store/src/throttle.d.ts +1 -1
  58. package/dist/store/src/throttle.d.ts.map +1 -1
  59. package/dist/{net → store}/src/tracker.d.ts +2 -0
  60. package/dist/store/src/tracker.d.ts.map +1 -0
  61. package/dist/{net → store}/src/tracker.js +8 -4
  62. package/dist/store/src/tracker.js.map +1 -0
  63. package/dist/tsconfig.build.tsbuildinfo +1 -1
  64. package/dist/util/src/Command.d.ts +1 -1
  65. package/dist/util/src/Command.d.ts.map +1 -1
  66. package/dist/util/src/Command.js +12 -5
  67. package/dist/util/src/Command.js.map +1 -1
  68. package/dist/util/src/Events.d.ts +3 -2
  69. package/dist/util/src/Events.d.ts.map +1 -1
  70. package/dist/util/src/Events.js.map +1 -1
  71. package/dist/util/src/Kinds.d.ts +1 -0
  72. package/dist/util/src/Kinds.d.ts.map +1 -1
  73. package/dist/util/src/Kinds.js +1 -0
  74. package/dist/util/src/Kinds.js.map +1 -1
  75. package/dist/util/src/RelaySelection.d.ts +5 -0
  76. package/dist/util/src/RelaySelection.d.ts.map +1 -1
  77. package/dist/util/src/RelaySelection.js.map +1 -1
  78. package/dist/util/src/Tags.d.ts +5 -0
  79. package/dist/util/src/Tags.d.ts.map +1 -1
  80. package/dist/util/src/Tags.js +3 -0
  81. package/dist/util/src/Tags.js.map +1 -1
  82. package/dist/util/src/index.d.ts +1 -0
  83. package/dist/util/src/index.d.ts.map +1 -1
  84. package/dist/util/src/index.js +1 -0
  85. package/dist/util/src/index.js.map +1 -1
  86. package/package.json +31 -12
  87. package/dist/net/src/adapter.d.ts +0 -47
  88. package/dist/net/src/adapter.d.ts.map +0 -1
  89. package/dist/net/src/adapter.js +0 -139
  90. package/dist/net/src/adapter.js.map +0 -1
  91. package/dist/net/src/auth.d.ts +0 -40
  92. package/dist/net/src/auth.d.ts.map +0 -1
  93. package/dist/net/src/auth.js +0 -131
  94. package/dist/net/src/auth.js.map +0 -1
  95. package/dist/net/src/context.d.ts +0 -10
  96. package/dist/net/src/context.d.ts.map +0 -1
  97. package/dist/net/src/context.js +0 -2
  98. package/dist/net/src/context.js.map +0 -1
  99. package/dist/net/src/count.d.ts +0 -30
  100. package/dist/net/src/count.d.ts.map +0 -1
  101. package/dist/net/src/count.js +0 -97
  102. package/dist/net/src/count.js.map +0 -1
  103. package/dist/net/src/diff.d.ts +0 -57
  104. package/dist/net/src/diff.d.ts.map +0 -1
  105. package/dist/net/src/diff.js +0 -169
  106. package/dist/net/src/diff.js.map +0 -1
  107. package/dist/net/src/index.d.ts +0 -17
  108. package/dist/net/src/index.d.ts.map +0 -1
  109. package/dist/net/src/index.js +0 -17
  110. package/dist/net/src/index.js.map +0 -1
  111. package/dist/net/src/message.d.ts +0 -106
  112. package/dist/net/src/message.d.ts.map +0 -1
  113. package/dist/net/src/message.js +0 -98
  114. package/dist/net/src/message.js.map +0 -1
  115. package/dist/net/src/multiplex.d.ts +0 -14
  116. package/dist/net/src/multiplex.d.ts.map +0 -1
  117. package/dist/net/src/multiplex.js +0 -219
  118. package/dist/net/src/multiplex.js.map +0 -1
  119. package/dist/net/src/negentropy.d.ts +0 -48
  120. package/dist/net/src/negentropy.d.ts.map +0 -1
  121. package/dist/net/src/negentropy.js +0 -528
  122. package/dist/net/src/negentropy.js.map +0 -1
  123. package/dist/net/src/policy.d.ts +0 -63
  124. package/dist/net/src/policy.d.ts.map +0 -1
  125. package/dist/net/src/policy.js +0 -388
  126. package/dist/net/src/policy.js.map +0 -1
  127. package/dist/net/src/pool.d.ts +0 -15
  128. package/dist/net/src/pool.d.ts.map +0 -1
  129. package/dist/net/src/pool.js +0 -51
  130. package/dist/net/src/pool.js.map +0 -1
  131. package/dist/net/src/publish.d.ts +0 -47
  132. package/dist/net/src/publish.d.ts.map +0 -1
  133. package/dist/net/src/publish.js +0 -112
  134. package/dist/net/src/publish.js.map +0 -1
  135. package/dist/net/src/repository.d.ts.map +0 -1
  136. package/dist/net/src/repository.js.map +0 -1
  137. package/dist/net/src/request.d.ts +0 -38
  138. package/dist/net/src/request.d.ts.map +0 -1
  139. package/dist/net/src/request.js +0 -220
  140. package/dist/net/src/request.js.map +0 -1
  141. package/dist/net/src/socket.d.ts +0 -52
  142. package/dist/net/src/socket.d.ts.map +0 -1
  143. package/dist/net/src/socket.js +0 -134
  144. package/dist/net/src/socket.js.map +0 -1
  145. package/dist/net/src/tracker.d.ts.map +0 -1
  146. package/dist/net/src/tracker.js.map +0 -1
  147. package/dist/net/src/util.d.ts +0 -18
  148. package/dist/net/src/util.d.ts.map +0 -1
  149. package/dist/net/src/util.js +0 -25
  150. package/dist/net/src/util.js.map +0 -1
  151. package/dist/net/src/wrapManager.d.ts +0 -34
  152. package/dist/net/src/wrapManager.d.ts.map +0 -1
  153. package/dist/net/src/wrapManager.js +0 -79
  154. package/dist/net/src/wrapManager.js.map +0 -1
  155. package/dist/store/src/repository.d.ts.map +0 -1
  156. package/dist/store/src/repository.js +0 -580
  157. package/dist/store/src/repository.js.map +0 -1
@@ -1,528 +0,0 @@
1
- // (C) 2023 Doug Hoyte. MIT license
2
- /* eslint-disable */
3
- // @ts-nocheck
4
- const PROTOCOL_VERSION = 0x61; // Version 1
5
- const ID_SIZE = 32;
6
- const FINGERPRINT_SIZE = 16;
7
- const Mode = {
8
- Skip: 0,
9
- Fingerprint: 1,
10
- IdList: 2,
11
- };
12
- class WrappedBuffer {
13
- constructor(buffer) {
14
- this._raw = new Uint8Array(buffer || 512);
15
- this.length = buffer ? buffer.length : 0;
16
- }
17
- unwrap() {
18
- return this._raw.subarray(0, this.length);
19
- }
20
- get capacity() {
21
- return this._raw.byteLength;
22
- }
23
- extend(buf) {
24
- if (buf._raw)
25
- buf = buf.unwrap();
26
- if (typeof buf.length !== "number")
27
- throw Error("bad length");
28
- const targetSize = buf.length + this.length;
29
- if (this.capacity < targetSize) {
30
- const oldRaw = this._raw;
31
- const newCapacity = Math.max(this.capacity * 2, targetSize);
32
- this._raw = new Uint8Array(newCapacity);
33
- this._raw.set(oldRaw);
34
- }
35
- this._raw.set(buf, this.length);
36
- this.length += buf.length;
37
- }
38
- shift() {
39
- const first = this._raw[0];
40
- this._raw = this._raw.subarray(1);
41
- this.length--;
42
- return first;
43
- }
44
- shiftN(n = 1) {
45
- const firstSubarray = this._raw.subarray(0, n);
46
- this._raw = this._raw.subarray(n);
47
- this.length -= n;
48
- return firstSubarray;
49
- }
50
- }
51
- function decodeVarInt(buf) {
52
- let res = 0;
53
- while (1) {
54
- if (buf.length === 0)
55
- throw Error("parse ends prematurely");
56
- const byte = buf.shift();
57
- res = (res << 7) | (byte & 127);
58
- if ((byte & 128) === 0)
59
- break;
60
- }
61
- return res;
62
- }
63
- function encodeVarInt(n) {
64
- if (n === 0)
65
- return new WrappedBuffer([0]);
66
- const o = [];
67
- while (n !== 0) {
68
- o.push(n & 127);
69
- n >>>= 7;
70
- }
71
- o.reverse();
72
- for (let i = 0; i < o.length - 1; i++)
73
- o[i] |= 128;
74
- return new WrappedBuffer(o);
75
- }
76
- function getByte(buf) {
77
- return getBytes(buf, 1)[0];
78
- }
79
- function getBytes(buf, n) {
80
- if (buf.length < n)
81
- throw Error("parse ends prematurely");
82
- return buf.shiftN(n);
83
- }
84
- class Accumulator {
85
- constructor() {
86
- this.setToZero();
87
- this.sha256 = async (slice) => new Uint8Array(await crypto.subtle.digest("SHA-256", slice));
88
- }
89
- setToZero() {
90
- this.buf = new Uint8Array(ID_SIZE);
91
- }
92
- add(otherBuf) {
93
- let currCarry = 0, nextCarry = 0;
94
- const p = new DataView(this.buf.buffer);
95
- const po = new DataView(otherBuf.buffer);
96
- for (let i = 0; i < 8; i++) {
97
- const offset = i * 4;
98
- const orig = p.getUint32(offset, true);
99
- const otherV = po.getUint32(offset, true);
100
- let next = orig;
101
- next += currCarry;
102
- next += otherV;
103
- if (next > 0xffffffff)
104
- nextCarry = 1;
105
- p.setUint32(offset, next & 0xffffffff, true);
106
- currCarry = nextCarry;
107
- nextCarry = 0;
108
- }
109
- }
110
- negate() {
111
- const p = new DataView(this.buf.buffer);
112
- for (let i = 0; i < 8; i++) {
113
- const offset = i * 4;
114
- p.setUint32(offset, ~p.getUint32(offset, true));
115
- }
116
- const one = new Uint8Array(ID_SIZE);
117
- one[0] = 1;
118
- this.add(one);
119
- }
120
- async getFingerprint(n) {
121
- const input = new WrappedBuffer();
122
- input.extend(this.buf);
123
- input.extend(encodeVarInt(n));
124
- const hash = await this.sha256(input.unwrap());
125
- return hash.subarray(0, FINGERPRINT_SIZE);
126
- }
127
- }
128
- class NegentropyStorageVector {
129
- constructor() {
130
- this.items = [];
131
- this.sealed = false;
132
- }
133
- insert(timestamp, id) {
134
- if (this.sealed)
135
- throw Error("already sealed");
136
- id = loadInputBuffer(id);
137
- if (id.byteLength !== ID_SIZE)
138
- throw Error("bad id size for added item");
139
- this.items.push({ timestamp, id });
140
- }
141
- seal() {
142
- if (this.sealed)
143
- throw Error("already sealed");
144
- this.sealed = true;
145
- this.items.sort(itemCompare);
146
- for (let i = 1; i < this.items.length; i++) {
147
- if (itemCompare(this.items[i - 1], this.items[i]) === 0)
148
- throw Error("duplicate item inserted");
149
- }
150
- }
151
- unseal() {
152
- this.sealed = false;
153
- }
154
- size() {
155
- this._checkSealed();
156
- return this.items.length;
157
- }
158
- getItem(i) {
159
- this._checkSealed();
160
- if (i >= this.items.length)
161
- throw Error("out of range");
162
- return this.items[i];
163
- }
164
- iterate(begin, end, cb) {
165
- this._checkSealed();
166
- this._checkBounds(begin, end);
167
- for (let i = begin; i < end; ++i) {
168
- if (!cb(this.items[i], i))
169
- break;
170
- }
171
- }
172
- findLowerBound(begin, end, bound) {
173
- this._checkSealed();
174
- this._checkBounds(begin, end);
175
- return this._binarySearch(this.items, begin, end, a => itemCompare(a, bound) < 0);
176
- }
177
- async fingerprint(begin, end) {
178
- const out = new Accumulator();
179
- out.setToZero();
180
- this.iterate(begin, end, (item, i) => {
181
- out.add(item.id);
182
- return true;
183
- });
184
- return await out.getFingerprint(end - begin);
185
- }
186
- _checkSealed() {
187
- if (!this.sealed)
188
- throw Error("not sealed");
189
- }
190
- _checkBounds(begin, end) {
191
- if (begin > end || end > this.items.length)
192
- throw Error("bad range");
193
- }
194
- _binarySearch(arr, first, last, cmp) {
195
- let count = last - first;
196
- while (count > 0) {
197
- let it = first;
198
- const step = Math.floor(count / 2);
199
- it += step;
200
- if (cmp(arr[it])) {
201
- first = ++it;
202
- count -= step + 1;
203
- }
204
- else {
205
- count = step;
206
- }
207
- }
208
- return first;
209
- }
210
- }
211
- class Negentropy {
212
- constructor(storage, frameSizeLimit = 0) {
213
- if (frameSizeLimit !== 0 && frameSizeLimit < 4096)
214
- throw Error("frameSizeLimit too small");
215
- this.storage = storage;
216
- this.frameSizeLimit = frameSizeLimit;
217
- this.lastTimestampIn = 0;
218
- this.lastTimestampOut = 0;
219
- }
220
- _bound(timestamp, id) {
221
- return { timestamp, id: id ? id : new Uint8Array(0) };
222
- }
223
- async initiate() {
224
- if (this.isInitiator)
225
- throw Error("already initiated");
226
- this.isInitiator = true;
227
- const output = new WrappedBuffer();
228
- output.extend([PROTOCOL_VERSION]);
229
- await this.splitRange(0, this.storage.size(), this._bound(Number.MAX_VALUE), output);
230
- return this._renderOutput(output);
231
- }
232
- setInitiator() {
233
- this.isInitiator = true;
234
- }
235
- async reconcile(query) {
236
- const haveIds = [], needIds = [];
237
- query = new WrappedBuffer(loadInputBuffer(query));
238
- this.lastTimestampIn = this.lastTimestampOut = 0; // reset for each message
239
- const fullOutput = new WrappedBuffer();
240
- fullOutput.extend([PROTOCOL_VERSION]);
241
- const protocolVersion = getByte(query);
242
- if (protocolVersion < 0x60 || protocolVersion > 0x6f)
243
- throw Error("invalid negentropy protocol version byte");
244
- if (protocolVersion !== PROTOCOL_VERSION) {
245
- if (this.isInitiator)
246
- throw Error("unsupported negentropy protocol version requested: " + (protocolVersion - 0x60));
247
- else
248
- return [this._renderOutput(fullOutput), haveIds, needIds];
249
- }
250
- const storageSize = this.storage.size();
251
- let prevBound = this._bound(0);
252
- let prevIndex = 0;
253
- let skip = false;
254
- while (query.length !== 0) {
255
- let o = new WrappedBuffer();
256
- const doSkip = () => {
257
- if (skip) {
258
- skip = false;
259
- o.extend(this.encodeBound(prevBound));
260
- o.extend(encodeVarInt(Mode.Skip));
261
- }
262
- };
263
- const currBound = this.decodeBound(query);
264
- const mode = decodeVarInt(query);
265
- const lower = prevIndex;
266
- let upper = this.storage.findLowerBound(prevIndex, storageSize, currBound);
267
- if (mode === Mode.Skip) {
268
- skip = true;
269
- }
270
- else if (mode === Mode.Fingerprint) {
271
- const theirFingerprint = getBytes(query, FINGERPRINT_SIZE);
272
- const ourFingerprint = await this.storage.fingerprint(lower, upper);
273
- if (compareUint8Array(theirFingerprint, ourFingerprint) !== 0) {
274
- doSkip();
275
- await this.splitRange(lower, upper, currBound, o);
276
- }
277
- else {
278
- skip = true;
279
- }
280
- }
281
- else if (mode === Mode.IdList) {
282
- const numIds = decodeVarInt(query);
283
- const theirElems = {}; // stringified Uint8Array -> original Uint8Array (or hex)
284
- for (let i = 0; i < numIds; i++) {
285
- const e = getBytes(query, ID_SIZE);
286
- if (this.isInitiator)
287
- theirElems[e] = e;
288
- }
289
- if (this.isInitiator) {
290
- skip = true;
291
- this.storage.iterate(lower, upper, item => {
292
- const k = item.id;
293
- if (!theirElems[k]) {
294
- // ID exists on our side, but not their side
295
- if (this.isInitiator)
296
- haveIds.push(this.wantUint8ArrayOutput ? k : uint8ArrayToHex(k));
297
- }
298
- else {
299
- // ID exists on both sides
300
- delete theirElems[k];
301
- }
302
- return true;
303
- });
304
- for (const v of Object.values(theirElems)) {
305
- // ID exists on their side, but not our side
306
- needIds.push(this.wantUint8ArrayOutput ? v : uint8ArrayToHex(v));
307
- }
308
- }
309
- else {
310
- doSkip();
311
- const responseIds = new WrappedBuffer();
312
- let numResponseIds = 0;
313
- let endBound = currBound;
314
- this.storage.iterate(lower, upper, (item, index) => {
315
- if (this.exceededFrameSizeLimit(fullOutput.length + responseIds.length)) {
316
- endBound = item;
317
- upper = index; // shrink upper so that remaining range gets correct fingerprint
318
- return false;
319
- }
320
- responseIds.extend(item.id);
321
- numResponseIds++;
322
- return true;
323
- });
324
- o.extend(this.encodeBound(endBound));
325
- o.extend(encodeVarInt(Mode.IdList));
326
- o.extend(encodeVarInt(numResponseIds));
327
- o.extend(responseIds);
328
- fullOutput.extend(o);
329
- o = new WrappedBuffer();
330
- }
331
- }
332
- else {
333
- throw Error("unexpected mode");
334
- }
335
- if (this.exceededFrameSizeLimit(fullOutput.length + o.length)) {
336
- // frameSizeLimit exceeded: Stop range processing and return a fingerprint for the remaining range
337
- const remainingFingerprint = await this.storage.fingerprint(upper, storageSize);
338
- fullOutput.extend(this.encodeBound(this._bound(Number.MAX_VALUE)));
339
- fullOutput.extend(encodeVarInt(Mode.Fingerprint));
340
- fullOutput.extend(remainingFingerprint);
341
- break;
342
- }
343
- else {
344
- fullOutput.extend(o);
345
- }
346
- prevIndex = upper;
347
- prevBound = currBound;
348
- }
349
- return [
350
- fullOutput.length === 1 && this.isInitiator ? null : this._renderOutput(fullOutput),
351
- haveIds,
352
- needIds,
353
- ];
354
- }
355
- async splitRange(lower, upper, upperBound, o) {
356
- const numElems = upper - lower;
357
- const buckets = 16;
358
- if (numElems < buckets * 2) {
359
- o.extend(this.encodeBound(upperBound));
360
- o.extend(encodeVarInt(Mode.IdList));
361
- o.extend(encodeVarInt(numElems));
362
- this.storage.iterate(lower, upper, item => {
363
- o.extend(item.id);
364
- return true;
365
- });
366
- }
367
- else {
368
- const itemsPerBucket = Math.floor(numElems / buckets);
369
- const bucketsWithExtra = numElems % buckets;
370
- let curr = lower;
371
- for (let i = 0; i < buckets; i++) {
372
- const bucketSize = itemsPerBucket + (i < bucketsWithExtra ? 1 : 0);
373
- const ourFingerprint = await this.storage.fingerprint(curr, curr + bucketSize);
374
- curr += bucketSize;
375
- let nextBound;
376
- if (curr === upper) {
377
- nextBound = upperBound;
378
- }
379
- else {
380
- let prevItem, currItem;
381
- this.storage.iterate(curr - 1, curr + 1, (item, index) => {
382
- if (index === curr - 1)
383
- prevItem = item;
384
- else
385
- currItem = item;
386
- return true;
387
- });
388
- nextBound = this.getMinimalBound(prevItem, currItem);
389
- }
390
- o.extend(this.encodeBound(nextBound));
391
- o.extend(encodeVarInt(Mode.Fingerprint));
392
- o.extend(ourFingerprint);
393
- }
394
- }
395
- }
396
- _renderOutput(o) {
397
- o = o.unwrap();
398
- if (!this.wantUint8ArrayOutput)
399
- o = uint8ArrayToHex(o);
400
- return o;
401
- }
402
- exceededFrameSizeLimit(n) {
403
- return this.frameSizeLimit && n > this.frameSizeLimit - 200;
404
- }
405
- // Decoding
406
- decodeTimestampIn(encoded) {
407
- let timestamp = decodeVarInt(encoded);
408
- timestamp = timestamp === 0 ? Number.MAX_VALUE : timestamp - 1;
409
- if (this.lastTimestampIn === Number.MAX_VALUE || timestamp === Number.MAX_VALUE) {
410
- this.lastTimestampIn = Number.MAX_VALUE;
411
- return Number.MAX_VALUE;
412
- }
413
- timestamp += this.lastTimestampIn;
414
- this.lastTimestampIn = timestamp;
415
- return timestamp;
416
- }
417
- decodeBound(encoded) {
418
- const timestamp = this.decodeTimestampIn(encoded);
419
- const len = decodeVarInt(encoded);
420
- if (len > ID_SIZE)
421
- throw Error("bound key too long");
422
- const id = getBytes(encoded, len);
423
- return { timestamp, id };
424
- }
425
- // Encoding
426
- encodeTimestampOut(timestamp) {
427
- if (timestamp === Number.MAX_VALUE) {
428
- this.lastTimestampOut = Number.MAX_VALUE;
429
- return encodeVarInt(0);
430
- }
431
- const temp = timestamp;
432
- timestamp -= this.lastTimestampOut;
433
- this.lastTimestampOut = temp;
434
- return encodeVarInt(timestamp + 1);
435
- }
436
- encodeBound(key) {
437
- const output = new WrappedBuffer();
438
- output.extend(this.encodeTimestampOut(key.timestamp));
439
- output.extend(encodeVarInt(key.id.length));
440
- output.extend(key.id);
441
- return output;
442
- }
443
- getMinimalBound(prev, curr) {
444
- if (curr.timestamp !== prev.timestamp) {
445
- return this._bound(curr.timestamp);
446
- }
447
- else {
448
- let sharedPrefixBytes = 0;
449
- const currKey = curr.id;
450
- const prevKey = prev.id;
451
- for (let i = 0; i < ID_SIZE; i++) {
452
- if (currKey[i] !== prevKey[i])
453
- break;
454
- sharedPrefixBytes++;
455
- }
456
- return this._bound(curr.timestamp, curr.id.subarray(0, sharedPrefixBytes + 1));
457
- }
458
- }
459
- }
460
- function loadInputBuffer(inp) {
461
- if (typeof inp === "string")
462
- inp = hexToUint8Array(inp);
463
- else if (__proto__ !== Uint8Array.prototype)
464
- inp = new Uint8Array(inp); // node Buffer?
465
- return inp;
466
- }
467
- function hexToUint8Array(h) {
468
- if (h.startsWith("0x"))
469
- h = h.substr(2);
470
- if (h.length % 2 === 1)
471
- throw Error("odd length of hex string");
472
- const arr = new Uint8Array(h.length / 2);
473
- for (let i = 0; i < arr.length; i++)
474
- arr[i] = parseInt(h.substr(i * 2, 2), 16);
475
- return arr;
476
- }
477
- const uint8ArrayToHexLookupTable = new Array(256);
478
- {
479
- const hexAlphabet = [
480
- "0",
481
- "1",
482
- "2",
483
- "3",
484
- "4",
485
- "5",
486
- "6",
487
- "7",
488
- "8",
489
- "9",
490
- "a",
491
- "b",
492
- "c",
493
- "d",
494
- "e",
495
- "f",
496
- ];
497
- for (let i = 0; i < 256; i++) {
498
- uint8ArrayToHexLookupTable[i] = hexAlphabet[(i >>> 4) & 0xf] + hexAlphabet[i & 0xf];
499
- }
500
- }
501
- function uint8ArrayToHex(arr) {
502
- let out = "";
503
- for (let i = 0, edx = arr.length; i < edx; i++) {
504
- out += uint8ArrayToHexLookupTable[arr[i]];
505
- }
506
- return out;
507
- }
508
- function compareUint8Array(a, b) {
509
- for (let i = 0; i < a.byteLength; i++) {
510
- if (a[i] < b[i])
511
- return -1;
512
- if (a[i] > b[i])
513
- return 1;
514
- }
515
- if (a.byteLength > b.byteLength)
516
- return 1;
517
- if (a.byteLength < b.byteLength)
518
- return -1;
519
- return 0;
520
- }
521
- function itemCompare(a, b) {
522
- if (a.timestamp === b.timestamp) {
523
- return compareUint8Array(a.id, b.id);
524
- }
525
- return a.timestamp - b.timestamp;
526
- }
527
- export { Negentropy, NegentropyStorageVector };
528
- //# sourceMappingURL=negentropy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"negentropy.js","sourceRoot":"","sources":["../../../../net/src/negentropy.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- import { StampedEvent, SignedEvent } from "@welshman/util";
2
- import { Socket, SocketPolicy } from "./socket.js";
3
- import type { Unsubscriber } from "./util.js";
4
- /**
5
- * Handles auth-related message management:
6
- * - Remembers messages sent before auth completes so they can be replayed once it succeeds
7
- * - Withholds the relay's auth-required refusals of those messages from the caller, since the
8
- * replay will be answered instead
9
- * - Hands a withheld answer over if the replay never happens: auth failed, or the message fell
10
- * out of the buffer
11
- * @param socket - a Socket object
12
- * @return a cleanup function
13
- */
14
- export declare const socketPolicyAuthBuffer: (socket: Socket) => () => void;
15
- /**
16
- * Drops subscriptions that are closed before they've been sent, along with the close
17
- * message itself. Besides saving a round trip, this keeps a prioritized close from
18
- * jumping ahead of its own req, which would leave the subscription open on the relay.
19
- * @param socket - a Socket object
20
- * @return a cleanup function
21
- */
22
- export declare const socketPolicyCancelUnsent: (socket: Socket) => () => void;
23
- /**
24
- * Auto-connects a closed socket when a message is sent unless there was a recent error
25
- * @param socket - a Socket object
26
- * @return a cleanup function
27
- */
28
- export declare const socketPolicyConnectOnSend: (socket: Socket) => () => void;
29
- /**
30
- * Owns a socket's lifecycle: closes it once nothing needs it, checks the relay is still there
31
- * when something does, reopens it, and catches up on what it missed.
32
- * @param socket - a Socket object
33
- * @return a cleanup function
34
- */
35
- export declare const socketPolicyLifecycle: (socket: Socket) => () => void;
36
- export type SocketPolicyAuthOptions = {
37
- sign: (event: StampedEvent) => Promise<SignedEvent>;
38
- shouldAuth?: (socket: Socket) => boolean;
39
- recheck?: {
40
- subscribe: (run: () => void) => Unsubscriber;
41
- };
42
- };
43
- /**
44
- * Factory function for a policy which may authenticate the socket
45
- * @param options - SocketPolicyAuthOptions object
46
- * @return a socket policy
47
- */
48
- export declare const makeSocketPolicyAuth: (options: SocketPolicyAuthOptions) => (socket: Socket) => () => void;
49
- export type SocketPolicyRefusalsOptions = {
50
- onAllowed: (socket: Socket) => void;
51
- onRefused: (socket: Socket, reason: string) => void;
52
- };
53
- /**
54
- * Factory function for a policy which reports how the relay answers each request and publish:
55
- * allowed when it serves one, refused when it turns one away as "restricted:" or "blocked:"
56
- * (NIP-01's reasons for lacking access). Other failures report nothing, including an
57
- * auth-required refusal, since the message is sent again once auth completes.
58
- * @param options - SocketPolicyRefusalsOptions object
59
- * @return a socket policy
60
- */
61
- export declare const makeSocketPolicyRefusals: (options: SocketPolicyRefusalsOptions) => (socket: Socket) => () => void;
62
- export declare const defaultSocketPolicies: SocketPolicy[];
63
- //# sourceMappingURL=policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../net/src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,YAAY,EAAE,WAAW,EAAsB,MAAM,gBAAgB,CAAA;AAwBzF,OAAO,EAAC,MAAM,EAA6B,YAAY,EAAC,MAAM,aAAa,CAAA;AAI3E,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,WAAW,CAAA;AAE3C;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,eAqHpD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,eA0BtD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,QAAQ,MAAM,eAqBvD,CAAA;AAmBD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,MAAM,eAyInD,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;IACnD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAA;IAExC,OAAO,CAAC,EAAE;QAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,YAAY,CAAA;KAAC,CAAA;CACzD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,uBAAuB,MAAM,QAAQ,MAAM,eAkBxF,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACpD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GAClC,SAAS,2BAA2B,MAAM,QAAQ,MAAM,eAyDxD,CAAA;AAGH,eAAO,MAAM,qBAAqB,EAAE,YAAY,EAM/C,CAAA"}