@welshman/app 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/build/src/collection.cjs +24 -11
  2. package/build/src/collection.cjs.map +1 -1
  3. package/build/src/collection.mjs +24 -11
  4. package/build/src/collection.mjs.map +1 -1
  5. package/build/src/context.cjs +38 -0
  6. package/build/src/context.cjs.map +1 -0
  7. package/build/src/context.d.ts +30 -0
  8. package/build/src/context.mjs +33 -0
  9. package/build/src/context.mjs.map +1 -0
  10. package/build/src/core.cjs +30 -8
  11. package/build/src/core.cjs.map +1 -1
  12. package/build/src/core.d.ts +7 -9
  13. package/build/src/core.mjs +31 -8
  14. package/build/src/core.mjs.map +1 -1
  15. package/build/src/follows.cjs +3 -7
  16. package/build/src/follows.cjs.map +1 -1
  17. package/build/src/follows.d.ts +1 -1
  18. package/build/src/follows.mjs +4 -8
  19. package/build/src/follows.mjs.map +1 -1
  20. package/build/src/handles.cjs +56 -14
  21. package/build/src/handles.cjs.map +1 -1
  22. package/build/src/handles.d.ts +10 -2
  23. package/build/src/handles.mjs +55 -15
  24. package/build/src/handles.mjs.map +1 -1
  25. package/build/src/index.cjs +2 -8
  26. package/build/src/index.cjs.map +1 -1
  27. package/build/src/index.d.ts +2 -0
  28. package/build/src/index.mjs +2 -8
  29. package/build/src/index.mjs.map +1 -1
  30. package/build/src/mutes.cjs +3 -7
  31. package/build/src/mutes.cjs.map +1 -1
  32. package/build/src/mutes.d.ts +1 -1
  33. package/build/src/mutes.mjs +4 -8
  34. package/build/src/mutes.mjs.map +1 -1
  35. package/build/src/profiles.cjs +11 -11
  36. package/build/src/profiles.cjs.map +1 -1
  37. package/build/src/profiles.d.ts +5 -6
  38. package/build/src/profiles.mjs +14 -14
  39. package/build/src/profiles.mjs.map +1 -1
  40. package/build/src/relaySelections.cjs +14 -8
  41. package/build/src/relaySelections.cjs.map +1 -1
  42. package/build/src/relaySelections.d.ts +10 -4
  43. package/build/src/relaySelections.mjs +13 -8
  44. package/build/src/relaySelections.mjs.map +1 -1
  45. package/build/src/relays.cjs +22 -28
  46. package/build/src/relays.cjs.map +1 -1
  47. package/build/src/relays.d.ts +1 -1
  48. package/build/src/relays.mjs +23 -29
  49. package/build/src/relays.mjs.map +1 -1
  50. package/build/src/router.cjs +375 -0
  51. package/build/src/router.cjs.map +1 -0
  52. package/build/src/router.d.ts +197 -0
  53. package/build/src/router.mjs +355 -0
  54. package/build/src/router.mjs.map +1 -0
  55. package/build/src/session.cjs +3 -4
  56. package/build/src/session.cjs.map +1 -1
  57. package/build/src/session.mjs +4 -5
  58. package/build/src/session.mjs.map +1 -1
  59. package/build/src/storage.cjs +23 -13
  60. package/build/src/storage.cjs.map +1 -1
  61. package/build/src/storage.d.ts +26 -2
  62. package/build/src/storage.mjs +24 -14
  63. package/build/src/storage.mjs.map +1 -1
  64. package/build/src/zappers.cjs +37 -16
  65. package/build/src/zappers.cjs.map +1 -1
  66. package/build/src/zappers.d.ts +4 -3
  67. package/build/src/zappers.mjs +37 -17
  68. package/build/src/zappers.mjs.map +1 -1
  69. package/package.json +6 -6
@@ -5,7 +5,6 @@ const store_1 = require("svelte/store");
5
5
  const lib_1 = require("@welshman/lib");
6
6
  const util_1 = require("@welshman/util");
7
7
  const store_2 = require("@welshman/store");
8
- const net_1 = require("@welshman/net");
9
8
  const signer_1 = require("@welshman/signer");
10
9
  exports.pubkey = (0, store_2.withGetter)((0, store_2.synced)("pubkey", null));
11
10
  exports.sessions = (0, store_2.withGetter)((0, store_2.synced)("sessions", {}));
@@ -30,9 +29,9 @@ exports.dropSession = dropSession;
30
29
  exports.nip46Perms = "sign_event:22242,nip04_encrypt,nip04_decrypt,nip44_encrypt,nip44_decrypt";
