@welshman/app 0.0.20 → 0.0.21

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.
@@ -10,25 +10,25 @@ const thunk_1 = require("./thunk.cjs");
10
10
  const unfollow = async (value) => {
11
11
  const list = (0, store_1.get)(user_1.userFollows) || (0, util_1.makeList)({ kind: util_1.FOLLOWS });
12
12
  const event = await (0, util_1.removeFromList)(list, value).reconcile(session_1.nip44EncryptToSelf);
13
- return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.WriteRelays().getUrls() });
13
+ return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.FromUser().getUrls() });
14
14
  };
15
15
  exports.unfollow = unfollow;
16
16
  const follow = async (tag) => {
17
17
  const list = (0, store_1.get)(user_1.userFollows) || (0, util_1.makeList)({ kind: util_1.FOLLOWS });
18
18
  const event = await (0, util_1.addToListPublicly)(list, tag).reconcile(session_1.nip44EncryptToSelf);
19
- return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.WriteRelays().getUrls() });
19
+ return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.FromUser().getUrls() });
20
20
  };
21
21
  exports.follow = follow;
22
22
  const unmute = async (value) => {
23
23
  const list = (0, store_1.get)(user_1.userMutes) || (0, util_1.makeList)({ kind: util_1.MUTES });
24
24
  const event = await (0, util_1.removeFromList)(list, value).reconcile(session_1.nip44EncryptToSelf);
25
- return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.WriteRelays().getUrls() });
25
+ return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.FromUser().getUrls() });
26
26
  };
27
27
  exports.unmute = unmute;
28
28
  const mute = async (tag) => {
29
29
  const list = (0, store_1.get)(user_1.userMutes) || (0, util_1.makeList)({ kind: util_1.MUTES });
30
30
  const event = await (0, util_1.addToListPublicly)(list, tag).reconcile(session_1.nip44EncryptToSelf);
31
- return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.WriteRelays().getUrls() });
31
+ return (0, thunk_1.publishThunk)({ event, relays: lib_1.ctx.app.router.FromUser().getUrls() });
32
32
  };
33
33
  exports.mute = mute;
34
34
  //# sourceMappingURL=commands.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.cjs","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":";;;AAAA,wCAAgC;AAChC,uCAAiC;AACjC,yCAA0F;AAC1F,qCAA6C;AAC7C,2CAA4C;AAC5C,uCAAoC;AAE7B,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,kBAAW,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,cAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE7E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AALY,QAAA,QAAQ,YAKpB;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,kBAAW,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,cAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAiB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE9E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AALY,QAAA,MAAM,UAKlB;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,gBAAS,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,YAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE7E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AALY,QAAA,MAAM,UAKlB;AAEM,MAAM,IAAI,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,gBAAS,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,YAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAiB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE9E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AALY,QAAA,IAAI,QAKhB"}
1
+ {"version":3,"file":"commands.cjs","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":";;;AAAA,wCAAgC;AAChC,uCAAiC;AACjC,yCAA0F;AAC1F,qCAA6C;AAC7C,2CAA4C;AAC5C,uCAAoC;AAE7B,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,kBAAW,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,cAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE7E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AALY,QAAA,QAAQ,YAKpB;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,kBAAW,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,cAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAiB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE9E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AALY,QAAA,MAAM,UAKlB;AAEM,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,gBAAS,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,YAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE7E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AALY,QAAA,MAAM,UAKlB;AAEM,MAAM,IAAI,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAA,WAAG,EAAC,gBAAS,CAAC,IAAI,IAAA,eAAQ,EAAC,EAAC,IAAI,EAAE,YAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAiB,EAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,4BAAkB,CAAC,CAAA;IAE9E,OAAO,IAAA,oBAAY,EAAC,EAAC,KAAK,EAAE,MAAM,EAAE,SAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AALY,QAAA,IAAI,QAKhB"}
@@ -7,21 +7,21 @@ import { publishThunk } from "./thunk.mjs";
7
7
  export const unfollow = async (value) => {
8
8
  const list = get(userFollows) || makeList({ kind: FOLLOWS });
9
9
  const event = await removeFromList(list, value).reconcile(nip44EncryptToSelf);
10
- return publishThunk({ event, relays: ctx.app.router.WriteRelays().getUrls() });
10
+ return publishThunk({ event, relays: ctx.app.router.FromUser().getUrls() });
11
11
  };
