@welshman/util 0.0.2 → 0.0.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 (44) hide show
  1. package/build/Address.cjs +3 -3
  2. package/build/Address.cjs.map +1 -1
  3. package/build/Address.mjs +4 -4
  4. package/build/Address.mjs.map +1 -1
  5. package/build/Filters.cjs +36 -4
  6. package/build/Filters.cjs.map +1 -1
  7. package/build/Filters.d.ts +3 -2
  8. package/build/Filters.mjs +33 -2
  9. package/build/Filters.mjs.map +1 -1
  10. package/build/Kinds.cjs +78 -75
  11. package/build/Kinds.cjs.map +1 -1
  12. package/build/Kinds.d.ts +76 -73
  13. package/build/Kinds.mjs +77 -73
  14. package/build/Kinds.mjs.map +1 -1
  15. package/build/Relay.cjs +14 -117
  16. package/build/Relay.cjs.map +1 -1
  17. package/build/Relay.d.ts +6 -16
  18. package/build/Relay.mjs +15 -118
  19. package/build/Relay.mjs.map +1 -1
  20. package/build/Relays.cjs +3 -1
  21. package/build/Relays.cjs.map +1 -1
  22. package/build/Relays.d.ts +2 -0
  23. package/build/Relays.mjs +2 -0
  24. package/build/Relays.mjs.map +1 -1
  25. package/build/Repository.cjs +198 -0
  26. package/build/Repository.cjs.map +1 -0
  27. package/build/Repository.d.ts +34 -0
  28. package/build/Repository.mjs +194 -0
  29. package/build/Repository.mjs.map +1 -0
  30. package/build/Router.cjs +16 -15
  31. package/build/Router.cjs.map +1 -1
  32. package/build/Router.d.ts +56 -10
  33. package/build/Router.mjs +16 -15
  34. package/build/Router.mjs.map +1 -1
  35. package/build/Tags.cjs +14 -14
  36. package/build/Tags.cjs.map +1 -1
  37. package/build/Tags.d.ts +1 -6
  38. package/build/Tags.mjs +16 -16
  39. package/build/Tags.mjs.map +1 -1
  40. package/build/index.cjs +1 -0
  41. package/build/index.cjs.map +1 -1
  42. package/build/index.d.ts +1 -0
  43. package/build/index.mjs +1 -0
  44. package/package.json +2 -3
package/build/Kinds.mjs CHANGED
@@ -4,77 +4,81 @@ export const isEphemeralKind = kinds.isEphemeralKind;
4
4
  export const isPlainReplaceableKind = kinds.isReplaceableKind;
5
5
  export const isParameterizedReplaceableKind = kinds.isParameterizedReplaceableKind;
6
6
  export const isReplaceableKind = (kind) => isPlainReplaceableKind(kind) || isParameterizedReplaceableKind(kind);