31
30
  exports.getSigner = (0, lib_1.memoize)((session) => {
32
31
  switch (session === null || session === void 0 ? void 0 : session.method) {
33
- case "extension":
32
+ case "nip07":
34
33
  return new signer_1.Nip07Signer();
35
- case "privkey":
34
+ case "nip01":
36
35
  return new signer_1.Nip01Signer(session.secret);
37
36
  case "nip46":
38
37
  return new signer_1.Nip46Signer(signer_1.Nip46Broker.get(session.pubkey, session.secret, session.handler));
@@ -53,7 +52,7 @@ const onAuth = async (url, challenge) => {
53
52
  ["challenge", challenge],
54
53
  ],
55
54
  }));
56
- net_1.NetworkContext.pool.get(url).send(["AUTH", event]);
55
+ lib_1.ctx.net.pool.get(url).send(["AUTH", event]);
57
56
  return event;
58
57
  };
59
58
  exports.onAuth = onAuth;
@@ -1 +1 @@
1
- {"version":3,"file":"session.cjs","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.cjs","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { derived } from "svelte/store";
2
- import { memoize, omit, equals, assoc } from "@welshman/lib";
2
+ import { ctx, memoize, omit, equals, assoc } from "@welshman/lib";
3
3
  import { createEvent } from "@welshman/util";
4
4
  import { withGetter, synced } from "@welshman/store";
5
- import { NetworkContext } from "@welshman/net";
6
5
  import { Nip46Broker, Nip46Signer, Nip07Signer, Nip01Signer } from "@welshman/signer";
7
6
  export const pubkey = withGetter(synced("pubkey", null));
8
7
  export const sessions = withGetter(synced("sessions", {}));
@@ -22,9 +21,9 @@ export const dropSession = (pubkey) => sessions.update($sessions => omit([pubkey
22
21
  export const nip46Perms = "sign_event:22242,nip04_encrypt,nip04_decrypt,nip44_encrypt,nip44_decrypt";
23
22
  export const getSigner = memoize((session) => {
24
23
  switch (session === null || session === void 0 ? void 0 : session.method) {
25
- case "extension":
24
+ case "nip07":
26
25
  return new Nip07Signer();
27
- case "privkey":
26
+ case "nip01":
28
27
  return new Nip01Signer(session.secret);
29
28
  case "nip46":
30
29
  return new Nip46Signer(Nip46Broker.get(session.pubkey, session.secret, session.handler));
@@ -45,7 +44,7 @@ export const onAuth = async (url, challenge) => {
45
44
  ["challenge", challenge],
46
45
  ],
47
46
  }));
48
- NetworkContext.pool.get(url).send(["AUTH", event]);
47
+ ctx.net.pool.get(url).send(["AUTH", event]);
49
48
  return event;
50
49
  };
51
50
  //# sourceMappingURL=session.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"OAAO,EAAC,OAAO,EAAC,MAAM,cAAc;OAC7B,EAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,eAAe;OACnD,EAAC,WAAW,EAAC,MAAM,gBAAgB;OACnC,EAAC,UAAU,EAAE,MAAM,EAAC,MAAM,iBAAiB;OAE3C,EAAC,cAAc,EAAC,MAAM,eAAe;OACrC,EAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,kBAAkB;AAUnF,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAgB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAA0B,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAC/B,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC7F,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC7C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE;QAChD,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAChD;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,CAAgC,EAAE,EAAE,CAChF,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE,CAC5C,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,0EAA0E,CAAA;AAEpG,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,OAAgB,EAAE,EAAE;IACpD,QAAQ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;QACvB,KAAK,WAAW;YACd,OAAO,IAAI,WAAW,EAAE,CAAA;QAC1B,KAAK,SAAS;YACZ,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAO,CAAC,CAAA;QACzC,KAAK,OAAO;YACV,OAAO,IAAI,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAO,EAAE,OAAO,CAAC,OAAQ,CAAC,CAAC,CAAA;QAC5F;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AAE7D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAW,EAAE,SAAiB,EAAE,EAAE;IAC7D,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE;QAClD,OAAM;KACP;IAED,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAE7B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,EAAG,CAAC,IAAI,CACpC,WAAW,CAAC,KAAK,EAAE;QACjB,IAAI,EAAE;YACJ,CAAC,OAAO,EAAE,GAAG,CAAC;YACd,CAAC,WAAW,EAAE,SAAS,CAAC;SACzB;KACF,CAAC,CACH,CAAA;IAED,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAElD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
1
+ {"version":3,"file":"session.mjs","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clearStorage = exports.closeStorage = exports.initStorage = exports.initIndexedDbAdapter = exports.bulkDelete = exports.bulkPut = exports.getAll = exports.DB_NAME = exports.subs = exports.dead = exports.db = void 0;
3
+ exports.storageAdapters = exports.clearStorage = exports.closeStorage = exports.initStorage = exports.initIndexedDbAdapter = exports.bulkDelete = exports.bulkPut = exports.getAll = exports.subs = exports.dead = exports.db = void 0;
4
4
  const idb_1 = require("idb");
5
5
  const throttle_debounce_1 = require("throttle-debounce");
6
6
  const store_1 = require("svelte/store");
@@ -8,7 +8,6 @@ const lib_1 = require("@welshman/lib");
8
8
  const store_2 = require("@welshman/store");
9
9
  exports.dead = (0, store_2.withGetter)((0, store_1.writable)(false));
10
10
  exports.subs = [];
11
- exports.DB_NAME = "flotilla";
12
11
  const getAll = async (name) => {
13
12
  const tx = exports.db.transaction(name, "readwrite");
14
13
  const store = tx.objectStore(name);
@@ -32,17 +31,15 @@ const bulkDelete = async (name, ids) => {
32
31
  };
33
32
  exports.bulkDelete = bulkDelete;
34
33
  const initIndexedDbAdapter = async (name, adapter) => {
35
- let copy = await (0, exports.getAll)(name);
36
- adapter.store.set(copy);
37
- adapter.store.subscribe((0, throttle_debounce_1.throttle)((0, lib_1.randomInt)(3000, 5000), async (data) => {
34
+ let prevRecords = await (0, exports.getAll)(name);
35
+ adapter.store.set(prevRecords);
36
+ adapter.store.subscribe((0, throttle_debounce_1.throttle)((0, lib_1.randomInt)(3000, 5000), async (newRecords) => {
38
37
  if (exports.dead.get()) {
39
38
  return;
40
39
  }
41
- const prevIds = new Set(copy.map(item => item[adapter.keyPath]));
42
- const currentIds = new Set(data.map(item => item[adapter.keyPath]));
43
- const newRecords = data.filter(r => !prevIds.has(r[adapter.keyPath]));
44
- const removedRecords = copy.filter(r => !currentIds.has(r[adapter.keyPath]));
45
- copy = data;
40
+ const currentIds = new Set(newRecords.map(item => item[adapter.keyPath]));
41
+ const removedRecords = prevRecords.filter(r => !currentIds.has(r[adapter.keyPath]));
42
+ prevRecords = newRecords;
46
43
  if (newRecords.length > 0) {
47
44
  await (0, exports.bulkPut)(name, newRecords);
48
45
  }
@@ -52,11 +49,14 @@ const initIndexedDbAdapter = async (name, adapter) => {
52
49
  }));
53
50
  };
54
51
  exports.initIndexedDbAdapter = initIndexedDbAdapter;
55
- const initStorage = async (version, adapters) => {
52
+ const initStorage = async (name, version, adapters) => {
56
53
  if (!window.indexedDB)
57
54
  return;
58
55
  window.addEventListener("beforeunload", () => (0, exports.closeStorage)());
59
- exports.db = await (0, idb_1.openDB)(exports.DB_NAME, version, {
56
+ if (exports.db) {
57
+ throw new Error("Db initialized multiple times");
58
+ }
59
+ exports.db = await (0, idb_1.openDB)(name, version, {
60
60
  upgrade(db) {
61
61
  const names = Object.keys(adapters);
62
62
  for (const name of db.objectStoreNames) {
@@ -85,7 +85,17 @@ const closeStorage = async () => {
85
85
  exports.closeStorage = closeStorage;
86
86
  const clearStorage = async () => {
87
87
  await (0, exports.closeStorage)();
88
- await (0, idb_1.deleteDB)(exports.DB_NAME);
88
+ await (0, idb_1.deleteDB)(exports.db.name);
89
89
  };
90
90
  exports.clearStorage = clearStorage;
91
+ exports.storageAdapters = {
92
+ fromObjectStore: (store) => ({
93
+ keyPath: "key",
94
+ store: (0, store_2.adapter)({
95
+ store: store,
96
+ forward: ($data) => Object.entries($data).map(([key, value]) => ({ key, value })),
97
+ backward: (data) => (0, lib_1.fromPairs)(data.map(({ key, value }) => [key, value])),
98
+ }),
99
+ }),
100
+ };
91
101
  //# sourceMappingURL=storage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.cjs","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":";;;AAAA,6BAAoC;AAEpC,yDAA0C;AAC1C,wCAAqC;AAErC,uCAAuC;AACvC,2CAA0C;AAW7B,QAAA,IAAI,GAAG,IAAA,kBAAU,EAAC,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC,CAAA;AAElC,QAAA,IAAI,GAAmB,EAAE,CAAA;AAEzB,QAAA,OAAO,GAAG,UAAU,CAAA;AAE1B,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC3C,MAAM,EAAE,GAAG,UAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAA;IAEnC,MAAM,EAAE,CAAC,IAAI,CAAA;IAEb,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AARY,QAAA,MAAM,UAQlB;AAEM,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,IAAW,EAAE,EAAE;IACzD,MAAM,EAAE,GAAG,UAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAElC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACpD,MAAM,EAAE,CAAC,IAAI,CAAA;AACf,CAAC,CAAA;AANY,QAAA,OAAO,WAMnB;AAEM,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,GAAa,EAAE,EAAE;IAC9D,MAAM,EAAE,GAAG,UAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAElC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,EAAE,CAAC,IAAI,CAAA;AACf,CAAC,CAAA;AANY,QAAA,UAAU,cAMtB;AAEM,MAAM,oBAAoB,GAAG,KAAK,EAAE,IAAY,EAAE,OAAyB,EAAE,EAAE;IACpF,IAAI,IAAI,GAAG,MAAM,IAAA,cAAM,EAAC,IAAI,CAAC,CAAA;IAE7B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,CAAC,KAAK,CAAC,SAAS,CACrB,IAAA,4BAAQ,EAAC,IAAA,eAAS,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;QACrD,IAAI,YAAI,CAAC,GAAG,EAAE,EAAE;YACd,OAAM;SACP;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAE5E,IAAI,GAAG,IAAI,CAAA;QAEX,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,IAAA,eAAO,EAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SAChC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,IAAA,kBAAU,EACd,IAAI,EACJ,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAClD,CAAA;SACF;IACH,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AA9BY,QAAA,oBAAoB,wBA8BhC;AAEM,MAAM,WAAW,GAAG,KAAK,EAAE,OAAe,EAAE,QAA0C,EAAE,EAAE;IAC/F,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAM;IAE7B,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAA;IAE7D,UAAE,GAAG,MAAM,IAAA,YAAM,EAAC,eAAO,EAAE,OAAO,EAAE;QAClC,OAAO,CAAC,EAAgB;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAEnC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,gBAAgB,EAAE;gBACtC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACzB,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;iBAC3B;aACF;YAED,KAAK,MAAM,CAAC,IAAI,EAAE,EAAC,OAAO,EAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACxD,IAAI;oBACF,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAC,OAAO,EAAC,CAAC,CAAA;iBACtC;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;iBAChB;aACF;QACH,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAA,4BAAoB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACrF,CAAA;AACH,CAAC,CAAA;AA5BY,QAAA,WAAW,eA4BvB;AAEM,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IACrC,YAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACd,YAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAC9B,MAAM,CAAA,UAAE,aAAF,UAAE,uBAAF,UAAE,CAAE,KAAK,EAAE,CAAA,CAAA;AACnB,CAAC,CAAA;AAJY,QAAA,YAAY,gBAIxB;AAEM,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IACrC,MAAM,IAAA,oBAAY,GAAE,CAAA;IACpB,MAAM,IAAA,cAAQ,EAAC,eAAO,CAAC,CAAA;AACzB,CAAC,CAAA;AAHY,QAAA,YAAY,gBAGxB"}
1
+ {"version":3,"file":"storage.cjs","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,35 @@ export declare const dead: Writable<boolean> & {
11
11
  get: () => boolean;
12
12
  };
13
13
  export declare const subs: Unsubscriber[];
14
- export declare const DB_NAME = "flotilla";
15
14
  export declare const getAll: (name: string) => Promise<any[]>;
16
15
  export declare const bulkPut: (name: string, data: any[]) => Promise<void>;
17
16
  export declare const bulkDelete: (name: string, ids: string[]) => Promise<void>;
18
17
  export declare const initIndexedDbAdapter: (name: string, adapter: IndexedDbAdapter) => Promise<void>;
19
- export declare const initStorage: (version: number, adapters: Record<string, IndexedDbAdapter>) => Promise<void>;
18
+ export declare const initStorage: (name: string, version: number, adapters: Record<string, IndexedDbAdapter>) => Promise<void>;
20
19
  export declare const closeStorage: () => Promise<void>;
21
20
  export declare const clearStorage: () => Promise<void>;
21
+ export declare const storageAdapters: {
22
+ fromObjectStore: <T>(store: Writable<Record<string, T>>) => {
23
+ keyPath: string;
24
+ store: {
25
+ set: (x: {
26
+ key: string;
27
+ value: T;
28
+ }[]) => void;
29
+ update: (f: (x: {
30
+ key: string;
31
+ value: T;
32
+ }[]) => {
33
+ key: string;
34
+ value: T;
35
+ }[]) => void;
36
+ subscribe(this: void, run: import("svelte/store").Subscriber<{
37
+ key: string;
38
+ value: T;
39
+ }[]>, invalidate?: import("svelte/store").Invalidator<{
40
+ key: string;
41
+ value: T;
42
+ }[]> | undefined): Unsubscriber;
43
+ };
44
+ };
45
+ };
@@ -1,12 +1,11 @@
1
1
  import { openDB, deleteDB } from "idb";
2
2
  import { throttle } from "throttle-debounce";
3
3
  import { writable } from "svelte/store";
4
- import { randomInt } from "@welshman/lib";
5
- import { withGetter } from "@welshman/store";
4
+ import { randomInt, fromPairs } from "@welshman/lib";
5
+ import { withGetter, adapter } from "@welshman/store";
6
6
  export let db;
7
7
  export const dead = withGetter(writable(false));
8
8
  export const subs = [];
9
- export const DB_NAME = "flotilla";
10
9
  export const getAll = async (name) => {
11
10
  const tx = db.transaction(name, "readwrite");
12
11
  const store = tx.objectStore(name);
@@ -27,17 +26,15 @@ export const bulkDelete = async (name, ids) => {
27
26
  await tx.done;
28
27
  };
29
28
  export const initIndexedDbAdapter = async (name, adapter) => {
30
- let copy = await getAll(name);
31
- adapter.store.set(copy);
32
- adapter.store.subscribe(throttle(randomInt(3000, 5000), async (data) => {
29
+ let prevRecords = await getAll(name);
30
+ adapter.store.set(prevRecords);
31
+ adapter.store.subscribe(throttle(randomInt(3000, 5000), async (newRecords) => {
33
32
  if (dead.get()) {
34
33
  return;
35
34
  }
36
- const prevIds = new Set(copy.map(item => item[adapter.keyPath]));
37
- const currentIds = new Set(data.map(item => item[adapter.keyPath]));
38
- const newRecords = data.filter(r => !prevIds.has(r[adapter.keyPath]));
39
- const removedRecords = copy.filter(r => !currentIds.has(r[adapter.keyPath]));
40
- copy = data;
35
+ const currentIds = new Set(newRecords.map(item => item[adapter.keyPath]));
36
+ const removedRecords = prevRecords.filter(r => !currentIds.has(r[adapter.keyPath]));
37
+ prevRecords = newRecords;
41
38
  if (newRecords.length > 0) {
42
39
  await bulkPut(name, newRecords);
43
40
  }
@@ -46,11 +43,14 @@ export const initIndexedDbAdapter = async (name, adapter) => {
46
43
  }
47
44
  }));
48
45
  };
49
- export const initStorage = async (version, adapters) => {
46
+ export const initStorage = async (name, version, adapters) => {
50
47
  if (!window.indexedDB)
51
48
  return;
52
49
  window.addEventListener("beforeunload", () => closeStorage());
53
- db = await openDB(DB_NAME, version, {
50
+ if (db) {
51
+ throw new Error("Db initialized multiple times");
52
+ }
53
+ db = await openDB(name, version, {
54
54
  upgrade(db) {
55
55
  const names = Object.keys(adapters);
56
56
  for (const name of db.objectStoreNames) {
@@ -77,6 +77,16 @@ export const closeStorage = async () => {
77
77
  };
78
78
  export const clearStorage = async () => {
79
79
  await closeStorage();
80
- await deleteDB(DB_NAME);
80
+ await deleteDB(db.name);
81
+ };
82
+ export const storageAdapters = {
83
+ fromObjectStore: (store) => ({
84
+ keyPath: "key",
85
+ store: adapter({
86
+ store: store,
87
+ forward: ($data) => Object.entries($data).map(([key, value]) => ({ key, value })),
88
+ backward: (data) => fromPairs(data.map(({ key, value }) => [key, value])),
89
+ }),
90
+ }),
81
91
  };
82
92
  //# sourceMappingURL=storage.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.mjs","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.mjs","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,35 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.loadZapper = exports.deriveZapper = exports.zappersByLnurl = exports.fetchZappers = exports.zappersByPubkey = exports.zappers = void 0;
4
+ exports.deriveZapperForPubkey = exports.loadZapper = exports.deriveZapper = exports.zappersByLnurl = exports.fetchZappers = exports.zappers = void 0;
5
5
  const store_1 = require("svelte/store");
6
6
  const store_2 = require("@welshman/store");
7
7
  const lib_1 = require("@welshman/lib");
8
- const core_1 = require("./core.cjs");
9
8
  const collection_1 = require("./collection.cjs");
10
9
  const profiles_1 = require("./profiles.cjs");
11
10
  exports.zappers = (0, store_2.withGetter)((0, store_1.writable)([]));
12
- exports.zappersByPubkey = (0, store_1.derived)([profiles_1.profilesByPubkey, exports.zappers], ([$profilesByPubkey, $zappers]) => (0, lib_1.indexBy)($zapper => $zapper.pubkey, $zappers.filter($zapper => { var _a; return $zapper.pubkey && ((_a = $profilesByPubkey.get($zapper.pubkey)) === null || _a === void 0 ? void 0 : _a.lnurl) === $zapper.lnurl; })));
13
- const fetchZappers = (lnurls) => {
14
- const base = core_1.env.DUFFLEPUD_URL;
15
- if (!base) {
16
- throw new Error("DUFFLEPUD_URL is required to fetch zapper info");
17
- }
11
+ const fetchZappers = async (lnurls) => {
12
+ const base = lib_1.ctx.app.dufflepudUrl;
18
13
  const zappersByLnurl = new Map();
19
- const res = (0, lib_1.postJson)(`${base}/zapper/info`, {
20
- lnurls: lnurls.map(lnurl => (0, lib_1.tryCatch)(() => (0, lib_1.bech32ToHex)(lnurl))).filter(lib_1.identity),
21
- });
22
- for (const { lnurl, info } of (res === null || res === void 0 ? void 0 : res.data) || []) {
23
- (0, lib_1.tryCatch)(() => zappersByLnurl.set((0, lib_1.bech32ToHex)(lnurl), info));
14
+ // Use dufflepud if we it's set up to protect user privacy, otherwise fetch directly
15
+ if (base) {
16
+ const hexUrls = lnurls.map(lnurl => (0, lib_1.tryCatch)(() => (0, lib_1.bech32ToHex)(lnurl))).filter(lib_1.identity);
17
+ const res = await (0, lib_1.tryCatch)(async () => await (0, lib_1.postJson)(`${base}/zapper/info`, { lnurls: hexUrls }));
18
+ for (const { lnurl, info } of (res === null || res === void 0 ? void 0 : res.data) || []) {
19
+ (0, lib_1.tryCatch)(() => zappersByLnurl.set((0, lib_1.hexToBech32)("lnurl", lnurl), info));
20
+ }
21
+ }
22
+ else {
23
+ const results = await Promise.all(lnurls.map(async (lnurl) => {
24
+ const hexUrl = (0, lib_1.tryCatch)(() => (0, lib_1.bech32ToHex)(lnurl));
25
+ const info = hexUrl ? await (0, lib_1.tryCatch)(async () => await (0, lib_1.fetchJson)(hexUrl)) : undefined;
26
+ return { lnurl, hexUrl, info };
27
+ }));
28
+ for (const { lnurl, info } of results) {
29
+ if (info) {
30
+ zappersByLnurl.set(lnurl, info);
31
+ }
32
+ }
24
33
  }
25
34
  return zappersByLnurl;
26
35
  };
@@ -33,11 +42,23 @@ _a = (0, collection_1.collection)({
33
42
  const fresh = await (0, exports.fetchZappers)((0, lib_1.uniq)(lnurls));
34
43
  const stale = exports.zappersByLnurl.get();
35
44
  const items = lnurls.map(lnurl => {
36
- const zapper = fresh.get(lnurl) || stale.get(lnurl) || {};
37
- return { ...zapper, lnurl };
45
+ const newZapper = fresh.get(lnurl);
46
+ const oldZapper = stale.get(lnurl);
47
+ if (newZapper) {
48
+ stale.set(lnurl, { ...newZapper, lnurl });
49
+ }
50
+ return { ...oldZapper, ...newZapper, lnurl };
38
51
  });
39
- exports.zappers.update($zappers => (0, lib_1.uniqBy)($zapper => $zapper.lnurl, [...$zappers, ...items]));
52
+ exports.zappers.set(Array.from(stale.values()));
40
53
  return items;
41
54
  }),
42
55
  }), exports.zappersByLnurl = _a.indexStore, exports.deriveZapper = _a.deriveItem, exports.loadZapper = _a.loadItem;
56
+ const deriveZapperForPubkey = (pubkey, request = {}) => (0, store_1.derived)([exports.zappersByLnurl, (0, profiles_1.deriveProfile)(pubkey, request)], ([$zappersByLnurl, $profile]) => {
57
+ if (!($profile === null || $profile === void 0 ? void 0 : $profile.lnurl)) {
58
+ return undefined;
59
+ }
60
+ (0, exports.loadZapper)($profile.lnurl);
61
+ return $zappersByLnurl.get($profile.lnurl);
62
+ });
63
+ exports.deriveZapperForPubkey = deriveZapperForPubkey;
43
64
  //# sourceMappingURL=zappers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"zappers.cjs","sourceRoot":"","sources":["../../src/zappers.ts"],"names":[],"mappings":";;;;AAAA,wCAA8C;AAC9C,2CAA0C;AAE1C,uCAAuG;AACvG,qCAA0B;AAC1B,iDAAuC;AACvC,6CAA2C;AAE9B,QAAA,OAAO,GAAG,IAAA,kBAAU,EAAC,IAAA,gBAAQ,EAAW,EAAE,CAAC,CAAC,CAAA;AAE5C,QAAA,eAAe,GAAG,IAAA,eAAO,EAAC,CAAC,2BAAgB,EAAE,eAAO,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,EAAE,CACpG,IAAA,aAAO,EACL,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EACzB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAC,OAAA,OAAO,CAAC,MAAM,IAAI,CAAA,MAAA,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,0CAAE,KAAK,MAAK,OAAO,CAAC,KAAK,CAAA,EAAA,CAAC,CAC7G,CACF,CAAA;AAEM,MAAM,YAAY,GAAG,CAAC,MAAgB,EAAE,EAAE;IAC/C,MAAM,IAAI,GAAG,UAAG,CAAC,aAAc,CAAA;IAE/B,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;KAClE;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAChD,MAAM,GAAG,GAAQ,IAAA,cAAQ,EAAC,GAAG,IAAI,cAAc,EAAE;QAC/C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,IAAA,iBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAQ,CAAC;KACjF,CAAC,CAAA;IAEF,KAAK,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,EAAE,EAAE;QAC3C,IAAA,cAAQ,EAAC,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAA,iBAAW,EAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;KAC7D;IAED,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAjBY,QAAA,YAAY,gBAiBxB;AAEY,KAIT,IAAA,uBAAU,EAAC;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,eAAO;IACd,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK;IACxC,IAAI,EAAE,IAAA,aAAO,EAAC,GAAG,EAAE,KAAK,EAAE,MAAgB,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAA,UAAI,EAAC,MAAM,CAAC,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,sBAAc,CAAC,GAAG,EAAE,CAAA;QAClC,MAAM,KAAK,GAAa,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YAEzD,OAAO,EAAC,GAAG,MAAM,EAAE,KAAK,EAAC,CAAA;QAC3B,CAAC,CAAC,CAAA;QAEF,eAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAA,YAAM,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAErF,OAAO,KAAK,CAAA;IACd,CAAC,CAAC;CACH,CAAC,EApBY,sBAAc,kBACd,oBAAY,kBACd,kBAAU,eAkBpB"}
1
+ {"version":3,"file":"zappers.cjs","sourceRoot":"","sources":["../../src/zappers.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  /// <reference types="svelte" />
2
- import type { Zapper } from '@welshman/util';
2
+ import { type Zapper } from '@welshman/util';
3
+ import { type SubscribeRequest } from "@welshman/net";
3
4
  export declare const zappers: import("svelte/store").Writable<Zapper[]> & {
4
5
  get: () => Zapper[];
5
6
  };
6
- export declare const zappersByPubkey: import("svelte/store").Readable<Map<string | undefined, Zapper>>;
7
- export declare const fetchZappers: (lnurls: string[]) => Map<string, Zapper>;
7
+ export declare const fetchZappers: (lnurls: string[]) => Promise<Map<string, Zapper>>;
8
8
  export declare const zappersByLnurl: import("svelte/store").Readable<Map<string, Zapper>> & {
9
9
  get: () => Map<string, Zapper>;
10
10
  }, deriveZapper: (key: import("@welshman/lib").Maybe<string>) => import("svelte/store").Readable<Zapper | undefined>, loadZapper: (key: string) => Promise<Zapper | undefined>;
11
+ export declare const deriveZapperForPubkey: (pubkey: string, request?: Partial<SubscribeRequest>) => import("svelte/store").Readable<Zapper | undefined>;
@@ -1,22 +1,31 @@
1
1
  import { writable, derived } from 'svelte/store';
2
2
  import { withGetter } from '@welshman/store';
3
- import { uniq, identity, bech32ToHex, indexBy, tryCatch, uniqBy, batcher, postJson } from '@welshman/lib';
4
- import { env } from "./core.mjs";
3
+ import { ctx, identity, fetchJson, uniq, bech32ToHex, hexToBech32, tryCatch, batcher, postJson } from '@welshman/lib';
5
4
  import { collection } from "./collection.mjs";
6
- import { profilesByPubkey } from "./profiles.mjs";
5
+ import { deriveProfile } from "./profiles.mjs";
7
6
  export const zappers = withGetter(writable([]));
8
- export const zappersByPubkey = derived([profilesByPubkey, zappers], ([$profilesByPubkey, $zappers]) => indexBy($zapper => $zapper.pubkey, $zappers.filter($zapper => { var _a; return $zapper.pubkey && ((_a = $profilesByPubkey.get($zapper.pubkey)) === null || _a === void 0 ? void 0 : _a.lnurl) === $zapper.lnurl; })));
9
- export const fetchZappers = (lnurls) => {
10
- const base = env.DUFFLEPUD_URL;
11
- if (!base) {
12
- throw new Error("DUFFLEPUD_URL is required to fetch zapper info");
13
- }
7
+ export const fetchZappers = async (lnurls) => {
8
+ const base = ctx.app.dufflepudUrl;
14
9
  const zappersByLnurl = new Map();
15
- const res = postJson(`${base}/zapper/info`, {
16
- lnurls: lnurls.map(lnurl => tryCatch(() => bech32ToHex(lnurl))).filter(identity),
17
- });
18
- for (const { lnurl, info } of (res === null || res === void 0 ? void 0 : res.data) || []) {
19
- tryCatch(() => zappersByLnurl.set(bech32ToHex(lnurl), info));
10
+ // Use dufflepud if we it's set up to protect user privacy, otherwise fetch directly
11
+ if (base) {
12
+ const hexUrls = lnurls.map(lnurl => tryCatch(() => bech32ToHex(lnurl))).filter(identity);
13
+ const res = await tryCatch(async () => await postJson(`${base}/zapper/info`, { lnurls: hexUrls }));
14
+ for (const { lnurl, info } of (res === null || res === void 0 ? void 0 : res.data) || []) {
15
+ tryCatch(() => zappersByLnurl.set(hexToBech32("lnurl", lnurl), info));
16
+ }
17
+ }
18
+ else {
19
+ const results = await Promise.all(lnurls.map(async (lnurl) => {
20
+ const hexUrl = tryCatch(() => bech32ToHex(lnurl));
21
+ const info = hexUrl ? await tryCatch(async () => await fetchJson(hexUrl)) : undefined;
22
+ return { lnurl, hexUrl, info };
23
+ }));
24
+ for (const { lnurl, info } of results) {
25
+ if (info) {
26
+ zappersByLnurl.set(lnurl, info);
27
+ }
28
+ }
20
29
  }
21
30
  return zappersByLnurl;
22
31
  };
@@ -28,11 +37,22 @@ export const { indexStore: zappersByLnurl, deriveItem: deriveZapper, loadItem: l
28
37
  const fresh = await fetchZappers(uniq(lnurls));
29
38
  const stale = zappersByLnurl.get();
30
39
  const items = lnurls.map(lnurl => {
31
- const zapper = fresh.get(lnurl) || stale.get(lnurl) || {};
32
- return { ...zapper, lnurl };
40
+ const newZapper = fresh.get(lnurl);
41
+ const oldZapper = stale.get(lnurl);
42
+ if (newZapper) {
43
+ stale.set(lnurl, { ...newZapper, lnurl });
44
+ }
45
+ return { ...oldZapper, ...newZapper, lnurl };
33
46
  });
34
- zappers.update($zappers => uniqBy($zapper => $zapper.lnurl, [...$zappers, ...items]));
47
+ zappers.set(Array.from(stale.values()));
35
48
  return items;
36
49
  }),
37
50
  });
51
+ export const deriveZapperForPubkey = (pubkey, request = {}) => derived([zappersByLnurl, deriveProfile(pubkey, request)], ([$zappersByLnurl, $profile]) => {
52
+ if (!($profile === null || $profile === void 0 ? void 0 : $profile.lnurl)) {
53
+ return undefined;
54
+ }
55
+ loadZapper($profile.lnurl);
56
+ return $zappersByLnurl.get($profile.lnurl);
57
+ });
38
58
  //# sourceMappingURL=zappers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"zappers.mjs","sourceRoot":"","sources":["../../src/zappers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zappers.mjs","sourceRoot":"","sources":["../../src/zappers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@welshman/app",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "author": "hodlbod",
5
5
  "license": "MIT",
6
6
  "description": "A collection of svelte stores for use in building nostr client applications.",
@@ -31,11 +31,11 @@
31
31
  "typescript": "~5.1.6"
32
32
  },
33
33
  "dependencies": {
34
- "@welshman/lib": "0.0.16",
35
- "@welshman/net": "0.0.20",
36
- "@welshman/signer": "0.0.4",
37
- "@welshman/store": "0.0.4",
38
- "@welshman/util": "0.0.29",
34
+ "@welshman/lib": "0.0.17",
35
+ "@welshman/net": "0.0.21",
36
+ "@welshman/signer": "0.0.5",
37
+ "@welshman/store": "0.0.5",
38
+ "@welshman/util": "0.0.30",
39
39
  "fuse.js": "^7.0.0",
40
40
  "idb": "^8.0.0",
41
41
  "svelte": "^4.2.18",