@welshman/util 0.0.4 → 0.0.6

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 (54) hide show
  1. package/build/Address.cjs +40 -32
  2. package/build/Address.cjs.map +1 -1
  3. package/build/Address.d.ts +20 -18
  4. package/build/Address.mjs +38 -26
  5. package/build/Address.mjs.map +1 -1
  6. package/build/Events.cjs +29 -14
  7. package/build/Events.cjs.map +1 -1
  8. package/build/Events.d.ts +42 -15
  9. package/build/Events.mjs +15 -7
  10. package/build/Events.mjs.map +1 -1
  11. package/build/Filters.cjs +5 -5
  12. package/build/Filters.cjs.map +1 -1
  13. package/build/Filters.d.ts +4 -4
  14. package/build/Filters.mjs +5 -5
  15. package/build/Filters.mjs.map +1 -1
  16. package/build/Kinds.cjs +140 -78
  17. package/build/Kinds.cjs.map +1 -1
  18. package/build/Kinds.d.ts +137 -76
  19. package/build/Kinds.mjs +137 -77
  20. package/build/Kinds.mjs.map +1 -1
  21. package/build/Links.cjs +1 -1
  22. package/build/Links.cjs.map +1 -1
  23. package/build/Links.mjs +1 -1
  24. package/build/Links.mjs.map +1 -1
  25. package/build/Relay.cjs +51 -20
  26. package/build/Relay.cjs.map +1 -1
  27. package/build/Relay.d.ts +13 -5
  28. package/build/Relay.mjs +49 -20
  29. package/build/Relay.mjs.map +1 -1
  30. package/build/Repository.cjs +103 -94
  31. package/build/Repository.cjs.map +1 -1
  32. package/build/Repository.d.ts +33 -23
  33. package/build/Repository.mjs +107 -98
  34. package/build/Repository.mjs.map +1 -1
  35. package/build/Router.cjs +8 -9
  36. package/build/Router.cjs.map +1 -1
  37. package/build/Router.d.ts +12 -18
  38. package/build/Router.mjs +8 -9
  39. package/build/Router.mjs.map +1 -1
  40. package/build/Tags.cjs +6 -8
  41. package/build/Tags.cjs.map +1 -1
  42. package/build/Tags.d.ts +1 -3
  43. package/build/Tags.mjs +6 -8
  44. package/build/Tags.mjs.map +1 -1
  45. package/build/index.cjs +0 -1
  46. package/build/index.cjs.map +1 -1
  47. package/build/index.d.ts +0 -1
  48. package/build/index.mjs +0 -1
  49. package/package.json +2 -2
  50. package/build/Relays.cjs +0 -38
  51. package/build/Relays.cjs.map +0 -1
  52. package/build/Relays.d.ts +0 -8
  53. package/build/Relays.mjs +0 -33
  54. package/build/Relays.mjs.map +0 -1
