@routedock/nulth-sdk 0.2.0 → 0.2.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/index.cjs +18 -0
- package/dist/index.d.cts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +17 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -38,6 +38,7 @@ __export(index_exports, {
|
|
|
38
38
|
paymentContextFromManifest: () => paymentContextFromManifest,
|
|
39
39
|
setNulthPaymentContext: () => setNulthPaymentContext,
|
|
40
40
|
sha256Hex: () => sha256Hex,
|
|
41
|
+
stroopsToUsdc: () => stroopsToUsdc,
|
|
41
42
|
usdcToStroops: () => usdcToStroops
|
|
42
43
|
});
|
|
43
44
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -78,6 +79,16 @@ function usdcToStroops(amount) {
|
|
|
78
79
|
}
|
|
79
80
|
return units;
|
|
80
81
|
}
|
|
82
|
+
function stroopsToUsdc(units) {
|
|
83
|
+
if (units < 0n) {
|
|
84
|
+
throw new RangeError(`Invalid USDC stroops: "${units.toString()}" is negative`);
|
|
85
|
+
}
|
|
86
|
+
const whole = units / USDC_SCALE;
|
|
87
|
+
const frac = units % USDC_SCALE;
|
|
88
|
+
if (frac === 0n) return whole.toString();
|
|
89
|
+
const fracStr = frac.toString().padStart(USDC_DECIMALS, "0").replace(/0+$/, "");
|
|
90
|
+
return `${whole.toString()}.${fracStr}`;
|
|
91
|
+
}
|
|
81
92
|
|
|
82
93
|
// src/proof.ts
|
|
83
94
|
function sha256Hex(data) {
|
|
@@ -262,6 +273,12 @@ var NulthClient = class {
|
|
|
262
273
|
return encodeAuthSignature(proof);
|
|
263
274
|
}
|
|
264
275
|
enforcePolicy(context) {
|
|
276
|
+
if (context.amountStroops < 0n) {
|
|
277
|
+
throw new RangeError(`Invalid amountStroops: ${context.amountStroops}`);
|
|
278
|
+
}
|
|
279
|
+
if (!Number.isSafeInteger(context.ledgerSequence) || context.ledgerSequence < 0) {
|
|
280
|
+
throw new RangeError(`Invalid ledgerSequence: ${context.ledgerSequence}`);
|
|
281
|
+
}
|
|
265
282
|
if (this.policy.expiryLedger !== void 0 && context.ledgerSequence > this.policy.expiryLedger) {
|
|
266
283
|
throw new NulthPolicyError("session_expired", "Nulth session expired");
|
|
267
284
|
}
|
|
@@ -353,5 +370,6 @@ function createPolicyState(input) {
|
|
|
353
370
|
paymentContextFromManifest,
|
|
354
371
|
setNulthPaymentContext,
|
|
355
372
|
sha256Hex,
|
|
373
|
+
stroopsToUsdc,
|
|
356
374
|
usdcToStroops
|
|
357
375
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -92,6 +92,18 @@ declare const USDC_DECIMALS = 7;
|
|
|
92
92
|
* {@link USDC_DECIMALS} decimals, or values too large to represent exactly.
|
|
93
93
|
*/
|
|
94
94
|
declare function usdcToStroops(amount: string): bigint;
|
|
95
|
+
/**
|
|
96
|
+
* Inverse of {@link usdcToStroops}: format exact stroops (10^-7 USDC) as a
|
|
97
|
+
* canonical decimal USDC string, with no trailing zeros.
|
|
98
|
+
*
|
|
99
|
+
* `stroopsToUsdc(usdcToStroops(x)) === x` holds for canonical inputs (the form
|
|
100
|
+
* this function outputs). Used to report the amount actually signed by a
|
|
101
|
+
* payment client, which may be less than the manifest price.
|
|
102
|
+
*
|
|
103
|
+
* Throws RangeError on negative units (there is no such thing as a negative
|
|
104
|
+
* transfer amount).
|
|
105
|
+
*/
|
|
106
|
+
declare function stroopsToUsdc(units: bigint): string;
|
|
95
107
|
|
|
96
108
|
/** SHA-256 hex digest */
|
|
97
109
|
declare function sha256Hex(data: Buffer | string): string;
|
|
@@ -191,4 +203,4 @@ declare function createPolicyState(input: {
|
|
|
191
203
|
ledgerSequence?: number;
|
|
192
204
|
}): NulthPolicyState;
|
|
193
205
|
|
|
194
|
-
export { DEFAULT_PROVER, type NulthAuthSignature, NulthClient, type NulthClientConfig, NulthPolicyError, type NulthPolicyState, type NulthProof, type NulthSignerConfig, type NulthStellarSigner, type PaymentAuthContext, type ProverBackend, USDC_DECIMALS, assertAuthEntryMatchesContext, authDigestFromEntry, commitAllowlist, commitDailyCap, createNulthSigner, createPolicyState, dayBucket, decodeAuthSignature, encodeAuthSignature, hashPayee, insecureMockProof, paymentContextFromManifest, setNulthPaymentContext, sha256Hex, usdcToStroops };
|
|
206
|
+
export { DEFAULT_PROVER, type NulthAuthSignature, NulthClient, type NulthClientConfig, NulthPolicyError, type NulthPolicyState, type NulthProof, type NulthSignerConfig, type NulthStellarSigner, type PaymentAuthContext, type ProverBackend, USDC_DECIMALS, assertAuthEntryMatchesContext, authDigestFromEntry, commitAllowlist, commitDailyCap, createNulthSigner, createPolicyState, dayBucket, decodeAuthSignature, encodeAuthSignature, hashPayee, insecureMockProof, paymentContextFromManifest, setNulthPaymentContext, sha256Hex, stroopsToUsdc, usdcToStroops };
|
package/dist/index.d.ts
CHANGED
|
@@ -92,6 +92,18 @@ declare const USDC_DECIMALS = 7;
|
|
|
92
92
|
* {@link USDC_DECIMALS} decimals, or values too large to represent exactly.
|
|
93
93
|
*/
|
|
94
94
|
declare function usdcToStroops(amount: string): bigint;
|
|
95
|
+
/**
|
|
96
|
+
* Inverse of {@link usdcToStroops}: format exact stroops (10^-7 USDC) as a
|
|
97
|
+
* canonical decimal USDC string, with no trailing zeros.
|
|
98
|
+
*
|
|
99
|
+
* `stroopsToUsdc(usdcToStroops(x)) === x` holds for canonical inputs (the form
|
|
100
|
+
* this function outputs). Used to report the amount actually signed by a
|
|
101
|
+
* payment client, which may be less than the manifest price.
|
|
102
|
+
*
|
|
103
|
+
* Throws RangeError on negative units (there is no such thing as a negative
|
|
104
|
+
* transfer amount).
|
|
105
|
+
*/
|
|
106
|
+
declare function stroopsToUsdc(units: bigint): string;
|
|
95
107
|
|
|
96
108
|
/** SHA-256 hex digest */
|
|
97
109
|
declare function sha256Hex(data: Buffer | string): string;
|
|
@@ -191,4 +203,4 @@ declare function createPolicyState(input: {
|
|
|
191
203
|
ledgerSequence?: number;
|
|
192
204
|
}): NulthPolicyState;
|
|
193
205
|
|
|
194
|
-
export { DEFAULT_PROVER, type NulthAuthSignature, NulthClient, type NulthClientConfig, NulthPolicyError, type NulthPolicyState, type NulthProof, type NulthSignerConfig, type NulthStellarSigner, type PaymentAuthContext, type ProverBackend, USDC_DECIMALS, assertAuthEntryMatchesContext, authDigestFromEntry, commitAllowlist, commitDailyCap, createNulthSigner, createPolicyState, dayBucket, decodeAuthSignature, encodeAuthSignature, hashPayee, insecureMockProof, paymentContextFromManifest, setNulthPaymentContext, sha256Hex, usdcToStroops };
|
|
206
|
+
export { DEFAULT_PROVER, type NulthAuthSignature, NulthClient, type NulthClientConfig, NulthPolicyError, type NulthPolicyState, type NulthProof, type NulthSignerConfig, type NulthStellarSigner, type PaymentAuthContext, type ProverBackend, USDC_DECIMALS, assertAuthEntryMatchesContext, authDigestFromEntry, commitAllowlist, commitDailyCap, createNulthSigner, createPolicyState, dayBucket, decodeAuthSignature, encodeAuthSignature, hashPayee, insecureMockProof, paymentContextFromManifest, setNulthPaymentContext, sha256Hex, stroopsToUsdc, usdcToStroops };
|
package/dist/index.js
CHANGED
|
@@ -34,6 +34,16 @@ function usdcToStroops(amount) {
|
|
|
34
34
|
}
|
|
35
35
|
return units;
|
|
36
36
|
}
|
|
37
|
+
function stroopsToUsdc(units) {
|
|
38
|
+
if (units < 0n) {
|
|
39
|
+
throw new RangeError(`Invalid USDC stroops: "${units.toString()}" is negative`);
|
|
40
|
+
}
|
|
41
|
+
const whole = units / USDC_SCALE;
|
|
42
|
+
const frac = units % USDC_SCALE;
|
|
43
|
+
if (frac === 0n) return whole.toString();
|
|
44
|
+
const fracStr = frac.toString().padStart(USDC_DECIMALS, "0").replace(/0+$/, "");
|
|
45
|
+
return `${whole.toString()}.${fracStr}`;
|
|
46
|
+
}
|
|
37
47
|
|
|
38
48
|
// src/proof.ts
|
|
39
49
|
function sha256Hex(data) {
|
|
@@ -218,6 +228,12 @@ var NulthClient = class {
|
|
|
218
228
|
return encodeAuthSignature(proof);
|
|
219
229
|
}
|
|
220
230
|
enforcePolicy(context) {
|
|
231
|
+
if (context.amountStroops < 0n) {
|
|
232
|
+
throw new RangeError(`Invalid amountStroops: ${context.amountStroops}`);
|
|
233
|
+
}
|
|
234
|
+
if (!Number.isSafeInteger(context.ledgerSequence) || context.ledgerSequence < 0) {
|
|
235
|
+
throw new RangeError(`Invalid ledgerSequence: ${context.ledgerSequence}`);
|
|
236
|
+
}
|
|
221
237
|
if (this.policy.expiryLedger !== void 0 && context.ledgerSequence > this.policy.expiryLedger) {
|
|
222
238
|
throw new NulthPolicyError("session_expired", "Nulth session expired");
|
|
223
239
|
}
|
|
@@ -308,5 +324,6 @@ export {
|
|
|
308
324
|
paymentContextFromManifest,
|
|
309
325
|
setNulthPaymentContext,
|
|
310
326
|
sha256Hex,
|
|
327
|
+
stroopsToUsdc,
|
|
311
328
|
usdcToStroops
|
|
312
329
|
};
|