12
12
  export const follow = async (tag) => {
13
13
  const list = get(userFollows) || makeList({ kind: FOLLOWS });
14
14
  const event = await addToListPublicly(list, tag).reconcile(nip44EncryptToSelf);
15
- return publishThunk({ event, relays: ctx.app.router.WriteRelays().getUrls() });
15
+ return publishThunk({ event, relays: ctx.app.router.FromUser().getUrls() });
16
16
  };
17
17
  export const unmute = async (value) => {
18
18
  const list = get(userMutes) || makeList({ kind: MUTES });
19
19
  const event = await removeFromList(list, value).reconcile(nip44EncryptToSelf);
20
- return publishThunk({ event, relays: ctx.app.router.WriteRelays().getUrls() });
20
+ return publishThunk({ event, relays: ctx.app.router.FromUser().getUrls() });
21
21
  };
22
22
  export const mute = async (tag) => {
23
23
  const list = get(userMutes) || makeList({ kind: MUTES });
24
24
  const event = await addToListPublicly(list, tag).reconcile(nip44EncryptToSelf);
25
- return publishThunk({ event, relays: ctx.app.router.WriteRelays().getUrls() });
25
+ return publishThunk({ event, relays: ctx.app.router.FromUser().getUrls() });
26
26
  };
27
27
  //# sourceMappingURL=commands.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.mjs","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"OAAO,EAAC,GAAG,EAAC,MAAM,cAAc;OACzB,EAAC,GAAG,EAAC,MAAM,eAAe;OAC1B,EAAC,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,gBAAgB;OACnF,EAAC,WAAW,EAAE,SAAS,EAAC;OACxB,EAAC,kBAAkB,EAAC;OACpB,EAAC,YAAY,EAAC;AAErB,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE7E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE9E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE7E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE9E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC9E,CAAC,CAAA"}
