@welshman/app 0.12.6 → 0.13.0

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 (99) hide show
  1. package/dist/app/src/plugins/base.d.ts +17 -23
  2. package/dist/app/src/plugins/base.d.ts.map +1 -1
  3. package/dist/app/src/plugins/base.js +23 -34
  4. package/dist/app/src/plugins/base.js.map +1 -1
  5. package/dist/app/src/plugins/plaintext.d.ts +6 -2
  6. package/dist/app/src/plugins/plaintext.d.ts.map +1 -1
  7. package/dist/app/src/plugins/plaintext.js +34 -14
  8. package/dist/app/src/plugins/plaintext.js.map +1 -1
  9. package/dist/app/src/plugins/publisher.d.ts +9 -5
  10. package/dist/app/src/plugins/publisher.d.ts.map +1 -1
  11. package/dist/app/src/plugins/publisher.js +108 -75
  12. package/dist/app/src/plugins/publisher.js.map +1 -1
  13. package/dist/app/src/plugins/wraps.d.ts +5 -1
  14. package/dist/app/src/plugins/wraps.d.ts.map +1 -1
  15. package/dist/app/src/plugins/wraps.js +6 -10
  16. package/dist/app/src/plugins/wraps.js.map +1 -1
  17. package/dist/app/src/policy.d.ts.map +1 -1
  18. package/dist/app/src/policy.js +4 -1
  19. package/dist/app/src/policy.js.map +1 -1
  20. package/dist/app/src/user.d.ts +2 -2
  21. package/dist/app/src/user.d.ts.map +1 -1
  22. package/dist/app/src/user.js.map +1 -1
  23. package/dist/domain/src/core/ListWriter.d.ts +6 -6
  24. package/dist/domain/src/kinds/Bolt12Offer.d.ts.map +1 -1
  25. package/dist/domain/src/kinds/Bolt12Offer.js +10 -9
  26. package/dist/domain/src/kinds/Bolt12Offer.js.map +1 -1
  27. package/dist/domain/src/kinds/Bolt12Zap.d.ts +6 -11
  28. package/dist/domain/src/kinds/Bolt12Zap.d.ts.map +1 -1
  29. package/dist/domain/src/kinds/Bolt12Zap.js +77 -105
  30. package/dist/domain/src/kinds/Bolt12Zap.js.map +1 -1
  31. package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts +2 -0
  32. package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts.map +1 -1
  33. package/dist/domain/src/kinds/Bolt12ZapIntent.js +31 -20
  34. package/dist/domain/src/kinds/Bolt12ZapIntent.js.map +1 -1
  35. package/dist/feeds/src/request.d.ts.map +1 -1
  36. package/dist/feeds/src/request.js +14 -5
  37. package/dist/feeds/src/request.js.map +1 -1
  38. package/dist/lib/src/TaskQueue.d.ts.map +1 -1
  39. package/dist/lib/src/TaskQueue.js +8 -2
  40. package/dist/lib/src/TaskQueue.js.map +1 -1
  41. package/dist/net/src/policy.d.ts.map +1 -1
  42. package/dist/net/src/policy.js +11 -3
  43. package/dist/net/src/policy.js.map +1 -1
  44. package/dist/net/src/repository.d.ts +18 -15
  45. package/dist/net/src/repository.d.ts.map +1 -1
  46. package/dist/net/src/repository.js +69 -78
  47. package/dist/net/src/repository.js.map +1 -1
  48. package/dist/net/src/wrapManager.d.ts +0 -2
  49. package/dist/net/src/wrapManager.d.ts.map +1 -1
  50. package/dist/net/src/wrapManager.js +8 -23
  51. package/dist/net/src/wrapManager.js.map +1 -1
  52. package/dist/signer/src/index.d.ts +1 -0
  53. package/dist/signer/src/index.d.ts.map +1 -1
  54. package/dist/signer/src/index.js +1 -0
  55. package/dist/signer/src/index.js.map +1 -1
  56. package/dist/signer/src/nip59.d.ts +13 -6
  57. package/dist/signer/src/nip59.d.ts.map +1 -1
  58. package/dist/signer/src/nip59.js +38 -19
  59. package/dist/signer/src/nip59.js.map +1 -1
  60. package/dist/signer/src/queue.d.ts +21 -0
  61. package/dist/signer/src/queue.d.ts.map +1 -0
  62. package/dist/signer/src/queue.js +40 -0
  63. package/dist/signer/src/queue.js.map +1 -0
  64. package/dist/signer/src/signers/nip01.d.ts +14 -2
  65. package/dist/signer/src/signers/nip01.d.ts.map +1 -1
  66. package/dist/signer/src/signers/nip01.js +6 -2
  67. package/dist/signer/src/signers/nip01.js.map +1 -1
  68. package/dist/signer/src/signers/nip07.d.ts +9 -9
  69. package/dist/signer/src/signers/nip07.d.ts.map +1 -1
  70. package/dist/signer/src/signers/nip07.js +15 -27
  71. package/dist/signer/src/signers/nip07.js.map +1 -1
  72. package/dist/signer/src/signers/nip46.d.ts +7 -3
  73. package/dist/signer/src/signers/nip46.d.ts.map +1 -1
  74. package/dist/signer/src/signers/nip46.js +12 -8
  75. package/dist/signer/src/signers/nip46.js.map +1 -1
  76. package/dist/signer/src/signers/nip55.d.ts +7 -7
  77. package/dist/signer/src/signers/nip55.d.ts.map +1 -1
  78. package/dist/signer/src/signers/nip55.js +33 -40
  79. package/dist/signer/src/signers/nip55.js.map +1 -1
  80. package/dist/signer/src/util.d.ts +27 -15
  81. package/dist/signer/src/util.d.ts.map +1 -1
  82. package/dist/signer/src/util.js +47 -14
  83. package/dist/signer/src/util.js.map +1 -1
  84. package/dist/store/src/repository.d.ts +5 -0
  85. package/dist/store/src/repository.d.ts.map +1 -1
  86. package/dist/store/src/repository.js +115 -96
  87. package/dist/store/src/repository.js.map +1 -1
  88. package/dist/util/src/Bolt12.d.ts.map +1 -1
  89. package/dist/util/src/Bolt12.js +11 -8
  90. package/dist/util/src/Bolt12.js.map +1 -1
  91. package/dist/util/src/Events.d.ts +1 -0
  92. package/dist/util/src/Events.d.ts.map +1 -1
  93. package/dist/util/src/Events.js +10 -1
  94. package/dist/util/src/Events.js.map +1 -1
  95. package/dist/util/src/Lightning.d.ts +1 -0
  96. package/dist/util/src/Lightning.d.ts.map +1 -1
  97. package/dist/util/src/Lightning.js +1 -0
  98. package/dist/util/src/Lightning.js.map +1 -1
  99. package/package.json +15 -15
