mppx 0.8.18 → 0.9.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/CHANGELOG.md +22 -0
- package/README.md +0 -6
- package/dist/Challenge.d.ts +7 -0
- package/dist/Challenge.js +32 -6
- package/dist/Constants.d.ts +1 -0
- package/dist/Constants.js +1 -0
- package/dist/Credential.d.ts +11 -5
- package/dist/Credential.js +8 -8
- package/dist/Html.js +1 -1
- package/dist/cli/THIRD-PARTY-LICENSES.txt +1 -1
- package/dist/cli/cli.d.ts +2 -2
- package/dist/cli/cli.js +134 -134
- package/dist/cli/plugins/index.js +13 -13
- package/dist/cli/sessions/Manager.js +4 -6
- package/dist/cli/sessions/commands.d.ts +1 -1
- package/dist/cli/sessions/store.js +13 -19
- package/dist/cli/validate/index.d.ts +2 -2
- package/dist/client/Mppx.d.ts +39 -2
- package/dist/client/Mppx.js +102 -46
- package/dist/client/Transport.js +1 -1
- package/dist/client/internal/protocols/Mpp.d.ts +1 -1
- package/dist/client/internal/protocols/Mpp.js +5 -3
- package/dist/client/internal/protocols/Protocol.d.ts +3 -1
- package/dist/client/internal/protocols/Shared.js +5 -1
- package/dist/integrations/x402/Evm.d.ts +29 -0
- package/dist/integrations/x402/Evm.js +150 -0
- package/dist/integrations/x402/Negotiator.d.ts +36 -0
- package/dist/integrations/x402/Negotiator.js +165 -0
- package/dist/mcp/internal/Credential.d.ts +9 -0
- package/dist/mcp/internal/Credential.js +16 -0
- package/dist/mcp/server/Transport.js +2 -4
- package/dist/middlewares/express.js +5 -12
- package/dist/middlewares/internal/express.d.ts +8 -0
- package/dist/middlewares/internal/express.js +24 -0
- package/dist/middlewares/internal/node.d.ts +10 -0
- package/dist/middlewares/internal/node.js +34 -0
- package/dist/proxy/Proxy.js +15 -9
- package/dist/server/Mppx.d.ts +2 -0
- package/dist/server/Mppx.js +17 -14
- package/dist/server/Transport.d.ts +8 -2
- package/dist/server/Transport.js +6 -3
- package/dist/server/internal/SecretKey.d.ts +3 -0
- package/dist/server/internal/SecretKey.js +9 -0
- package/dist/server/internal/html/serviceWorker.client.d.ts +1 -1
- package/dist/server/internal/html/serviceWorker.client.js +2 -2
- package/dist/server/internal/html/serviceWorker.gen.d.ts +1 -1
- package/dist/server/internal/html/serviceWorker.gen.js +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/tempo/Methods.d.ts +0 -10
- package/dist/tempo/Methods.js +3 -12
- package/dist/tempo/client/Charge.d.ts +0 -3
- package/dist/tempo/client/Charge.js +3 -13
- package/dist/tempo/client/Methods.d.ts +0 -10
- package/dist/tempo/internal/account.d.ts +15 -6
- package/dist/tempo/internal/account.js +17 -26
- package/dist/tempo/internal/defaults.d.ts +0 -11
- package/dist/tempo/internal/defaults.js +0 -11
- package/dist/tempo/internal/fee-payer.d.ts +21 -3
- package/dist/tempo/internal/fee-payer.js +10 -19
- package/dist/tempo/internal/remote-fee-payer.d.ts +12 -0
- package/dist/tempo/internal/remote-fee-payer.js +17 -0
- package/dist/tempo/legacy/client/Session.d.ts +0 -7
- package/dist/tempo/server/Charge.d.ts +0 -3
- package/dist/tempo/server/Charge.js +26 -68
- package/dist/tempo/server/Methods.d.ts +4 -18
- package/dist/tempo/server/Methods.js +4 -8
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/session/client/ChannelOps.d.ts +0 -14
- package/dist/tempo/session/client/ChannelOps.js +0 -22
- package/dist/tempo/session/client/ChannelStore.d.ts +5 -0
- package/dist/tempo/session/client/ChannelStore.js +2 -2
- package/dist/tempo/session/client/CredentialState.d.ts +2 -12
- package/dist/tempo/session/client/CredentialState.js +75 -73
- package/dist/tempo/session/client/Session.d.ts +2 -9
- package/dist/tempo/session/client/Session.js +71 -176
- package/dist/tempo/session/client/SessionManager.js +9 -28
- package/dist/tempo/session/precompile/Chain.d.ts +0 -4
- package/dist/tempo/session/precompile/Chain.js +2 -29
- package/dist/tempo/session/precompile/Protocol.d.ts +0 -13
- package/dist/tempo/session/precompile/Voucher.d.ts +1 -3
- package/dist/tempo/session/precompile/Voucher.js +12 -6
- package/dist/tempo/session/server/ChannelStore.d.ts +0 -6
- package/dist/tempo/session/server/ChannelStore.js +4 -11
- package/dist/tempo/session/server/CredentialVerification.d.ts +7 -9
- package/dist/tempo/session/server/CredentialVerification.js +118 -184
- package/dist/tempo/session/server/RequestState.d.ts +0 -17
- package/dist/tempo/session/server/RequestState.js +15 -59
- package/dist/tempo/session/server/Session.d.ts +0 -9
- package/dist/tempo/session/server/Session.js +8 -37
- package/dist/tempo/session/server/Settlement.d.ts +0 -7
- package/dist/tempo/session/server/Settlement.js +16 -50
- package/dist/viem/Client.d.ts +7 -2
- package/dist/viem/Client.js +17 -5
- package/dist/x402/Types.d.ts +2 -0
- package/dist/x402/Types.js +2 -0
- package/dist/x402/mcp.d.ts +20 -0
- package/dist/x402/mcp.js +153 -0
- package/dist/x402/middlewares/express.d.ts +23 -0
- package/dist/x402/middlewares/express.js +49 -0
- package/dist/x402/middlewares/hono.d.ts +13 -0
- package/dist/x402/middlewares/hono.js +36 -0
- package/dist/x402/middlewares/next.d.ts +17 -0
- package/dist/x402/middlewares/next.js +58 -0
- package/package.json +41 -1
- package/dist/tempo/internal/machine-token-charge.d.ts +0 -51
- package/dist/tempo/internal/machine-token-charge.js +0 -113
- package/dist/tempo/internal/machine-token-session.d.ts +0 -88
- package/dist/tempo/internal/machine-token-session.js +0 -173
- package/dist/tempo/internal/signature-envelope.d.ts +0 -14
- package/dist/tempo/internal/signature-envelope.js +0 -28
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import type * as Hex from 'ox/Hex';
|
|
2
|
-
import { type Account, type Address, type Client } from 'viem';
|
|
3
|
-
import * as defaults from './defaults.js';
|
|
4
|
-
type Deployment = (typeof defaults.machineToken)[keyof typeof defaults.machineToken];
|
|
5
|
-
/** Verified machine-token session route. */
|
|
6
|
-
export type Route = {
|
|
7
|
-
operator: Address;
|
|
8
|
-
payee: Address;
|
|
9
|
-
token: Address;
|
|
10
|
-
};
|
|
11
|
-
type Authorization = {
|
|
12
|
-
channelId: Hex.Hex;
|
|
13
|
-
cumulativeAmount: bigint;
|
|
14
|
-
};
|
|
15
|
-
/** Returns whether a unified machine-token router is configured on a chain. */
|
|
16
|
-
export declare function isSupported(chainId: number | undefined): boolean;
|
|
17
|
-
/** Matches a session descriptor to the configured router and machine token. */
|
|
18
|
-
export declare function matchDeployment(parameters: {
|
|
19
|
-
chainId: number | undefined;
|
|
20
|
-
descriptor: {
|
|
21
|
-
operator: Address;
|
|
22
|
-
token: Address;
|
|
23
|
-
};
|
|
24
|
-
}): Deployment | undefined;
|
|
25
|
-
/** Returns whether an authenticated session challenge permits the machine-token rail. */
|
|
26
|
-
export declare function isEnabledChallenge(challenge: {
|
|
27
|
-
request: {
|
|
28
|
-
methodDetails?: unknown;
|
|
29
|
-
};
|
|
30
|
-
}): boolean;
|
|
31
|
-
/** Resolves the fee token from the payment token and an optional explicit override. */
|
|
32
|
-
export declare function resolveFeeToken(parameters: {
|
|
33
|
-
chainId: number | undefined;
|
|
34
|
-
override?: Address | undefined;
|
|
35
|
-
paymentToken: Address;
|
|
36
|
-
}): Address;
|
|
37
|
-
/**
|
|
38
|
-
* Resolves the fee tokens accepted for direct-rail sponsored transactions.
|
|
39
|
-
* Clients released before the fee-token advertisement always pay sponsored
|
|
40
|
-
* fees in the payment token, so it stays accepted alongside a configured
|
|
41
|
-
* override. Machine-rail routes post-date the advertisement and pin a single
|
|
42
|
-
* token via {@link resolveFeeToken}.
|
|
43
|
-
*/
|
|
44
|
-
export declare function allowedSponsoredFeeTokens(parameters: {
|
|
45
|
-
chainId: number | undefined;
|
|
46
|
-
override?: Address | undefined;
|
|
47
|
-
paymentToken: Address;
|
|
48
|
-
}): readonly Address[];
|
|
49
|
-
/** Returns whether an account has enough of a TIP-20 token for an operation. */
|
|
50
|
-
export declare function hasSufficientBalance(client: Client, parameters: {
|
|
51
|
-
account: Address;
|
|
52
|
-
amount: bigint;
|
|
53
|
-
token: Address;
|
|
54
|
-
}): Promise<boolean>;
|
|
55
|
-
/** Signs a cumulative amount in the router-specific authorization domain. */
|
|
56
|
-
export declare function signAuthorization(client: Client, account: Account, parameters: {
|
|
57
|
-
authorization: Authorization;
|
|
58
|
-
chainId: number;
|
|
59
|
-
router: Address;
|
|
60
|
-
}): Promise<Hex.Hex>;
|
|
61
|
-
/** Verifies a cumulative authorization in the router-specific domain. */
|
|
62
|
-
export declare function verifyAuthorization(parameters: {
|
|
63
|
-
authorization: Authorization;
|
|
64
|
-
chainId: number;
|
|
65
|
-
expectedSigner: Address;
|
|
66
|
-
router: Address;
|
|
67
|
-
signature: Hex.Hex;
|
|
68
|
-
}): boolean;
|
|
69
|
-
/** Resolves the active virtual payee and verifies its immutable reverse binding. */
|
|
70
|
-
export declare function resolveRoute(client: Client, parameters: {
|
|
71
|
-
chainId: number;
|
|
72
|
-
merchant: Address;
|
|
73
|
-
targetToken: Address;
|
|
74
|
-
}): Promise<Route | undefined>;
|
|
75
|
-
/** Verifies a descriptor against the trusted router and merchant payout binding. */
|
|
76
|
-
export declare function matchRoute(client: Client, parameters: {
|
|
77
|
-
active?: boolean | undefined;
|
|
78
|
-
chainId: number;
|
|
79
|
-
descriptor: {
|
|
80
|
-
operator: Address;
|
|
81
|
-
payee: Address;
|
|
82
|
-
token: Address;
|
|
83
|
-
};
|
|
84
|
-
merchant: Address;
|
|
85
|
-
targetToken: Address;
|
|
86
|
-
}): Promise<Route | undefined>;
|
|
87
|
-
export {};
|
|
88
|
-
//# sourceMappingURL=machine-token-session.d.ts.map
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { SignatureEnvelope } from 'ox/tempo';
|
|
2
|
-
import { hashTypedData, isAddressEqual, parseAbi, zeroAddress, } from 'viem';
|
|
3
|
-
import { readContract, signTypedData } from 'viem/actions';
|
|
4
|
-
import { Actions } from 'viem/tempo';
|
|
5
|
-
import { isAccessKeyAccount } from './account.js';
|
|
6
|
-
import * as defaults from './defaults.js';
|
|
7
|
-
import { parseCanonicalEnvelope, serializeCanonicalEnvelope } from './signature-envelope.js';
|
|
8
|
-
const sessionRouteAbi = parseAbi([
|
|
9
|
-
'function sessionRouteFor(address merchant,address targetToken) view returns (address routeAddress)',
|
|
10
|
-
'function sessionRoutes(address routeAddress) view returns (address merchant,address targetToken)',
|
|
11
|
-
]);
|
|
12
|
-
const authorizationTypes = {
|
|
13
|
-
SessionAuthorization: [
|
|
14
|
-
{ name: 'channelId', type: 'bytes32' },
|
|
15
|
-
{ name: 'cumulativeAmount', type: 'uint96' },
|
|
16
|
-
],
|
|
17
|
-
};
|
|
18
|
-
function getDeployment(chainId) {
|
|
19
|
-
if (chainId === undefined)
|
|
20
|
-
return undefined;
|
|
21
|
-
return defaults.machineToken[chainId];
|
|
22
|
-
}
|
|
23
|
-
/** Returns whether a unified machine-token router is configured on a chain. */
|
|
24
|
-
export function isSupported(chainId) {
|
|
25
|
-
return !!getDeployment(chainId);
|
|
26
|
-
}
|
|
27
|
-
/** Matches a session descriptor to the configured router and machine token. */
|
|
28
|
-
export function matchDeployment(parameters) {
|
|
29
|
-
const deployment = getDeployment(parameters.chainId);
|
|
30
|
-
return deployment &&
|
|
31
|
-
isAddressEqual(parameters.descriptor.operator, deployment.swap) &&
|
|
32
|
-
isAddressEqual(parameters.descriptor.token, deployment.token)
|
|
33
|
-
? deployment
|
|
34
|
-
: undefined;
|
|
35
|
-
}
|
|
36
|
-
/** Returns whether an authenticated session challenge permits the machine-token rail. */
|
|
37
|
-
export function isEnabledChallenge(challenge) {
|
|
38
|
-
return (challenge.request.methodDetails
|
|
39
|
-
?.machineTokenEnabled === true);
|
|
40
|
-
}
|
|
41
|
-
/** Resolves the fee token from the payment token and an optional explicit override. */
|
|
42
|
-
export function resolveFeeToken(parameters) {
|
|
43
|
-
if (parameters.override)
|
|
44
|
-
return parameters.override;
|
|
45
|
-
const deployment = getDeployment(parameters.chainId);
|
|
46
|
-
if (deployment && isAddressEqual(parameters.paymentToken, deployment.token))
|
|
47
|
-
return defaults.tokens.pathUsd;
|
|
48
|
-
return parameters.paymentToken;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Resolves the fee tokens accepted for direct-rail sponsored transactions.
|
|
52
|
-
* Clients released before the fee-token advertisement always pay sponsored
|
|
53
|
-
* fees in the payment token, so it stays accepted alongside a configured
|
|
54
|
-
* override. Machine-rail routes post-date the advertisement and pin a single
|
|
55
|
-
* token via {@link resolveFeeToken}.
|
|
56
|
-
*/
|
|
57
|
-
export function allowedSponsoredFeeTokens(parameters) {
|
|
58
|
-
const feeToken = resolveFeeToken(parameters);
|
|
59
|
-
if (isAddressEqual(feeToken, parameters.paymentToken))
|
|
60
|
-
return [feeToken];
|
|
61
|
-
return [feeToken, parameters.paymentToken];
|
|
62
|
-
}
|
|
63
|
-
/** Returns whether an account has enough of a TIP-20 token for an operation. */
|
|
64
|
-
export async function hasSufficientBalance(client, parameters) {
|
|
65
|
-
try {
|
|
66
|
-
const balance = await readContract(client, Actions.token.getBalance.call(client, {
|
|
67
|
-
account: parameters.account,
|
|
68
|
-
token: parameters.token,
|
|
69
|
-
}));
|
|
70
|
-
return balance >= parameters.amount;
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
function authorizationDomain(router, chainId) {
|
|
77
|
-
return {
|
|
78
|
-
name: 'MachineUSD Session Router',
|
|
79
|
-
version: '1',
|
|
80
|
-
chainId,
|
|
81
|
-
verifyingContract: router,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
function hashAuthorization(parameters) {
|
|
85
|
-
return hashTypedData({
|
|
86
|
-
domain: authorizationDomain(parameters.router, parameters.chainId),
|
|
87
|
-
types: authorizationTypes,
|
|
88
|
-
primaryType: 'SessionAuthorization',
|
|
89
|
-
message: parameters.authorization,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
/** Signs a cumulative amount in the router-specific authorization domain. */
|
|
93
|
-
export async function signAuthorization(client, account, parameters) {
|
|
94
|
-
const signature = isAccessKeyAccount(account)
|
|
95
|
-
? await account.sign({
|
|
96
|
-
hash: hashAuthorization(parameters),
|
|
97
|
-
raw: true,
|
|
98
|
-
})
|
|
99
|
-
: await signTypedData(client, {
|
|
100
|
-
account,
|
|
101
|
-
domain: authorizationDomain(parameters.router, parameters.chainId),
|
|
102
|
-
types: authorizationTypes,
|
|
103
|
-
primaryType: 'SessionAuthorization',
|
|
104
|
-
message: parameters.authorization,
|
|
105
|
-
});
|
|
106
|
-
return serializeCanonicalEnvelope(signature, 'Machine-token session authorizations');
|
|
107
|
-
}
|
|
108
|
-
/** Verifies a cumulative authorization in the router-specific domain. */
|
|
109
|
-
export function verifyAuthorization(parameters) {
|
|
110
|
-
try {
|
|
111
|
-
const envelope = parseCanonicalEnvelope(parameters.signature);
|
|
112
|
-
if (!envelope)
|
|
113
|
-
return false;
|
|
114
|
-
const payload = hashAuthorization(parameters);
|
|
115
|
-
return SignatureEnvelope.verify(envelope, { address: parameters.expectedSigner, payload });
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
async function readRoute(client, deployment, parameters) {
|
|
122
|
-
const payee = parameters.payee ??
|
|
123
|
-
(await readContract(client, {
|
|
124
|
-
address: deployment.swap,
|
|
125
|
-
abi: sessionRouteAbi,
|
|
126
|
-
functionName: 'sessionRouteFor',
|
|
127
|
-
args: [parameters.merchant, parameters.targetToken],
|
|
128
|
-
}));
|
|
129
|
-
if (isAddressEqual(payee, zeroAddress))
|
|
130
|
-
return undefined;
|
|
131
|
-
const [binding, activePayee] = await Promise.all([
|
|
132
|
-
readContract(client, {
|
|
133
|
-
address: deployment.swap,
|
|
134
|
-
abi: sessionRouteAbi,
|
|
135
|
-
functionName: 'sessionRoutes',
|
|
136
|
-
args: [payee],
|
|
137
|
-
}),
|
|
138
|
-
parameters.active && parameters.payee
|
|
139
|
-
? readContract(client, {
|
|
140
|
-
address: deployment.swap,
|
|
141
|
-
abi: sessionRouteAbi,
|
|
142
|
-
functionName: 'sessionRouteFor',
|
|
143
|
-
args: [parameters.merchant, parameters.targetToken],
|
|
144
|
-
})
|
|
145
|
-
: payee,
|
|
146
|
-
]);
|
|
147
|
-
if (isAddressEqual(binding[0], zeroAddress) ||
|
|
148
|
-
isAddressEqual(binding[1], zeroAddress) ||
|
|
149
|
-
!isAddressEqual(binding[0], parameters.merchant) ||
|
|
150
|
-
!isAddressEqual(binding[1], parameters.targetToken) ||
|
|
151
|
-
!isAddressEqual(activePayee, payee))
|
|
152
|
-
return undefined;
|
|
153
|
-
return { operator: deployment.swap, payee, token: deployment.token };
|
|
154
|
-
}
|
|
155
|
-
/** Resolves the active virtual payee and verifies its immutable reverse binding. */
|
|
156
|
-
export async function resolveRoute(client, parameters) {
|
|
157
|
-
const deployment = getDeployment(parameters.chainId);
|
|
158
|
-
if (!deployment)
|
|
159
|
-
return undefined;
|
|
160
|
-
return readRoute(client, deployment, { ...parameters, active: true });
|
|
161
|
-
}
|
|
162
|
-
/** Verifies a descriptor against the trusted router and merchant payout binding. */
|
|
163
|
-
export async function matchRoute(client, parameters) {
|
|
164
|
-
const deployment = matchDeployment(parameters);
|
|
165
|
-
if (!deployment)
|
|
166
|
-
return undefined;
|
|
167
|
-
return readRoute(client, deployment, {
|
|
168
|
-
...parameters,
|
|
169
|
-
active: parameters.active !== false,
|
|
170
|
-
payee: parameters.descriptor.payee,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=machine-token-session.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { SignatureEnvelope } from 'ox/tempo';
|
|
2
|
-
import type { Hex } from 'viem';
|
|
3
|
-
/**
|
|
4
|
-
* Canonicalizes a fresh TIP-1020 primitive signature for transport. Keychain
|
|
5
|
-
* wrappers, multisig signatures, and magic-suffixed encodings are rejected.
|
|
6
|
-
*/
|
|
7
|
-
export declare function serializeCanonicalEnvelope(signature: Hex, subject: string): Hex;
|
|
8
|
-
/**
|
|
9
|
-
* Parses an incoming signature into a canonical TIP-1020 primitive envelope.
|
|
10
|
-
* Returns `undefined` for wrapper envelopes and aliased (non-canonical)
|
|
11
|
-
* encodings, so verified signatures can be replayed on-chain byte-for-byte.
|
|
12
|
-
*/
|
|
13
|
-
export declare function parseCanonicalEnvelope(signature: Hex): SignatureEnvelope.SignatureEnvelope | undefined;
|
|
14
|
-
//# sourceMappingURL=signature-envelope.d.ts.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { SignatureEnvelope } from 'ox/tempo';
|
|
2
|
-
function isPrimitiveEnvelope(type) {
|
|
3
|
-
return type === 'secp256k1' || type === 'p256' || type === 'webAuthn';
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Canonicalizes a fresh TIP-1020 primitive signature for transport. Keychain
|
|
7
|
-
* wrappers, multisig signatures, and magic-suffixed encodings are rejected.
|
|
8
|
-
*/
|
|
9
|
-
export function serializeCanonicalEnvelope(signature, subject) {
|
|
10
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
11
|
-
if (!isPrimitiveEnvelope(envelope.type))
|
|
12
|
-
throw new Error(`${subject} require a TIP-1020 primitive signature; received "${envelope.type}".`);
|
|
13
|
-
return SignatureEnvelope.serialize(envelope);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Parses an incoming signature into a canonical TIP-1020 primitive envelope.
|
|
17
|
-
* Returns `undefined` for wrapper envelopes and aliased (non-canonical)
|
|
18
|
-
* encodings, so verified signatures can be replayed on-chain byte-for-byte.
|
|
19
|
-
*/
|
|
20
|
-
export function parseCanonicalEnvelope(signature) {
|
|
21
|
-
const envelope = SignatureEnvelope.from(signature);
|
|
22
|
-
if (!isPrimitiveEnvelope(envelope.type))
|
|
23
|
-
return undefined;
|
|
24
|
-
if (SignatureEnvelope.serialize(envelope).toLowerCase() !== signature.toLowerCase())
|
|
25
|
-
return undefined;
|
|
26
|
-
return envelope;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=signature-envelope.js.map
|