package/build/Kinds.mjs CHANGED
@@ -4,81 +4,141 @@ 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 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 = {}));
7
+ export const PROFILE = 0;
8
+ export const NOTE = 1;
9
+ export const FOLLOWS = 3;
10
+ export const DELETE = 5;
11
+ export const REPOST = 6;
12
+ export const REACTION = 7;
13
+ export const BADGE_AWARD = 8;
14
+ export const GROUP_CHAT_MESSAGE = 9;
15
+ export const GROUP_CHAT_REPLY = 10;
16
+ export const GROUP_CHAT_THREAD = 11;
17
+ export const GROUP_CHAT_THREAD_REPLY = 12;
18
+ export const SEAL = 13;
19
+ export const DIRECT_MESSAGE = 14;
20
+ export const GENERIC_REPOST = 16;
21
+ export const CHANNEL_CREATE = 40;
22
+ export const CHANNEL_UPDATE = 41;
23
+ export const CHANNEL_MESSAGE = 42;
24
+ export const CHANNEL_HIDE_MESSAGE = 43;
25
+ export const CHANNEL_MUTE_USER = 44;
26
+ export const BID = 1021;
27
+ export const BID_CONFIRMATION = 1022;
28
+ export const OTS = 1040;
29
+ export const WRAP = 1059;
30
+ export const WRAP_NIP04 = 1060;
31
+ export const FILE_METADATA = 1063;
32
+ export const LIVE_CHAT_MESSAGE = 1311;
33
+ export const GIT_PATCH = 1617;
34
+ export const GIT_ISSUE = 1617;
35
+ export const GIT_REPLY = 1617;
36
+ export const GIT_STATUS_OPEN = 1630;
37
+ export const GIT_STATUS_COMPLETE = 1631;
38
+ export const GIT_STATUS_CLOSED = 1632;
39
+ export const GIT_STATUS_DRAFT = 1633;
40
+ export const GIT_REPOSITORY = 30403;
41
+ export const REMIX = 1808;
42
+ export const NOSTROCKER_PROBLEM = 1971;
43
+ export const REPORT = 1984;
44
+ export const LABEL = 1985;
45
+ export const REVIEW = 1986;
46
+ export const APPROVAL = 4550;
47
+ export const DVM_REQUEST_TEXT_EXTRACTION = 5000;
48
+ export const DVM_REQUEST_TEXT_SUMMARY = 5001;
49
+ export const DVM_REQUEST_TEXT_TRANSLATION = 5002;
50
+ export const DVM_REQUEST_TEXT_GENERATION = 5050;
51
+ export const DVM_REQUEST_IMAGE_GENERATION = 5100;
52
+ export const DVM_REQUEST_VIDEO_CONVERSION = 5200;
53
+ export const DVM_REQUEST_VIDEO_TRANSLATION = 5201;
54
+ export const DVM_REQUEST_IMAGE_TO_VIDEO_CONVERSION = 5202;
55
+ export const DVM_REQUEST_TEXT_TO_SPEECH = 5250;
56
+ export const DVM_REQUEST_DISCOVER_CONTENT = 5300;
57
+ export const DVM_REQUEST_DISCOVER_PEOPLE = 5301;
58
+ export const DVM_REQUEST_SEARCH_CONTENT = 5302;
59
+ export const DVM_REQUEST_SEARCH_PEOPLE = 5303;
60
+ export const DVM_REQUEST_COUNT = 5400;
61
+ export const DVM_REQUEST_MALWARE_SCAN = 5500;
62
+ export const DVM_REQUEST_OTS = 5900;
63
+ export const DVM_REQUEST_OP_RETURN = 5901;
64
+ export const DVM_REQUEST_PUBLISH_SCHEDULE = 5905;
65
+ export const DVM_RESPONSE_TEXT_EXTRACTION = 6000;
66
+ export const DVM_RESPONSE_TEXT_SUMMARY = 6001;
67
+ export const DVM_RESPONSE_TEXT_TRANSLATION = 6002;
68
+ export const DVM_RESPONSE_TEXT_GENERATION = 6050;
69
+ export const DVM_RESPONSE_IMAGE_GENERATION = 6100;
70
+ export const DVM_RESPONSE_VIDEO_CONVERSION = 6200;
71
+ export const DVM_RESPONSE_VIDEO_TRANSLATION = 6201;
72
+ export const DVM_RESPONSE_IMAGE_TO_VIDEO_CONVERSION = 6202;
73
+ export const DVM_RESPONSE_TEXT_TO_SPEECH = 6250;
74
+ export const DVM_RESPONSE_DISCOVER_CONTENT = 6300;
75
+ export const DVM_RESPONSE_DISCOVER_PEOPLE = 6301;
76
+ export const DVM_RESPONSE_SEARCH_CONTENT = 6302;
77
+ export const DVM_RESPONSE_SEARCH_PEOPLE = 6303;
78
+ export const DVM_RESPONSE_COUNT = 6400;
79
+ export const DVM_RESPONSE_MALWARE_SCAN = 6500;
80
+ export const DVM_RESPONSE_OTS = 6900;
81
+ export const DVM_RESPONSE_OP_RETURN = 6901;
82
+ export const DVM_RESPONSE_PUBLISH_SCHEDULE = 6905;
83
+ export const DVM_FEEDBACK = 7000;
84
+ export const ZAP_GOAL = 9041;
85
+ export const ZAP_REQUEST = 9734;
86
+ export const ZAP_RESPONSE = 9735;
87
+ export const HIGHLIGHT = 9802;
88
+ export const MUTES = 10000;
89
+ export const PINS = 10001;
90
+ export const RELAYS = 10002;
91
+ export const BOOKMARKS = 10003;
92
+ export const COMMUNITIES = 10004;
93
+ export const CHANNELS = 10005;
94
+ export const BLOCKED_RELAYS = 10006;
95
+ export const SEARCH_RELAYS = 10007;
96
+ export const GROUPS = 10009;
97
+ export const TOPICS = 10015;
98
+ export const EMOJIS = 10030;
99
+ export const DM_INBOX_RELAYS = 10050;
100
+ export const FILE_SERVERS = 10096;
101
+ export const LIGHTNING_PUB_RPC = 21000;
102
+ export const CLIENT_AUTH = 22242;
103
+ export const WALLET_INFO = 13194;
104
+ export const WALLET_REQUEST = 23194;
105
+ export const WALLET_RESPONSE = 23195;
106
+ export const NOSTR_CONNECT = 24133;
107
+ export const HTTP_AUTH = 27235;
108
+ export const NAMED_PEOPLE = 30000;
109
+ export const NAMED_RELAYS = 30002;
110
+ export const NAMED_BOOKMARKS = 30003;
111
+ export const NAMED_CURATIONS = 30004;
112
+ export const NAMED_WIKI_AUTHORS = 30101;
113
+ export const NAMED_WIKI_RELAYS = 30102;
114
+ export const NAMED_EMOJIS = 30030;
115
+ export const NAMED_TOPICS = 30015;
116
+ export const NAMED_ARTIFACTS = 30063;
117
+ export const BADGES = 30008;
118
+ export const BADGE_DEFINITION = 30009;
119
+ export const STALL = 30017;
120
+ export const PRODUCT = 30018;
121
+ export const MARKET_UI = 30019;
122
+ export const PRODUCT_SOLD_AS_AUCTION = 30020;
123
+ export const WIKI = 30818;
124
+ export const LONG_FORM = 30023;
125
+ export const LONG_FORM_DRAFT = 30024;
126
+ export const APPLICATION = 30078;
127
+ export const LIVE_EVENT = 30311;
128
+ export const STATUS = 30315;
129
+ export const CLASSIFIED = 30402;
130
+ export const DRAFT_CLASSIFIED = 30403;
131
+ export const AUDIO = 31337;
132
+ export const FEED = 31890;
133
+ export const CALENDAR = 31924;
134
+ export const EVENT_DATE = 31922;
135
+ export const EVENT_TIME = 31923;
136
+ export const EVENT_RSVP = 31925;
137
+ export const HANDLER_RECOMMENDATION = 31989;
138
+ export const HANDLER_INFORMATION = 31990;
139
+ export const COMMUNITY = 34550;
140
+ export const GROUP = 35834;
141
+ export const DEPRECATED_RELAY_RECOMMENDATION = 2;
142
+ export const DEPRECATED_DIRECT_MESSAGE = 4;
143
+ export const DEPRECATED_NAMED_GENERIC = 30001;
84
144
  //# sourceMappingURL=Kinds.mjs.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Kinds.mjs","sourceRoot":"","sources":["../Kinds.ts"],"names":[],"mappings":"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"}
