@contextvm/sdk 0.4.1 → 0.4.3
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/payments/client-payments.d.ts.map +1 -1
- package/dist/esm/payments/client-payments.js +39 -0
- package/dist/esm/payments/client-payments.js.map +1 -1
- package/dist/esm/payments/nip47/nwc-client.d.ts.map +1 -1
- package/dist/esm/payments/nip47/nwc-client.js +17 -23
- package/dist/esm/payments/nip47/nwc-client.js.map +1 -1
- package/dist/esm/payments/server-payments.d.ts.map +1 -1
- package/dist/esm/payments/server-payments.js +37 -0
- package/dist/esm/payments/server-payments.js.map +1 -1
- package/package.json +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAM/E,OAAO,EAAE,cAAc,EAA+B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAM/E,OAAO,EAAE,cAAc,EAA+B,MAAM,YAAY,CAAC;AAUzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC;AAWD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,qBAAqB,GAC7B,SAAS,CAsKX"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isJSONRPCNotification, } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { NostrClientTransport } from '../transport/nostr-client-transport.js';
|
|
3
|
+
import { createLogger } from '../core/utils/logger.js';
|
|
3
4
|
function isPaymentRequiredNotification(msg) {
|
|
4
5
|
return (isJSONRPCNotification(msg) &&
|
|
5
6
|
msg.method === 'notifications/payment_required');
|
|
@@ -8,10 +9,14 @@ function isPaymentRequiredNotification(msg) {
|
|
|
8
9
|
* Wraps a transport to automatically handle CEP-8 payment requests.
|
|
9
10
|
*/
|
|
10
11
|
export function withClientPayments(transport, options) {
|
|
12
|
+
const logger = createLogger('client-payments');
|
|
11
13
|
// Ensure CEP-8 discovery/negotiation: when using Nostr transports, always advertise
|
|
12
14
|
// supported PMIs derived from the handler list (preference order = handler order).
|
|
13
15
|
if (transport instanceof NostrClientTransport) {
|
|
14
16
|
transport.setClientPmis(options.handlers.map((h) => h.pmi));
|
|
17
|
+
logger.debug('advertised client PMIs', {
|
|
18
|
+
pmis: options.handlers.map((h) => h.pmi),
|
|
19
|
+
});
|
|
15
20
|
}
|
|
16
21
|
const handlersByPmi = new Map(options.handlers.map((h) => [h.pmi, h]));
|
|
17
22
|
// Prevent double-paying if relays or servers deliver duplicate payment_required notifications.
|
|
@@ -25,11 +30,19 @@ export function withClientPayments(transport, options) {
|
|
|
25
30
|
}
|
|
26
31
|
const handler = handlersByPmi.get(message.params.pmi);
|
|
27
32
|
if (!handler) {
|
|
33
|
+
logger.debug('no handler for PMI, ignoring payment_required', {
|
|
34
|
+
pmi: message.params.pmi,
|
|
35
|
+
requestEventId,
|
|
36
|
+
});
|
|
28
37
|
return;
|
|
29
38
|
}
|
|
30
39
|
// Best-effort client-side dedupe keyed by pay_req.
|
|
31
40
|
// IMPORTANT: claim synchronously before any await to avoid double-pay races.
|
|
32
41
|
if (inFlightPayReqs.has(message.params.pay_req)) {
|
|
42
|
+
logger.debug('duplicate pay_req detected, skipping', {
|
|
43
|
+
payReq: message.params.pay_req.substring(0, 20) + '...',
|
|
44
|
+
requestEventId,
|
|
45
|
+
});
|
|
33
46
|
return;
|
|
34
47
|
}
|
|
35
48
|
inFlightPayReqs.add(message.params.pay_req);
|
|
@@ -40,11 +53,37 @@ export function withClientPayments(transport, options) {
|
|
|
40
53
|
description: message.params.description,
|
|
41
54
|
requestEventId,
|
|
42
55
|
};
|
|
56
|
+
logger.info('processing payment_required', {
|
|
57
|
+
requestEventId,
|
|
58
|
+
pmi: message.params.pmi,
|
|
59
|
+
amount: message.params.amount,
|
|
60
|
+
});
|
|
43
61
|
const canHandle = handler.canHandle ? await handler.canHandle(req) : true;
|
|
44
62
|
if (!canHandle) {
|
|
63
|
+
logger.debug('handler declined to handle', {
|
|
64
|
+
requestEventId,
|
|
65
|
+
pmi: message.params.pmi,
|
|
66
|
+
});
|
|
45
67
|
return;
|
|
46
68
|
}
|
|
69
|
+
logger.debug('invoking payment handler', {
|
|
70
|
+
requestEventId,
|
|
71
|
+
handler: handler.constructor.name,
|
|
72
|
+
pmi: message.params.pmi,
|
|
73
|
+
});
|
|
47
74
|
await handler.handle(req);
|
|
75
|
+
logger.info('payment handler completed successfully', {
|
|
76
|
+
requestEventId,
|
|
77
|
+
pmi: message.params.pmi,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
logger.error('payment handler failed', {
|
|
82
|
+
requestEventId,
|
|
83
|
+
pmi: message.params.pmi,
|
|
84
|
+
error: error instanceof Error ? error.message : String(error),
|
|
85
|
+
});
|
|
86
|
+
throw error;
|
|
48
87
|
}
|
|
49
88
|
finally {
|
|
50
89
|
inFlightPayReqs.delete(message.params.pay_req);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-payments.js","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"client-payments.js","sourceRoot":"","sources":["../../../src/payments/client-payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nwc-client.d.ts","sourceRoot":"","sources":["../../../../src/payments/nip47/nwc-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzE,eAAO,MAAM,aAAa,QAAsB,CAAC;AACjD,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AACvD,eAAO,MAAM,iBAAiB,QAA0B,CAAC;AAUzD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,aAAa,CAAC;IAE1B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;IAI1B,OAAO,CAAC,YAAY,CAAoC;gBAErC,OAAO,EAAE,gBAAgB;IAO/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;QACnD,MAAM,EAAE,CAAC,CAAC;QACV,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,UAAU,EAAE,CAAC,CAAC;QACd,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC;QACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"nwc-client.d.ts","sourceRoot":"","sources":["../../../../src/payments/nip47/nwc-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzE,eAAO,MAAM,aAAa,QAAsB,CAAC;AACjD,eAAO,MAAM,gBAAgB,QAAyB,CAAC;AACvD,eAAO,MAAM,iBAAiB,QAA0B,CAAC;AAUzD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,aAAa,CAAC;IAE1B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;IAI1B,OAAO,CAAC,YAAY,CAAoC;gBAErC,OAAO,EAAE,gBAAgB;IAO/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;QACnD,MAAM,EAAE,CAAC,CAAC;QACV,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,UAAU,EAAE,CAAC,CAAC;QACd,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC;QACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAwH/B"}
|
|
@@ -100,32 +100,26 @@ export class NwcClient {
|
|
|
100
100
|
encryption: 'nip04',
|
|
101
101
|
});
|
|
102
102
|
await this.relayHandler.publish(signedRequest);
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (parsed.error) {
|
|
116
|
-
return parsed;
|
|
117
|
-
}
|
|
118
|
-
if (params.responseResultGuard && parsed.result !== null) {
|
|
119
|
-
if (!params.responseResultGuard(parsed.result)) {
|
|
120
|
-
throw new Error('Unexpected NWC result shape');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
103
|
+
const responseEvent = await withTimeout(responsePromise, this.responseTimeoutMs, `NWC response timed out for ${params.method}`);
|
|
104
|
+
// Validate correlation.
|
|
105
|
+
const eTag = getTagValue(responseEvent.tags, 'e');
|
|
106
|
+
if (eTag !== signedRequest.id) {
|
|
107
|
+
throw new Error('NWC response did not correlate to request');
|
|
108
|
+
}
|
|
109
|
+
const decrypted = await nip04.decrypt(this.connection.clientSecretKeyHex, responseEvent.pubkey, responseEvent.content);
|
|
110
|
+
const parsed = JSON.parse(decrypted);
|
|
111
|
+
if (parsed.result_type !== params.resultType) {
|
|
112
|
+
throw new Error(`Unexpected NWC result_type: ${String(parsed.result_type)} (expected ${params.resultType})`);
|
|
113
|
+
}
|
|
114
|
+
if (parsed.error) {
|
|
123
115
|
return parsed;
|
|
124
116
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
117
|
+
if (params.responseResultGuard && parsed.result !== null) {
|
|
118
|
+
if (!params.responseResultGuard(parsed.result)) {
|
|
119
|
+
throw new Error('Unexpected NWC result shape');
|
|
120
|
+
}
|
|
128
121
|
}
|
|
122
|
+
return parsed;
|
|
129
123
|
};
|
|
130
124
|
const prev = this.requestQueue;
|
|
131
125
|
let release;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nwc-client.js","sourceRoot":"","sources":["../../../../src/payments/nip47/nwc-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nwc-client.js","sourceRoot":"","sources":["../../../../src/payments/nip47/nwc-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAE5B,gBAAgB,EAGhB,gBAAgB,EAGhB,cAAc,EACd,kBAAkB,EAEnB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server-payments.d.ts","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAE5B,gBAAgB,EAGhB,gBAAgB,EAGhB,cAAc,EACd,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxC,kBAAkB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAEhD,6EAA6E;IAC7E,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAuHD;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,MAAM,EAAE,4BAA4B,CAAC;IACrC,OAAO,EAAE,qBAAqB,CAAC;CAChC,GAAG,kBAAkB,CAuMrB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
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
|
+
import { createLogger } from '../core/utils/logger.js';
|
|
4
5
|
function purgeExpiredPending(params) {
|
|
5
6
|
let checked = 0;
|
|
6
7
|
for (const [key, value] of params.pending.entries()) {
|
|
@@ -83,6 +84,7 @@ function isResolvePriceRejection(quote) {
|
|
|
83
84
|
export function createServerPaymentsMiddleware(params) {
|
|
84
85
|
var _a, _b;
|
|
85
86
|
const { sender, options } = params;
|
|
87
|
+
const logger = createLogger('server-payments');
|
|
86
88
|
const processorsByPmi = new Map(options.processors.map((p) => [p.pmi, p]));
|
|
87
89
|
const paymentTtlMs = (_a = options.paymentTtlMs) !== null && _a !== void 0 ? _a : 300000;
|
|
88
90
|
const pending = new LruCache((_b = options.maxPendingPayments) !== null && _b !== void 0 ? _b : 1000);
|
|
@@ -97,6 +99,12 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
97
99
|
await forward(message);
|
|
98
100
|
return;
|
|
99
101
|
}
|
|
102
|
+
logger.debug('priced capability matched', {
|
|
103
|
+
method: message.method,
|
|
104
|
+
requestEventId: String(message.id),
|
|
105
|
+
pricedMethod: priced.method,
|
|
106
|
+
pricedName: priced.name,
|
|
107
|
+
});
|
|
100
108
|
const requestEventId = String(message.id);
|
|
101
109
|
const now = Date.now();
|
|
102
110
|
// Opportunistic cleanup so one-shot spam doesn't accumulate until reuse.
|
|
@@ -105,6 +113,9 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
105
113
|
if (existing && existing.expiresAtMs > now) {
|
|
106
114
|
// Duplicate request event id: await the in-flight work deterministically.
|
|
107
115
|
// This avoids double-charge races and avoids black-holing duplicates.
|
|
116
|
+
logger.debug('duplicate request event detected, awaiting in-flight', {
|
|
117
|
+
requestEventId,
|
|
118
|
+
});
|
|
108
119
|
await existing.inFlight;
|
|
109
120
|
return;
|
|
110
121
|
}
|
|
@@ -132,6 +143,12 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
132
143
|
: { amount: priced.amount, description: priced.description };
|
|
133
144
|
// Handle rejection: emit payment_rejected and do not forward.
|
|
134
145
|
if (isResolvePriceRejection(quote)) {
|
|
146
|
+
logger.info('payment rejected', {
|
|
147
|
+
requestEventId,
|
|
148
|
+
pmi: processor.pmi,
|
|
149
|
+
amount: priced.amount,
|
|
150
|
+
reason: quote.message,
|
|
151
|
+
});
|
|
135
152
|
const rejectedNotification = createPaymentRejectedNotification({
|
|
136
153
|
pmi: processor.pmi,
|
|
137
154
|
amount: priced.amount,
|
|
@@ -162,11 +179,22 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
162
179
|
ttl: paymentRequired.ttl,
|
|
163
180
|
_meta: mergedMeta,
|
|
164
181
|
});
|
|
182
|
+
logger.info('payment required notification sent', {
|
|
183
|
+
requestEventId,
|
|
184
|
+
pmi: paymentRequired.pmi,
|
|
185
|
+
amount: paymentRequired.amount,
|
|
186
|
+
ttl: paymentRequired.ttl,
|
|
187
|
+
});
|
|
165
188
|
await sender.sendNotification(ctx.clientPubkey, requiredNotification, requestEventId);
|
|
166
189
|
const verifyTimeoutMs = getVerificationTimeoutMs({
|
|
167
190
|
ttlSeconds: paymentRequired.ttl,
|
|
168
191
|
});
|
|
169
192
|
const effectiveTimeoutMs = Math.min(verifyTimeoutMs, paymentTtlMs);
|
|
193
|
+
logger.debug('verifying payment', {
|
|
194
|
+
requestEventId,
|
|
195
|
+
pmi: paymentRequired.pmi,
|
|
196
|
+
timeoutMs: effectiveTimeoutMs,
|
|
197
|
+
});
|
|
170
198
|
const controller = new AbortController();
|
|
171
199
|
const verified = await withTimeout(processor.verifyPayment({
|
|
172
200
|
pay_req: paymentRequired.pay_req,
|
|
@@ -174,12 +202,21 @@ export function createServerPaymentsMiddleware(params) {
|
|
|
174
202
|
clientPubkey: ctx.clientPubkey,
|
|
175
203
|
abortSignal: controller.signal,
|
|
176
204
|
}), effectiveTimeoutMs, 'verifyPayment timed out').finally(() => controller.abort());
|
|
205
|
+
logger.info('payment accepted', {
|
|
206
|
+
requestEventId,
|
|
207
|
+
pmi: paymentRequired.pmi,
|
|
208
|
+
amount: paymentRequired.amount,
|
|
209
|
+
});
|
|
177
210
|
const acceptedNotification = createPaymentAcceptedNotification({
|
|
178
211
|
amount: paymentRequired.amount,
|
|
179
212
|
pmi: paymentRequired.pmi,
|
|
180
213
|
_meta: verified._meta,
|
|
181
214
|
});
|
|
182
215
|
await sender.sendNotification(ctx.clientPubkey, acceptedNotification, requestEventId);
|
|
216
|
+
logger.debug('forwarding priced request after payment', {
|
|
217
|
+
requestEventId,
|
|
218
|
+
method: message.method,
|
|
219
|
+
});
|
|
183
220
|
await forward(message);
|
|
184
221
|
}
|
|
185
222
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-payments.js","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"AACA,OAAO,EAWL,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-payments.js","sourceRoot":"","sources":["../../../src/payments/server-payments.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contextvm/sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "CtxVM SDK for JavaScript/TypeScript",
|
|
5
5
|
"license": "LGPL-3.0-1",
|
|
6
6
|
"author": "ContextVM",
|
|
@@ -63,6 +63,14 @@
|
|
|
63
63
|
"./transport": {
|
|
64
64
|
"types": "./dist/esm/transport/index.d.ts",
|
|
65
65
|
"default": "./dist/esm/transport/index.js"
|
|
66
|
+
},
|
|
67
|
+
"./payments": {
|
|
68
|
+
"types": "./dist/esm/payments/index.d.ts",
|
|
69
|
+
"default": "./dist/esm/payments/index.js"
|
|
70
|
+
},
|
|
71
|
+
"./payments/*": {
|
|
72
|
+
"types": "./dist/esm/payments/*.d.ts",
|
|
73
|
+
"default": "./dist/esm/payments/*.js"
|
|
66
74
|
}
|
|
67
75
|
},
|
|
68
76
|
"types": "./dist/esm/index.d.ts",
|