7
- export const PROFILE = 0;
8
- export const NOTE = 1;
9
- export const RELAY = 2;
10
- export const DM = 4;
11
- export const EVENT_DELETION = 5;
12
- export const REPOST = 6;
13
- export const REACTION = 7;
14
- export const BADGE_AWARD = 8;
15
- export const GENERIC_REPOST = 16;
16
- export const CHANNEL_CREATION = 40;
17
- export const CHANNEL_METADATA = 41;
18
- export const CHANNEL_MESSAGE = 42;
19
- export const CHANNEL_HIDE_MESSAGE = 43;
20
- export const CHANNEL_MUTE_USER = 44;
21
- export const OPEN_TIMESTAMP = 1040;
22
- export const GIFT_WRAP = 1059;
23
- export const FILE_METADATA = 1063;
24
- export const LIVE_CHAT_MESSAGE = 1311;
25
- export const REMIX = 1808;
26
- export const PROBLEM_TRACKER = 1971;
27
- export const REPORT = 1984;
28
- export const LABEL = 1985;
29
- export const COMMUNITY_POST_APPROVAL = 4550;
30
- export const JOB_REQUEST = 5999;
31
- export const JOB_RESULT = 6999;
32
- export const JOB_FEEDBACK = 7000;
33
- export const ZAP_GOAL = 9041;
34
- export const ZAP_REQUEST = 9734;
35
- export const ZAP_RESPONSE = 9735;
36
- export const HIGHLIGHT = 9802;
37
- export const USER_LIST_MUTES = 10000;
38
- export const USER_LIST_PINS = 10001;
39
- export const USER_LIST_RELAYS = 10002;
40
- export const USER_LIST_BOOKMARKS = 10003;
41
- export const USER_LIST_COMMUNITIES = 10004;
42
- export const USER_LIST_PUBLIC_CHATS = 10005;
43
- export const USER_LIST_BLOCKED_RELAYS = 10006;
44
- export const USER_LIST_SEARCH_RELAYS = 10007;
45
- export const USER_LIST_INTERESTS = 10015;
46
- export const USER_LIST_EMOJIS = 10030;
47
- export const LIGHTNING_PUB_RPC = 21000;
48
- export const CLIENT_AUTH = 22242;
49
- export const NWC_INFO = 13194;
50
- export const NWC_REQUEST = 23194;
51
- export const NWC_RESPONSE = 23195;
52
- export const NOSTR_CONNECT = 24133;
53
- export const HTTP_AUTH = 27235;
54
- export const LIST_FOLLOWS = 3;
55
- export const LIST_PEOPLE = 30000;
56
- export const LIST_GENERIC = 30001;
57
- export const LIST_RELAYS = 30002;
58
- export const LIST_BOOKMARKS = 30003;
59
- export const LIST_CURATIONS = 30004;
60
- export const PROFILE_BADGES = 30008;
61
- export const BADGE_DEFINITION = 30009;
62
- export const LIST_EMOJIS = 30030;
63
- export const LIST_INTERESTS = 30015;
64
- export const LONG_FORM_ARTICLE = 30023;
65
- export const LONG_FORM_ARTICLE_DRAFT = 30024;
66
- export const APPLICATION = 30078;
67
- export const LIVE_EVENT = 30311;
68
- export const USER_STATUSES = 30315;
69
- export const CLASSIFIED_LISTING = 30402;
70
- export const DRAFT_CLASSIFIED_LISTING = 30403;
71
- export const AUDIO = 31337;
72
- export const CALENDAR = 31924;
73
- export const CALENDAR_EVENT_DATE = 31922;
74
- export const CALENDAR_EVENT_TIME = 31923;
75
- export const CALENDAR_EVENT_RSVP = 31925;
76
- export const HANDLER_RECOMMENDATION = 31989;
77
- export const HANDLER_INFORMATION = 31990;
78
- export const COMMUNITY_DEFINITION = 34550;
79
- export const GROUP_DEFINITION = 35834;
7
+ export var Kind;
8
+ (function (Kind) {
9
+ Kind[Kind["Profile"] = 0] = "Profile";
10
+ Kind[Kind["Note"] = 1] = "Note";
11
+ Kind[Kind["Relay"] = 2] = "Relay";
12
+ Kind[Kind["DM"] = 4] = "DM";
13
+ Kind[Kind["Delete"] = 5] = "Delete";
14
+ Kind[Kind["Repost"] = 6] = "Repost";
15
+ Kind[Kind["Reaction"] = 7] = "Reaction";
16
+ Kind[Kind["BadgeAward"] = 8] = "BadgeAward";
17
+ Kind[Kind["GenericRepost"] = 16] = "GenericRepost";
18
+ Kind[Kind["ChannelCreation"] = 40] = "ChannelCreation";
19
+ Kind[Kind["ChannelMetadata"] = 41] = "ChannelMetadata";
20
+ Kind[Kind["ChannelMessage"] = 42] = "ChannelMessage";
21
+ Kind[Kind["ChannelHideMessage"] = 43] = "ChannelHideMessage";
22
+ Kind[Kind["ChannelMuteUser"] = 44] = "ChannelMuteUser";
23
+ Kind[Kind["OpenTimestamp"] = 1040] = "OpenTimestamp";
24
+ Kind[Kind["GiftWrap"] = 1059] = "GiftWrap";
25
+ Kind[Kind["FileMetadata"] = 1063] = "FileMetadata";
26
+ Kind[Kind["LiveChatMessage"] = 1311] = "LiveChatMessage";
27
+ Kind[Kind["Remix"] = 1808] = "Remix";
28
+ Kind[Kind["ProblemTracker"] = 1971] = "ProblemTracker";
29
+ Kind[Kind["Report"] = 1984] = "Report";
30
+ Kind[Kind["Label"] = 1985] = "Label";
31
+ Kind[Kind["CommunityPostApproval"] = 4550] = "CommunityPostApproval";
32
+ Kind[Kind["JobRequest"] = 5999] = "JobRequest";
33
+ Kind[Kind["JobResult"] = 6999] = "JobResult";
34
+ Kind[Kind["JobFeedback"] = 7000] = "JobFeedback";
35
+ Kind[Kind["ZapGoal"] = 9041] = "ZapGoal";
36
+ Kind[Kind["ZapRequest"] = 9734] = "ZapRequest";
37
+ Kind[Kind["ZapResponse"] = 9735] = "ZapResponse";
38
+ Kind[Kind["Highlight"] = 9802] = "Highlight";
39
+ Kind[Kind["UserListMutes"] = 10000] = "UserListMutes";
40
+ Kind[Kind["UserListPins"] = 10001] = "UserListPins";
41
+ Kind[Kind["UserListRelays"] = 10002] = "UserListRelays";
42
+ Kind[Kind["UserListBookmarks"] = 10003] = "UserListBookmarks";
43
+ Kind[Kind["UserListCommunities"] = 10004] = "UserListCommunities";
44
+ Kind[Kind["UserListPublicChats"] = 10005] = "UserListPublicChats";
45
+ Kind[Kind["UserListBlockedRelays"] = 10006] = "UserListBlockedRelays";
46
+ Kind[Kind["UserListSearchRelays"] = 10007] = "UserListSearchRelays";
47
+ Kind[Kind["UserListInterests"] = 10015] = "UserListInterests";
48
+ Kind[Kind["UserListEmojis"] = 10030] = "UserListEmojis";
49
+ Kind[Kind["LightningPubRpc"] = 21000] = "LightningPubRpc";
50
+ Kind[Kind["ClientAuth"] = 22242] = "ClientAuth";
51
+ Kind[Kind["NWCInfo"] = 13194] = "NWCInfo";
52
+ Kind[Kind["NWCRequest"] = 23194] = "NWCRequest";
53
+ Kind[Kind["NWCResponse"] = 23195] = "NWCResponse";
54
+ Kind[Kind["NostrConnect"] = 24133] = "NostrConnect";
55
+ Kind[Kind["HttpAuth"] = 27235] = "HttpAuth";
56
+ Kind[Kind["ListFollows"] = 3] = "ListFollows";
57
+ Kind[Kind["ListPeople"] = 30000] = "ListPeople";
58
+ Kind[Kind["ListGeneric"] = 30001] = "ListGeneric";
59
+ Kind[Kind["ListRelays"] = 30002] = "ListRelays";
60
+ Kind[Kind["ListBookmarks"] = 30003] = "ListBookmarks";
61
+ Kind[Kind["ListCurations"] = 30004] = "ListCurations";
62
+ Kind[Kind["ProfileBadges"] = 30008] = "ProfileBadges";
63
+ Kind[Kind["BadgeDefinition"] = 30009] = "BadgeDefinition";
64
+ Kind[Kind["ListEmojis"] = 30030] = "ListEmojis";
65
+ Kind[Kind["ListInterests"] = 30015] = "ListInterests";
66
+ Kind[Kind["LongFormArticle"] = 30023] = "LongFormArticle";
67
+ Kind[Kind["LongFormArticleDraft"] = 30024] = "LongFormArticleDraft";
68
+ Kind[Kind["Application"] = 30078] = "Application";
69
+ Kind[Kind["LiveEvent"] = 30311] = "LiveEvent";
70
+ Kind[Kind["UserStatuses"] = 30315] = "UserStatuses";
71
+ Kind[Kind["ClassifiedListing"] = 30402] = "ClassifiedListing";
72
+ Kind[Kind["DraftClassifiedListing"] = 30403] = "DraftClassifiedListing";
73
+ Kind[Kind["Audio"] = 31337] = "Audio";
74
+ Kind[Kind["Feed"] = 31890] = "Feed";
75
+ Kind[Kind["Calendar"] = 31924] = "Calendar";
76
+ Kind[Kind["CalendarEventDate"] = 31922] = "CalendarEventDate";
77
+ Kind[Kind["CalendarEventTime"] = 31923] = "CalendarEventTime";
78
+ Kind[Kind["CalendarEventRsvp"] = 31925] = "CalendarEventRsvp";
79
+ Kind[Kind["HandlerRecommendation"] = 31989] = "HandlerRecommendation";
80
+ Kind[Kind["HandlerInformation"] = 31990] = "HandlerInformation";
81
+ Kind[Kind["CommunityDefinition"] = 34550] = "CommunityDefinition";
82
+ Kind[Kind["GroupDefinition"] = 35834] = "GroupDefinition";
83
+ })(Kind || (Kind = {}));
80
84
  //# sourceMappingURL=Kinds.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Kinds.mjs","sourceRoot":"","sources":["../Kinds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Kinds.mjs","sourceRoot":"","sources":["../Kinds.ts"],"names":[],"mappings":"OAAO,EAAC,KAAK,EAAC,MAAM,aAAa;AAEjC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC,iBAAiB,CAAA;AAC7D,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC,8BAA8B,CAAA;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE,CAChD,sBAAsB,CAAC,IAAI,CAAC,IAAI,8BAA8B,CAAC,IAAI,CAAC,CAAA;AAEtE,MAAM,CAAN,IAAY,IA2EX;AA3ED,WAAY,IAAI;IACd,qCAAW,CAAA;IACX,+BAAQ,CAAA;IACR,iCAAS,CAAA;IACT,2BAAM,CAAA;IACN,mCAAU,CAAA;IACV,mCAAU,CAAA;IACV,uCAAY,CAAA;IACZ,2CAAc,CAAA;IACd,kDAAkB,CAAA;IAClB,sDAAoB,CAAA;IACpB,sDAAoB,CAAA;IACpB,oDAAmB,CAAA;IACnB,4DAAuB,CAAA;IACvB,sDAAoB,CAAA;IACpB,oDAAoB,CAAA;IACpB,0CAAe,CAAA;IACf,kDAAmB,CAAA;IACnB,wDAAsB,CAAA;IACtB,oCAAY,CAAA;IACZ,sDAAqB,CAAA;IACrB,sCAAa,CAAA;IACb,oCAAY,CAAA;IACZ,oEAA4B,CAAA;IAC5B,8CAAiB,CAAA;IACjB,4CAAgB,CAAA;IAChB,gDAAkB,CAAA;IAClB,wCAAc,CAAA;IACd,8CAAiB,CAAA;IACjB,gDAAkB,CAAA;IAClB,4CAAgB,CAAA;IAChB,qDAAqB,CAAA;IACrB,mDAAoB,CAAA;IACpB,uDAAsB,CAAA;IACtB,6DAAyB,CAAA;IACzB,iEAA2B,CAAA;IAC3B,iEAA2B,CAAA;IAC3B,qEAA6B,CAAA;IAC7B,mEAA4B,CAAA;IAC5B,6DAAyB,CAAA;IACzB,uDAAsB,CAAA;IACtB,yDAAuB,CAAA;IACvB,+CAAkB,CAAA;IAClB,yCAAe,CAAA;IACf,+CAAkB,CAAA;IAClB,iDAAmB,CAAA;IACnB,mDAAoB,CAAA;IACpB,2CAAgB,CAAA;IAChB,6CAAe,CAAA;IACf,+CAAkB,CAAA;IAClB,iDAAmB,CAAA;IACnB,+CAAkB,CAAA;IAClB,qDAAqB,CAAA;IACrB,qDAAqB,CAAA;IACrB,qDAAqB,CAAA;IACrB,yDAAuB,CAAA;IACvB,+CAAkB,CAAA;IAClB,qDAAqB,CAAA;IACrB,yDAAuB,CAAA;IACvB,mEAA4B,CAAA;IAC5B,iDAAmB,CAAA;IACnB,6CAAiB,CAAA;IACjB,mDAAoB,CAAA;IACpB,6DAAyB,CAAA;IACzB,uEAA8B,CAAA;IAC9B,qCAAa,CAAA;IACb,mCAAY,CAAA;IACZ,2CAAgB,CAAA;IAChB,6DAAyB,CAAA;IACzB,6DAAyB,CAAA;IACzB,6DAAyB,CAAA;IACzB,qEAA6B,CAAA;IAC7B,+DAA0B,CAAA;IAC1B,iEAA2B,CAAA;IAC3B,yDAAuB,CAAA;AACzB,CAAC,EA3EW,IAAI,KAAJ,IAAI,QA2Ef"}