package/build/Links.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.toNostrURI = exports.fromNostrURI = void 0;
4
- const fromNostrURI = (s) => s.replace(/^[\w+]+:\/?\/?/, "");
4
+ const fromNostrURI = (s) => s.replace(/^nostr:\/?\/?/, "");
5
5
  exports.fromNostrURI = fromNostrURI;
6
6
  const toNostrURI = (s) => `nostr:${s}`;
7
7
  exports.toNostrURI = toNostrURI;
@@ -1 +1 @@
1
- {"version":3,"file":"Links.cjs","sourceRoot":"","sources":["../Links.ts"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;AAA7D,QAAA,YAAY,gBAAiD;AAEnE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAA;AAAxC,QAAA,UAAU,cAA8B"}
1
+ {"version":3,"file":"Links.cjs","sourceRoot":"","sources":["../Links.ts"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AAA5D,QAAA,YAAY,gBAAgD;AAElE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAA;AAAxC,QAAA,UAAU,cAA8B"}
package/build/Links.mjs CHANGED
@@ -1,3 +1,3 @@
1
- export const fromNostrURI = (s) => s.replace(/^[\w+]+:\/?\/?/, "");
1
+ export const fromNostrURI = (s) => s.replace(/^nostr:\/?\/?/, "");
2
2
  export const toNostrURI = (s) => `nostr:${s}`;
3
3
  //# sourceMappingURL=Links.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Links.mjs","sourceRoot":"","sources":["../Links.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAA"}
1
+ {"version":3,"file":"Links.mjs","sourceRoot":"","sources":["../Links.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;AAEzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAA"}
package/build/Relay.cjs CHANGED
@@ -1,8 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Relay = void 0;
3
+ exports.Relay = exports.normalizeRelayUrl = exports.isShareableRelayUrl = exports.BOGUS_RELAY_URL = exports.LOCAL_RELAY_URL = void 0;
4
4
  const lib_1 = require("@welshman/lib");
5
5
  const Filters_1 = require("./Filters.cjs");
6
+ exports.LOCAL_RELAY_URL = "local://welshman.relay";
7
+ exports.BOGUS_RELAY_URL = "bogus://welshman.relay";
8
+ const isShareableRelayUrl = (url) => {
9
+ var _a;
10
+ return Boolean(typeof url === 'string' &&
11
+ // Is it actually a websocket url and has a dot
12
+ url.match(/^wss:\/\/.+\..+/) &&
13
+ // Sometimes bugs cause multiple relays to get concatenated
14
+ ((_a = url.match(/:\/\//g)) === null || _a === void 0 ? void 0 : _a.length) === 1 &&
15
+ // It shouldn't have any whitespace, url-encoded or otherwise
16
+ !url.match(/\s|%/) &&
17
+ // Don't match stuff with a port number
18
+ !url.slice(6).match(/:\d+/) &&
19
+ // Don't match raw ip addresses
20
+ !url.slice(6).match(/\d+\.\d+\.\d+\.\d+/) &&
21
+ // Skip nostr.wine's virtual relays
22
+ !url.slice(6).match(/\/npub/));
23
+ };
24
+ exports.isShareableRelayUrl = isShareableRelayUrl;
25
+ const normalizeRelayUrl = (url, { allowInsecure = false } = {}) => {
26
+ var _a;
27
+ const prefix = allowInsecure ? ((_a = url.match(/^wss?:\/\//)) === null || _a === void 0 ? void 0 : _a[0]) || "wss://" : "wss://";
28
+ // Use our library to normalize
29
+ url = (0, lib_1.normalizeUrl)(url, { stripHash: true, stripAuthentication: false });
30
+ // Strip the protocol since only wss works, lowercase
31
+ url = (0, lib_1.stripProtocol)(url).toLowerCase();
32
+ // Urls without pathnames are supposed to have a trailing slash
33
+ if (!url.includes("/")) {
34
+ url += "/";
35
+ }
36
+ return prefix + url;
37
+ };
38
+ exports.normalizeRelayUrl = normalizeRelayUrl;
6
39
  class Relay extends lib_1.Emitter {
7
40
  constructor(repository) {
8
41
  super();
@@ -16,34 +49,32 @@ class Relay extends lib_1.Emitter {
16
49
  case 'REQ': return this.handleREQ(message);
17
50
  }
18
51
  }
19
- handleEVENT([json]) {
20
- let event;
21
- try {
22
- event = JSON.parse(json);
23
- }
24
- catch (e) {
25
- return;
26
- }
52
+ handleEVENT([event]) {
27
53
  this.repository.publish(event);
28
- this.emit('OK', event.id, true, "");
29
- if (!this.repository.isDeleted(event)) {
30
- const json = JSON.stringify(event);
31
- for (const [subId, filters] of this.subs.entries()) {
32
- if ((0, Filters_1.matchFilters)(filters, event)) {
33
- this.emit('EVENT', subId, json);
54
+ // Callers generally expect async relays
55
+ (0, lib_1.sleep)(1).then(() => {
56
+ this.emit('OK', event.id, true, "");
57
+ if (!this.repository.isDeleted(event)) {
58
+ for (const [subId, filters] of this.subs.entries()) {
59
+ if ((0, Filters_1.matchFilters)(filters, event)) {
60
+ this.emit('EVENT', subId, event);
61
+ }
34
62
  }
35
63
  }
36
- }
64
+ });
37
65
  }
38
66
  handleCLOSE([subId]) {
39
67
  this.subs.delete(subId);
40
68
  }
41
69
  handleREQ([subId, ...filters]) {
42
70
  this.subs.set(subId, filters);
43
- for (const event of this.repository.query(filters)) {
44
- this.emit('EVENT', subId, JSON.stringify(event));
45
- }
46
- this.emit('EOSE', subId);
71
+ // Callers generally expect async relays
72
+ (0, lib_1.sleep)(1).then(() => {
73
+ for (const event of this.repository.query(filters)) {
74
+ this.emit('EVENT', subId, event);
75
+ }
76
+ this.emit('EOSE', subId);
77
+ });
47
78
  }
48
79
  }
49
80
  exports.Relay = Relay;
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Relay.cjs","sourceRoot":"","sources":["../Relay.ts"],"names":[],"mappings":"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"}
package/build/Relay.d.ts CHANGED
@@ -1,13 +1,21 @@
1
1
  import { Emitter } from '@welshman/lib';
2
2
  import type { Repository } from './Repository';
3
3
  import type { Filter } from './Filters';
4
- import type { Rumor } from './Events';
5
- export declare class Relay<E extends Rumor> extends Emitter {
6
- readonly repository: Repository<E>;
4
+ import type { TrustedEvent } from './Events';
5
+ export declare const LOCAL_RELAY_URL = "local://welshman.relay";
6
+ export declare const BOGUS_RELAY_URL = "bogus://welshman.relay";
7
+ export declare const isShareableRelayUrl: (url: string) => boolean;
8
+ type NormalizeRelayUrlOpts = {
9
+ allowInsecure?: boolean;
10
+ };
11
+ export declare const normalizeRelayUrl: (url: string, { allowInsecure }?: NormalizeRelayUrlOpts) => string;
12
+ export declare class Relay extends Emitter {
13
+ readonly repository: Repository;
7
14
  subs: Map<string, Filter[]>;
8
- constructor(repository: Repository<E>);
15
+ constructor(repository: Repository);
9
16
  send(type: string, ...message: any[]): void;
10
- handleEVENT([json]: [string]): void;
17
+ handleEVENT([event]: [TrustedEvent]): void;
11
18
  handleCLOSE([subId]: [string]): void;
12
19
  handleREQ([subId, ...filters]: [string, ...Filter[]]): void;
13
20
  }
21
+ export {};
package/build/Relay.mjs CHANGED
@@ -1,5 +1,36 @@
1
- import { Emitter } from '@welshman/lib';
1
+ import { Emitter, normalizeUrl, sleep, stripProtocol } from '@welshman/lib';
2
2
  import { matchFilters } from "./Filters.mjs";
3
+ export const LOCAL_RELAY_URL = "local://welshman.relay";
4
+ export const BOGUS_RELAY_URL = "bogus://welshman.relay";
5
+ export const isShareableRelayUrl = (url) => {
6
+ var _a;
7
+ return Boolean(typeof url === 'string' &&
8
+ // Is it actually a websocket url and has a dot
9
+ url.match(/^wss:\/\/.+\..+/) &&
10
+ // Sometimes bugs cause multiple relays to get concatenated
11
+ ((_a = url.match(/:\/\//g)) === null || _a === void 0 ? void 0 : _a.length) === 1 &&
12
+ // It shouldn't have any whitespace, url-encoded or otherwise
13
+ !url.match(/\s|%/) &&
14
+ // Don't match stuff with a port number
15
+ !url.slice(6).match(/:\d+/) &&
16
+ // Don't match raw ip addresses
17
+ !url.slice(6).match(/\d+\.\d+\.\d+\.\d+/) &&
18
+ // Skip nostr.wine's virtual relays
19
+ !url.slice(6).match(/\/npub/));
20
+ };
21
+ export const normalizeRelayUrl = (url, { allowInsecure = false } = {}) => {
22
+ var _a;
23
+ const prefix = allowInsecure ? ((_a = url.match(/^wss?:\/\//)) === null || _a === void 0 ? void 0 : _a[0]) || "wss://" : "wss://";
24
+ // Use our library to normalize
25
+ url = normalizeUrl(url, { stripHash: true, stripAuthentication: false });
26
+ // Strip the protocol since only wss works, lowercase
27
+ url = stripProtocol(url).toLowerCase();
28
+ // Urls without pathnames are supposed to have a trailing slash
29
+ if (!url.includes("/")) {
30
+ url += "/";
31
+ }
32
+ return prefix + url;
33
+ };
3
34
  export class Relay extends Emitter {
4
35
  constructor(repository) {
5
36
  super();
@@ -13,34 +44,32 @@ export class Relay extends Emitter {
13
44
  case 'REQ': return this.handleREQ(message);
14
45
  }
15
46
  }
16
- handleEVENT([json]) {
17
- let event;
18
- try {
19
- event = JSON.parse(json);
20
- }
21
- catch (e) {
22
- return;
23
- }
47
+ handleEVENT([event]) {
24
48
  this.repository.publish(event);
25
- this.emit('OK', event.id, true, "");
26
- if (!this.repository.isDeleted(event)) {
27
- const json = JSON.stringify(event);
28
- for (const [subId, filters] of this.subs.entries()) {
29
- if (matchFilters(filters, event)) {
30
- this.emit('EVENT', subId, json);
49
+ // Callers generally expect async relays
50
+ sleep(1).then(() => {
51
+ this.emit('OK', event.id, true, "");
52
+ if (!this.repository.isDeleted(event)) {
53
+ for (const [subId, filters] of this.subs.entries()) {
54
+ if (matchFilters(filters, event)) {
55
+ this.emit('EVENT', subId, event);
56
+ }
31
57
  }
32
58
  }
33
- }
59
+ });
34
60
  }
35
61
  handleCLOSE([subId]) {
36
62
  this.subs.delete(subId);
37
63
  }
38
64
  handleREQ([subId, ...filters]) {
39
65
  this.subs.set(subId, filters);
40
- for (const event of this.repository.query(filters)) {
41
- this.emit('EVENT', subId, JSON.stringify(event));
42
- }
43
- this.emit('EOSE', subId);
66
+ // Callers generally expect async relays
67
+ sleep(1).then(() => {
68
+ for (const event of this.repository.query(filters)) {
69
+ this.emit('EVENT', subId, event);
70
+ }
71
+ this.emit('EOSE', subId);
72
+ });
44
73
  }
45
74
  }
46
75
  //# sourceMappingURL=Relay.mjs.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Relay.mjs","sourceRoot":"","sources":["../Relay.ts"],"names":[],"mappings":"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"}