@welshman/util 0.0.25 → 0.0.28
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/Address.cjs +3 -3
- package/build/src/Address.cjs.map +1 -1
- package/build/src/Address.mjs +3 -3
- package/build/src/Address.mjs.map +1 -1
- package/build/src/Encryptable.cjs +35 -0
- package/build/src/Encryptable.cjs.map +1 -0
- package/build/src/Encryptable.d.ts +22 -0
- package/build/src/Encryptable.mjs +30 -0
- package/build/src/Encryptable.mjs.map +1 -0
- package/build/src/Events.cjs +8 -4
- package/build/src/Events.cjs.map +1 -1
- package/build/src/Events.d.ts +10 -4
- package/build/src/Events.mjs +5 -3
- package/build/src/Events.mjs.map +1 -1
- package/build/src/Filters.cjs.map +1 -1
- package/build/src/Filters.mjs.map +1 -1
- package/build/src/Handler.cjs +36 -0
- package/build/src/Handler.cjs.map +1 -0
- package/build/src/Handler.d.ts +16 -0
- package/build/src/Handler.mjs +29 -0
- package/build/src/Handler.mjs.map +1 -0
- package/build/src/List.cjs +40 -0
- package/build/src/List.cjs.map +1 -0
- package/build/src/List.d.ts +17 -0
- package/build/src/List.mjs +32 -0
- package/build/src/List.mjs.map +1 -0
- package/build/src/Profile.cjs +56 -0
- package/build/src/Profile.cjs.map +1 -0
- package/build/src/Profile.d.ts +31 -0
- package/build/src/Profile.mjs +45 -0
- package/build/src/Profile.mjs.map +1 -0
- package/build/src/Relay.cjs +26 -18
- package/build/src/Relay.cjs.map +1 -1
- package/build/src/Relay.d.ts +19 -5
- package/build/src/Relay.mjs +24 -18
- package/build/src/Relay.mjs.map +1 -1
- package/build/src/Repository.cjs +1 -4
- package/build/src/Repository.cjs.map +1 -1
- package/build/src/Repository.d.ts +18 -18
- package/build/src/Repository.mjs +2 -5
- package/build/src/Repository.mjs.map +1 -1
- package/build/src/Tags.cjs +65 -58
- package/build/src/Tags.cjs.map +1 -1
- package/build/src/Tags.d.ts +13 -6
- package/build/src/Tags.mjs +53 -56
- package/build/src/Tags.mjs.map +1 -1
- package/build/src/index.cjs +4 -0
- package/build/src/index.cjs.map +1 -1
- package/build/src/index.d.ts +4 -0
- package/build/src/index.mjs +4 -0
- package/package.json +3 -3
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.profileHasName = exports.displayProfile = exports.displayPubkey = exports.editProfile = exports.createProfile = exports.readProfile = exports.makeProfile = exports.isPublishedProfile = void 0;
|
|
4
|
+
const nostr_tools_1 = require("nostr-tools");
|
|
5
|
+
const lib_1 = require("@welshman/lib");
|
|
6
|
+
const Kinds_1 = require("./Kinds.cjs");
|
|
7
|
+
const isPublishedProfile = (profile) => Boolean(profile.event);
|
|
8
|
+
exports.isPublishedProfile = isPublishedProfile;
|
|
9
|
+
const makeProfile = (profile = {}) => ({
|
|
10
|
+
name: "",
|
|
11
|
+
nip05: "",
|
|
12
|
+
lud06: "",
|
|
13
|
+
lud16: "",
|
|
14
|
+
about: "",
|
|
15
|
+
banner: "",
|
|
16
|
+
picture: "",
|
|
17
|
+
website: "",
|
|
18
|
+
display_name: "",
|
|
19
|
+
...profile,
|
|
20
|
+
});
|
|
21
|
+
exports.makeProfile = makeProfile;
|
|
22
|
+
const readProfile = (event) => {
|
|
23
|
+
const profile = (0, lib_1.parseJson)(event.content) || {};
|
|
24
|
+
return { ...profile, event };
|
|
25
|
+
};
|
|
26
|
+
exports.readProfile = readProfile;
|
|
27
|
+
const createProfile = ({ event, ...profile }) => ({
|
|
28
|
+
kind: Kinds_1.PROFILE,
|
|
29
|
+
content: JSON.stringify(profile),
|
|
30
|
+
});
|
|
31
|
+
exports.createProfile = createProfile;
|
|
32
|
+
const editProfile = ({ event, ...profile }) => ({
|
|
33
|
+
kind: Kinds_1.PROFILE,
|
|
34
|
+
content: JSON.stringify(profile),
|
|
35
|
+
tags: event.tags,
|
|
36
|
+
});
|
|
37
|
+
exports.editProfile = editProfile;
|
|
38
|
+
const displayPubkey = (pubkey) => {
|
|
39
|
+
const d = nostr_tools_1.nip19.npubEncode(pubkey);
|
|
40
|
+
return d.slice(0, 8) + "…" + d.slice(-5);
|
|
41
|
+
};
|
|
42
|
+
exports.displayPubkey = displayPubkey;
|
|
43
|
+
const displayProfile = (profile, fallback = "") => {
|
|
44
|
+
const { display_name, name, event } = profile || {};
|
|
45
|
+
if (name)
|
|
46
|
+
return (0, lib_1.ellipsize)(name, 60);
|
|
47
|
+
if (display_name)
|
|
48
|
+
return (0, lib_1.ellipsize)(display_name, 60);
|
|
49
|
+
if (event)
|
|
50
|
+
return (0, exports.displayPubkey)(event.pubkey);
|
|
51
|
+
return fallback;
|
|
52
|
+
};
|
|
53
|
+
exports.displayProfile = displayProfile;
|
|
54
|
+
const profileHasName = (profile) => Boolean((profile === null || profile === void 0 ? void 0 : profile.name) || (profile === null || profile === void 0 ? void 0 : profile.display_name));
|
|
55
|
+
exports.profileHasName = profileHasName;
|
|
56
|
+
//# sourceMappingURL=Profile.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Profile.cjs","sourceRoot":"","sources":["../../src/Profile.ts"],"names":[],"mappings":";;;AAAA,6CAAiC;AACjC,uCAAkD;AAElD,uCAA+B;AAmBxB,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAA+B,EAAE,CAClF,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AADX,QAAA,kBAAkB,sBACP;AAEjB,MAAM,WAAW,GAAG,CAAC,UAA4B,EAAE,EAAW,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;IAChB,GAAG,OAAO;CACX,CAAC,CAAA;AAXW,QAAA,WAAW,eAWtB;AAEK,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;IACjD,MAAM,OAAO,GAAG,IAAA,eAAS,EAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAE9C,OAAO,EAAC,GAAG,OAAO,EAAE,KAAK,EAAqB,CAAA;AAChD,CAAC,CAAA;AAJY,QAAA,WAAW,eAIvB;AAEM,MAAM,aAAa,GAAG,CAAC,EAAC,KAAK,EAAE,GAAG,OAAO,EAAU,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,EAAE,eAAO;IACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;CACjC,CAAC,CAAA;AAHW,QAAA,aAAa,iBAGxB;AAEK,MAAM,WAAW,GAAG,CAAC,EAAC,KAAK,EAAE,GAAG,OAAO,EAAmB,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,eAAO;IACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,IAAI,EAAE,KAAK,CAAC,IAAI;CACjB,CAAC,CAAA;AAJW,QAAA,WAAW,eAItB;AAEK,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE;IAC9C,MAAM,CAAC,GAAG,mBAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAElC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAA;AAJY,QAAA,aAAa,iBAIzB;AAEM,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;IACjE,MAAM,EAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjD,IAAI,IAAI;QAAE,OAAO,IAAA,eAAS,EAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACpC,IAAI,YAAY;QAAE,OAAO,IAAA,eAAS,EAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IACpD,IAAI,KAAK;QAAE,OAAO,IAAA,qBAAa,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAE7C,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AARY,QAAA,cAAc,kBAQ1B;AAEM,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAA,CAAC,CAAA;AAAvF,QAAA,cAAc,kBAAyE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TrustedEvent } from "./Events";
|
|
2
|
+
export type Profile = {
|
|
3
|
+
name?: string;
|
|
4
|
+
nip05?: string;
|
|
5
|
+
lud06?: string;
|
|
6
|
+
lud16?: string;
|
|
7
|
+
about?: string;
|
|
8
|
+
banner?: string;
|
|
9
|
+
picture?: string;
|
|
10
|
+
website?: string;
|
|
11
|
+
display_name?: string;
|
|
12
|
+
event?: TrustedEvent;
|
|
13
|
+
};
|
|
14
|
+
export type PublishedProfile = Omit<Profile, "event"> & {
|
|
15
|
+
event: TrustedEvent;
|
|
16
|
+
};
|
|
17
|
+
export declare const isPublishedProfile: (profile: Profile) => profile is PublishedProfile;
|
|
18
|
+
export declare const makeProfile: (profile?: Partial<Profile>) => Profile;
|
|
19
|
+
export declare const readProfile: (event: TrustedEvent) => PublishedProfile;
|
|
20
|
+
export declare const createProfile: ({ event, ...profile }: Profile) => {
|
|
21
|
+
kind: number;
|
|
22
|
+
content: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const editProfile: ({ event, ...profile }: PublishedProfile) => {
|
|
25
|
+
kind: number;
|
|
26
|
+
content: string;
|
|
27
|
+
tags: string[][];
|
|
28
|
+
};
|
|
29
|
+
export declare const displayPubkey: (pubkey: string) => string;
|
|
30
|
+
export declare const displayProfile: (profile?: Profile, fallback?: string) => string;
|
|
31
|
+
export declare const profileHasName: (profile?: Profile) => boolean;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { nip19 } from "nostr-tools";
|
|
2
|
+
import { ellipsize, parseJson } from "@welshman/lib";
|
|
3
|
+
import { PROFILE } from "./Kinds.mjs";
|
|
4
|
+
export const isPublishedProfile = (profile) => Boolean(profile.event);
|
|
5
|
+
export const makeProfile = (profile = {}) => ({
|
|
6
|
+
name: "",
|
|
7
|
+
nip05: "",
|
|
8
|
+
lud06: "",
|
|
9
|
+
lud16: "",
|
|
10
|
+
about: "",
|
|
11
|
+
banner: "",
|
|
12
|
+
picture: "",
|
|
13
|
+
website: "",
|
|
14
|
+
display_name: "",
|
|
15
|
+
...profile,
|
|
16
|
+
});
|
|
17
|
+
export const readProfile = (event) => {
|
|
18
|
+
const profile = parseJson(event.content) || {};
|
|
19
|
+
return { ...profile, event };
|
|
20
|
+
};
|
|
21
|
+
export const createProfile = ({ event, ...profile }) => ({
|
|
22
|
+
kind: PROFILE,
|
|
23
|
+
content: JSON.stringify(profile),
|
|
24
|
+
});
|
|
25
|
+
export const editProfile = ({ event, ...profile }) => ({
|
|
26
|
+
kind: PROFILE,
|
|
27
|
+
content: JSON.stringify(profile),
|
|
28
|
+
tags: event.tags,
|
|
29
|
+
});
|
|
30
|
+
export const displayPubkey = (pubkey) => {
|
|
31
|
+
const d = nip19.npubEncode(pubkey);
|
|
32
|
+
return d.slice(0, 8) + "…" + d.slice(-5);
|
|
33
|
+
};
|
|
34
|
+
export const displayProfile = (profile, fallback = "") => {
|
|
35
|
+
const { display_name, name, event } = profile || {};
|
|
36
|
+
if (name)
|
|
37
|
+
return ellipsize(name, 60);
|
|
38
|
+
if (display_name)
|
|
39
|
+
return ellipsize(display_name, 60);
|
|
40
|
+
if (event)
|
|
41
|
+
return displayPubkey(event.pubkey);
|
|
42
|
+
return fallback;
|
|
43
|
+
};
|
|
44
|
+
export const profileHasName = (profile) => Boolean((profile === null || profile === void 0 ? void 0 : profile.name) || (profile === null || profile === void 0 ? void 0 : profile.display_name));
|
|
45
|
+
//# sourceMappingURL=Profile.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Profile.mjs","sourceRoot":"","sources":["../../src/Profile.ts"],"names":[],"mappings":"OAAO,EAAC,KAAK,EAAC,MAAM,aAAa;OAC1B,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,eAAe;OAE3C,EAAC,OAAO,EAAC;AAmBhB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAA+B,EAAE,CAClF,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,UAA4B,EAAE,EAAW,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;IAChB,GAAG,OAAO;CACX,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IAE9C,OAAO,EAAC,GAAG,OAAO,EAAE,KAAK,EAAqB,CAAA;AAChD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAC,KAAK,EAAE,GAAG,OAAO,EAAU,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;CACjC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAC,KAAK,EAAE,GAAG,OAAO,EAAmB,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAChC,IAAI,EAAE,KAAK,CAAC,IAAI;CACjB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE;IAC9C,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAElC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,QAAQ,GAAG,EAAE,EAAE,EAAE;IACjE,MAAM,EAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjD,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACpC,IAAI,YAAY;QAAE,OAAO,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IACpD,IAAI,KAAK;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAE7C,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAA,CAAC,CAAA"}
|
package/build/src/Relay.cjs
CHANGED
|
@@ -1,28 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Relay = exports.normalizeRelayUrl = exports.isShareableRelayUrl = exports.BOGUS_RELAY_URL = exports.LOCAL_RELAY_URL = void 0;
|
|
3
|
+
exports.Relay = exports.displayRelayUrl = exports.normalizeRelayUrl = exports.isShareableRelayUrl = exports.isRelayUrl = 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
|
+
// Constants and types
|
|
6
7
|
exports.LOCAL_RELAY_URL = "local://welshman.relay";
|
|
7
8
|
exports.BOGUS_RELAY_URL = "bogus://welshman.relay";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// Don't match stuff with a port number
|
|
18
|
-
!url.slice(6).match(/:\d+/) &&
|
|
19
|
-
// Don't match stuff with a numeric tld
|
|
20
|
-
!url.slice(6).match(/\.\d+\b/) &&
|
|
21
|
-
// Don't match raw ip addresses
|
|
22
|
-
!url.slice(6).match(/\d+\.\d+\.\d+\.\d+/) &&
|
|
23
|
-
// Skip nostr.wine's virtual relays
|
|
24
|
-
!url.slice(6).match(/\/npub/));
|
|
9
|
+
// Utils related to bare urls
|
|
10
|
+
const isRelayUrl = (url) => {
|
|
11
|
+
try {
|
|
12
|
+
new URL(url);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
25
18
|
};
|
|
19
|
+
exports.isRelayUrl = isRelayUrl;
|
|
20
|
+
const isShareableRelayUrl = (url) => Boolean((0, exports.isRelayUrl)(url) &&
|
|
21
|
+
// Is it actually a websocket url and has a dot
|
|
22
|
+
url.match(/^wss:\/\/.+\..+/) &&
|
|
23
|
+
// Don't match stuff with a port number
|
|
24
|
+
!url.slice(6).match(/:\d+/) &&
|
|
25
|
+
// Don't match stuff with a numeric tld
|
|
26
|
+
!url.slice(6).match(/\.\d+\b/) &&
|
|
27
|
+
// Don't match raw ip addresses
|
|
28
|
+
!url.slice(6).match(/\d+\.\d+\.\d+\.\d+/) &&
|
|
29
|
+
// Skip nostr.wine's virtual relays
|
|
30
|
+
!url.slice(6).match(/\/npub/));
|
|
26
31
|
exports.isShareableRelayUrl = isShareableRelayUrl;
|
|
27
32
|
const normalizeRelayUrl = (url, { allowInsecure = false } = {}) => {
|
|
28
33
|
var _a;
|
|
@@ -38,6 +43,9 @@ const normalizeRelayUrl = (url, { allowInsecure = false } = {}) => {
|
|
|
38
43
|
return prefix + url;
|
|
39
44
|
};
|
|
40
45
|
exports.normalizeRelayUrl = normalizeRelayUrl;
|
|
46
|
+
const displayRelayUrl = (url) => (0, lib_1.last)(url.split("://")).replace(/\/$/, "");
|
|
47
|
+
exports.displayRelayUrl = displayRelayUrl;
|
|
48
|
+
// In-memory relay implementation backed by Repository
|
|
41
49
|
class Relay extends lib_1.Emitter {
|
|
42
50
|
constructor(repository) {
|
|
43
51
|
super();
|
package/build/src/Relay.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Relay.cjs","sourceRoot":"","sources":["../../src/Relay.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Relay.cjs","sourceRoot":"","sources":["../../src/Relay.ts"],"names":[],"mappings":"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"}
|
package/build/src/Relay.d.ts
CHANGED
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
import { Emitter } from '@welshman/lib';
|
|
2
2
|
import type { Repository } from './Repository';
|
|
3
3
|
import type { Filter } from './Filters';
|
|
4
|
-
import type { TrustedEvent } from './Events';
|
|
4
|
+
import type { HashedEvent, TrustedEvent } from './Events';
|
|
5
5
|
export declare const LOCAL_RELAY_URL = "local://welshman.relay";
|
|
6
6
|
export declare const BOGUS_RELAY_URL = "bogus://welshman.relay";
|
|
7
|
+
export type RelayProfile = {
|
|
8
|
+
url: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
pubkey?: string;
|
|
11
|
+
contact?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
supported_nips?: number[];
|
|
14
|
+
limitation?: {
|
|
15
|
+
payment_required?: boolean;
|
|
16
|
+
auth_required?: boolean;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare const isRelayUrl: (url: string) => boolean;
|
|
7
20
|
export declare const isShareableRelayUrl: (url: string) => boolean;
|
|
8
21
|
type NormalizeRelayUrlOpts = {
|
|
9
22
|
allowInsecure?: boolean;
|
|
10
23
|
};
|
|
11
24
|
export declare const normalizeRelayUrl: (url: string, { allowInsecure }?: NormalizeRelayUrlOpts) => string;
|
|
12
|
-
export declare
|
|
13
|
-
|
|
25
|
+
export declare const displayRelayUrl: (url: string) => string;
|
|
26
|
+
export declare class Relay<E extends HashedEvent = TrustedEvent> extends Emitter {
|
|
27
|
+
readonly repository: Repository<E>;
|
|
14
28
|
subs: Map<string, Filter[]>;
|
|
15
|
-
constructor(repository: Repository<
|
|
29
|
+
constructor(repository: Repository<E>);
|
|
16
30
|
send(type: string, ...message: any[]): void;
|
|
17
|
-
handleEVENT([event]: [
|
|
31
|
+
handleEVENT([event]: [E]): void;
|
|
18
32
|
handleCLOSE([subId]: [string]): void;
|
|
19
33
|
handleREQ([subId, ...filters]: [string, ...Filter[]]): void;
|
|
20
34
|
}
|
package/build/src/Relay.mjs
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
import { Emitter, normalizeUrl, sleep, stripProtocol } from '@welshman/lib';
|
|
1
|
+
import { last, Emitter, normalizeUrl, sleep, stripProtocol } from '@welshman/lib';
|
|
2
2
|
import { matchFilters } from "./Filters.mjs";
|
|
3
|
+
// Constants and types
|
|
3
4
|
export const LOCAL_RELAY_URL = "local://welshman.relay";
|
|
4
5
|
export const BOGUS_RELAY_URL = "bogus://welshman.relay";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// Don't match stuff with a port number
|
|
15
|
-
!url.slice(6).match(/:\d+/) &&
|
|
16
|
-
// Don't match stuff with a numeric tld
|
|
17
|
-
!url.slice(6).match(/\.\d+\b/) &&
|
|
18
|
-
// Don't match raw ip addresses
|
|
19
|
-
!url.slice(6).match(/\d+\.\d+\.\d+\.\d+/) &&
|
|
20
|
-
// Skip nostr.wine's virtual relays
|
|
21
|
-
!url.slice(6).match(/\/npub/));
|
|
6
|
+
// Utils related to bare urls
|
|
7
|
+
export const isRelayUrl = (url) => {
|
|
8
|
+
try {
|
|
9
|
+
new URL(url);
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
22
15
|
};
|
|
16
|
+
export const isShareableRelayUrl = (url) => Boolean(isRelayUrl(url) &&
|
|
17
|
+
// Is it actually a websocket url and has a dot
|
|
18
|
+
url.match(/^wss:\/\/.+\..+/) &&
|
|
19
|
+
// Don't match stuff with a port number
|
|
20
|
+
!url.slice(6).match(/:\d+/) &&
|
|
21
|
+
// Don't match stuff with a numeric tld
|
|
22
|
+
!url.slice(6).match(/\.\d+\b/) &&
|
|
23
|
+
// Don't match raw ip addresses
|
|
24
|
+
!url.slice(6).match(/\d+\.\d+\.\d+\.\d+/) &&
|
|
25
|
+
// Skip nostr.wine's virtual relays
|
|
26
|
+
!url.slice(6).match(/\/npub/));
|
|
23
27
|
export const normalizeRelayUrl = (url, { allowInsecure = false } = {}) => {
|
|
24
28
|
var _a;
|
|
25
29
|
const prefix = allowInsecure ? ((_a = url.match(/^wss?:\/\//)) === null || _a === void 0 ? void 0 : _a[0]) || "wss://" : "wss://";
|
|
@@ -33,6 +37,8 @@ export const normalizeRelayUrl = (url, { allowInsecure = false } = {}) => {
|
|
|
33
37
|
}
|
|
34
38
|
return prefix + url;
|
|
35
39
|
};
|
|
40
|
+
export const displayRelayUrl = (url) => last(url.split("://")).replace(/\/$/, "");
|
|
41
|
+
// In-memory relay implementation backed by Repository
|
|
36
42
|
export class Relay extends Emitter {
|
|
37
43
|
constructor(repository) {
|
|
38
44
|
super();
|
package/build/src/Relay.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Relay.mjs","sourceRoot":"","sources":["../../src/Relay.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,eAAe;
|
|
1
|
+
{"version":3,"file":"Relay.mjs","sourceRoot":"","sources":["../../src/Relay.ts"],"names":[],"mappings":"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"}
|
package/build/src/Repository.cjs
CHANGED
|
@@ -106,9 +106,6 @@ class Repository extends lib_1.Emitter {
|
|
|
106
106
|
};
|
|
107
107
|
this.publish = (event, { shouldNotify = true } = {}) => {
|
|
108
108
|
var _a;
|
|
109
|
-
if (!(0, Events_1.isTrustedEvent)(event)) {
|
|
110
|
-
throw new Error("Invalid event published to Repository", event);
|
|
111
|
-
}
|
|
112
109
|
// If we've already seen this event, or it's been deleted, we're done
|
|
113
110
|
if (this.eventsById.get(event.id) || this.isDeleted(event)) {
|
|
114
111
|
return false;
|
|
@@ -133,7 +130,7 @@ class Repository extends lib_1.Emitter {
|
|
|
133
130
|
this.eventsByAddress.set(address, event);
|
|
134
131
|
}
|
|
135
132
|
// Save wrapper index
|
|
136
|
-
if (
|
|
133
|
+
if ((0, Events_1.isUnwrappedEvent)(event)) {
|
|
137
134
|
this.eventsByWrap.set(event.wrap.id, event);
|
|
138
135
|
}
|
|
139
136
|
// Update our timestamp and author indexes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.cjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":";;;AAAA,uCAA2G;AAC3G,uCAA8B;AAC9B,2CAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"Repository.cjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":";;;AAAA,uCAA2G;AAC3G,uCAA8B;AAC9B,2CAA4C;AAC5C,yCAAwD;AACxD,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,UAAiD,SAAQ,aAAO;IAA7E;;QACE,eAAU,GAAG,IAAI,GAAG,EAAa,CAAA;QACjC,iBAAY,GAAG,IAAI,GAAG,EAAa,CAAA;QACnC,oBAAe,GAAG,IAAI,GAAG,EAAa,CAAA;QACtC,gBAAW,GAAG,IAAI,GAAG,EAAe,CAAA;QACpC,gBAAW,GAAG,IAAI,GAAG,EAAe,CAAA;QACpC,mBAAc,GAAG,IAAI,GAAG,EAAe,CAAA;QACvC,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,MAAW,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAA;YAEZ,MAAM,KAAK,GAAG,EAAE,CAAA;YAEhB,KAAK,MAAM,WAAW,IAAI,IAAA,WAAK,EAAC,SAAS,EAAE,MAAM,CAAC,EAAE;gBAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,EAAE;wBAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qBAClB;iBACF;gBAED,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;oBACpC,MAAM,IAAA,WAAK,EAAC,CAAC,CAAC,CAAA;iBACf;aACF;YAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YAE5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAA;QACvC,CAAC,CAAA;QAED,UAAK,GAAG,GAAG,EAAE;YACX,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;YAE/C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;YACvB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;YAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YAEpB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAC,CAAC,CAAA;QAC3C,CAAC,CAAA;QAED,MAAM;QAEN,aAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE;YACjC,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;gBACvC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACtC,CAAC,CAAA;QAED,aAAQ,GAAG,CAAC,KAAQ,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,CAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAC,CAC5C,CAAA;YAED,OAAO,SAAS,IAAI,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAA;QAC9D,CAAC,CAAA;QAED,UAAK,GAAG,CAAC,OAAiB,EAAE,EAAC,cAAc,GAAG,KAAK,EAAC,GAAG,EAAE,EAAE,EAAE;YAC3D,MAAM,MAAM,GAAU,EAAE,CAAA;YACxB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,IAAI,MAAM,GAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;gBAEtD,IAAI,MAAM,CAAC,GAAG,EAAE;oBACd,MAAM,GAAG,MAAM,CAAC,GAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,cAAQ,CAAQ,CAAA;oBAC/E,MAAM,GAAG,IAAA,UAAI,EAAC,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;iBAC/B;qBAAM,IAAI,MAAM,CAAC,OAAO,EAAE;oBACzB,MAAM,GAAG,IAAA,UAAI,EAAC,MAAM,CAAC,OAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;oBACvF,MAAM,GAAG,IAAA,UAAI,EAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;iBACnC;qBAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;oBACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,eAAK,CAAC,CAAA;oBAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAA,SAAG,GAAE,CAAC,CAAA;oBAE9C,MAAM,GAAG,IAAA,UAAI,EACX,KAAK,CAAC,IAAI,CAAC,IAAA,WAAK,EAAC,QAAQ,EAAE,IAAA,SAAG,EAAC,QAAQ,CAAC,CAAC,CAAC;yBACvC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAC7D,CAAA;iBACF;qBAAM;oBACL,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAChD,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;4BACxC,SAAQ;yBACT;wBAED,MAAM,GAAG,IAAA,UAAI,EAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;wBAC1B,MAAM,GAAG,IAAA,UAAI,EACV,MAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAC9E,CAAA;wBAED,MAAK;qBACN;iBACF;gBAED,MAAM,KAAK,GAAQ,EAAE,CAAA;gBACrB,KAAK,MAAM,KAAK,IAAI,IAAA,YAAM,EAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;oBAC3D,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;wBAChD,MAAK;qBACN;oBAED,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;wBAC5C,SAAQ;qBACT;oBAED,IAAI,IAAA,qBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,EAAE;wBAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;qBAClB;iBACF;gBAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACnB;YAED,OAAO,IAAA,UAAI,EAAC,IAAA,aAAO,EAAC,MAAM,CAAC,CAAC,CAAA;QAC9B,CAAC,CAAA;QAED,YAAO,GAAG,CAAC,KAAQ,EAAE,EAAC,YAAY,GAAG,IAAI,EAAC,GAAG,EAAE,EAAW,EAAE;;YAC1D,qEAAqE;YACrE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC1D,OAAO,KAAK,CAAA;aACb;YAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;YACjC,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAA;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAEnD,IAAI,SAAS,EAAE;gBACb,uDAAuD;gBACvD,IAAI,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE;oBAC5C,OAAO,KAAK,CAAA;iBACb;gBAED,yEAAyE;gBACzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;gBAEhD,0CAA0C;gBAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;aAC1B;YAED,0BAA0B;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YAEpC,+BAA+B;YAC/B,IAAI,IAAA,sBAAa,EAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;aACzC;YAED,qBAAqB;YACrB,IAAI,IAAA,yBAAgB,EAAC,KAAK,CAAC,EAAE;gBAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;aAC5C;YAED,0CAA0C;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YAC/E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YAEtE,yBAAyB;YACzB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE;gBAC5B,IAAI,CAAA,MAAA,GAAG,CAAC,CAAC,CAAC,0CAAE,MAAM,MAAK,CAAC,EAAE;oBACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;oBAEhF,kFAAkF;oBAClF,gDAAgD;oBAChD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAM,EAAE;wBACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;wBAEnF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;wBAE1C,IAAI,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;4BAChD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;yBAC7B;qBACF;iBACF;aACF;YAED,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAC,CAAC,CAAA;aAC/C;YAED,OAAO,IAAI,CAAA;QACb,CAAC,CAAA;QAED,uBAAkB,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAA;QAEhG,kBAAa,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAA;QAElF,cAAS,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAcvF,CAAC;IAZC,YAAY;IAEZ,YAAY,CAAI,CAAc,EAAE,CAAI,EAAE,CAAI,EAAE,SAAa;QACvD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEtB,IAAI,SAAS,EAAE;YACb,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;SACxC;QAED,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACT,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACb,CAAC;CACF;AA/MD,gCA+MC"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { Emitter } from '@welshman/lib';
|
|
2
2
|
import type { Filter } from './Filters';
|
|
3
|
-
import type { TrustedEvent } from './Events';
|
|
3
|
+
import type { TrustedEvent, HashedEvent } from './Events';
|
|
4
4
|
export declare const DAY = 86400;
|
|
5
|
-
export declare class Repository<
|
|
6
|
-
eventsById: Map<string,
|
|
7
|
-
eventsByWrap: Map<string,
|
|
8
|
-
eventsByAddress: Map<string,
|
|
9
|
-
eventsByTag: Map<string,
|
|
10
|
-
eventsByDay: Map<number,
|
|
11
|
-
eventsByAuthor: Map<string,
|
|
5
|
+
export declare class Repository<E extends HashedEvent = TrustedEvent> extends Emitter {
|
|
6
|
+
eventsById: Map<string, E>;
|
|
7
|
+
eventsByWrap: Map<string, E>;
|
|
8
|
+
eventsByAddress: Map<string, E>;
|
|
9
|
+
eventsByTag: Map<string, E[]>;
|
|
10
|
+
eventsByDay: Map<number, E[]>;
|
|
11
|
+
eventsByAuthor: Map<string, E[]>;
|
|
12
12
|
deletes: Map<string, number>;
|
|
13
|
-
dump: () =>
|
|
14
|
-
load: (events:
|
|
13
|
+
dump: () => E[];
|
|
14
|
+
load: (events: E[], chunkSize?: number) => Promise<void>;
|
|
15
15
|
clear: () => void;
|
|
16
|
-
getEvent: (idOrAddress: string) =>
|
|
17
|
-
hasEvent: (event:
|
|
16
|
+
getEvent: (idOrAddress: string) => E | undefined;
|
|
17
|
+
hasEvent: (event: E) => boolean | undefined;
|
|
18
18
|
query: (filters: Filter[], { includeDeleted }?: {
|
|
19
19
|
includeDeleted?: boolean | undefined;
|
|
20
|
-
}) =>
|
|
21
|
-
publish: (event:
|
|
20
|
+
}) => E[];
|
|
21
|
+
publish: (event: E, { shouldNotify }?: {
|
|
22
22
|
shouldNotify?: boolean | undefined;
|
|
23
23
|
}) => boolean;
|
|
24
|
-
isDeletedByAddress: (event:
|
|
25
|
-
isDeletedById: (event:
|
|
26
|
-
isDeleted: (event:
|
|
27
|
-
_updateIndex<K>(m: Map<K,
|
|
24
|
+
isDeletedByAddress: (event: E) => boolean;
|
|
25
|
+
isDeletedById: (event: E) => boolean;
|
|
26
|
+
isDeleted: (event: E) => boolean;
|
|
27
|
+
_updateIndex<K>(m: Map<K, E[]>, k: K, e: E, duplicate?: E): void;
|
|
28
28
|
}
|
package/build/src/Repository.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { flatten, Emitter, sortBy, inc, chunk, sleep, uniq, omit, now, range, identity } from '@welshman/lib';
|
|
2
2
|
import { DELETE } from "./Kinds.mjs";
|
|
3
3
|
import { EPOCH, matchFilter } from "./Filters.mjs";
|
|
4
|
-
import { isReplaceable,
|
|
4
|
+
import { isReplaceable, isUnwrappedEvent } from "./Events.mjs";
|
|
5
5
|
import { getAddress } from "./Address.mjs";
|
|
6
6
|
export const DAY = 86400;
|
|
7
7
|
const getDay = (ts) => Math.floor(ts / DAY);
|
|
@@ -103,9 +103,6 @@ export class Repository extends Emitter {
|
|
|
103
103
|
};
|
|
104
104
|
this.publish = (event, { shouldNotify = true } = {}) => {
|
|
105
105
|
var _a;
|
|
106
|
-
if (!isTrustedEvent(event)) {
|
|
107
|
-
throw new Error("Invalid event published to Repository", event);
|
|
108
|
-
}
|
|
109
106
|
// If we've already seen this event, or it's been deleted, we're done
|
|
110
107
|
if (this.eventsById.get(event.id) || this.isDeleted(event)) {
|
|
111
108
|
return false;
|
|
@@ -130,7 +127,7 @@ export class Repository extends Emitter {
|
|
|
130
127
|
this.eventsByAddress.set(address, event);
|
|
131
128
|
}
|
|
132
129
|
// Save wrapper index
|
|
133
|
-
if (event
|
|
130
|
+
if (isUnwrappedEvent(event)) {
|
|
134
131
|
this.eventsByWrap.set(event.wrap.id, event);
|
|
135
132
|
}
|
|
136
133
|
// Update our timestamp and author indexes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repository.mjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAC,MAAM,eAAe;OACpG,EAAC,MAAM,EAAC;OACR,EAAC,KAAK,EAAE,WAAW,EAAC;OACpB,EAAC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"Repository.mjs","sourceRoot":"","sources":["../../src/Repository.ts"],"names":[],"mappings":"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"}
|