1
+ {"version":3,"file":"commands.mjs","sourceRoot":"","sources":["../../src/commands.ts"],"names":[],"mappings":"OAAO,EAAC,GAAG,EAAC,MAAM,cAAc;OACzB,EAAC,GAAG,EAAC,MAAM,eAAe;OAC1B,EAAC,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,gBAAgB;OACnF,EAAC,WAAW,EAAE,SAAS,EAAC;OACxB,EAAC,kBAAkB,EAAC;OACpB,EAAC,YAAY,EAAC;AAErB,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE7E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE9E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE7E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,GAAa,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC,CAAA;IACtD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAE9E,OAAO,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAC,CAAC,CAAA;AAC3E,CAAC,CAAA"}
@@ -12,6 +12,8 @@ const getDefaultNetContext = (overrides = {}) => ({
12
12
  ...(0, net_1.getDefaultNetContext)(),
13
13
  signEvent: (event) => { var _a; return (_a = session_1.signer.get()) === null || _a === void 0 ? void 0 : _a.sign(event); },
14
14
  onEvent: (url, event) => {
15
+ if ((0, util_1.isEphemeralKind)(event.kind) || (0, util_1.isDVMKind)(event.kind))
16
+ return;
15
17
  core_1.tracker.track(event.id, url);
16
18
  core_1.repository.publish(event);
17
19
  // Eagerly load profiles since they're critical to UX
@@ -1 +1 @@
1
- {"version":3,"file":"context.cjs","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,uCAAgH;AAEhH,yCAAiD;AAEjD,qCAA0C;AAC1C,yCAAwD;AACxD,2CAAgC;AAEhC,6CAAsC;AAW/B,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,GAAG,IAAA,0BAA4B,GAAE;IACjC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE,WAAC,OAAA,MAAA,gBAAM,CAAC,GAAG,EAAE,0CAAE,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA;IAC7D,OAAO,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE;QAC5C,cAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5B,iBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEzB,qDAAqD;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAI,EAAE;YACvB,IAAA,sBAAW,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA;SAC1B;IACH,CAAC;IACD,SAAS,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE,CAAC,iBAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5E,qBAAqB,EAAE,CAAC,IAAoB,EAAE,EAAE;QAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,eAAS,EAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACzF,MAAM,OAAO,GAAG,IAAA,mBAAY,EAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAC/E,MAAM,UAAU,GAAuB,IAAA,kCAA4B,EAAC,UAAU,CAAC,CAAA;QAE/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,KAAK,MAAM,SAAS,IAAK,IAAA,4BAAmB,EAAC,OAAO,CAAC,EAAE;gBACrD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,GAAG,SAAS;CACb,CAAC,CAAA;AA3BW,QAAA,oBAAoB,wBA2B/B;AAEK,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,IAAA,mBAAU,GAAE;IACpB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,IAAI;IACpB,GAAG,SAAS;CACb,CAAC,CAAA;AANW,QAAA,oBAAoB,wBAM/B"}
1
+ {"version":3,"file":"context.cjs","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AACvC,uCAAgH;AAEhH,yCAA8E;AAE9E,qCAA0C;AAC1C,yCAAwD;AACxD,2CAAgC;AAEhC,6CAAsC;AAW/B,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,GAAG,IAAA,0BAA4B,GAAE;IACjC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE,WAAC,OAAA,MAAA,gBAAM,CAAC,GAAG,EAAE,0CAAE,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA;IAC7D,OAAO,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE;QAC5C,IAAI,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAA,gBAAS,EAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAM;QAEhE,cAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5B,iBAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEzB,qDAAqD;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAI,EAAE;YACvB,IAAA,sBAAW,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA;SAC1B;IACH,CAAC;IACD,SAAS,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE,CAAC,iBAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5E,qBAAqB,EAAE,CAAC,IAAoB,EAAE,EAAE;QAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,eAAS,EAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACzF,MAAM,OAAO,GAAG,IAAA,mBAAY,EAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAC/E,MAAM,UAAU,GAAuB,IAAA,kCAA4B,EAAC,UAAU,CAAC,CAAA;QAE/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,KAAK,MAAM,SAAS,IAAK,IAAA,4BAAmB,EAAC,OAAO,CAAC,EAAE;gBACrD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,GAAG,SAAS;CACb,CAAC,CAAA;AA7BW,QAAA,oBAAoB,wBA6B/B;AAEK,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,IAAA,mBAAU,GAAE;IACpB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,IAAI;IACpB,GAAG,SAAS;CACb,CAAC,CAAA;AANW,QAAA,oBAAoB,wBAM/B"}
@@ -1,6 +1,6 @@
1
1
  import { partition } from "@welshman/lib";
2
2
  import { defaultOptimizeSubscriptions, getDefaultNetContext as originalGetDefaultNetContext } from "@welshman/net";
3
- import { WRAP, unionFilters } from "@welshman/util";
3
+ import { WRAP, isEphemeralKind, isDVMKind, unionFilters } from "@welshman/util";
4
4
  import { tracker, repository } from "./core.mjs";
5
5
  import { makeRouter, getFilterSelections } from "./router.mjs";
6
6
  import { signer } from "./session.mjs";
@@ -9,6 +9,8 @@ export const getDefaultNetContext = (overrides = {}) => ({
9
9
  ...originalGetDefaultNetContext(),
10
10
  signEvent: (event) => { var _a; return (_a = signer.get()) === null || _a === void 0 ? void 0 : _a.sign(event); },
11
11
  onEvent: (url, event) => {
12
+ if (isEphemeralKind(event.kind) || isDVMKind(event.kind))
13
+ return;
12
14
  tracker.track(event.id, url);
13
15
  repository.publish(event);
14
16
  // Eagerly load profiles since they're critical to UX
@@ -1 +1 @@
1
- {"version":3,"file":"context.mjs","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"OAAO,EAAC,SAAS,EAAC,MAAM,eAAe;OAChC,EAAC,4BAA4B,EAAE,oBAAoB,IAAI,4BAA4B,EAAC,MAAM,eAAe;OAEzG,EAAC,IAAI,EAAE,YAAY,EAAC,MAAM,gBAAgB;OAE1C,EAAC,OAAO,EAAE,UAAU,EAAC;OACrB,EAAC,UAAU,EAAE,mBAAmB,EAAC;OACjC,EAAC,MAAM,EAAC;OAER,EAAC,WAAW,EAAC;AAWpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,GAAG,4BAA4B,EAAE;IACjC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,GAAG,EAAE,0CAAE,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA;IAC7D,OAAO,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEzB,qDAAqD;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;YACvB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;SAC1B;IACH,CAAC;IACD,SAAS,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5E,qBAAqB,EAAE,CAAC,IAAoB,EAAE,EAAE;QAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACzF,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAC/E,MAAM,UAAU,GAAuB,4BAA4B,CAAC,UAAU,CAAC,CAAA;QAE/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,KAAK,MAAM,SAAS,IAAK,mBAAmB,CAAC,OAAO,CAAC,EAAE;gBACrD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,GAAG,SAAS;CACb,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,UAAU,EAAE;IACpB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,IAAI;IACpB,GAAG,SAAS;CACb,CAAC,CAAA"}
1
+ {"version":3,"file":"context.mjs","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"OAAO,EAAC,SAAS,EAAC,MAAM,eAAe;OAChC,EAAC,4BAA4B,EAAE,oBAAoB,IAAI,4BAA4B,EAAC,MAAM,eAAe;OAEzG,EAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAG,YAAY,EAAC,MAAM,gBAAgB;OAEvE,EAAC,OAAO,EAAE,UAAU,EAAC;OACrB,EAAC,UAAU,EAAE,mBAAmB,EAAC;OACjC,EAAC,MAAM,EAAC;OAER,EAAC,WAAW,EAAC;AAWpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,GAAG,4BAA4B,EAAE;IACjC,SAAS,EAAE,CAAC,KAAmB,EAAE,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,GAAG,EAAE,0CAAE,IAAI,CAAC,KAAK,CAAC,CAAA,EAAA;IAC7D,OAAO,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE;QAC5C,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAM;QAEhE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEzB,qDAAqD;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;YACvB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;SAC1B;IACH,CAAC;IACD,SAAS,EAAE,CAAC,GAAW,EAAE,KAAmB,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAC5E,qBAAqB,EAAE,CAAC,IAAoB,EAAE,EAAE;QAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACzF,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAC/E,MAAM,UAAU,GAAuB,4BAA4B,CAAC,UAAU,CAAC,CAAA;QAE/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,KAAK,MAAM,SAAS,IAAK,mBAAmB,CAAC,OAAO,CAAC,EAAE;gBACrD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,GAAG,SAAS;CACb,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAAiC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,EAAE,UAAU,EAAE;IACpB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,GAAG;IAChB,cAAc,EAAE,IAAI;IACpB,GAAG,SAAS;CACb,CAAC,CAAA"}
@@ -25,7 +25,7 @@ exports.feedLoader = new feeds_1.FeedLoader({
25
25
  const $signer = session_1.signer.get() || new signer_1.Nip01Signer((0, signer_1.makeSecret)());
26
26
  const event = await $signer.sign((0, util_1.createEvent)(kind, { tags }));
27
27
  const relays = request.relays
28
- ? lib_1.ctx.app.router.fromRelays(request.relays).getUrls()
28
+ ? lib_1.ctx.app.router.FromRelays(request.relays).getUrls()
29
29
  : lib_1.ctx.app.router.FromPubkeys((0, util_1.getPubkeyTagValues)(tags)).getUrls();
30
30
  const req = (0, dvm_1.makeDvmRequest)({ event, relays });
31
31
  await new Promise(resolve => {
@@ -22,7 +22,7 @@ export const feedLoader = new FeedLoader({
22
22
  const $signer = signer.get() || new Nip01Signer(makeSecret());
23
23
  const event = await $signer.sign(createEvent(kind, { tags }));
24
24
  const relays = request.relays
25
- ? ctx.app.router.fromRelays(request.relays).getUrls()
25
+ ? ctx.app.router.FromRelays(request.relays).getUrls()
26
26
  : ctx.app.router.FromPubkeys(getPubkeyTagValues(tags)).getUrls();
27
27
  const req = makeDvmRequest({ event, relays });
28
28
  await new Promise(resolve => {
@@ -8,14 +8,27 @@ const lib_1 = require("@welshman/lib");
8
8
  const util_1 = require("@welshman/util");
9
9
  const net_1 = require("@welshman/net");
10
10
  const collection_1 = require("./collection.cjs");
11
- // Relays
12
11
  const makeRelayStats = () => ({
13
12
  first_seen: (0, lib_1.now)(),
14
- event_count: 0,
15
- request_count: 0,
16
- publish_count: 0,
17
- connect_count: 0,
18
13
  recent_errors: [],
14
+ open_count: 0,
15
+ close_count: 0,
16
+ publish_count: 0,
17
+ request_count: 0,
18
+ event_count: 0,
19
+ last_open: 0,
20
+ last_close: 0,
21
+ last_error: 0,
22
+ last_publish: 0,
23
+ last_request: 0,
24
+ last_event: 0,
25
+ last_auth: 0,
26
+ publish_timer: 0,
27
+ publish_success_count: 0,
28
+ publish_failure_count: 0,
29
+ eose_count: 0,
30
+ eose_timer: 0,
31
+ notice_count: 0,
19
32
  });
20
33
  exports.makeRelayStats = makeRelayStats;
21
34
  exports.relays = (0, store_2.withGetter)((0, store_1.writable)([]));
@@ -65,41 +78,100 @@ const updateRelayStats = (0, lib_1.batch)(500, (updates) => {
65
78
  if (!$relay.stats) {
66
79
  $relay.stats = (0, exports.makeRelayStats)();
67
80
  }
81
+ else if ($relay.stats.notice_count === undefined) {
82
+ // Migrate from old stats
83
+ $relay.stats = { ...(0, exports.makeRelayStats)(), ...$relay.stats };
84
+ }
68
85
  for (const [_, update] of items) {
69
86
  update($relay.stats);
70
87
  }
71
- $relaysByUrl.set(url, $relay);
88
+ // Copy so the database gets updated, since we're mutating in updates
89
+ $relaysByUrl.set(url, { ...$relay });
72
90
  }
73
91
  return Array.from($relaysByUrl.values());
74
92
  });
75
93
  });
76
- const onConnectionSend = ({ url }, socketMessage) => {
77
- const [verb] = (0, net_1.asMessage)(socketMessage);
94
+ const onConnectionOpen = ({ url }) => updateRelayStats([url, stats => {
95
+ stats.last_open = (0, lib_1.now)();
96
+ stats.open_count++;
97
+ }]);
98
+ const onConnectionClose = ({ url }) => updateRelayStats([url, stats => {
99
+ stats.last_close = (0, lib_1.now)();
100
+ stats.close_count++;
101
+ }]);
102
+ const onConnectionSend = ({ url }, [verb]) => {
78
103
  if (verb === 'REQ') {
79
- updateRelayStats([url, stats => ++stats.request_count]);
104
+ updateRelayStats([url, stats => {
105
+ stats.request_count++;
106
+ stats.last_request = (0, lib_1.now)();
107
+ }]);
80
108
  }
81
109
  else if (verb === 'EVENT') {
82
- updateRelayStats([url, stats => ++stats.publish_count]);
110
+ updateRelayStats([url, stats => {
111
+ stats.publish_count++;
112
+ stats.last_publish = (0, lib_1.now)();
113
+ }]);
83
114
  }
84
115
  };
85
- const onConnectionReceive = ({ url }, socketMessage) => {
86
- const [verb] = (0, net_1.asMessage)(socketMessage);
87
- if (verb === 'EVENT') {
88
- updateRelayStats([url, stats => ++stats.event_count]);
116
+ const onConnectionReceive = ({ url, state }, [verb, ...extra]) => {
117
+ if (verb === 'OK') {
118
+ const [eventId, ok] = extra;
119
+ const pub = state.pendingPublishes.get(eventId);
120
+ updateRelayStats([url, stats => {
121
+ if (pub) {
122
+ stats.publish_timer += (0, lib_1.ago)(pub.sent);
123
+ }
124
+ if (ok) {
125
+ stats.publish_success_count++;
126
+ }
127
+ else {
128
+ stats.publish_failure_count++;
129
+ }
130
+ }]);
131
+ }
132
+ else if (verb === 'AUTH') {
133
+ updateRelayStats([url, stats => {
134
+ stats.last_auth = (0, lib_1.now)();
135
+ }]);
136
+ }
137
+ else if (verb === 'EVENT') {
138
+ updateRelayStats([url, stats => {
139
+ stats.event_count++;
140
+ stats.last_event = (0, lib_1.now)();
141
+ }]);
142
+ }
143
+ else if (verb === 'EOSE') {
144
+ const request = state.pendingRequests.get(extra[0]);
145
+ // Only count the first eose
146
+ if (request && !request.eose) {
147
+ updateRelayStats([url, stats => {
148
+ stats.eose_count++;
149
+ stats.eose_timer += (0, lib_1.now)() - request.sent;
150
+ }]);
151
+ }
152
+ }
153
+ else if (verb === 'NOTICE') {
154
+ updateRelayStats([url, stats => {
155
+ stats.notice_count++;
156
+ }]);
89
157
  }
90
158
  };
91
- const onConnectionFault = ({ url }) => updateRelayStats([url, stats => {
159
+ const onConnectionError = ({ url }) => updateRelayStats([url, stats => {
160
+ stats.last_error = (0, lib_1.now)();
92
161
  stats.recent_errors = stats.recent_errors.concat((0, lib_1.now)()).slice(-10);
93
162
  }]);
94
163
  const trackRelayStats = (connection) => {
95
- updateRelayStats([connection.url, stats => ++stats.connect_count]);
96
- connection.on('send', onConnectionSend);
97
- connection.on('receive', onConnectionReceive);
98
- connection.on('fault', onConnectionFault);
164
+ connection.on(net_1.ConnectionEvent.Open, onConnectionOpen);
165
+ connection.on(net_1.ConnectionEvent.Close, onConnectionClose);
166
+ connection.on(net_1.ConnectionEvent.Send, onConnectionSend);
167
+ connection.on(net_1.ConnectionEvent.Receive, onConnectionReceive);
168
+ connection.on(net_1.ConnectionEvent.Error, onConnectionError);
99
169
  return () => {
100
- connection.off('send', onConnectionSend);
101
- connection.off('receive', onConnectionReceive);
102
- connection.off('fault', onConnectionFault);
170
+ connection.off(net_1.ConnectionEvent.Open, onConnectionOpen);
171
+ connection.off(net_1.ConnectionEvent.Close, onConnectionClose);
172
+ connection.off(net_1.ConnectionEvent.Send, onConnectionSend);
173
+ connection.off(net_1.ConnectionEvent.Receive, onConnectionReceive);
174
+ connection.off(net_1.ConnectionEvent.Error, onConnectionError);
103
175
  };
104
176
  };
105
177
  exports.trackRelayStats = trackRelayStats;
@@ -1 +1 @@
1
- {"version":3,"file":"relays.cjs","sourceRoot":"","sources":["../../src/relays.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relays.cjs","sourceRoot":"","sources":["../../src/relays.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,27 @@
1
1
  /// <reference types="svelte" />
2
2
  import type { RelayProfile } from "@welshman/util";
3
- import { type Connection } from '@welshman/net';
3
+ import type { Connection } from '@welshman/net';
4
4
  export type RelayStats = {
5
5
  first_seen: number;
6
- event_count: number;
7
- request_count: number;
8
- publish_count: number;
9
- connect_count: number;
10
6
  recent_errors: number[];
7
+ open_count: number;
8
+ close_count: number;
9
+ publish_count: number;
10
+ request_count: number;
11
+ event_count: number;
12
+ last_open: number;
13
+ last_close: number;
14
+ last_error: number;
15
+ last_publish: number;
16
+ last_request: number;
17
+ last_event: number;
18
+ last_auth: number;
19
+ publish_timer: number;
20
+ publish_success_count: number;
21
+ publish_failure_count: number;
22
+ eose_count: number;
23
+ eose_timer: number;
24
+ notice_count: number;
11
25
  };
12
26
  export declare const makeRelayStats: () => RelayStats;
13
27
  export type Relay = {
@@ -1,17 +1,30 @@
1
1
  import { writable, derived } from 'svelte/store';
2
2
  import { withGetter } from '@welshman/store';
3
- import { ctx, groupBy, indexBy, batch, now, uniq, batcher, postJson } from '@welshman/lib';
3
+ import { ctx, groupBy, indexBy, batch, now, ago, uniq, batcher, postJson } from '@welshman/lib';
4
4
  import { normalizeRelayUrl, displayRelayUrl, displayRelayProfile } from "@welshman/util";
5
- import { asMessage } from '@welshman/net';
5
+ import { ConnectionEvent } from '@welshman/net';
6
6
  import { collection } from "./collection.mjs";
7
- // Relays
8
7
  export const makeRelayStats = () => ({
9
8
  first_seen: now(),
10
- event_count: 0,
11
- request_count: 0,
12
- publish_count: 0,
13
- connect_count: 0,
14
9
  recent_errors: [],
10
+ open_count: 0,
11
+ close_count: 0,
12
+ publish_count: 0,
13
+ request_count: 0,
14
+ event_count: 0,
15
+ last_open: 0,
16
+ last_close: 0,
17
+ last_error: 0,
18
+ last_publish: 0,
19
+ last_request: 0,
20
+ last_event: 0,
21
+ last_auth: 0,
22
+ publish_timer: 0,
23
+ publish_success_count: 0,
24
+ publish_failure_count: 0,
25
+ eose_count: 0,
26
+ eose_timer: 0,
27
+ notice_count: 0,
15
28
  });
16
29
  export const relays = withGetter(writable([]));
17
30
  export const relaysByPubkey = derived(relays, $relays => groupBy($relay => { var _a; return (_a = $relay.profile) === null || _a === void 0 ? void 0 : _a.pubkey; }, $relays.filter($relay => { var _a; return (_a = $relay.profile) === null || _a === void 0 ? void 0 : _a.pubkey; })));
@@ -57,41 +70,100 @@ const updateRelayStats = batch(500, (updates) => {
57
70
  if (!$relay.stats) {
58
71
  $relay.stats = makeRelayStats();
59
72
  }
73
+ else if ($relay.stats.notice_count === undefined) {
74
+ // Migrate from old stats
75
+ $relay.stats = { ...makeRelayStats(), ...$relay.stats };
76
+ }
60
77
  for (const [_, update] of items) {
61
78
  update($relay.stats);
62
79
  }
63
- $relaysByUrl.set(url, $relay);
80
+ // Copy so the database gets updated, since we're mutating in updates
81
+ $relaysByUrl.set(url, { ...$relay });
64
82
  }
65
83
  return Array.from($relaysByUrl.values());
66
84
  });
67
85
  });
68
- const onConnectionSend = ({ url }, socketMessage) => {
69
- const [verb] = asMessage(socketMessage);
86
+ const onConnectionOpen = ({ url }) => updateRelayStats([url, stats => {
87
+ stats.last_open = now();
88
+ stats.open_count++;
89
+ }]);
90
+ const onConnectionClose = ({ url }) => updateRelayStats([url, stats => {
91
+ stats.last_close = now();
92
+ stats.close_count++;
93
+ }]);
94
+ const onConnectionSend = ({ url }, [verb]) => {
70
95
  if (verb === 'REQ') {
71
- updateRelayStats([url, stats => ++stats.request_count]);
96
+ updateRelayStats([url, stats => {
97
+ stats.request_count++;
98
+ stats.last_request = now();
99
+ }]);
72
100
  }
73
101
  else if (verb === 'EVENT') {
74
- updateRelayStats([url, stats => ++stats.publish_count]);
102
+ updateRelayStats([url, stats => {
103
+ stats.publish_count++;
104
+ stats.last_publish = now();
105
+ }]);
75
106
  }
76
107
  };
77
- const onConnectionReceive = ({ url }, socketMessage) => {
78
- const [verb] = asMessage(socketMessage);
79
- if (verb === 'EVENT') {
80
- updateRelayStats([url, stats => ++stats.event_count]);
108
+ const onConnectionReceive = ({ url, state }, [verb, ...extra]) => {
109
+ if (verb === 'OK') {
110
+ const [eventId, ok] = extra;
111
+ const pub = state.pendingPublishes.get(eventId);
112
+ updateRelayStats([url, stats => {
113
+ if (pub) {
114
+ stats.publish_timer += ago(pub.sent);
115
+ }
116
+ if (ok) {
117
+ stats.publish_success_count++;
118
+ }
119
+ else {
120
+ stats.publish_failure_count++;
121
+ }
122
+ }]);
123
+ }
124
+ else if (verb === 'AUTH') {
125
+ updateRelayStats([url, stats => {
126
+ stats.last_auth = now();
127
+ }]);
128
+ }
129
+ else if (verb === 'EVENT') {
130
+ updateRelayStats([url, stats => {
131
+ stats.event_count++;
132
+ stats.last_event = now();
133
+ }]);
134
+ }
135
+ else if (verb === 'EOSE') {
136
+ const request = state.pendingRequests.get(extra[0]);
137
+ // Only count the first eose
138
+ if (request && !request.eose) {
139
+ updateRelayStats([url, stats => {
140
+ stats.eose_count++;
141
+ stats.eose_timer += now() - request.sent;
142
+ }]);
143
+ }
144
+ }
145
+ else if (verb === 'NOTICE') {
146
+ updateRelayStats([url, stats => {
147
+ stats.notice_count++;
148
+ }]);
81
149
  }
82
150
  };
83
- const onConnectionFault = ({ url }) => updateRelayStats([url, stats => {
151
+ const onConnectionError = ({ url }) => updateRelayStats([url, stats => {
152
+ stats.last_error = now();
84
153
  stats.recent_errors = stats.recent_errors.concat(now()).slice(-10);
85
154
  }]);
86
155
  export const trackRelayStats = (connection) => {
87
- updateRelayStats([connection.url, stats => ++stats.connect_count]);
88
- connection.on('send', onConnectionSend);
89
- connection.on('receive', onConnectionReceive);
90
- connection.on('fault', onConnectionFault);
156
+ connection.on(ConnectionEvent.Open, onConnectionOpen);
157
+ connection.on(ConnectionEvent.Close, onConnectionClose);
158
+ connection.on(ConnectionEvent.Send, onConnectionSend);
159
+ connection.on(ConnectionEvent.Receive, onConnectionReceive);
160
+ connection.on(ConnectionEvent.Error, onConnectionError);
91
161
  return () => {
92
- connection.off('send', onConnectionSend);
93
- connection.off('receive', onConnectionReceive);
94
- connection.off('fault', onConnectionFault);
162
+ connection.off(ConnectionEvent.Open, onConnectionOpen);
163
+ connection.off(ConnectionEvent.Close, onConnectionClose);
164
+ connection.off(ConnectionEvent.Send, onConnectionSend);
165
+ connection.off(ConnectionEvent.Receive, onConnectionReceive);
166
+ connection.off(ConnectionEvent.Error, onConnectionError);
95
167
  };
96
168
  };
97
169
  //# sourceMappingURL=relays.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"relays.mjs","sourceRoot":"","sources":["../../src/relays.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relays.mjs","sourceRoot":"","sources":["../../src/relays.ts"],"names":[],"mappings":"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"}