@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.
- package/dist/app/src/plugins/base.d.ts +17 -23
- package/dist/app/src/plugins/base.d.ts.map +1 -1
- package/dist/app/src/plugins/base.js +23 -34
- package/dist/app/src/plugins/base.js.map +1 -1
- package/dist/app/src/plugins/plaintext.d.ts +6 -2
- package/dist/app/src/plugins/plaintext.d.ts.map +1 -1
- package/dist/app/src/plugins/plaintext.js +34 -14
- package/dist/app/src/plugins/plaintext.js.map +1 -1
- package/dist/app/src/plugins/publisher.d.ts +9 -5
- package/dist/app/src/plugins/publisher.d.ts.map +1 -1
- package/dist/app/src/plugins/publisher.js +108 -75
- package/dist/app/src/plugins/publisher.js.map +1 -1
- package/dist/app/src/plugins/wraps.d.ts +5 -1
- package/dist/app/src/plugins/wraps.d.ts.map +1 -1
- package/dist/app/src/plugins/wraps.js +6 -10
- package/dist/app/src/plugins/wraps.js.map +1 -1
- package/dist/app/src/policy.d.ts.map +1 -1
- package/dist/app/src/policy.js +4 -1
- package/dist/app/src/policy.js.map +1 -1
- package/dist/app/src/user.d.ts +2 -2
- package/dist/app/src/user.d.ts.map +1 -1
- package/dist/app/src/user.js.map +1 -1
- package/dist/domain/src/core/ListWriter.d.ts +6 -6
- package/dist/domain/src/kinds/Bolt12Offer.d.ts.map +1 -1
- package/dist/domain/src/kinds/Bolt12Offer.js +10 -9
- package/dist/domain/src/kinds/Bolt12Offer.js.map +1 -1
- package/dist/domain/src/kinds/Bolt12Zap.d.ts +6 -11
- package/dist/domain/src/kinds/Bolt12Zap.d.ts.map +1 -1
- package/dist/domain/src/kinds/Bolt12Zap.js +77 -105
- package/dist/domain/src/kinds/Bolt12Zap.js.map +1 -1
- package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts +2 -0
- package/dist/domain/src/kinds/Bolt12ZapIntent.d.ts.map +1 -1
- package/dist/domain/src/kinds/Bolt12ZapIntent.js +31 -20
- package/dist/domain/src/kinds/Bolt12ZapIntent.js.map +1 -1
- package/dist/feeds/src/request.d.ts.map +1 -1
- package/dist/feeds/src/request.js +14 -5
- package/dist/feeds/src/request.js.map +1 -1
- package/dist/lib/src/TaskQueue.d.ts.map +1 -1
- package/dist/lib/src/TaskQueue.js +8 -2
- package/dist/lib/src/TaskQueue.js.map +1 -1
- package/dist/net/src/policy.d.ts.map +1 -1
- package/dist/net/src/policy.js +11 -3
- package/dist/net/src/policy.js.map +1 -1
- package/dist/net/src/repository.d.ts +18 -15
- package/dist/net/src/repository.d.ts.map +1 -1
- package/dist/net/src/repository.js +69 -78
- package/dist/net/src/repository.js.map +1 -1
- package/dist/net/src/wrapManager.d.ts +0 -2
- package/dist/net/src/wrapManager.d.ts.map +1 -1
- package/dist/net/src/wrapManager.js +8 -23
- package/dist/net/src/wrapManager.js.map +1 -1
- package/dist/signer/src/index.d.ts +1 -0
- package/dist/signer/src/index.d.ts.map +1 -1
- package/dist/signer/src/index.js +1 -0
- package/dist/signer/src/index.js.map +1 -1
- package/dist/signer/src/nip59.d.ts +13 -6
- package/dist/signer/src/nip59.d.ts.map +1 -1
- package/dist/signer/src/nip59.js +38 -19
- package/dist/signer/src/nip59.js.map +1 -1
- package/dist/signer/src/queue.d.ts +21 -0
- package/dist/signer/src/queue.d.ts.map +1 -0
- package/dist/signer/src/queue.js +40 -0
- package/dist/signer/src/queue.js.map +1 -0
- package/dist/signer/src/signers/nip01.d.ts +14 -2
- package/dist/signer/src/signers/nip01.d.ts.map +1 -1
- package/dist/signer/src/signers/nip01.js +6 -2
- package/dist/signer/src/signers/nip01.js.map +1 -1
- package/dist/signer/src/signers/nip07.d.ts +9 -9
- package/dist/signer/src/signers/nip07.d.ts.map +1 -1
- package/dist/signer/src/signers/nip07.js +15 -27
- package/dist/signer/src/signers/nip07.js.map +1 -1
- package/dist/signer/src/signers/nip46.d.ts +7 -3
- package/dist/signer/src/signers/nip46.d.ts.map +1 -1
- package/dist/signer/src/signers/nip46.js +12 -8
- package/dist/signer/src/signers/nip46.js.map +1 -1
- package/dist/signer/src/signers/nip55.d.ts +7 -7
- package/dist/signer/src/signers/nip55.d.ts.map +1 -1
- package/dist/signer/src/signers/nip55.js +33 -40
- package/dist/signer/src/signers/nip55.js.map +1 -1
- package/dist/signer/src/util.d.ts +27 -15
- package/dist/signer/src/util.d.ts.map +1 -1
- package/dist/signer/src/util.js +47 -14
- package/dist/signer/src/util.js.map +1 -1
- package/dist/store/src/repository.d.ts +5 -0
- package/dist/store/src/repository.d.ts.map +1 -1
- package/dist/store/src/repository.js +115 -96
- package/dist/store/src/repository.js.map +1 -1
- package/dist/util/src/Bolt12.d.ts.map +1 -1
- package/dist/util/src/Bolt12.js +11 -8
- package/dist/util/src/Bolt12.js.map +1 -1
- package/dist/util/src/Events.d.ts +1 -0
- package/dist/util/src/Events.d.ts.map +1 -1
- package/dist/util/src/Events.js +10 -1
- package/dist/util/src/Events.js.map +1 -1
- package/dist/util/src/Lightning.d.ts +1 -0
- package/dist/util/src/Lightning.d.ts.map +1 -1
- package/dist/util/src/Lightning.js +1 -0
- package/dist/util/src/Lightning.js.map +1 -1
- 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
|
|
72
|
-
* (how to load an item by key from the network)
|
|
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
|
|
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,
|
|
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 `
|
|
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 {
|
|
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 =
|
|
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
|
|
112
|
-
* (how to load an item by key from the network)
|
|
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
|
|
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,
|
|
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 =
|
|
127
|
+
this.all = deriveArray(index);
|
|
135
128
|
const fetch = (key, ...args) => this.fetch(key, ...args);
|
|
136
|
-
this.load = makeLoadItem(fetch, index.read,
|
|
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 `
|
|
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
|
-
|
|
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":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAA;AAE1B,OAAO,EAAC,QAAQ,EAAE,OAAO,EAAC,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AAGpC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,MAAM,iBAAiB,CAAA;AAyBxB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAO,OAAY,EAAE,IAAyB,EAAgB,EAAE;IAC1F,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAC,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAA;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAE3E,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAA;QAErB,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAkB,CAAC,CAAA;QAEvF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC,CAAA;IAED,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,CAAC,KAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACvC,aAAa,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7C,YAAY,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;KAChE,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAS;IAOW;IANrB,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAa,CAAC,CAAA;IAChD,KAAK,CAA2B;IAChC,GAAG,CAAiB;IACpB,GAAG,CAAsD;IACzD,IAAI,GAA+C,EAAE,CAAA;IAErD,YAA+B,GAAS;QAAT,QAAG,GAAH,GAAG,CAAM;QACtC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnC,IAAI,CAAC,GAAG,GAAG,
|
|
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
|
-
*
|
|
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
|
|
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;
|
|
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
|
-
*
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
.
|
|
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":"
|
|
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
|
|
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":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/plugins/publisher.ts"],"names":[],"mappings":"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"}
|