@welshman/util 0.0.18 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/src/Repository.cjs
CHANGED
|
@@ -24,18 +24,19 @@ class Repository extends lib_1.Emitter {
|
|
|
24
24
|
};
|
|
25
25
|
this.load = async (events, chunkSize = 1000) => {
|
|
26
26
|
this.clear();
|
|
27
|
+
const added = [];
|
|
27
28
|
for (const eventsChunk of (0, lib_1.chunk)(chunkSize, events)) {
|
|
28
29
|
for (const event of eventsChunk) {
|
|
29
|
-
this.publish(event, { shouldNotify: false })
|
|
30
|
+
if (this.publish(event, { shouldNotify: false })) {
|
|
31
|
+
added.push(event);
|
|
32
|
+
}
|
|
30
33
|
}
|
|
31
34
|
if (eventsChunk.length === chunkSize) {
|
|
32
35
|
await (0, lib_1.sleep)(1);
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
removed: new Set(this.deletes.keys()),
|
|
38
|
-
});
|
|
38
|
+
const removed = new Set(this.deletes.keys());
|
|
39
|
+
this.emit('update', { added, removed });
|
|
39
40
|
};
|
|
40
41
|
this.clear = () => {
|
|
41
42
|
const removed = new Set(this.eventsById.keys());
|
|
@@ -104,22 +105,26 @@ class Repository extends lib_1.Emitter {
|
|
|
104
105
|
return (0, lib_1.uniq)((0, lib_1.flatten)(result));
|
|
105
106
|
};
|
|
106
107
|
this.publish = (event, { shouldNotify = true } = {}) => {
|
|
108
|
+
var _a;
|
|
107
109
|
if (!(0, Events_1.isTrustedEvent)(event)) {
|
|
108
110
|
throw new Error("Invalid event published to Repository", event);
|
|
109
111
|
}
|
|
110
|
-
// If we've already seen this event, we're done
|
|
111
|
-
if (this.eventsById.get(event.id)) {
|
|
112
|
-
return;
|
|
112
|
+
// If we've already seen this event, or it's been deleted, we're done
|
|
113
|
+
if (this.eventsById.get(event.id) || this.isDeleted(event)) {
|
|
114
|
+
return false;
|
|
113
115
|
}
|
|
116
|
+
const removed = new Set();
|
|
114
117
|
const address = (0, Address_1.getAddress)(event);
|
|
115
118
|
const duplicate = this.eventsByAddress.get(address);
|
|
116
119
|
if (duplicate) {
|
|
117
120
|
// If our event is older than the duplicate, we're done
|
|
118
121
|
if (event.created_at <= duplicate.created_at) {
|
|
119
|
-
return;
|
|
122
|
+
return false;
|
|
120
123
|
}
|
|
121
124
|
// If our event is newer than what it's replacing, delete the old version
|
|
122
125
|
this.deletes.set(duplicate.id, event.created_at);
|
|
126
|
+
// Notify listeners that it's been removed
|
|
127
|
+
removed.add(duplicate.id);
|
|
123
128
|
}
|
|
124
129
|
// Add our new event by id
|
|
125
130
|
this.eventsById.set(event.id, event);
|
|
@@ -134,11 +139,9 @@ class Repository extends lib_1.Emitter {
|
|
|
134
139
|
// Update our timestamp and author indexes
|
|
135
140
|
this._updateIndex(this.eventsByDay, getDay(event.created_at), event, duplicate);
|
|
136
141
|
this._updateIndex(this.eventsByAuthor, event.pubkey, event, duplicate);
|
|
137
|
-
// Keep track of deleted events to notify about
|
|
138
|
-
const removed = new Set();
|
|
139
142
|
// Update our tag indexes
|
|
140
143
|
for (const tag of event.tags) {
|
|
141
|
-
if (tag[0].length === 1) {
|
|
144
|
+
if (((_a = tag[0]) === null || _a === void 0 ? void 0 : _a.length) === 1) {
|
|
142
145
|
this._updateIndex(this.eventsByTag, tag.slice(0, 2).join(':'), event, duplicate);
|
|
143
146
|
// If this is a delete event, the tag value is an id or address. Track when it was
|
|
144
147
|
// deleted so that replaceables can be restored.
|
|
@@ -151,12 +154,10 @@ class Repository extends lib_1.Emitter {
|
|
|
151
154
|
}
|
|
152
155
|
}
|
|
153
156
|
}
|
|
154
|
-
if (duplicate) {
|
|
155
|
-
removed.add(duplicate.id);
|
|
156
|
-
}
|
|
157
157
|
if (shouldNotify) {
|
|
158
|
-
this.emit('update', { added:
|
|
158
|
+
this.emit('update', { added: [event], removed });
|
|
159
159
|
}
|
|
160
|
+
return true;
|
|
160
161
|
};
|
|
161
162
|
this.isDeleted = (event) => (0, lib_1.max)([this.deletes.get(event.id) || 0, this.deletes.get((0, Address_1.getAddress)(event)) || 0]) > event.created_at;
|
|
162
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.cjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":";;;AAAA,uCAAgH;AAChH,uCAA8B;AAC9B,2CAA4C;AAC5C,yCAAsD;AACtD,2CAAoC;AAIvB,QAAA,GAAG,GAAG,KAAK,CAAA;AAExB,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,WAAG,CAAC,CAAA;AAEnD,MAAa,UAAW,SAAQ,aAAO;IAAvC;;QACE,eAAU,GAAG,IAAI,GAAG,EAAwB,CAAA;QAC5C,iBAAY,GAAG,IAAI,GAAG,EAAwB,CAAA;QAC9C,oBAAe,GAAG,IAAI,GAAG,EAAwB,CAAA;QACjD,gBAAW,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC/C,gBAAW,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC/C,mBAAc,GAAG,IAAI,GAAG,EAA0B,CAAA;QAClD,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;QAEnC,kBAAkB;QAElB,SAAI,GAAG,GAAG,EAAE;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7C,CAAC,CAAA;QAED,SAAI,GAAG,KAAK,EAAE,MAAsB,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE;YACxD,IAAI,CAAC,KAAK,EAAE,CAAA;YAEZ,KAAK,MAAM,WAAW,IAAI,IAAA,WAAK,EAAC,SAAS,EAAE,MAAM,CAAC,EAAE;gBAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Repository.cjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export declare class Repository extends Emitter {
|
|
|
20
20
|
}) => TrustedEvent[];
|
|
21
21
|
publish: (event: TrustedEvent, { shouldNotify }?: {
|
|
22
22
|
shouldNotify?: boolean | undefined;
|
|
23
|
-
}) =>
|
|
23
|
+
}) => boolean;
|
|
24
24
|
isDeleted: (event: TrustedEvent) => boolean;
|
|
25
25
|
_updateIndex<K>(m: Map<K, TrustedEvent[]>, k: K, e: TrustedEvent, duplicate?: TrustedEvent): void;
|
|
26
26
|
}
|
package/build/src/Repository.mjs
CHANGED
|
@@ -21,18 +21,19 @@ export class Repository extends Emitter {
|
|
|
21
21
|
};
|
|
22
22
|
this.load = async (events, chunkSize = 1000) => {
|
|
23
23
|
this.clear();
|
|
24
|
+
const added = [];
|
|
24
25
|
for (const eventsChunk of chunk(chunkSize, events)) {
|
|
25
26
|
for (const event of eventsChunk) {
|
|
26
|
-
this.publish(event, { shouldNotify: false })
|
|
27
|
+
if (this.publish(event, { shouldNotify: false })) {
|
|
28
|
+
added.push(event);
|
|
29
|
+
}
|
|
27
30
|
}
|
|
28
31
|
if (eventsChunk.length === chunkSize) {
|
|
29
32
|
await sleep(1);
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
|
-
this.
|
|
33
|
-
|
|
34
|
-
removed: new Set(this.deletes.keys()),
|
|
35
|
-
});
|
|
35
|
+
const removed = new Set(this.deletes.keys());
|
|
36
|
+
this.emit('update', { added, removed });
|
|
36
37
|
};
|
|
37
38
|
this.clear = () => {
|
|
38
39
|
const removed = new Set(this.eventsById.keys());
|
|
@@ -101,22 +102,26 @@ export class Repository extends Emitter {
|
|
|
101
102
|
return uniq(flatten(result));
|
|
102
103
|
};
|
|
103
104
|
this.publish = (event, { shouldNotify = true } = {}) => {
|
|
105
|
+
var _a;
|
|
104
106
|
if (!isTrustedEvent(event)) {
|
|
105
107
|
throw new Error("Invalid event published to Repository", event);
|
|
106
108
|
}
|
|
107
|
-
// If we've already seen this event, we're done
|
|
108
|
-
if (this.eventsById.get(event.id)) {
|
|
109
|
-
return;
|
|
109
|
+
// If we've already seen this event, or it's been deleted, we're done
|
|
110
|
+
if (this.eventsById.get(event.id) || this.isDeleted(event)) {
|
|
111
|
+
return false;
|
|
110
112
|
}
|
|
113
|
+
const removed = new Set();
|
|
111
114
|
const address = getAddress(event);
|
|
112
115
|
const duplicate = this.eventsByAddress.get(address);
|
|
113
116
|
if (duplicate) {
|
|
114
117
|
// If our event is older than the duplicate, we're done
|
|
115
118
|
if (event.created_at <= duplicate.created_at) {
|
|
116
|
-
return;
|
|
119
|
+
return false;
|
|
117
120
|
}
|
|
118
121
|
// If our event is newer than what it's replacing, delete the old version
|
|
119
122
|
this.deletes.set(duplicate.id, event.created_at);
|
|
123
|
+
// Notify listeners that it's been removed
|
|
124
|
+
removed.add(duplicate.id);
|
|
120
125
|
}
|
|
121
126
|
// Add our new event by id
|
|
122
127
|
this.eventsById.set(event.id, event);
|
|
@@ -131,11 +136,9 @@ export class Repository extends Emitter {
|
|
|
131
136
|
// Update our timestamp and author indexes
|
|
132
137
|
this._updateIndex(this.eventsByDay, getDay(event.created_at), event, duplicate);
|
|
133
138
|
this._updateIndex(this.eventsByAuthor, event.pubkey, event, duplicate);
|
|
134
|
-
// Keep track of deleted events to notify about
|
|
135
|
-
const removed = new Set();
|
|
136
139
|
// Update our tag indexes
|
|
137
140
|
for (const tag of event.tags) {
|
|
138
|
-
if (tag[0].length === 1) {
|
|
141
|
+
if (((_a = tag[0]) === null || _a === void 0 ? void 0 : _a.length) === 1) {
|
|
139
142
|
this._updateIndex(this.eventsByTag, tag.slice(0, 2).join(':'), event, duplicate);
|
|
140
143
|
// If this is a delete event, the tag value is an id or address. Track when it was
|
|
141
144
|
// deleted so that replaceables can be restored.
|
|
@@ -148,12 +151,10 @@ export class Repository extends Emitter {
|
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
}
|
|
151
|
-
if (duplicate) {
|
|
152
|
-
removed.add(duplicate.id);
|
|
153
|
-
}
|
|
154
154
|
if (shouldNotify) {
|
|
155
|
-
this.emit('update', { added:
|
|
155
|
+
this.emit('update', { added: [event], removed });
|
|
156
156
|
}
|
|
157
|
+
return true;
|
|
157
158
|
};
|
|
158
159
|
this.isDeleted = (event) => max([this.deletes.get(event.id) || 0, this.deletes.get(getAddress(event)) || 0]) > event.created_at;
|
|
159
160
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.mjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe;OACzG,EAAC,MAAM,EAAC;OACR,EAAC,KAAK,EAAE,WAAW,EAAC;OACpB,EAAC,aAAa,EAAE,cAAc,EAAC;OAC/B,EAAC,UAAU,EAAC;AAInB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAA;AAExB,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAA;AAEnD,MAAM,OAAO,UAAW,SAAQ,OAAO;IAAvC;;QACE,eAAU,GAAG,IAAI,GAAG,EAAwB,CAAA;QAC5C,iBAAY,GAAG,IAAI,GAAG,EAAwB,CAAA;QAC9C,oBAAe,GAAG,IAAI,GAAG,EAAwB,CAAA;QACjD,gBAAW,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC/C,gBAAW,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC/C,mBAAc,GAAG,IAAI,GAAG,EAA0B,CAAA;QAClD,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;QAEnC,kBAAkB;QAElB,SAAI,GAAG,GAAG,EAAE;YACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC7C,CAAC,CAAA;QAED,SAAI,GAAG,KAAK,EAAE,MAAsB,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE;YACxD,IAAI,CAAC,KAAK,EAAE,CAAA;YAEZ,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;gBAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Repository.mjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":"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"}
|