package/build/Relay.cjs CHANGED
@@ -1,44 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Relay = exports.DAY = void 0;
3
+ exports.Relay = void 0;
4
4
  const lib_1 = require("@welshman/lib");
5
5
  const Filters_1 = require("./Filters.cjs");
6
- const Address_1 = require("./Address.cjs");
7
- const Events_1 = require("./Events.cjs");
8
- exports.DAY = 86400;
9
- const getDay = (ts) => Math.floor(ts / exports.DAY);
10
6
  class Relay extends lib_1.Emitter {
11
- constructor() {
12
- super(...arguments);
13
- this.eventsById = new Map();
14
- this.eventsByAddress = new Map();
15
- this.eventsByTag = new Map();
16
- this.eventsByDay = new Map();
17
- this.eventsByAuthor = new Map();
7
+ constructor(repository) {
8
+ super();
9
+ this.repository = repository;
18
10
  this.subs = new Map();
19
- this.deletes = new Map();
20
- }
21
- dump() {
22
- return Array.from(this.eventsById.values());
23
- }
24
- async load(events, chunkSize = 1000) {
25
- for (const eventsChunk of (0, lib_1.chunk)(chunkSize, events)) {
26
- for (const event of eventsChunk) {
27
- this._addEvent(event);
28
- }
29
- if (eventsChunk.length === chunkSize) {
30
- await (0, lib_1.sleep)(1);
31
- }
32
- }
33
11
  }
34
12
  send(type, ...message) {
35
13
  switch (type) {
36
- case 'EVENT': return this._onEVENT(message);
37
- case 'CLOSE': return this._onCLOSE(message);
38
- case 'REQ': return this._onREQ(message);
14
+ case 'EVENT': return this.handleEVENT(message);
15
+ case 'CLOSE': return this.handleCLOSE(message);
16
+ case 'REQ': return this.handleREQ(message);
39
17
  }
40
18
  }
41
- _onEVENT([json]) {
19
+ handleEVENT([json]) {
42
20
  let event;
43
21
  try {
44
22
  event = JSON.parse(json);
@@ -46,19 +24,10 @@ class Relay extends lib_1.Emitter {
46
24
  catch (e) {
47
25
  return;
48
26
  }
49
- const duplicateById = this.eventsById.get(event.id);
50
- if (duplicateById) {
51
- return;
52
- }
53
- const hasAddress = (0, Events_1.isReplaceable)(event);
54
- const address = (0, Address_1.encodeAddress)((0, Address_1.addressFromEvent)(event));
55
- const duplicateByAddress = hasAddress ? this.eventsByAddress.get(address) : undefined;
56
- if (duplicateByAddress && duplicateByAddress.created_at >= event.created_at) {
57
- return;
58
- }
59
- this._addEvent(event, duplicateByAddress);
27
+ this.repository.publish(event);
60
28
  this.emit('OK', event.id, true, "");
61
- if (!this._isDeleted(event)) {
29
+ if (!this.repository.isDeleted(event)) {
30
+ const json = JSON.stringify(event);
62
31
  for (const [subId, filters] of this.subs.entries()) {
63
32
  if ((0, Filters_1.matchFilters)(filters, event)) {
64
33
  this.emit('EVENT', subId, json);
@@ -66,88 +35,16 @@ class Relay extends lib_1.Emitter {
66
35
  }
67
36
  }
68
37
  }
69
- _onCLOSE([subId]) {
38
+ handleCLOSE([subId]) {
70
39
  this.subs.delete(subId);
71
40
  }
72
- _onREQ([subId, ...filters]) {
41
+ handleREQ([subId, ...filters]) {
73
42
  this.subs.set(subId, filters);
74
- const result = new Set();
75
- for (let filter of filters) {
76
- let events = this.eventsById.values();
77
- if (filter.ids) {
78
- filter = (0, lib_1.omit)(['ids'], filter);
79
- events = filter.ids.map(id => this.eventsById.get(id)).filter(lib_1.identity);
80
- }
81
- else if (filter.authors) {
82
- filter = (0, lib_1.omit)(['authors'], filter);
83
- events = (0, lib_1.uniq)(filter.authors.flatMap(pubkey => this.eventsByAuthor.get(pubkey) || []));
84
- }
85
- else if (filter.since || filter.until) {
86
- const sinceDay = getDay(filter.since || 0);
87
- const untilDay = getDay(filter.since || (0, lib_1.now)());
88
- filter = (0, lib_1.omit)(['since', 'until'], filter);
89
- events = (0, lib_1.uniq)(Array.from((0, lib_1.range)(sinceDay, untilDay))
90
- .flatMap((day) => this.eventsByDay.get(day) || []));
91
- }
92
- else {
93
- for (const [k, values] of Object.entries(filter)) {
94
- if (!k.startsWith('#') || k.length !== 2) {
95
- continue;
96
- }
97
- filter = (0, lib_1.omit)([k], filter);
98
- events = (0, lib_1.uniq)(values.flatMap(v => this.eventsByTag.get(`${k[1]}:${v}`) || []));
99
- break;
100
- }
101
- }
102
- for (const event of events) {
103
- if (!this._isDeleted(event) && (0, Filters_1.matchFilter)(filter, event)) {
104
- result.add(event);
105
- }
106
- }
107
- }
108
- for (const event of result) {
43
+ for (const event of this.repository.query(filters)) {
109
44
  this.emit('EVENT', subId, JSON.stringify(event));
110
45
  }
111
46
  this.emit('EOSE', subId);
112
47
  }
113
- _isDeleted(event) {
114
- const idDeletedAt = this.deletes.get(event.id) || 0;
115
- if (idDeletedAt > event.created_at) {
116
- return true;
117
- }
118
- if ((0, Events_1.isReplaceable)(event)) {
119
- const address = (0, Address_1.encodeAddress)((0, Address_1.addressFromEvent)(event));
120
- const addressDeletedAt = this.deletes.get(address) || 0;
121
- if (addressDeletedAt > event.created_at) {
122
- return true;
123
- }
124
- }
125
- return false;
126
- }
127
- _addEvent(event, duplicate) {
128
- this.eventsById.set(event.id, event);
129
- if ((0, Events_1.isReplaceable)(event)) {
130
- this.eventsByAddress.set((0, Address_1.encodeAddress)((0, Address_1.addressFromEvent)(event)), event);
131
- }
132
- this._updateIndex(this.eventsByDay, getDay(event.created_at), event, duplicate);
133
- this._updateIndex(this.eventsByAuthor, event.pubkey, event, duplicate);
134
- for (const tag of event.tags) {
135
- if (tag[0].length === 1) {
136
- this._updateIndex(this.eventsByTag, tag.slice(0, 2).join(':'), event, duplicate);
137
- if (event.kind === 5) {
138
- this.deletes.set(tag[1], Math.max(event.created_at, this.deletes.get(tag[1]) || 0));
139
- }
140
- }
141
- }
142
- }
143
- _updateIndex(m, k, e, duplicate) {
144
- let a = m.get(k) || [];
145
- if (duplicate) {
146
- a = a.filter((x) => x !== duplicate);
147
- }
148
- a.push(e);
149
- m.set(k, a);
150
- }
151
48
  }
152
49
  exports.Relay = Relay;
153
50
  //# sourceMappingURL=Relay.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Relay.cjs","sourceRoot":"","sources":["../Relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Relay.cjs","sourceRoot":"","sources":["../Relay.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,2CAAsC;AAKtC,MAAa,KAAuB,SAAQ,aAAO;IAGjD,YAAqB,UAAyB;QAC5C,KAAK,EAAE,CAAA;QADY,eAAU,GAAV,UAAU,CAAe;QAF9C,SAAI,GAAG,IAAI,GAAG,EAAoB,CAAA;IAIlC,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,GAAG,OAAc;QAClC,QAAO,IAAI,EAAE;YACX,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAmB,CAAC,CAAA;YAC1D,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAmB,CAAC,CAAA;YAC1D,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAgC,CAAC,CAAA;SACpE;IACH,CAAC;IAED,WAAW,CAAC,CAAC,IAAI,CAAW;QAC1B,IAAI,KAAQ,CAAA;QACZ,IAAI;YACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACzB;QAAC,OAAO,CAAC,EAAE;YACV,OAAM;SACP;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAElC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClD,IAAI,IAAA,sBAAY,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAChC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;iBAChC;aACF;SACF;IACH,CAAC;IAED,WAAW,CAAC,CAAC,KAAK,CAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAwB;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAE7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;SACjD;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;CACF;AAnDD,sBAmDC"}
package/build/Relay.d.ts CHANGED
@@ -1,23 +1,13 @@
1
1
  import { Emitter } from '@welshman/lib';
2
+ import type { Repository } from './Repository';
2
3
  import type { Filter } from './Filters';
3
4
  import type { Rumor } from './Events';
4
- export declare const DAY = 86400;
5
- export type Message = [string, ...any[]];
6
5
  export declare class Relay<E extends Rumor> extends Emitter {
7
- eventsById: Map<string, E>;
8
- eventsByAddress: Map<string, E>;
9
- eventsByTag: Map<string, E[]>;
10
- eventsByDay: Map<number, E[]>;
11
- eventsByAuthor: Map<string, E[]>;
6
+ readonly repository: Repository<E>;
12
7
  subs: Map<string, Filter[]>;
13
- deletes: Map<string, number>;
14
- dump(): E[];
15
- load(events: E[], chunkSize?: number): Promise<void>;
8
+ constructor(repository: Repository<E>);
16
9
  send(type: string, ...message: any[]): void;
17
- _onEVENT([json]: [string]): void;
18
- _onCLOSE([subId]: [string]): void;
19
- _onREQ([subId, ...filters]: [string, ...Filter[]]): void;
20
- _isDeleted(event: E): boolean;
21
- _addEvent(event: E, duplicate?: E): void;
22
- _updateIndex<K>(m: Map<K, E[]>, k: K, e: E, duplicate?: E): void;
10
+ handleEVENT([json]: [string]): void;
11
+ handleCLOSE([subId]: [string]): void;
12
+ handleREQ([subId, ...filters]: [string, ...Filter[]]): void;
23
13
  }
package/build/Relay.mjs CHANGED
@@ -1,41 +1,19 @@
1
- import { Emitter, chunk, sleep, uniq, omit, now, range, identity } from '@welshman/lib';
2
- import { matchFilters, matchFilter } from "./Filters.mjs";
3
- import { encodeAddress, addressFromEvent } from "./Address.mjs";
4
- import { isReplaceable } from "./Events.mjs";
5
- export const DAY = 86400;
6
- const getDay = (ts) => Math.floor(ts / DAY);
1
+ import { Emitter } from '@welshman/lib';
2
+ import { matchFilters } from "./Filters.mjs";
7
3
  export class Relay extends Emitter {
8
- constructor() {
9
- super(...arguments);
10
- this.eventsById = new Map();
11
- this.eventsByAddress = new Map();
12
- this.eventsByTag = new Map();
13
- this.eventsByDay = new Map();
14
- this.eventsByAuthor = new Map();
4
+ constructor(repository) {
5
+ super();
6
+ this.repository = repository;
15
7
  this.subs = new Map();
16
- this.deletes = new Map();
17
- }
18
- dump() {
19
- return Array.from(this.eventsById.values());
20
- }
21
- async load(events, chunkSize = 1000) {
22
- for (const eventsChunk of chunk(chunkSize, events)) {
23
- for (const event of eventsChunk) {
24
- this._addEvent(event);
25
- }
26
- if (eventsChunk.length === chunkSize) {
27
- await sleep(1);
28
- }
29
- }
30
8
  }
31
9
  send(type, ...message) {
32
10
  switch (type) {
33
- case 'EVENT': return this._onEVENT(message);
34
- case 'CLOSE': return this._onCLOSE(message);
35
- case 'REQ': return this._onREQ(message);
11
+ case 'EVENT': return this.handleEVENT(message);
12
+ case 'CLOSE': return this.handleCLOSE(message);
13
+ case 'REQ': return this.handleREQ(message);
36
14
  }
37
15
  }
38
- _onEVENT([json]) {
16
+ handleEVENT([json]) {
39
17
  let event;
40
18
  try {
41
19
  event = JSON.parse(json);
@@ -43,19 +21,10 @@ export class Relay extends Emitter {
43
21
  catch (e) {
44
22
  return;
45
23
  }
46
- const duplicateById = this.eventsById.get(event.id);
47
- if (duplicateById) {
48
- return;
49
- }
50
- const hasAddress = isReplaceable(event);
51
- const address = encodeAddress(addressFromEvent(event));
52
- const duplicateByAddress = hasAddress ? this.eventsByAddress.get(address) : undefined;
53
- if (duplicateByAddress && duplicateByAddress.created_at >= event.created_at) {
54
- return;
55
- }
56
- this._addEvent(event, duplicateByAddress);
24
+ this.repository.publish(event);
57
25
  this.emit('OK', event.id, true, "");
58
- if (!this._isDeleted(event)) {
26
+ if (!this.repository.isDeleted(event)) {
27
+ const json = JSON.stringify(event);
59
28
  for (const [subId, filters] of this.subs.entries()) {
60
29
  if (matchFilters(filters, event)) {
61
30
  this.emit('EVENT', subId, json);
@@ -63,87 +32,15 @@ export class Relay extends Emitter {
63
32
  }
64
33
  }
65
34
  }
66
- _onCLOSE([subId]) {
35
+ handleCLOSE([subId]) {
67
36
  this.subs.delete(subId);
68
37
  }
69
- _onREQ([subId, ...filters]) {
38
+ handleREQ([subId, ...filters]) {
70
39
  this.subs.set(subId, filters);
71
- const result = new Set();
72
- for (let filter of filters) {
73
- let events = this.eventsById.values();
74
- if (filter.ids) {
75
- filter = omit(['ids'], filter);
76
- events = filter.ids.map(id => this.eventsById.get(id)).filter(identity);
77
- }
78
- else if (filter.authors) {
79
- filter = omit(['authors'], filter);
80
- events = uniq(filter.authors.flatMap(pubkey => this.eventsByAuthor.get(pubkey) || []));
81
- }
82
- else if (filter.since || filter.until) {
83
- const sinceDay = getDay(filter.since || 0);
84
- const untilDay = getDay(filter.since || now());
85
- filter = omit(['since', 'until'], filter);
86
- events = uniq(Array.from(range(sinceDay, untilDay))
87
- .flatMap((day) => this.eventsByDay.get(day) || []));
88
- }
89
- else {
90
- for (const [k, values] of Object.entries(filter)) {
91
- if (!k.startsWith('#') || k.length !== 2) {
92
- continue;
93
- }
94
- filter = omit([k], filter);
95
- events = uniq(values.flatMap(v => this.eventsByTag.get(`${k[1]}:${v}`) || []));
96
- break;
97
- }
98
- }
99
- for (const event of events) {
100
- if (!this._isDeleted(event) && matchFilter(filter, event)) {
101
- result.add(event);
102
- }
103
- }
104
- }
105
- for (const event of result) {
40
+ for (const event of this.repository.query(filters)) {
106
41
  this.emit('EVENT', subId, JSON.stringify(event));
107
42
  }
108
43
  this.emit('EOSE', subId);
109
44
  }
110
- _isDeleted(event) {
111
- const idDeletedAt = this.deletes.get(event.id) || 0;
112
- if (idDeletedAt > event.created_at) {
113
- return true;
114
- }
115
- if (isReplaceable(event)) {
116
- const address = encodeAddress(addressFromEvent(event));
117
- const addressDeletedAt = this.deletes.get(address) || 0;
118
- if (addressDeletedAt > event.created_at) {
119
- return true;
120
- }
121
- }
122
- return false;
123
- }
124
- _addEvent(event, duplicate) {
125
- this.eventsById.set(event.id, event);
126
- if (isReplaceable(event)) {
127
- this.eventsByAddress.set(encodeAddress(addressFromEvent(event)), event);
128
- }
129
- this._updateIndex(this.eventsByDay, getDay(event.created_at), event, duplicate);
130
- this._updateIndex(this.eventsByAuthor, event.pubkey, event, duplicate);
131
- for (const tag of event.tags) {
132
- if (tag[0].length === 1) {
133
- this._updateIndex(this.eventsByTag, tag.slice(0, 2).join(':'), event, duplicate);
134
- if (event.kind === 5) {
135
- this.deletes.set(tag[1], Math.max(event.created_at, this.deletes.get(tag[1]) || 0));
136
- }
137
- }
138
- }
139
- }
140
- _updateIndex(m, k, e, duplicate) {
141
- let a = m.get(k) || [];
142
- if (duplicate) {
143
- a = a.filter((x) => x !== duplicate);
144
- }
145
- a.push(e);
146
- m.set(k, a);
147
- }
148
45
  }
149
46
  //# sourceMappingURL=Relay.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Relay.mjs","sourceRoot":"","sources":["../Relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Relay.mjs","sourceRoot":"","sources":["../Relay.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,eAAe;OAC9B,EAAC,YAAY,EAAC;AAKrB,MAAM,OAAO,KAAuB,SAAQ,OAAO;IAGjD,YAAqB,UAAyB;QAC5C,KAAK,EAAE,CAAA;QADY,eAAU,GAAV,UAAU,CAAe;QAF9C,SAAI,GAAG,IAAI,GAAG,EAAoB,CAAA;IAIlC,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,GAAG,OAAc;QAClC,QAAO,IAAI,EAAE;YACX,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAmB,CAAC,CAAA;YAC1D,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAmB,CAAC,CAAA;YAC1D,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAgC,CAAC,CAAA;SACpE;IACH,CAAC;IAED,WAAW,CAAC,CAAC,IAAI,CAAW;QAC1B,IAAI,KAAQ,CAAA;QACZ,IAAI;YACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACzB;QAAC,OAAO,CAAC,EAAE;YACV,OAAM;SACP;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAElC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClD,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;oBAChC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;iBAChC;aACF;SACF;IACH,CAAC;IAED,WAAW,CAAC,CAAC,KAAK,CAAW;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,SAAS,CAAC,CAAC,KAAK,EAAE,GAAG,OAAO,CAAwB;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAE7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;SACjD;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1B,CAAC;CACF"}
package/build/Relays.cjs CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeRelayUrl = exports.isShareableRelayUrl = void 0;
3
+ exports.normalizeRelayUrl = exports.isShareableRelayUrl = exports.BOGUS_RELAY_URL = exports.LOCAL_RELAY_URL = void 0;
4
4
  const lib_1 = require("@welshman/lib");
5
+ exports.LOCAL_RELAY_URL = "local://welshman.relay";
6
+ exports.BOGUS_RELAY_URL = "bogus://welshman.relay";
5
7
  const isShareableRelayUrl = (url) => {
6
8
  var _a;
7
9
  return Boolean(typeof url === 'string' &&
@@ -1 +1 @@
1
- {"version":3,"file":"Relays.cjs","sourceRoot":"","sources":["../Relays.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAElD,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE;;IACjD,OAAA,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,+CAA+C;QAC/C,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC5B,2DAA2D;QAC3D,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,0CAAE,MAAM,MAAK,CAAC;QACjC,6DAA6D;QAC7D,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAClB,uCAAuC;QACvC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,+BAA+B;QAC/B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACzC,mCAAmC;QACnC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC9B,CAAA;CAAA,CAAA;AAfU,QAAA,mBAAmB,uBAe7B;AAMI,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAC,aAAa,GAAG,KAAK,KAA2B,EAAE,EAAE,EAAE;;IACpG,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAG,CAAC,CAAC,KAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAElF,+BAA+B;IAC/B,GAAG,GAAG,IAAA,kBAAY,EAAC,GAAG,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAC,CAAC,CAAA;IAEtE,qDAAqD;IACrD,GAAG,GAAG,IAAA,mBAAa,EAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IAEtC,+DAA+D;IAC/D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtB,GAAG,IAAI,GAAG,CAAA;KACX;IAED,OAAO,MAAM,GAAG,GAAG,CAAA;AACrB,CAAC,CAAA;AAfY,QAAA,iBAAiB,qBAe7B"}
1
+ {"version":3,"file":"Relays.cjs","sourceRoot":"","sources":["../Relays.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAE5C,QAAA,eAAe,GAAG,wBAAwB,CAAA;AAE1C,QAAA,eAAe,GAAG,wBAAwB,CAAA;AAEhD,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,EAAE;;IACjD,OAAA,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,+CAA+C;QAC/C,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC5B,2DAA2D;QAC3D,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,0CAAE,MAAM,MAAK,CAAC;QACjC,6DAA6D;QAC7D,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;QAClB,uCAAuC;QACvC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,+BAA+B;QAC/B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACzC,mCAAmC;QACnC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC9B,CAAA;CAAA,CAAA;AAfU,QAAA,mBAAmB,uBAe7B;AAMI,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAC,aAAa,GAAG,KAAK,KAA2B,EAAE,EAAE,EAAE;;IACpG,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAG,CAAC,CAAC,KAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAElF,+BAA+B;IAC/B,GAAG,GAAG,IAAA,kBAAY,EAAC,GAAG,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAC,CAAC,CAAA;IAEtE,qDAAqD;IACrD,GAAG,GAAG,IAAA,mBAAa,EAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IAEtC,+DAA+D;IAC/D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QACtB,GAAG,IAAI,GAAG,CAAA;KACX;IAED,OAAO,MAAM,GAAG,GAAG,CAAA;AACrB,CAAC,CAAA;AAfY,QAAA,iBAAiB,qBAe7B"}
package/build/Relays.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export declare const LOCAL_RELAY_URL = "local://welshman.relay";
2
+ export declare const BOGUS_RELAY_URL = "bogus://welshman.relay";
1
3
  export declare const isShareableRelayUrl: (url: string) => boolean;
2
4
  type NormalizeRelayUrlOpts = {
3
5
  allowInsecure?: boolean;
package/build/Relays.mjs CHANGED
@@ -1,4 +1,6 @@
1
1
  import { normalizeUrl, stripProtocol } from '@welshman/lib';
2
+ export const LOCAL_RELAY_URL = "local://welshman.relay";
3
+ export const BOGUS_RELAY_URL = "bogus://welshman.relay";
2
4
  export const isShareableRelayUrl = (url) => {
3
5
  var _a;
4
6
  return Boolean(typeof url === 'string' &&