@welshman/app 0.6.8 → 0.7.1

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 (178) hide show
  1. package/dist/app/src/blossom.d.ts +7 -5
  2. package/dist/app/src/blossom.d.ts.map +1 -1
  3. package/dist/app/src/blossom.js +12 -11
  4. package/dist/app/src/blossom.js.map +1 -1
  5. package/dist/app/src/commands.d.ts +2 -2
  6. package/dist/app/src/commands.d.ts.map +1 -1
  7. package/dist/app/src/commands.js +29 -29
  8. package/dist/app/src/commands.js.map +1 -1
  9. package/dist/app/src/core.d.ts +0 -6
  10. package/dist/app/src/core.d.ts.map +1 -1
  11. package/dist/app/src/core.js +0 -33
  12. package/dist/app/src/core.js.map +1 -1
  13. package/dist/app/src/feeds.d.ts.map +1 -1
  14. package/dist/app/src/feeds.js +5 -4
  15. package/dist/app/src/feeds.js.map +1 -1
  16. package/dist/app/src/follows.d.ts +8 -5
  17. package/dist/app/src/follows.d.ts.map +1 -1
  18. package/dist/app/src/follows.js +12 -10
  19. package/dist/app/src/follows.js.map +1 -1
  20. package/dist/app/src/handles.d.ts +14 -5
  21. package/dist/app/src/handles.d.ts.map +1 -1
  22. package/dist/app/src/handles.js +46 -37
  23. package/dist/app/src/handles.js.map +1 -1
  24. package/dist/app/src/index.d.ts +2 -2
  25. package/dist/app/src/index.d.ts.map +1 -1
  26. package/dist/app/src/index.js +12 -12
  27. package/dist/app/src/index.js.map +1 -1
  28. package/dist/app/src/messagingRelayLists.d.ts +9 -0
  29. package/dist/app/src/messagingRelayLists.d.ts.map +1 -0
  30. package/dist/app/src/messagingRelayLists.js +18 -0
  31. package/dist/app/src/messagingRelayLists.js.map +1 -0
  32. package/dist/app/src/mutes.d.ts +8 -4
  33. package/dist/app/src/mutes.d.ts.map +1 -1
  34. package/dist/app/src/mutes.js +12 -10
  35. package/dist/app/src/mutes.js.map +1 -1
  36. package/dist/app/src/pins.d.ts +8 -5
  37. package/dist/app/src/pins.d.ts.map +1 -1
  38. package/dist/app/src/pins.js +12 -10
  39. package/dist/app/src/pins.js.map +1 -1
  40. package/dist/app/src/profiles.d.ts +9 -6
  41. package/dist/app/src/profiles.d.ts.map +1 -1
  42. package/dist/app/src/profiles.js +15 -13
  43. package/dist/app/src/profiles.js.map +1 -1
  44. package/dist/app/src/relayLists.d.ts +15 -0
  45. package/dist/app/src/relayLists.d.ts.map +1 -0
  46. package/dist/app/src/{relaySelections.js → relayLists.js} +14 -12
  47. package/dist/app/src/relayLists.js.map +1 -0
  48. package/dist/app/src/relayStats.d.ts +8 -3
  49. package/dist/app/src/relayStats.d.ts.map +1 -1
  50. package/dist/app/src/relayStats.js +16 -10
  51. package/dist/app/src/relayStats.js.map +1 -1
  52. package/dist/app/src/relays.d.ts +15 -8
  53. package/dist/app/src/relays.d.ts.map +1 -1
  54. package/dist/app/src/relays.js +48 -42
  55. package/dist/app/src/relays.js.map +1 -1
  56. package/dist/app/src/search.js +3 -3
  57. package/dist/app/src/search.js.map +1 -1
  58. package/dist/app/src/session.d.ts.map +1 -1
  59. package/dist/app/src/session.js +2 -2
  60. package/dist/app/src/session.js.map +1 -1
  61. package/dist/app/src/sync.js +2 -2
  62. package/dist/app/src/sync.js.map +1 -1
  63. package/dist/app/src/thunk.d.ts.map +1 -1
  64. package/dist/app/src/thunk.js +2 -2
  65. package/dist/app/src/thunk.js.map +1 -1
  66. package/dist/app/src/topics.d.ts +2 -1
  67. package/dist/app/src/topics.d.ts.map +1 -1
  68. package/dist/app/src/topics.js +33 -15
  69. package/dist/app/src/topics.js.map +1 -1
  70. package/dist/app/src/user.d.ts +24 -21
  71. package/dist/app/src/user.d.ts.map +1 -1
  72. package/dist/app/src/user.js +35 -50
  73. package/dist/app/src/user.js.map +1 -1
  74. package/dist/app/src/wot.d.ts +8 -4
  75. package/dist/app/src/wot.d.ts.map +1 -1
  76. package/dist/app/src/wot.js +20 -16
  77. package/dist/app/src/wot.js.map +1 -1
  78. package/dist/app/src/zappers.d.ts +14 -7
  79. package/dist/app/src/zappers.d.ts.map +1 -1
  80. package/dist/app/src/zappers.js +55 -47
  81. package/dist/app/src/zappers.js.map +1 -1
  82. package/dist/lib/src/Tools.d.ts +36 -9
  83. package/dist/lib/src/Tools.d.ts.map +1 -1
  84. package/dist/lib/src/Tools.js +86 -38
  85. package/dist/lib/src/Tools.js.map +1 -1
  86. package/dist/net/src/policy.d.ts.map +1 -1
  87. package/dist/net/src/policy.js +18 -3
  88. package/dist/net/src/policy.js.map +1 -1
  89. package/dist/net/src/repository.js +1 -1
  90. package/dist/net/src/repository.js.map +1 -1
  91. package/dist/signer/src/nip59.d.ts.map +1 -1
  92. package/dist/signer/src/nip59.js +2 -2
  93. package/dist/signer/src/nip59.js.map +1 -1
  94. package/dist/signer/src/signers/nip01.d.ts.map +1 -1
  95. package/dist/signer/src/signers/nip01.js +2 -1
  96. package/dist/signer/src/signers/nip01.js.map +1 -1
  97. package/dist/signer/src/signers/nip07.d.ts.map +1 -1
  98. package/dist/signer/src/signers/nip07.js +2 -1
  99. package/dist/signer/src/signers/nip07.js.map +1 -1
  100. package/dist/signer/src/signers/nip46.d.ts +17 -2
  101. package/dist/signer/src/signers/nip46.d.ts.map +1 -1
  102. package/dist/signer/src/signers/nip46.js +137 -14
  103. package/dist/signer/src/signers/nip46.js.map +1 -1
  104. package/dist/signer/src/signers/nip55.d.ts.map +1 -1
  105. package/dist/signer/src/signers/nip55.js +2 -1
  106. package/dist/signer/src/signers/nip55.js.map +1 -1
  107. package/dist/signer/src/util.d.ts +1 -36
  108. package/dist/signer/src/util.d.ts.map +1 -1
  109. package/dist/signer/src/util.js +2 -25
  110. package/dist/signer/src/util.js.map +1 -1
  111. package/dist/store/src/index.d.ts +1 -5
  112. package/dist/store/src/index.d.ts.map +1 -1
  113. package/dist/store/src/index.js +1 -5
  114. package/dist/store/src/index.js.map +1 -1
  115. package/dist/store/src/misc.d.ts +18 -0
  116. package/dist/store/src/misc.d.ts.map +1 -0
  117. package/dist/store/src/misc.js +66 -0
  118. package/dist/store/src/misc.js.map +1 -0
  119. package/dist/store/src/repository.d.ts +52 -11
  120. package/dist/store/src/repository.d.ts.map +1 -1
  121. package/dist/store/src/repository.js +305 -80
  122. package/dist/store/src/repository.js.map +1 -1
  123. package/dist/tsconfig.build.tsbuildinfo +1 -1
  124. package/dist/util/src/Events.d.ts +2 -0
  125. package/dist/util/src/Events.d.ts.map +1 -1
  126. package/dist/util/src/Events.js +3 -1
  127. package/dist/util/src/Events.js.map +1 -1
  128. package/dist/util/src/Keys.d.ts +37 -0
  129. package/dist/util/src/Keys.d.ts.map +1 -0
  130. package/dist/util/src/Keys.js +26 -0
  131. package/dist/util/src/Keys.js.map +1 -0
  132. package/dist/util/src/Kinds.d.ts +8 -1
  133. package/dist/util/src/Kinds.d.ts.map +1 -1
  134. package/dist/util/src/Kinds.js +8 -1
  135. package/dist/util/src/Kinds.js.map +1 -1
  136. package/dist/util/src/Pow.d.ts +11 -0
  137. package/dist/util/src/Pow.d.ts.map +1 -0
  138. package/dist/util/src/Pow.js +127 -0
  139. package/dist/util/src/Pow.js.map +1 -0
  140. package/dist/util/src/Relay.d.ts +1 -1
  141. package/dist/util/src/Relay.d.ts.map +1 -1
  142. package/dist/util/src/Relay.js +1 -1
  143. package/dist/util/src/Relay.js.map +1 -1
  144. package/dist/util/src/Zaps.d.ts.map +1 -1
  145. package/dist/util/src/Zaps.js +2 -2
  146. package/dist/util/src/Zaps.js.map +1 -1
  147. package/dist/util/src/index.d.ts +2 -0
  148. package/dist/util/src/index.d.ts.map +1 -1
  149. package/dist/util/src/index.js +2 -0
  150. package/dist/util/src/index.js.map +1 -1
  151. package/package.json +8 -8
  152. package/dist/app/src/inboxRelaySelections.d.ts +0 -6
  153. package/dist/app/src/inboxRelaySelections.d.ts.map +0 -1
  154. package/dist/app/src/inboxRelaySelections.js +0 -16
  155. package/dist/app/src/inboxRelaySelections.js.map +0 -1
  156. package/dist/app/src/relaySelections.d.ts +0 -11
  157. package/dist/app/src/relaySelections.d.ts.map +0 -1
  158. package/dist/app/src/relaySelections.js.map +0 -1
  159. package/dist/store/src/collection.d.ts +0 -34
  160. package/dist/store/src/collection.d.ts.map +0 -1
  161. package/dist/store/src/collection.js +0 -82
  162. package/dist/store/src/collection.js.map +0 -1
  163. package/dist/store/src/custom.d.ts +0 -10
  164. package/dist/store/src/custom.d.ts.map +0 -1
  165. package/dist/store/src/custom.js +0 -41
  166. package/dist/store/src/custom.js.map +0 -1
  167. package/dist/store/src/getter.d.ts +0 -11
  168. package/dist/store/src/getter.d.ts.map +0 -1
  169. package/dist/store/src/getter.js +0 -11
  170. package/dist/store/src/getter.js.map +0 -1
  171. package/dist/store/src/memoize.d.ts +0 -5
  172. package/dist/store/src/memoize.d.ts.map +0 -1
  173. package/dist/store/src/memoize.js +0 -6
  174. package/dist/store/src/memoize.js.map +0 -1
  175. package/dist/store/src/throttle.d.ts +0 -3
  176. package/dist/store/src/throttle.d.ts.map +0 -1
  177. package/dist/store/src/throttle.js +0 -9
  178. package/dist/store/src/throttle.js.map +0 -1