@@ -59,34 +59,37 @@ export declare abstract class LoadableMapPlugin<T> extends MapPlugin<T> {
59
59
  abstract fetch(key: string, ...args: any[]): Promise<unknown>;
60
60
  constructor(app: IApp, options?: MakeLoadItemOptions);
61
61
  }
62
- export type DerivedPluginOptions<T> = {
63
- filters: Filter[];
64
- eventToItem: EventToItem<T>;
65
- getKey: (item: T) => string;
66
- loadOptions?: MakeLoadItemOptions;
67
- };
68
62
  /**
69
63
  * Base class for a reactive, keyed collection of data derived from nostr events.
70
64
  * The repository is the single source of truth — the collection is a live view
71
- * over `app.itemsByKey`, never a duplicated map. Subclasses implement `fetch`
72
- * (how to load an item by key from the network) and pass the filters/decoder via
73
- * `super`.
65
+ * over it, never a duplicated map. Subclasses supply the `index` and implement
66
+ * `fetch` (how to load an item by key from the network).
74
67
  *
75
68
  * `index` (map) and `all` (values) are `Projection`s — subscribe via `.$`,
76
69
  * snapshot via `.get()`. Per-key access is `one(key)`, a plain on-demand store.
77
70
  */
78
- export declare abstract class DerivedPlugin<T> {
71
+ export declare abstract class CollectionPlugin<T> {
79
72
  protected readonly app: IApp;
80
- index: ItemCollection<T>;
73
+ readonly index: ItemCollection<T>;
81
74
  all: Projection<T[]>;
82
75
  one: (key?: string, ...args: any[]) => Readable<Maybe<T>>;
83
76
  load: (key: string, ...args: any[]) => Promise<Maybe<T>>;
84
77
  forceLoad: (key: string, ...args: any[]) => Promise<Maybe<T>>;
85
78
  abstract fetch(key: string, ...args: any[]): Promise<unknown>;
86
- constructor(app: IApp, options: DerivedPluginOptions<T>);
79
+ constructor(app: IApp, index: ItemCollection<T>, loadOptions?: MakeLoadItemOptions);
87
80
  get: (key: string) => T | undefined;
88
81
  project: <U>(key: string, read: (item: Maybe<T>) => U) => Projection<U>;
89
82
  }
83
+ export type DerivedPluginOptions<T> = {
84
+ filters: Filter[];
85
+ eventToItem: EventToItem<T>;
86
+ getKey: (item: T) => string;
87
+ loadOptions?: MakeLoadItemOptions;
88
+ };
89
+ /** A `CollectionPlugin` over `deriveItemsByKey`: one item per key across all relays. */
90
+ export declare abstract class DerivedPlugin<T> extends CollectionPlugin<T> {
91
+ constructor(app: IApp, options: DerivedPluginOptions<T>);
92
+ }
90
93
  export type RelayScopedDerivedPluginOptions<T> = {
91
94
  filters: Filter[];
92
95
  eventToItem: EventToItem<T>;
@@ -95,23 +98,14 @@ export type RelayScopedDerivedPluginOptions<T> = {
95
98
  revalidateOn?: Readable<unknown>;
96
99
  };
97
100
  /**
98
- * A `DerivedPlugin` for relay-dependent data: each item is keyed by
101
+ * A `CollectionPlugin` for relay-dependent data: each item is keyed by
99
102
  * `getKey(item, url)` once per relay it was seen on (via the tracker), so the
100
103
  * same addressable coordinate on two relays stays two distinct entries. Use it
101
104
  * for collections that only make sense relative to a relay — NIP-29 rooms
102
105
  * (`${url}'${room}`), relay roles (`${url}|${d}`), per-relay replaceables
103
106
  * (`${url}`). Subclasses implement `fetch` (loading from the relevant relay).
104
107
  */
105
- export declare abstract class RelayScopedDerivedPlugin<T> {
106
- protected readonly app: IApp;
107
- index: ItemCollection<T>;
108
- all: Projection<T[]>;
109
- one: (key?: string, ...args: any[]) => Readable<Maybe<T>>;
110
- load: (key: string, ...args: any[]) => Promise<Maybe<T>>;
111
- forceLoad: (key: string, ...args: any[]) => Promise<Maybe<T>>;
112
- abstract fetch(key: string, ...args: any[]): Promise<unknown>;
108
+ export declare abstract class RelayScopedDerivedPlugin<T> extends CollectionPlugin<T> {
113
109
  constructor(app: IApp, options: RelayScopedDerivedPluginOptions<T>);
114
- get: (key: string) => T | undefined;
115
- project: <U>(key: string, read: (item: Maybe<T>) => U) => Projection<U>;
116
110
  }
117
111
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import Fuse from "fuse.js";
2
2
  import { writable, derived } from "svelte/store";
3
3
  import { sortBy } from "@welshman/lib";
4
- import { deriveItems, deriveItemsByKey, deriveItemsByKeyByUrl, makeDeriveItem, makeLoadItem, makeForceLoadItem, projection, } from "@welshman/store";
4
+ import { deriveArray, deriveItemsByKey, deriveItemsByKeyByUrl, makeDeriveItem, makeLoadItem, makeForceLoadItem, projection, } from "@welshman/store";
5
5
  /**
6
6
  * A reusable fuzzy-search primitive over a fixed list of `options`. Plugins that
7
7
  * expose a search (profiles, topics, relays) build one of these reactively from
@@ -45,7 +45,7 @@ export class MapPlugin {
45
45
  constructor(app) {
46
46
  this.app = app;
47
47
  this.index = projection(this.store);
48
- this.all = projection(deriveItems(this.store));
48
+ this.all = deriveArray(this.index);
49
49
  this.one = makeDeriveItem(this.store);
50
50
  }
51
51
  get = (key) => this.index.get().get(key);
@@ -108,71 +108,60 @@ export class LoadableMapPlugin extends MapPlugin {
108
108
  /**
109
109
  * Base class for a reactive, keyed collection of data derived from nostr events.
110
110
  * The repository is the single source of truth — the collection is a live view
111
- * over `app.itemsByKey`, never a duplicated map. Subclasses implement `fetch`
112
- * (how to load an item by key from the network) and pass the filters/decoder via
113
- * `super`.
111
+ * over it, never a duplicated map. Subclasses supply the `index` and implement
112
+ * `fetch` (how to load an item by key from the network).
114
113
  *
115
114
  * `index` (map) and `all` (values) are `Projection`s — subscribe via `.$`,
116
115
  * snapshot via `.get()`. Per-key access is `one(key)`, a plain on-demand store.
117
116
  */
118
- export class DerivedPlugin {
117
+ export class CollectionPlugin {
119
118
  app;
120
119
  index;
121
120
  all;
122
121
  one;
123
122
  load;
124
123
  forceLoad;
125
- constructor(app, options) {
124
+ constructor(app, index, loadOptions) {
126
125
  this.app = app;
127
- const index = deriveItemsByKey({
128
- filters: options.filters,
129
- eventToItem: options.eventToItem,
130
- getKey: options.getKey,
131
- repository: app.repository,
132
- });
133
126
  this.index = index;
134
- this.all = projection(deriveItems(index));
127
+ this.all = deriveArray(index);
135
128
  const fetch = (key, ...args) => this.fetch(key, ...args);
136
- this.load = makeLoadItem(fetch, index.read, options.loadOptions);
129
+ this.load = makeLoadItem(fetch, index.read, loadOptions);
137
130
  this.forceLoad = makeForceLoadItem(fetch, index.read);
138
131
  this.one = makeDeriveItem(index, this.load);
139
132
  }
140
133
  get = (key) => this.index.get().get(key);
141
134
  project = (key, read) => projection(derived(this.one(key), read), () => read(this.get(key)));
142
135
  }
136
+ /** A `CollectionPlugin` over `deriveItemsByKey`: one item per key across all relays. */
137
+ export class DerivedPlugin extends CollectionPlugin {
138
+ constructor(app, options) {
139
+ super(app, deriveItemsByKey({
140
+ filters: options.filters,
141
+ eventToItem: options.eventToItem,
142
+ getKey: options.getKey,
143
+ repository: app.repository,
144
+ }), options.loadOptions);
145
+ }
146
+ }
143
147
  /**
144
- * A `DerivedPlugin` for relay-dependent data: each item is keyed by
148
+ * A `CollectionPlugin` for relay-dependent data: each item is keyed by
145
149
  * `getKey(item, url)` once per relay it was seen on (via the tracker), so the
146
150
  * same addressable coordinate on two relays stays two distinct entries. Use it
147
151
  * for collections that only make sense relative to a relay — NIP-29 rooms
148
152
  * (`${url}'${room}`), relay roles (`${url}|${d}`), per-relay replaceables
149
153
  * (`${url}`). Subclasses implement `fetch` (loading from the relevant relay).
150
154
  */
151
- export class RelayScopedDerivedPlugin {
152
- app;
153
- index;
154
- all;
155
- one;
156
- load;
157
- forceLoad;
155
+ export class RelayScopedDerivedPlugin extends CollectionPlugin {
158
156
  constructor(app, options) {
159
- this.app = app;
160
- const index = deriveItemsByKeyByUrl({
157
+ super(app, deriveItemsByKeyByUrl({
161
158
  filters: options.filters,
162
159
  eventToItem: options.eventToItem,
163
160
  getKey: options.getKey,
164
161
  revalidateOn: options.revalidateOn,
165
162
  tracker: app.tracker,
166
163
  repository: app.repository,
167
- });
168
- this.index = index;
169
- this.all = projection(deriveItems(index));
170
- const fetch = (key, ...args) => this.fetch(key, ...args);
171
- this.load = makeLoadItem(fetch, index.read, options.loadOptions);
172
- this.forceLoad = makeForceLoadItem(fetch, index.read);
173
- this.one = makeDeriveItem(index, this.load);
164
+ }), options.loadOptions);
174
165
  }
175
- get = (key) => this.index.get().get(key);
176
- project = (key, read) => projection(derived(this.one(key), read), () => read(this.get(key)));
177
166
  }
178
167
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/plugins/base.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
+ import type { SignerOptions } from "@welshman/signer";
1
2
  import { MapPlugin } from "./base.js";
2
3
  /**
3
4
  * A cache of decrypted content, keyed by the ciphertext. Decryption itself is
4
5
  * supplied by the caller (the signer's underlying decrypt), so the cache stays
5
6
  * independent of which signer produced the plaintext — and `appPolicyCacheDecrypt`
6
7
  * can layer it onto `user.signer` without recursing back into the wrapped signer.
7
- * Concurrent callers for one ciphertext share a single decrypt.
8
+ *
9
+ * A caller shares a pending decryption requested at least as urgently, so concurrent callers
10
+ * prompt the signer once. An abort fails only the caller that started the decryption.
8
11
  */
9
12
  export declare class Plaintext extends MapPlugin<string> {
10
13
  private pending;
11
- ensure: (ciphertext: string, decrypt: () => Promise<string>) => Promise<string>;
14
+ ensure: (ciphertext: string, decrypt: () => Promise<string>, options?: SignerOptions) => Promise<string>;
12
15
  private decryptOnce;
16
+ private start;
13
17
  }
14
18
  //# sourceMappingURL=plaintext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plaintext.d.ts","sourceRoot":"","sources":["../../../../src/plugins/plaintext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAEnC;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,SAAS,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAqC;IAEpD,MAAM,GAAU,YAAY,MAAM,EAAE,SAAS,MAAM,OAAO,CAAC,MAAM,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,CAQnF;IAED,OAAO,CAAC,WAAW,CAkBlB;CACF"}
1
+ {"version":3,"file":"plaintext.d.ts","sourceRoot":"","sources":["../../../../src/plugins/plaintext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AASnC;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,SAAS,CAAC,MAAM,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAgC;IAE/C,MAAM,GACJ,YAAY,MAAM,EAClB,SAAS,MAAM,OAAO,CAAC,MAAM,CAAC,EAC9B,UAAS,aAAkB,KAC1B,OAAO,CAAC,MAAM,CAAC,CAQjB;IAED,OAAO,CAAC,WAAW,CAoBlB;IAED,OAAO,CAAC,KAAK,CAoBZ;CACF"}
@@ -1,33 +1,53 @@
1
1
  import { MapPlugin } from "./base.js";
2
+ const priorityOf = (options) => options.priority ?? 0;
2
3
  /**
3
4
  * A cache of decrypted content, keyed by the ciphertext. Decryption itself is
4
5
  * supplied by the caller (the signer's underlying decrypt), so the cache stays
5
6
  * independent of which signer produced the plaintext — and `appPolicyCacheDecrypt`
6
7
  * can layer it onto `user.signer` without recursing back into the wrapped signer.
7
- * Concurrent callers for one ciphertext share a single decrypt.
8
+ *
9
+ * A caller shares a pending decryption requested at least as urgently, so concurrent callers
10
+ * prompt the signer once. An abort fails only the caller that started the decryption.
8
11
  */
9
12
  export class Plaintext extends MapPlugin {
10
13
  pending = new Map();
11
- ensure = async (ciphertext, decrypt) => {
14
+ ensure = async (ciphertext, decrypt, options = {}) => {
12
15
  let result = this.get(ciphertext);
13
16
  if (result === undefined) {
14
- result = await this.decryptOnce(ciphertext, decrypt);
17
+ result = await this.decryptOnce(ciphertext, decrypt, options);
15
18
  }
16
19
  return result;
17
20
  };
18
- decryptOnce = (ciphertext, decrypt) => {
19
- let promise = this.pending.get(ciphertext);
20
- if (!promise) {
21
- promise = decrypt()
22
- .then(plaintext => {
23
- this.set(ciphertext, plaintext);
24
- return plaintext;
25
- })
26
- .finally(() => {
27
- this.pending.delete(ciphertext);
21
+ decryptOnce = (ciphertext, decrypt, options) => {
22
+ const shared = this.pending.get(ciphertext);
23
+ let promise;
24
+ if (shared && priorityOf(shared.options) >= priorityOf(options)) {
25
+ // A caller left behind by another's abort asks for the plaintext itself
26
+ promise = shared.promise.catch(error => {
27
+ if (!shared.options.signal?.aborted)
28
+ throw error;
29
+ return this.ensure(ciphertext, decrypt, options);
28
30
  });
29
- this.pending.set(ciphertext, promise);
30
31
  }
32
+ else {
33
+ promise = this.start(ciphertext, decrypt, options);
34
+ }
35
+ return promise;
36
+ };
37
+ start = (ciphertext, decrypt, options) => {
38
+ const promise = decrypt().then(plaintext => {
39
+ this.set(ciphertext, plaintext);
40
+ return plaintext;
41
+ });
42
+ const decryption = { promise, options };
43
+ // A more urgent caller may have started its own since
44
+ const forget = () => {
45
+ if (this.pending.get(ciphertext) === decryption) {
46
+ this.pending.delete(ciphertext);
47
+ }
48
+ };
49
+ this.pending.set(ciphertext, decryption);
50
+ promise.then(forget, forget);
31
51
  return promise;
32
52
  };
33
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plaintext.js","sourceRoot":"","sources":["../../../../src/plugins/plaintext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAEnC;;;;;;GAMG;AACH,MAAM,OAAO,SAAU,SAAQ,SAAiB;IACtC,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEpD,MAAM,GAAG,KAAK,EAAE,UAAkB,EAAE,OAA8B,EAAmB,EAAE;QACrF,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAEjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAEO,WAAW,GAAG,CAAC,UAAkB,EAAE,OAA8B,EAAE,EAAE;QAC3E,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,OAAO,EAAE;iBAChB,IAAI,CAAC,SAAS,CAAC,EAAE;gBAChB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;gBAE/B,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACjC,CAAC,CAAC,CAAA;YAEJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;CACF"}
1
+ {"version":3,"file":"plaintext.js","sourceRoot":"","sources":["../../../../src/plugins/plaintext.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAOnC,MAAM,UAAU,GAAG,CAAC,OAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAA;AAEpE;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAU,SAAQ,SAAiB;IACtC,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAA;IAE/C,MAAM,GAAG,KAAK,EACZ,UAAkB,EAClB,OAA8B,EAC9B,UAAyB,EAAE,EACV,EAAE;QACnB,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAEjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAC/D,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAEO,WAAW,GAAG,CACpB,UAAkB,EAClB,OAA8B,EAC9B,OAAsB,EACL,EAAE;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3C,IAAI,OAAwB,CAAA;QAE5B,IAAI,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,wEAAwE;YACxE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;oBAAE,MAAM,KAAK,CAAA;gBAEhD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAClD,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAEO,KAAK,GAAG,CAAC,UAAkB,EAAE,OAA8B,EAAE,OAAsB,EAAE,EAAE;QAC7F,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;YAE/B,OAAO,SAAS,CAAA;QAClB,CAAC,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,EAAC,OAAO,EAAE,OAAO,EAAC,CAAA;QAErC,sDAAsD;QACtD,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,UAAU,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YACjC,CAAC;QACH,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QACxC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAE5B,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;CACF"}
@@ -49,6 +49,9 @@ export declare abstract class PublishStatusView {
49
49
  abstract readonly results: PublishResultsByRelay;
50
50
  abstract isComplete(): boolean;
51
51
  abstract abort(): void;
52
+ private _subs;
53
+ subscribe(subscriber: Subscriber<this>): () => void;
54
+ protected notify(): void;
52
55
  getUrlsWithStatus(statuses: PublishStatus | PublishStatus[]): string[];
53
56
  getCompleteUrls(): string[];
54
57
  getIncompleteUrls(): string[];
@@ -64,7 +67,6 @@ export declare class Publication extends PublishStatusView {
64
67
  event: HashedEvent;
65
68
  wrap?: HashedEvent;
66
69
  readonly controller: AbortController;
67
- private _subs;
68
70
  private _settled;
69
71
  constructor(request: PublishRequest, event: HashedEvent);
70
72
  get relays(): string[];
@@ -76,20 +78,17 @@ export declare class Publication extends PublishStatusView {
76
78
  wrap?: HashedEvent;
77
79
  }): void;
78
80
  abort(): void;
79
- subscribe(subscriber: Subscriber<this>): () => void;
80
81
  settled(): import("@welshman/lib").Deferred<this, this>;
81
82
  }
82
83
  export declare const mergeResults: (publications: Publication[]) => PublishResultsByRelay;
83
84
  /** Several publications watched as one, e.g. a rumor gift-wrapped for each recipient. */
84
85
  export declare class PublicationGroup extends PublishStatusView {
85
86
  readonly publications: Publication[];
86
- private _subs;
87
87
  constructor(publications: Publication[]);
88
88
  get relays(): string[];
89
89
  get results(): PublishResultsByRelay;
90
90
  isComplete(): boolean;
91
91
  abort(): void;
92
- subscribe(subscriber: Subscriber<this>): () => void;
93
92
  settled(): Promise<this>;
94
93
  }
95
94
  export type Publishable = Publication | PublicationGroup;
@@ -109,6 +108,8 @@ export declare const STAGES: Stage[];
109
108
  export declare class Publisher {
110
109
  readonly app: IApp;
111
110
  history: import("svelte/store").Writable<Publication[]>;
111
+ private unsettled;
112
+ private holders;
112
113
  queue: TaskQueue<Publication>;
113
114
  constructor(app: IApp);
114
115
  publish: (request: PublishRequest) => Publication;
@@ -117,7 +118,10 @@ export declare class Publisher {
117
118
  retry(target: Publishable, relays?: string[]): Publishable;
118
119
  merge(items: Publishable[]): PublicationGroup;
119
120
  private run;
120
- private observe;
121
+ private hold;
122
+ private release;
123
+ private holdCopy;
124
+ private trackSent;
121
125
  }
122
126
  export {};
123
127
  //# sourceMappingURL=publisher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/plugins/publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/plugins/publisher.ts"],"names":[],"mappings":"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"}