@contextvm/sdk 0.12.5 → 0.13.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.
- package/dist/esm/core/constants.d.ts +2 -0
- package/dist/esm/core/constants.d.ts.map +1 -1
- package/dist/esm/core/constants.js +2 -0
- package/dist/esm/core/constants.js.map +1 -1
- package/dist/esm/payments/authorization-store.d.ts +55 -0
- package/dist/esm/payments/authorization-store.d.ts.map +1 -0
- package/dist/esm/payments/authorization-store.js +115 -0
- package/dist/esm/payments/authorization-store.js.map +1 -0
- package/dist/esm/payments/canonical-identity.d.ts +20 -0
- package/dist/esm/payments/canonical-identity.d.ts.map +1 -0
- package/dist/esm/payments/canonical-identity.js +59 -0
- package/dist/esm/payments/canonical-identity.js.map +1 -0
- package/dist/esm/payments/client-payments.d.ts +43 -0
- package/dist/esm/payments/client-payments.d.ts.map +1 -1
- package/dist/esm/payments/client-payments.js +248 -28
- package/dist/esm/payments/client-payments.js.map +1 -1
- package/dist/esm/payments/constants.d.ts +12 -0
- package/dist/esm/payments/constants.d.ts.map +1 -1
- package/dist/esm/payments/constants.js +12 -0
- package/dist/esm/payments/constants.js.map +1 -1
- package/dist/esm/payments/server-explicit-gating.d.ts +13 -0
- package/dist/esm/payments/server-explicit-gating.d.ts.map +1 -0
- package/dist/esm/payments/server-explicit-gating.js +189 -0
- package/dist/esm/payments/server-explicit-gating.js.map +1 -0
- package/dist/esm/payments/server-payments-utils.d.ts +39 -0
- package/dist/esm/payments/server-payments-utils.d.ts.map +1 -0
- package/dist/esm/payments/server-payments-utils.js +117 -0
- package/dist/esm/payments/server-payments-utils.js.map +1 -0
- package/dist/esm/payments/server-payments.d.ts +10 -1
- package/dist/esm/payments/server-payments.d.ts.map +1 -1
- package/dist/esm/payments/server-payments.js +74 -150
- package/dist/esm/payments/server-payments.js.map +1 -1
- package/dist/esm/payments/server-transport-payments.d.ts +6 -0
- package/dist/esm/payments/server-transport-payments.d.ts.map +1 -1
- package/dist/esm/payments/server-transport-payments.js +46 -3
- package/dist/esm/payments/server-transport-payments.js.map +1 -1
- package/dist/esm/payments/types.d.ts +75 -9
- package/dist/esm/payments/types.d.ts.map +1 -1
- package/dist/esm/payments/types.js.map +1 -1
- package/dist/esm/relay/applesauce-relay-pool.d.ts +11 -9
- package/dist/esm/relay/applesauce-relay-pool.d.ts.map +1 -1
- package/dist/esm/relay/applesauce-relay-pool.js +21 -82
- package/dist/esm/relay/applesauce-relay-pool.js.map +1 -1
- package/dist/esm/transport/capability-negotiator.d.ts +17 -2
- package/dist/esm/transport/capability-negotiator.d.ts.map +1 -1
- package/dist/esm/transport/capability-negotiator.js +27 -2
- package/dist/esm/transport/capability-negotiator.js.map +1 -1
- package/dist/esm/transport/middleware.d.ts +8 -0
- package/dist/esm/transport/middleware.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client/inbound-coordinator.d.ts +1 -1
- package/dist/esm/transport/nostr-client/inbound-coordinator.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client/inbound-coordinator.js +16 -1
- package/dist/esm/transport/nostr-client/inbound-coordinator.js.map +1 -1
- package/dist/esm/transport/nostr-client/outbound-sender.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client/outbound-sender.js +2 -2
- package/dist/esm/transport/nostr-client/outbound-sender.js.map +1 -1
- package/dist/esm/transport/nostr-client/server-metadata-store.d.ts +4 -0
- package/dist/esm/transport/nostr-client/server-metadata-store.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client/server-metadata-store.js +7 -0
- package/dist/esm/transport/nostr-client/server-metadata-store.js.map +1 -1
- package/dist/esm/transport/nostr-client-transport.d.ts +9 -0
- package/dist/esm/transport/nostr-client-transport.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client-transport.js +19 -3
- package/dist/esm/transport/nostr-client-transport.js.map +1 -1
- package/dist/esm/transport/nostr-server/inbound-coordinator.d.ts +3 -0
- package/dist/esm/transport/nostr-server/inbound-coordinator.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server/inbound-coordinator.js +58 -3
- package/dist/esm/transport/nostr-server/inbound-coordinator.js.map +1 -1
- package/dist/esm/transport/nostr-server/outbound-response-router.d.ts +7 -0
- package/dist/esm/transport/nostr-server/outbound-response-router.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server/outbound-response-router.js +43 -1
- package/dist/esm/transport/nostr-server/outbound-response-router.js.map +1 -1
- package/dist/esm/transport/nostr-server/session-store.d.ts +7 -0
- package/dist/esm/transport/nostr-server/session-store.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server/session-store.js.map +1 -1
- package/dist/esm/transport/nostr-server-transport.d.ts +16 -1
- package/dist/esm/transport/nostr-server-transport.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server-transport.js +18 -0
- package/dist/esm/transport/nostr-server-transport.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { isJsonRpcRequest
|
|
1
|
+
import { isJsonRpcRequest } from './types.js';
|
|
2
2
|
import { LruCache } from '../core/utils/lru-cache.js';
|
|
3
3
|
import { withTimeout } from '../core/utils/utils.js';
|
|
4
4
|
import { createLogger } from '../core/utils/logger.js';
|
|
5
5
|
import { DEFAULT_PAYMENT_TTL_MS, PAYMENT_ACCEPTED_METHOD, PAYMENT_REJECTED_METHOD, PAYMENT_REQUIRED_METHOD, } from './constants.js';
|
|
6
|
+
import { buildProcessorsByPmi, matchPricedCapability, resolveAndInitiatePayment, } from './server-payments-utils.js';
|
|
6
7
|
function purgeExpiredPending(params) {
|
|
7
8
|
let checked = 0;
|
|
8
9
|
for (const [key, value] of params.pending.entries()) {
|
|
@@ -15,46 +16,6 @@ function purgeExpiredPending(params) {
|
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
|
-
function getVerificationTimeoutMs(params) {
|
|
19
|
-
// CEP-8 TTL is in seconds. If TTL is absent, default is 5 minutes.
|
|
20
|
-
const ttlSeconds = params.ttlSeconds;
|
|
21
|
-
if (ttlSeconds === undefined) {
|
|
22
|
-
return 5 * 60 * 1000;
|
|
23
|
-
}
|
|
24
|
-
if (!Number.isFinite(ttlSeconds) || ttlSeconds <= 0) {
|
|
25
|
-
return 5 * 60 * 1000;
|
|
26
|
-
}
|
|
27
|
-
return Math.floor(ttlSeconds * 1000);
|
|
28
|
-
}
|
|
29
|
-
function matchPricedCapability(message, priced) {
|
|
30
|
-
const capabilityName = getCapabilityNameForPricing(message);
|
|
31
|
-
return priced.find((p) => {
|
|
32
|
-
if (p.method !== message.method)
|
|
33
|
-
return false;
|
|
34
|
-
if (p.name === undefined)
|
|
35
|
-
return true;
|
|
36
|
-
return p.name === capabilityName;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
function getCapabilityNameForPricing(message) {
|
|
40
|
-
const params = message.params;
|
|
41
|
-
switch (message.method) {
|
|
42
|
-
case 'tools/call': {
|
|
43
|
-
const name = params === null || params === void 0 ? void 0 : params.name;
|
|
44
|
-
return typeof name === 'string' ? name : undefined;
|
|
45
|
-
}
|
|
46
|
-
case 'prompts/get': {
|
|
47
|
-
const name = params === null || params === void 0 ? void 0 : params.name;
|
|
48
|
-
return typeof name === 'string' ? name : undefined;
|
|
49
|
-
}
|
|
50
|
-
case 'resources/read': {
|
|
51
|
-
const uri = params === null || params === void 0 ? void 0 : params.uri;
|
|
52
|
-
return typeof uri === 'string' ? uri : undefined;
|
|
53
|
-
}
|
|
54
|
-
default:
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
19
|
function createPaymentRequiredNotification(params) {
|
|
59
20
|
return {
|
|
60
21
|
jsonrpc: '2.0',
|
|
@@ -76,38 +37,27 @@ function createPaymentRejectedNotification(params) {
|
|
|
76
37
|
params,
|
|
77
38
|
};
|
|
78
39
|
}
|
|
79
|
-
function isResolvePriceRejection(quote) {
|
|
80
|
-
return 'reject' in quote && quote.reject;
|
|
81
|
-
}
|
|
82
|
-
function isResolvePriceWaiver(quote) {
|
|
83
|
-
return 'waive' in quote && quote.waive;
|
|
84
|
-
}
|
|
85
40
|
/**
|
|
86
41
|
* Creates a server-side middleware that gates priced requests until payment is verified.
|
|
87
42
|
*/
|
|
88
43
|
export function createServerPaymentsMiddleware(params) {
|
|
89
|
-
var _a, _b;
|
|
44
|
+
var _a, _b, _c;
|
|
90
45
|
const { sender, options } = params;
|
|
91
46
|
const logger = createLogger('server-payments');
|
|
92
|
-
const processorsByPmi =
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
for (const p of options.processors) {
|
|
96
|
-
if (seenProcessorPmis.has(p.pmi)) {
|
|
97
|
-
logger.warn('duplicate PMI processor registered, last one wins', {
|
|
98
|
-
pmi: p.pmi,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
seenProcessorPmis.add(p.pmi);
|
|
102
|
-
}
|
|
103
|
-
const paymentTtlMs = (_a = options.paymentTtlMs) !== null && _a !== void 0 ? _a : DEFAULT_PAYMENT_TTL_MS;
|
|
104
|
-
const pending = new LruCache((_b = options.maxPendingPayments) !== null && _b !== void 0 ? _b : 1000);
|
|
47
|
+
const processorsByPmi = (_a = params.processorsByPmi) !== null && _a !== void 0 ? _a : buildProcessorsByPmi(options.processors, logger);
|
|
48
|
+
const paymentTtlMs = (_b = options.paymentTtlMs) !== null && _b !== void 0 ? _b : DEFAULT_PAYMENT_TTL_MS;
|
|
49
|
+
const pending = new LruCache((_c = options.maxPendingPayments) !== null && _c !== void 0 ? _c : 1000);
|
|
105
50
|
return async (message, ctx, forward) => {
|
|
106
51
|
// Only gate requests. Never interfere with notifications.
|
|
107
52
|
if (!isJsonRpcRequest(message)) {
|
|
108
53
|
await forward(message);
|
|
109
54
|
return;
|
|
110
55
|
}
|
|
56
|
+
if (ctx.paymentInteraction !== undefined &&
|
|
57
|
+
ctx.paymentInteraction !== 'transparent') {
|
|
58
|
+
await forward(message);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
111
61
|
const priced = matchPricedCapability(message, options.pricedCapabilities);
|
|
112
62
|
if (!priced) {
|
|
113
63
|
await forward(message);
|
|
@@ -135,111 +85,85 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
135
85
|
}
|
|
136
86
|
// IMPORTANT: set pending state synchronously before any await to make idempotency atomic.
|
|
137
87
|
const inFlight = (async () => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
:
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
throw new Error('No payment processors configured');
|
|
148
|
-
}
|
|
149
|
-
const processor = chosenProcessor;
|
|
150
|
-
const quote = options.resolvePrice
|
|
151
|
-
? await options.resolvePrice({
|
|
152
|
-
capability: priced,
|
|
153
|
-
request: message,
|
|
154
|
-
clientPubkey: ctx.clientPubkey,
|
|
155
|
-
requestEventId,
|
|
156
|
-
})
|
|
157
|
-
: { amount: priced.amount, description: priced.description };
|
|
88
|
+
const initResult = await resolveAndInitiatePayment({
|
|
89
|
+
message,
|
|
90
|
+
priced,
|
|
91
|
+
requestEventId,
|
|
92
|
+
clientPubkey: ctx.clientPubkey,
|
|
93
|
+
clientPmis: ctx.clientPmis,
|
|
94
|
+
options,
|
|
95
|
+
processorsByPmi,
|
|
96
|
+
});
|
|
158
97
|
// Handle rejection: emit payment_rejected and do not forward.
|
|
159
|
-
if (
|
|
98
|
+
if (initResult.kind === 'rejected') {
|
|
160
99
|
logger.info('payment rejected', {
|
|
161
100
|
requestEventId,
|
|
162
|
-
pmi:
|
|
101
|
+
pmi: initResult.pmi,
|
|
163
102
|
amount: priced.amount,
|
|
164
|
-
reason:
|
|
103
|
+
reason: initResult.message,
|
|
165
104
|
});
|
|
166
105
|
const rejectedNotification = createPaymentRejectedNotification({
|
|
167
|
-
pmi:
|
|
106
|
+
pmi: initResult.pmi,
|
|
168
107
|
amount: priced.amount,
|
|
169
|
-
message:
|
|
108
|
+
message: initResult.message,
|
|
170
109
|
});
|
|
171
110
|
await sender.sendNotification(ctx.clientPubkey, rejectedNotification, requestEventId);
|
|
111
|
+
return;
|
|
172
112
|
}
|
|
173
|
-
|
|
113
|
+
if (initResult.kind === 'waived') {
|
|
174
114
|
logger.debug('payment waived, forwarding priced request', {
|
|
175
115
|
requestEventId,
|
|
176
116
|
method: message.method,
|
|
177
117
|
});
|
|
178
118
|
await forward(message);
|
|
119
|
+
return;
|
|
179
120
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
logger.info('payment accepted', {
|
|
227
|
-
requestEventId,
|
|
228
|
-
pmi: paymentRequired.pmi,
|
|
229
|
-
amount: paymentRequired.amount,
|
|
230
|
-
});
|
|
231
|
-
const acceptedNotification = createPaymentAcceptedNotification({
|
|
232
|
-
amount: paymentRequired.amount,
|
|
233
|
-
pmi: paymentRequired.pmi,
|
|
234
|
-
_meta: verified._meta,
|
|
235
|
-
});
|
|
236
|
-
await sender.sendNotification(ctx.clientPubkey, acceptedNotification, requestEventId);
|
|
237
|
-
logger.debug('forwarding priced request after payment', {
|
|
238
|
-
requestEventId,
|
|
239
|
-
method: message.method,
|
|
240
|
-
});
|
|
241
|
-
await forward(message);
|
|
242
|
-
}
|
|
121
|
+
const { paymentRequired, mergedMeta, processor, verifyTimeoutMs } = initResult;
|
|
122
|
+
const requiredNotification = createPaymentRequiredNotification({
|
|
123
|
+
amount: paymentRequired.amount,
|
|
124
|
+
pay_req: paymentRequired.pay_req,
|
|
125
|
+
pmi: paymentRequired.pmi,
|
|
126
|
+
description: paymentRequired.description,
|
|
127
|
+
ttl: paymentRequired.ttl,
|
|
128
|
+
_meta: mergedMeta,
|
|
129
|
+
});
|
|
130
|
+
logger.info('payment required notification sent', {
|
|
131
|
+
requestEventId,
|
|
132
|
+
pmi: paymentRequired.pmi,
|
|
133
|
+
amount: paymentRequired.amount,
|
|
134
|
+
ttl: paymentRequired.ttl,
|
|
135
|
+
});
|
|
136
|
+
await sender.sendNotification(ctx.clientPubkey, requiredNotification, requestEventId);
|
|
137
|
+
// Use the strict verification timeout bound for polling
|
|
138
|
+
const pollingTimeoutMs = Math.min(verifyTimeoutMs, paymentTtlMs);
|
|
139
|
+
logger.debug('verifying payment', {
|
|
140
|
+
requestEventId,
|
|
141
|
+
pmi: paymentRequired.pmi,
|
|
142
|
+
timeoutMs: pollingTimeoutMs,
|
|
143
|
+
});
|
|
144
|
+
const controller = new AbortController();
|
|
145
|
+
const verified = await withTimeout(processor.verifyPayment({
|
|
146
|
+
pay_req: paymentRequired.pay_req,
|
|
147
|
+
requestEventId,
|
|
148
|
+
clientPubkey: ctx.clientPubkey,
|
|
149
|
+
abortSignal: controller.signal,
|
|
150
|
+
}), pollingTimeoutMs, 'verifyPayment timed out').finally(() => controller.abort());
|
|
151
|
+
logger.info('payment accepted', {
|
|
152
|
+
requestEventId,
|
|
153
|
+
pmi: paymentRequired.pmi,
|
|
154
|
+
amount: paymentRequired.amount,
|
|
155
|
+
});
|
|
156
|
+
const acceptedNotification = createPaymentAcceptedNotification({
|
|
157
|
+
amount: paymentRequired.amount,
|
|
158
|
+
pmi: paymentRequired.pmi,
|
|
159
|
+
_meta: verified._meta,
|
|
160
|
+
});
|
|
161
|
+
await sender.sendNotification(ctx.clientPubkey, acceptedNotification, requestEventId);
|
|
162
|
+
logger.debug('forwarding priced request after payment', {
|
|
163
|
+
requestEventId,
|
|
164
|
+
method: message.method,
|
|
165
|
+
});
|
|
166
|
+
await forward(message);
|
|
243
167
|
})();
|
|
244
168
|
const state = {
|
|
245
169
|
expiresAtMs: now + paymentTtlMs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-payments.js","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-payments.js","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAY9C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAoCpC,SAAS,mBAAmB,CAAoC,MAI/D;IACC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM;QACR,CAAC;QACD,OAAO,IAAI,CAAC,CAAC;QACb,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAOD,SAAS,iCAAiC,CAAC,MAO1C;IACC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,uBAAuB;QAC/B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CAAC,MAI1C;IACC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,uBAAuB;QAC/B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC,CAAC,MAI1C;IACC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,uBAAuB;QAC/B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAK9C;;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAC/C,MAAM,eAAe,GACnB,MAAA,MAAM,CAAC,eAAe,mCAAI,oBAAoB,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE7E,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,sBAAsB,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,QAAQ,CAC1B,MAAA,OAAO,CAAC,kBAAkB,mCAAI,IAAI,CACnC,CAAC;IAEF,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QACrC,0DAA0D;QAC1D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IACE,GAAG,CAAC,kBAAkB,KAAK,SAAS;YACpC,GAAG,CAAC,kBAAkB,KAAK,aAAa,EACxC,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACxC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,UAAU,EAAE,MAAM,CAAC,IAAI;SACxB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,yEAAyE;QACzE,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC;YAC3C,0EAA0E;YAC1E,sEAAsE;YACtE,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE;gBACnE,cAAc;aACf,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,QAAQ,CAAC;YACxB,OAAO;QACT,CAAC;QAED,0FAA0F;QAC1F,MAAM,QAAQ,GAAG,CAAC,KAAK,IAAmB,EAAE;YAC1C,MAAM,UAAU,GAAG,MAAM,yBAAyB,CAAC;gBACjD,OAAO;gBACP,MAAM;gBACN,cAAc;gBACd,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,OAAO;gBACP,eAAe;aAChB,CAAC,CAAC;YAEH,8DAA8D;YAC9D,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAC9B,cAAc;oBACd,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,MAAM,EAAE,UAAU,CAAC,OAAO;iBAC3B,CAAC,CAAC;gBAEH,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;oBAC7D,GAAG,EAAE,UAAU,CAAC,GAAG;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,UAAU,CAAC,OAAO;iBAC5B,CAAC,CAAC;gBAEH,MAAM,MAAM,CAAC,gBAAgB,CAC3B,GAAG,CAAC,YAAY,EAChB,oBAAoB,EACpB,cAAc,CACf,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;oBACxD,cAAc;oBACd,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,CAAC;gBAEH,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;YAED,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,GAC/D,UAAU,CAAC;YAEb,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;gBAC7D,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;gBAChD,cAAc;gBACd,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,GAAG,EAAE,eAAe,CAAC,GAAG;aACzB,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,gBAAgB,CAC3B,GAAG,CAAC,YAAY,EAChB,oBAAoB,EACpB,cAAc,CACf,CAAC;YAEF,wDAAwD;YACxD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAEjE,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBAChC,cAAc;gBACd,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,SAAS,EAAE,gBAAgB;aAC5B,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,SAAS,CAAC,aAAa,CAAC;gBACtB,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,cAAc;gBACd,YAAY,EAAE,GAAG,CAAC,YAAY;gBAC9B,WAAW,EAAE,UAAU,CAAC,MAAM;aAC/B,CAAC,EACF,gBAAgB,EAChB,yBAAyB,CAC1B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAEpC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC9B,cAAc;gBACd,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,MAAM,EAAE,eAAe,CAAC,MAAM;aAC/B,CAAC,CAAC;YAEH,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;gBAC7D,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,GAAG,EAAE,eAAe,CAAC,GAAG;gBACxB,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,gBAAgB,CAC3B,GAAG,CAAC,YAAY,EAChB,oBAAoB,EACpB,cAAc,CACf,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE;gBACtD,cAAc;gBACd,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,KAAK,GAAwB;YACjC,WAAW,EAAE,GAAG,GAAG,YAAY;YAC/B,QAAQ;SACT,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC;YACf,4DAA4D;YAC5D,mEAAmE;YACnE,gDAAgD;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0DAA0D;YAC1D,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC/B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -2,6 +2,12 @@ import type { NostrServerTransport } from '../transport/nostr-server-transport.j
|
|
|
2
2
|
import type { ServerPaymentsOptions } from './server-payments.js';
|
|
3
3
|
/**
|
|
4
4
|
* Attaches CEP-8 payments gating to a NostrServerTransport.
|
|
5
|
+
*
|
|
6
|
+
* By default the server uses the `optional` policy: it advertises
|
|
7
|
+
* `explicit_gating` support and mirrors each client's requested lifecycle, so a
|
|
8
|
+
* client that requests `explicit_gating` is gated while transparent clients keep
|
|
9
|
+
* the notification-based flow. Pass `paymentInteraction: 'transparent'` for a
|
|
10
|
+
* transparent-only server.
|
|
5
11
|
*/
|
|
6
12
|
export declare function withServerPayments(transport: NostrServerTransport, options: ServerPaymentsOptions): NostrServerTransport;
|
|
7
13
|
//# sourceMappingURL=server-transport-payments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-transport-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/server-transport-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"server-transport-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/server-transport-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAUlE;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA0DtB"}
|
|
@@ -1,14 +1,57 @@
|
|
|
1
1
|
import { createCapTagsFromPricedCapabilities } from './cap-tags.js';
|
|
2
2
|
import { createPmiTagsFromProcessors } from './pmi-tags.js';
|
|
3
3
|
import { createServerPaymentsMiddleware } from './server-payments.js';
|
|
4
|
+
import { createExplicitGatingMiddleware } from './server-explicit-gating.js';
|
|
5
|
+
import { AuthorizationStore } from './authorization-store.js';
|
|
6
|
+
import { buildProcessorsByPmi } from './server-payments-utils.js';
|
|
7
|
+
import { createLogger } from '../core/utils/logger.js';
|
|
8
|
+
import { NOSTR_TAGS } from '../core/constants.js';
|
|
4
9
|
/**
|
|
5
10
|
* Attaches CEP-8 payments gating to a NostrServerTransport.
|
|
11
|
+
*
|
|
12
|
+
* By default the server uses the `optional` policy: it advertises
|
|
13
|
+
* `explicit_gating` support and mirrors each client's requested lifecycle, so a
|
|
14
|
+
* client that requests `explicit_gating` is gated while transparent clients keep
|
|
15
|
+
* the notification-based flow. Pass `paymentInteraction: 'transparent'` for a
|
|
16
|
+
* transparent-only server.
|
|
6
17
|
*/
|
|
7
18
|
export function withServerPayments(transport, options) {
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
var _a;
|
|
20
|
+
// Build the PMI → processor map once and share it across both middlewares.
|
|
21
|
+
const processorsByPmi = buildProcessorsByPmi(options.processors, createLogger('server-payments'));
|
|
22
|
+
const policy = (_a = options.paymentInteraction) !== null && _a !== void 0 ? _a : 'optional';
|
|
23
|
+
const supportsExplicitGating = policy === 'optional';
|
|
24
|
+
// CEP-8 discovery tags: advertise supported PMIs + reference pricing on
|
|
25
|
+
// announcement/list events. When explicit gating is supported, also advertise
|
|
26
|
+
// it as an available opt-in mode (availability, not effective session mode).
|
|
27
|
+
const extraTags = createPmiTagsFromProcessors(options.processors);
|
|
28
|
+
if (supportsExplicitGating) {
|
|
29
|
+
extraTags.push([NOSTR_TAGS.PAYMENT_INTERACTION, 'explicit_gating']);
|
|
30
|
+
}
|
|
31
|
+
transport.setAnnouncementExtraTags(extraTags);
|
|
10
32
|
transport.setAnnouncementPricingTags(createCapTagsFromPricedCapabilities(options.pricedCapabilities));
|
|
11
|
-
|
|
33
|
+
// Expose the configured policy to the transport coordinator so it can accept
|
|
34
|
+
// or reject per-session `payment_interaction` requests.
|
|
35
|
+
transport.setSupportedPaymentInteraction(policy);
|
|
36
|
+
transport.addInboundMiddleware(createServerPaymentsMiddleware({
|
|
37
|
+
sender: transport,
|
|
38
|
+
options,
|
|
39
|
+
processorsByPmi,
|
|
40
|
+
}));
|
|
41
|
+
// The transparent middleware self-gates on the per-session effective mode, so
|
|
42
|
+
// it is safe to register the explicit-gating middleware alongside it. Each
|
|
43
|
+
// request is routed to exactly one lifecycle based on the negotiated mode.
|
|
44
|
+
if (supportsExplicitGating) {
|
|
45
|
+
const authorizationStore = new AuthorizationStore({});
|
|
46
|
+
transport.addInboundMiddleware(createExplicitGatingMiddleware({
|
|
47
|
+
options,
|
|
48
|
+
authorizationStore,
|
|
49
|
+
sendResponse: async (clientPubkey, response, requestEventId) => {
|
|
50
|
+
await transport.sendTargetedResponse(clientPubkey, response, requestEventId);
|
|
51
|
+
},
|
|
52
|
+
processorsByPmi,
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
12
55
|
return transport;
|
|
13
56
|
}
|
|
14
57
|
//# sourceMappingURL=server-transport-payments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-transport-payments.js","sourceRoot":"","sources":["../../../src/payments/server-transport-payments.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server-transport-payments.js","sourceRoot":"","sources":["../../../src/payments/server-transport-payments.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mCAAmC,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA+B,EAC/B,OAA8B;;IAE9B,2EAA2E;IAC3E,MAAM,eAAe,GAAG,oBAAoB,CAC1C,OAAO,CAAC,UAAU,EAClB,YAAY,CAAC,iBAAiB,CAAC,CAChC,CAAC;IAEF,MAAM,MAAM,GACV,MAAA,OAAO,CAAC,kBAAkB,mCAAI,UAAU,CAAC;IAC3C,MAAM,sBAAsB,GAAG,MAAM,KAAK,UAAU,CAAC;IAErD,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,SAAS,GAAe,2BAA2B,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9E,IAAI,sBAAsB,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,SAAS,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,0BAA0B,CAClC,mCAAmC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAChE,CAAC;IAEF,6EAA6E;IAC7E,wDAAwD;IACxD,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAEjD,SAAS,CAAC,oBAAoB,CAC5B,8BAA8B,CAAC;QAC7B,MAAM,EAAE,SAAS;QACjB,OAAO;QACP,eAAe;KAChB,CAAC,CACH,CAAC;IAEF,8EAA8E;IAC9E,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACtD,SAAS,CAAC,oBAAoB,CAC5B,8BAA8B,CAAC;YAC7B,OAAO;YACP,kBAAkB;YAClB,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;gBAC7D,MAAM,SAAS,CAAC,oBAAoB,CAClC,YAAY,EACZ,QAAQ,EACR,cAAc,CACf,CAAC;YACJ,CAAC;YACD,eAAe;SAChB,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -50,6 +50,64 @@ export type PaymentRequiredNotification = JSONRPCNotification & {
|
|
|
50
50
|
_meta?: Record<string, unknown>;
|
|
51
51
|
};
|
|
52
52
|
};
|
|
53
|
+
/**
|
|
54
|
+
* CEP-8 payment interaction modes.
|
|
55
|
+
*
|
|
56
|
+
* These are the wire/session-level modes negotiated via the `payment_interaction`
|
|
57
|
+
* tag: `transparent` (default) and `explicit_gating` (opt-in).
|
|
58
|
+
*/
|
|
59
|
+
export type PaymentInteractionMode = 'transparent' | 'explicit_gating';
|
|
60
|
+
/**
|
|
61
|
+
* Server-side policy for which payment interaction lifecycles it accepts.
|
|
62
|
+
*
|
|
63
|
+
* This is a server configuration concern, distinct from the wire-level
|
|
64
|
+
* {@link PaymentInteractionMode}. It mirrors the OPTIONAL policy used for
|
|
65
|
+
* encryption and gift wrapping, where the peer's chosen mode is mirrored rather
|
|
66
|
+
* than forced.
|
|
67
|
+
*
|
|
68
|
+
* - `optional`: Accept both lifecycles and mirror the client's requested mode
|
|
69
|
+
* for the session (the default). A client that requests `explicit_gating`
|
|
70
|
+
* gets it; a client that omits the tag or requests `transparent` stays on the
|
|
71
|
+
* transparent lifecycle.
|
|
72
|
+
* - `transparent`: Transparent-only. Reject `explicit_gating` requests with a
|
|
73
|
+
* `-32602` negotiation error per CEP-8 effective-mode disclosure.
|
|
74
|
+
*/
|
|
75
|
+
export type PaymentInteractionPolicy = 'optional' | 'transparent';
|
|
76
|
+
/** A single payment option inside a -32042 error.data.payment_options entry. */
|
|
77
|
+
export interface PaymentOption {
|
|
78
|
+
amount: number;
|
|
79
|
+
pmi: string;
|
|
80
|
+
pay_req: string;
|
|
81
|
+
description?: string;
|
|
82
|
+
ttl?: number;
|
|
83
|
+
_meta?: Record<string, unknown>;
|
|
84
|
+
}
|
|
85
|
+
/** Shape of error.data for -32042 Payment Required. */
|
|
86
|
+
export interface PaymentRequiredErrorData {
|
|
87
|
+
instructions?: string;
|
|
88
|
+
payment_options: PaymentOption[];
|
|
89
|
+
}
|
|
90
|
+
/** Shape of error.data for -32043 Payment Pending. */
|
|
91
|
+
export interface PaymentPendingErrorData {
|
|
92
|
+
instructions?: string;
|
|
93
|
+
retry_after?: number;
|
|
94
|
+
}
|
|
95
|
+
/** Nostr `payment_interaction` tag as defined by CEP-8. */
|
|
96
|
+
export type PaymentInteractionTag = [
|
|
97
|
+
'payment_interaction',
|
|
98
|
+
PaymentInteractionMode
|
|
99
|
+
];
|
|
100
|
+
/**
|
|
101
|
+
* Canonical invocation identity for explicit-gating authorization matching.
|
|
102
|
+
* `invocationHash` excludes `params._meta`, so retries with regenerated
|
|
103
|
+
* transport metadata (e.g. progressToken) still match a paid authorization;
|
|
104
|
+
* only the semantic `method` and params must be preserved when retrying.
|
|
105
|
+
*/
|
|
106
|
+
export interface CanonicalInvocationIdentity {
|
|
107
|
+
clientPubkey: string;
|
|
108
|
+
/** Hex-encoded SHA-256 of JCS({method, params}) with `params._meta` excluded. */
|
|
109
|
+
invocationHash: string;
|
|
110
|
+
}
|
|
53
111
|
/** A CEP-8 payment-accepted notification (JSON-RPC notification). */
|
|
54
112
|
export type PaymentAcceptedNotification = JSONRPCNotification & {
|
|
55
113
|
method: 'notifications/payment_accepted';
|
|
@@ -165,6 +223,18 @@ export type ResolvePriceFn = (params: {
|
|
|
165
223
|
clientPubkey: string;
|
|
166
224
|
requestEventId: string;
|
|
167
225
|
}) => Promise<ResolvePriceResult>;
|
|
226
|
+
/**
|
|
227
|
+
* The structure returned by a PaymentProcessor when a new payment is issued.
|
|
228
|
+
*/
|
|
229
|
+
export interface PaymentRequired {
|
|
230
|
+
amount: number;
|
|
231
|
+
pay_req: string;
|
|
232
|
+
description?: string;
|
|
233
|
+
pmi: string;
|
|
234
|
+
/** Time-to-live in seconds (CEP-8). */
|
|
235
|
+
ttl?: number;
|
|
236
|
+
_meta?: Record<string, unknown>;
|
|
237
|
+
}
|
|
168
238
|
/**
|
|
169
239
|
* Server-side module that can issue and verify payments for a single PMI.
|
|
170
240
|
*/
|
|
@@ -172,15 +242,7 @@ export interface PaymentProcessor {
|
|
|
172
242
|
/** The PMI this processor can issue/verify */
|
|
173
243
|
readonly pmi: string;
|
|
174
244
|
/** Create a payment request for a specific capability invocation */
|
|
175
|
-
createPaymentRequired(params: PaymentProcessorCreateParams): Promise<
|
|
176
|
-
amount: number;
|
|
177
|
-
pay_req: string;
|
|
178
|
-
description?: string;
|
|
179
|
-
pmi: string;
|
|
180
|
-
/** Time-to-live in seconds (CEP-8). */
|
|
181
|
-
ttl?: number;
|
|
182
|
-
_meta?: Record<string, unknown>;
|
|
183
|
-
}>;
|
|
245
|
+
createPaymentRequired(params: PaymentProcessorCreateParams): Promise<PaymentRequired>;
|
|
184
246
|
/** Wait for and/or verify settlement for a previously issued pay_req */
|
|
185
247
|
verifyPayment(params: PaymentProcessorVerifyParams): Promise<{
|
|
186
248
|
_meta?: Record<string, unknown>;
|
|
@@ -195,6 +257,10 @@ export interface ServerPaymentsContext {
|
|
|
195
257
|
* Source: Nostr event tags (e.g. multiple `['pmi', '<pmi>']`).
|
|
196
258
|
*/
|
|
197
259
|
clientPmis?: readonly string[];
|
|
260
|
+
/**
|
|
261
|
+
* The negotiated payment interaction mode for the session.
|
|
262
|
+
*/
|
|
263
|
+
paymentInteraction?: PaymentInteractionMode;
|
|
198
264
|
}
|
|
199
265
|
/**
|
|
200
266
|
* Minimal capability required by server-side payments to emit CEP-8 correlated notifications.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/payments/types.ts"],"names":[],"mappings":"AAuNA;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAA8B;IACvD,OAAO;QACL,KAAK,EAAE,IAAI;QACX,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,MAAc,EACd,OAAkE;IAElE,OAAO;QACL,MAAM;QACN,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,MAAK,SAAS,IAAI;YACxC,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;QACF,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,MAAK,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AA6FD,MAAM,UAAU,gBAAgB,CAC9B,OAAuB;IAEvB,OAAO,CACJ,OAA0B,CAAC,MAAM,KAAK,SAAS;QAC/C,OAA0B,CAAC,EAAE,KAAK,SAAS,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -36,22 +36,24 @@ export declare class ApplesauceRelayPool implements RelayHandler {
|
|
|
36
36
|
private readonly relayOptions?;
|
|
37
37
|
private readonly publishOptions;
|
|
38
38
|
private static readonly DISCONNECT_CLOSE_TIMEOUT_MS;
|
|
39
|
-
private prepareRelayForShutdown;
|
|
40
39
|
private pingSubscription?;
|
|
41
40
|
private readonly destroy$;
|
|
42
41
|
private rebuildInFlight?;
|
|
43
42
|
private relayObservers;
|
|
44
43
|
private relays;
|
|
45
44
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
45
|
+
* Terminates a relay for discard. `Relay.close()` (applesauce-relay >= 6.2)
|
|
46
|
+
* cancels the armed reconnect timer and tears down internal watchers, but
|
|
47
|
+
* does NOT complete `_ready$` — the source of the watchTower. Its
|
|
48
|
+
* reconnect-on-error path could then re-arm a reconnect timer after close,
|
|
49
|
+
* leaking a timer and racing freshly-built relays during rebuild.
|
|
50
|
+
*
|
|
51
|
+
* Order matters: complete `_ready$` BEFORE `close()`, otherwise close()'s
|
|
52
|
+
* socket teardown can trip the watchTower's reconnect path and arm a timer
|
|
53
|
+
* that completing the source won't cancel. `close()` then also cancels any
|
|
54
|
+
* reconnect timer armed before this call.
|
|
48
55
|
*/
|
|
49
|
-
private
|
|
50
|
-
/**
|
|
51
|
-
* Safely closes a relay, optionally awaiting the close handshake (bounded), and completes
|
|
52
|
-
* all its RxJS subjects to prevent memory leaks.
|
|
53
|
-
*/
|
|
54
|
-
private safelyCloseRelay;
|
|
56
|
+
private discardRelay;
|
|
55
57
|
private createRelay;
|
|
56
58
|
/**
|
|
57
59
|
* Creates a new ApplesauceRelayPool instance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applesauce-relay-pool.d.ts","sourceRoot":"","sources":["../../../src/relay/applesauce-relay-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"applesauce-relay-pool.d.ts","sourceRoot":"","sources":["../../../src/relay/applesauce-relay-pool.ts"],"names":[],"mappings":"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"}
|