@@ -1,11 +0,0 @@
1
- import { Filter, TrustedEvent, PublishedList } from "@welshman/util";
2
- import { LoadOptions } from "@welshman/net";
3
- export type LoadUsingOutboxOptions = Omit<LoadOptions, "relays">;
4
- export declare const loadUsingOutbox: (request: LoadUsingOutboxOptions) => Promise<Promise<TrustedEvent[]>>;
5
- export declare const makeOutboxLoader: (kind: number, filter?: Filter) => (pubkey: string, relays: string[]) => Promise<[TrustedEvent[], TrustedEvent[]]>;
6
- export declare const makeOutboxLoaderWithIndexers: (kind: number, filter?: Filter) => (pubkey: string, relays: string[]) => Promise<[TrustedEvent[], TrustedEvent[], TrustedEvent[]]>;
7
- export declare const relaySelections: import("@welshman/store").WritableWithGetter<PublishedList[]>;
8
- export declare const relaySelectionsByPubkey: import("@welshman/store").ReadableWithGetter<Map<string, PublishedList>>, deriveRelaySelections: (key: string | undefined, relays?: string[]) => import("svelte/store").Readable<undefined> | {
9
- subscribe: (f: import("svelte/store").Subscriber<PublishedList | undefined>) => import("svelte/store").Unsubscriber;
10
- }, loadRelaySelections: (key: string, relays?: string[], force?: boolean) => Promise<PublishedList | undefined>;
11
- //# sourceMappingURL=relaySelections.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relaySelections.d.ts","sourceRoot":"","sources":["../../../src/relaySelections.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EAGN,YAAY,EACZ,aAAa,EACd,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAO,WAAW,EAAC,MAAM,eAAe,CAAA;AAI/C,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;AAEhE,eAAO,MAAM,eAAe,uEAK1B,CAAA;AAEF,eAAO,MAAM,gBAAgB,GAC1B,MAAM,MAAM,EAAE,SAAQ,MAAW,MACjC,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,8CAIhC,CAAA;AAEH,eAAO,MAAM,4BAA4B,GACtC,MAAM,MAAM,EAAE,SAAQ,MAAW,MACjC,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,8DAQhC,CAAA;AAEH,eAAO,MAAM,eAAe,+DAI1B,CAAA;AAEF,eAAO,MACO,uBAAuB,4EACvB,qBAAqB;;GACvB,mBAAmB,yFAM7B,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"relaySelections.js","sourceRoot":"","sources":["../../../src/relaySelections.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { Readable, Subscriber } from "svelte/store";
2
- import { ReadableWithGetter } from "./getter.js";
3
- export type FreshnessUpdate = {
4
- ns: string;
5
- key: string;
6
- ts: number;
7
- };
8
- export declare const freshness: import("./getter.js").WritableWithGetter<Record<string, number>>;
9
- export declare const getFreshnessKey: (ns: string, key: string) => string;
10
- export declare const getFreshness: (ns: string, key: string) => number;
11
- export declare const setFreshnessImmediate: ({ ns, key, ts }: FreshnessUpdate) => void;
12
- export declare const setFreshnessThrottled: (x: FreshnessUpdate) => void;
13
- export type CachedLoaderOptions<T> = {
14
- name: string;
15
- indexStore: ReadableWithGetter<Map<string, T>>;
16
- load: (key: string, relays: string[]) => Promise<any>;
17
- subscribers?: Subscriber<T>[];
18
- };
19
- export declare const makeCachedLoader: <T>({ name, load, indexStore, subscribers, }: CachedLoaderOptions<T>) => (key: string, relays?: string[], force?: boolean) => Promise<T | undefined>;
20
- export type CollectionOptions<T> = {
21
- name: string;
22
- store: Readable<T[]>;
23
- getKey: (item: T) => string;
24
- load: (key: string, relays: string[]) => Promise<any>;
25
- };
26
- export declare const collection: <T>({ name, store, getKey, load }: CollectionOptions<T>) => {
27
- indexStore: ReadableWithGetter<Map<string, T>>;
28
- deriveItem: (key: string | undefined, relays?: string[]) => Readable<undefined> | {
29
- subscribe: (f: Subscriber<T | undefined>) => import("svelte/store").Unsubscriber;
30
- };
31
- loadItem: (key: string, relays?: string[], force?: boolean) => Promise<T | undefined>;
32
- onItem: (cb: Subscriber<T>) => () => void;
33
- };
34
- //# sourceMappingURL=collection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../../../store/src/collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,QAAQ,EAAE,UAAU,EAAC,MAAM,cAAc,CAAA;AAE9E,OAAO,EAAa,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAK1D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,eAAO,MAAM,SAAS,kEAAmD,CAAA;AAEzE,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,EAAE,KAAK,MAAM,WAAmB,CAAA;AAE1E,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,EAAE,KAAK,MAAM,WACJ,CAAA;AAEhD,eAAO,MAAM,qBAAqB,GAAI,iBAAe,eAAe,SACb,CAAA;AAEvD,eAAO,MAAM,qBAAqB,8BAQjC,CAAA;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9C,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACrD,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,0CAKjC,mBAAmB,CAAC,CAAC,CAAC,MAIT,KAAK,MAAM,EAAE,SAAQ,MAAM,EAAO,EAAE,eAAa,2BAuDhE,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAA;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAA;IAC3B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACtD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,+BAA6B,iBAAiB,CAAC,CAAC,CAAC;;sBAOpD,MAAM,GAAG,SAAS,WAAU,MAAM,EAAE;;;oBAvE1C,MAAM,WAAU,MAAM,EAAE;iBAmFvB,UAAU,CAAC,CAAC,CAAC;CASlC,CAAA"}
@@ -1,82 +0,0 @@
1
- import { readable, derived, writable } from "svelte/store";
2
- import { batch, indexBy, remove, assoc, now } from "@welshman/lib";
3
- import { withGetter } from "./getter.js";
4
- import { memoized } from "./memoize.js";
5
- export const freshness = withGetter(writable({}));
6
- export const getFreshnessKey = (ns, key) => `${ns}:${key}`;
7
- export const getFreshness = (ns, key) => freshness.get()[getFreshnessKey(ns, key)] || 0;
8
- export const setFreshnessImmediate = ({ ns, key, ts }) => freshness.update(assoc(getFreshnessKey(ns, key), ts));
9
- export const setFreshnessThrottled = batch(100, (updates) => freshness.update($freshness => {
10
- for (const { ns, key, ts } of updates) {
11
- $freshness[getFreshnessKey(ns, key)] = ts;
12
- }
13
- return $freshness;
14
- }));
15
- export const makeCachedLoader = ({ name, load, indexStore, subscribers = [], }) => {
16
- const pending = new Map();
17
- const loadAttempts = new Map();
18
- return async (key, relays = [], force = false) => {
19
- const stale = indexStore.get().get(key);
20
- // If we have no loader function, nothing we can do
21
- if (!load) {
22
- return stale;
23
- }
24
- const freshness = getFreshness(name, key);
25
- // If we have an item, reload if it's stale
26
- if (stale && freshness > now() - 3600 && !force) {
27
- return stale;
28
- }
29
- // If we already are loading, await and return
30
- if (pending.has(key)) {
31
- return pending.get(key).then(() => indexStore.get().get(key));
32
- }
33
- const attempt = loadAttempts.get(key) || 0;
34
- // Use exponential backoff to throttle attempts
35
- if (freshness > now() - Math.pow(2, attempt) && !force) {
36
- return stale;
37
- }
38
- loadAttempts.set(key, attempt + 1);
39
- setFreshnessThrottled({ ns: name, key, ts: now() });
40
- const promise = load(key, relays);
41
- pending.set(key, promise);
42
- try {
43
- await promise;
44
- }
45
- catch (e) {
46
- console.warn(`Failed to load ${name} item ${key}`, e);
47
- }
48
- finally {
49
- pending.delete(key);
50
- }
51
- const fresh = indexStore.get().get(key);
52
- if (fresh) {
53
- loadAttempts.delete(key);
54
- for (const subscriber of subscribers) {
55
- subscriber(fresh);
56
- }
57
- }
58
- return fresh;
59
- };
60
- };
61
- export const collection = ({ name, store, getKey, load }) => {
62
- const indexStore = withGetter(derived(store, $items => indexBy(getKey, $items)));
63
- let subscribers = [];
64
- const loadItem = makeCachedLoader({ name, load, indexStore, subscribers });
65
- const deriveItem = (key, relays = []) => {
66
- if (!key) {
67
- return readable(undefined);
68
- }
69
- // If we don't yet have the item, or it's stale, trigger a request for it. The derived
70
- // store will update when it arrives
71
- loadItem(key, relays);
72
- return memoized(derived(indexStore, $index => $index.get(key)));
73
- };
74
- const onItem = (cb) => {
75
- subscribers.push(cb);
76
- return () => {
77
- subscribers = remove(cb, subscribers);
78
- };
79
- };
80
- return { indexStore, deriveItem, loadItem, onItem };
81
- };
82
- //# sourceMappingURL=collection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../../../store/src/collection.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { Subscriber, Unsubscriber } from "svelte/store";
2
- import { WritableWithGetter } from "./getter.js";
3
- type Start<T> = (set: Subscriber<T>) => Unsubscriber;
4
- export type CustomStoreOpts<T> = {
5
- throttle?: number;
6
- onUpdate?: (x: T) => void;
7
- };
8
- export declare const custom: <T>(start: Start<T>, opts?: CustomStoreOpts<T>) => WritableWithGetter<T>;
9
- export {};
10
- //# sourceMappingURL=custom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../../store/src/custom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,cAAc,CAAA;AAErD,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAE9C,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,YAAY,CAAA;AAEpD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,EACtB,OAAO,KAAK,CAAC,CAAC,CAAC,EACf,OAAM,eAAe,CAAC,CAAC,CAAM,KAC5B,kBAAkB,CAAC,CAAC,CAkDtB,CAAA"}
@@ -1,41 +0,0 @@
1
- import { throttle } from "@welshman/lib";
2
- export const custom = (start, opts = {}) => {
3
- const subs = [];
4
- let value;
5
- let stop;
6
- const set = (newValue) => {
7
- for (const sub of subs) {
8
- sub(newValue);
9
- }
10
- value = newValue;
11
- };
12
- return {
13
- get: () => value,
14
- set: (newValue) => {
15
- set(newValue);
16
- opts.onUpdate?.(newValue);
17
- },
18
- update: (f) => {
19
- const newValue = f(value);
20
- set(newValue);
21
- opts.onUpdate?.(newValue);
22
- },
23
- subscribe: (sub) => {
24
- if (opts.throttle) {
25
- sub = throttle(opts.throttle, sub);
26
- }
27
- if (subs.length === 0) {
28
- stop = start(set);
29
- }
30
- subs.push(sub);
31
- sub(value);
32
- return () => {
33
- subs.splice(subs.findIndex(s => s === sub), 1);
34
- if (subs.length === 0) {
35
- stop();
36
- }
37
- };
38
- },
39
- };
40
- };
41
- //# sourceMappingURL=custom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../../store/src/custom.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAUtC,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,KAAe,EACf,OAA2B,EAAE,EACN,EAAE;IACzB,MAAM,IAAI,GAAoB,EAAE,CAAA;IAEhC,IAAI,KAAQ,CAAA;IACZ,IAAI,IAAgB,CAAA;IAEpB,MAAM,GAAG,GAAG,CAAC,QAAW,EAAE,EAAE;QAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,QAAQ,CAAC,CAAA;QACf,CAAC;QAED,KAAK,GAAG,QAAQ,CAAA;IAClB,CAAC,CAAA;IAED,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;QAChB,GAAG,EAAE,CAAC,QAAW,EAAE,EAAE;YACnB,GAAG,CAAC,QAAQ,CAAC,CAAA;YACb,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QACD,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;YAEzB,GAAG,CAAC,QAAQ,CAAC,CAAA;YACb,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QACD,SAAS,EAAE,CAAC,GAAkB,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACd,GAAG,CAAC,KAAK,CAAC,CAAA;YAEV,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM,CACT,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAC9B,CAAC,CACF,CAAA;gBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,IAAI,EAAE,CAAA;gBACR,CAAC;YACH,CAAC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- import { Readable, Writable } from "svelte/store";
2
- export declare const getter: <T>(store: Readable<T>) => () => T;
3
- export type WritableWithGetter<T> = Writable<T> & {
4
- get: () => T;
5
- };
6
- export type ReadableWithGetter<T> = Readable<T> & {
7
- get: () => T;
8
- };
9
- export declare function withGetter<T>(store: Writable<T>): WritableWithGetter<T>;
10
- export declare function withGetter<T>(store: Readable<T>): ReadableWithGetter<T>;
11
- //# sourceMappingURL=getter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getter.d.ts","sourceRoot":"","sources":["../../../../store/src/getter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAA;AAE/C,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,YAQ3C,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAAC,CAAA;AAChE,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG;IAAC,GAAG,EAAE,MAAM,CAAC,CAAA;CAAC,CAAA;AAEhE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;AACxE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- export const getter = (store) => {
2
- let value;
3
- store.subscribe((newValue) => {
4
- value = newValue;
5
- });
6
- return () => value;
7
- };
8
- export function withGetter(store) {
9
- return { ...store, get: getter(store) };
10
- }
11
- //# sourceMappingURL=getter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getter.js","sourceRoot":"","sources":["../../../../store/src/getter.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAkB,EAAE,EAAE;IAC9C,IAAI,KAAQ,CAAA;IAEZ,KAAK,CAAC,SAAS,CAAC,CAAC,QAAW,EAAE,EAAE;QAC9B,KAAK,GAAG,QAAQ,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,EAAE,CAAC,KAAK,CAAA;AACpB,CAAC,CAAA;AAOD,MAAM,UAAU,UAAU,CAAI,KAAgC;IAC5D,OAAO,EAAC,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,CAAI,KAAK,CAAC,EAAC,CAAA;AAC1C,CAAC"}
@@ -1,5 +0,0 @@
1
- import { Readable, Subscriber } from "svelte/store";
2
- export declare const memoized: <T>(store: Readable<T>) => {
3
- subscribe: (f: Subscriber<T>) => import("svelte/store").Unsubscriber;
4
- };
5
- //# sourceMappingURL=memoize.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../../../store/src/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,OAAO,QAAQ,CAAC,CAAC,CAAC;mBAGX,UAAU,CAAC,CAAC,CAAC;CAC/C,CAAA"}
@@ -1,6 +0,0 @@
1
- import { memoize } from "@welshman/lib";
2
- export const memoized = (store) => {
3
- const { subscribe } = store;
4
- return { ...store, subscribe: (f) => subscribe(memoize(f)) };
5
- };
6
- //# sourceMappingURL=memoize.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../../../store/src/memoize.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AAErC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,KAAkB,EAAE,EAAE;IAChD,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;IAEzB,OAAO,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAA;AAC3E,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- import { Readable } from "svelte/store";
2
- export declare const throttled: <T, S extends Readable<T>>(delay: number, store: S) => S;
3
- //# sourceMappingURL=throttle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../../store/src/throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAa,MAAM,cAAc,CAAA;AAGjD,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,EAAE,OAAO,CAAC,MAQ1E,CAAA"}
@@ -1,9 +0,0 @@
1
- import { throttle } from "@welshman/lib";
2
- export const throttled = (delay, store) => {
3
- if (delay) {
4
- const { subscribe } = store;
5
- store = { ...store, subscribe: (f) => subscribe(throttle(delay, f)) };
6
- }
7
- return store;
8
- };
9
- //# sourceMappingURL=throttle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../../store/src/throttle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,CAA2B,KAAa,EAAE,KAAQ,EAAE,EAAE;IAC7E,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAC,SAAS,EAAC,GAAG,KAAK,CAAA;QAEzB,KAAK,GAAG,EAAC,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAC,CAAA;IACpF,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}