@stellar/typescript-wallet-sdk 5.0.0 → 5.1.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 +10 -0
- package/lib/bundle.js +160 -7
- package/lib/bundle.js.map +1 -1
- package/lib/bundle_browser.js +9188 -2996
- package/lib/bundle_browser.js.map +1 -1
- package/lib/walletSdk/Exceptions/index.d.ts +12 -0
- package/lib/walletSdk/Recovery/index.d.ts +35 -1
- package/lib/walletSdk/Types/recovery.d.ts +51 -0
- package/package.json +1 -1
- package/src/walletSdk/Exceptions/index.ts +51 -0
- package/src/walletSdk/Recovery/index.ts +120 -4
- package/src/walletSdk/Types/recovery.ts +51 -0
- package/test/customer.test.ts +2 -2
- package/test/recovery.test.ts +258 -22
- package/test/sep38.test.ts +1 -1
- package/test/sep6.test.ts +2 -2
- package/test/stellar.test.ts +13 -13
- package/test/transaction.test.ts +4 -4
- package/test/wallet.test.ts +1 -1
package/CHANGELOG.MD
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
# Release notes - Typescript Wallet SDK - 5.1.0
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
* `DuplicateRecoverySignerError`, `RecoverySignerEqualsDeviceKeyError`, `DuplicateAccountSignerError` and `SignerKeyEqualsMasterKeyError`, exported via `Exceptions` (#255)
|
|
5
|
+
|
|
6
|
+
### Changed
|
|
7
|
+
* `Recovery.createRecoverableWallet` checks the signer keys returned by the recovery servers before building the transaction. It throws `DuplicateRecoverySignerError` when two or more servers return the same key, `RecoverySignerEqualsDeviceKeyError` when a server returns the device key, and `SignerKeyEqualsMasterKeyError` when a server returns the account's own key (#255)
|
|
8
|
+
* `Recovery.registerRecoveryServerSigners` throws before contacting Horizon when an address appears more than once in `accountSigners` (`DuplicateAccountSignerError`) or is the account itself (`SignerKeyEqualsMasterKeyError`). `SetOptions` overwrites a repeated signer instead of adding its weight, so such a set would install fewer signers than the thresholds written alongside it were sized for (#255)
|
|
9
|
+
* The browser bundle is built with `pbkdf2` 3.1.7, `sha.js` 2.4.12 and `cipher-base` 1.0.7, which it inlines through its `crypto` polyfill (#258)
|
|
10
|
+
|
|
1
11
|
# Release notes - Typescript Wallet SDK - 5.0.0
|
|
2
12
|
|
|
3
13
|
### BREAKING CHANGES
|
package/lib/bundle.js
CHANGED
|
@@ -2245,8 +2245,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
2245
2245
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
2246
2246
|
};
|
|
2247
2247
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2248
|
-
exports.
|
|
2249
|
-
exports.Sep7UriTypeNotSupportedError = exports.Sep7LongMsgError = void 0;
|
|
2248
|
+
exports.DefaultSignerDomainAccountError = exports.SigningKeypairMissingSecretError = exports.InvalidJsonError = exports.UnknownAnchorTransactionError = exports.AllowHttpOnNonTestnetError = exports.ChallengeTxnClientAccountMismatchError = exports.ChallengeTxnInvalidSignatureError = exports.ChallengeTxnIncorrectSequenceError = exports.NetworkPassphraseMismatchError = exports.ChallengeValidationFailedError = exports.MissingSigningKeyError = exports.Sep38PriceOnlyOneAmountError = exports.NoAccountAndNoSponsorError = exports.SignerKeyEqualsMasterKeyError = exports.DuplicateAccountSignerError = exports.RecoverySignerEqualsDeviceKeyError = exports.DuplicateRecoverySignerError = exports.DeviceKeyEqualsMasterKeyError = exports.NoAccountSignersError = exports.UnableToDeduceKeyError = exports.NoDeviceKeyForAccountError = exports.LostSignerKeyNotFound = exports.NotAllSignaturesFetchedError = exports.RecoveryIdentityNotFoundError = exports.RecoveryServerNotFoundError = exports.KYCServerNotFoundError = exports.CustomerNotFoundError = exports.Sep9InfoRequiredError = exports.WithdrawalTxMemoError = exports.PathPayBoundRequiredError = exports.PathPayOnlyOneAmountError = exports.WithdrawalTxMissingMemoError = exports.WithdrawalTxMissingDestinationError = exports.WithdrawalTxNotPendingUserTransferStartError = exports.OperationsLimitExceededError = exports.SignerRequiredError = exports.TransactionSubmitWithFeeIncreaseFailedError = exports.ExpiredTokenError = exports.InvalidTokenError = exports.MissingTokenError = exports.InsufficientStartingBalanceError = exports.TransactionSubmitFailedError = exports.AccountDoesNotExistError = exports.InvalidTransactionsResponseError = exports.InvalidTransactionResponseError = exports.MissingTransactionIdError = exports.ClientDomainWithMemoError = exports.InvalidMemoError = exports.AssetNotSupportedError = exports.ServerRequestFailedError = void 0;
|
|
2249
|
+
exports.Sep7UriTypeNotSupportedError = exports.Sep7LongMsgError = exports.Sep7InvalidUriError = exports.AuthHeaderClientDomainRequiredError = exports.AuthHeaderSigningKeypairRequiredError = exports.DomainSigningModifiedError = void 0;
|
|
2250
2250
|
var axios_1 = __importDefault(__webpack_require__(/*! axios */ "../../node_modules/axios/dist/node/axios.cjs"));
|
|
2251
2251
|
var Utils_1 = __webpack_require__(/*! ../Utils */ "./src/walletSdk/Utils/index.ts");
|
|
2252
2252
|
var ServerRequestFailedError = /** @class */ (function (_super) {
|
|
@@ -2592,6 +2592,59 @@ var DeviceKeyEqualsMasterKeyError = /** @class */ (function (_super) {
|
|
|
2592
2592
|
return DeviceKeyEqualsMasterKeyError;
|
|
2593
2593
|
}(Error));
|
|
2594
2594
|
exports.DeviceKeyEqualsMasterKeyError = DeviceKeyEqualsMasterKeyError;
|
|
2595
|
+
var DuplicateRecoverySignerError = /** @class */ (function (_super) {
|
|
2596
|
+
__extends(DuplicateRecoverySignerError, _super);
|
|
2597
|
+
function DuplicateRecoverySignerError(serverKeys, signerKey) {
|
|
2598
|
+
var _this = _super.call(this, "Recovery servers [".concat(serverKeys.join(", "), "] all returned the signer key ").concat(signerKey, ". SEP-30 requires each ") +
|
|
2599
|
+
"server to generate a unique signing key, so this is either one " +
|
|
2600
|
+
"endpoint configured under several keys in the recovery server map, " +
|
|
2601
|
+
"or a server returning a key it does not control. Registering this " +
|
|
2602
|
+
"set would install one signer where several were intended, so the " +
|
|
2603
|
+
"recovery servers would together carry less weight than the " +
|
|
2604
|
+
"thresholds written alongside them were sized for, and may no longer " +
|
|
2605
|
+
"reach the account's high threshold once the device is lost") || this;
|
|
2606
|
+
Object.setPrototypeOf(_this, DuplicateRecoverySignerError.prototype);
|
|
2607
|
+
return _this;
|
|
2608
|
+
}
|
|
2609
|
+
return DuplicateRecoverySignerError;
|
|
2610
|
+
}(Error));
|
|
2611
|
+
exports.DuplicateRecoverySignerError = DuplicateRecoverySignerError;
|
|
2612
|
+
var RecoverySignerEqualsDeviceKeyError = /** @class */ (function (_super) {
|
|
2613
|
+
__extends(RecoverySignerEqualsDeviceKeyError, _super);
|
|
2614
|
+
function RecoverySignerEqualsDeviceKeyError(serverKey, signerKey) {
|
|
2615
|
+
var _this = _super.call(this, "Recovery server '".concat(serverKey, "' returned the device key ").concat(signerKey, " ") +
|
|
2616
|
+
"as its signer. The recovery signer must differ from the device key, " +
|
|
2617
|
+
"otherwise the device and the server collapse into a single signer") || this;
|
|
2618
|
+
Object.setPrototypeOf(_this, RecoverySignerEqualsDeviceKeyError.prototype);
|
|
2619
|
+
return _this;
|
|
2620
|
+
}
|
|
2621
|
+
return RecoverySignerEqualsDeviceKeyError;
|
|
2622
|
+
}(Error));
|
|
2623
|
+
exports.RecoverySignerEqualsDeviceKeyError = RecoverySignerEqualsDeviceKeyError;
|
|
2624
|
+
var DuplicateAccountSignerError = /** @class */ (function (_super) {
|
|
2625
|
+
__extends(DuplicateAccountSignerError, _super);
|
|
2626
|
+
function DuplicateAccountSignerError(address) {
|
|
2627
|
+
var _this = _super.call(this, "Account signer ".concat(address, " is listed more than once. Stellar stores ") +
|
|
2628
|
+
"signers keyed by public key and SetOptions overwrites rather than " +
|
|
2629
|
+
"accumulates, so repeated entries would install one signer carrying " +
|
|
2630
|
+
"one weight, not several") || this;
|
|
2631
|
+
Object.setPrototypeOf(_this, DuplicateAccountSignerError.prototype);
|
|
2632
|
+
return _this;
|
|
2633
|
+
}
|
|
2634
|
+
return DuplicateAccountSignerError;
|
|
2635
|
+
}(Error));
|
|
2636
|
+
exports.DuplicateAccountSignerError = DuplicateAccountSignerError;
|
|
2637
|
+
var SignerKeyEqualsMasterKeyError = /** @class */ (function (_super) {
|
|
2638
|
+
__extends(SignerKeyEqualsMasterKeyError, _super);
|
|
2639
|
+
function SignerKeyEqualsMasterKeyError(address) {
|
|
2640
|
+
var _this = _super.call(this, "Account signer ".concat(address, " is the account's own master key, which ") +
|
|
2641
|
+
"cannot be added as a signer of itself") || this;
|
|
2642
|
+
Object.setPrototypeOf(_this, SignerKeyEqualsMasterKeyError.prototype);
|
|
2643
|
+
return _this;
|
|
2644
|
+
}
|
|
2645
|
+
return SignerKeyEqualsMasterKeyError;
|
|
2646
|
+
}(Error));
|
|
2647
|
+
exports.SignerKeyEqualsMasterKeyError = SignerKeyEqualsMasterKeyError;
|
|
2595
2648
|
var NoAccountAndNoSponsorError = /** @class */ (function (_super) {
|
|
2596
2649
|
__extends(NoAccountAndNoSponsorError, _super);
|
|
2597
2650
|
function NoAccountAndNoSponsorError() {
|
|
@@ -4171,6 +4224,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
4171
4224
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
4172
4225
|
}
|
|
4173
4226
|
};
|
|
4227
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
4228
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4229
|
+
if (ar || !(i in from)) {
|
|
4230
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
4231
|
+
ar[i] = from[i];
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
4235
|
+
};
|
|
4174
4236
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
4175
4237
|
exports.Recovery = void 0;
|
|
4176
4238
|
var AccountRecover_1 = __webpack_require__(/*! ./AccountRecover */ "./src/walletSdk/Recovery/AccountRecover.ts");
|
|
@@ -4178,6 +4240,37 @@ var Auth_1 = __webpack_require__(/*! ../Auth */ "./src/walletSdk/Auth/index.ts")
|
|
|
4178
4240
|
var Exceptions_1 = __webpack_require__(/*! ../Exceptions */ "./src/walletSdk/Exceptions/index.ts");
|
|
4179
4241
|
var Horizon_1 = __webpack_require__(/*! ../Horizon */ "./src/walletSdk/Horizon/index.ts");
|
|
4180
4242
|
var Utils_1 = __webpack_require__(/*! ../Utils */ "./src/walletSdk/Utils/index.ts");
|
|
4243
|
+
/**
|
|
4244
|
+
* Assert that a signer set can be installed as written.
|
|
4245
|
+
*
|
|
4246
|
+
* Stellar stores account signers as a set keyed by public key, and `SetOptions`
|
|
4247
|
+
* is an upsert rather than an append — it overwrites a repeated key instead of
|
|
4248
|
+
* summing the weights. A set containing the same address twice therefore
|
|
4249
|
+
* installs one signer, while the thresholds chosen for the intended set are
|
|
4250
|
+
* written alongside it regardless. Because the same transaction also zeroes the
|
|
4251
|
+
* master key, repairing that mismatch takes a further `SetOptions`, itself
|
|
4252
|
+
* authorized at the account's high threshold — so it is possible only while the
|
|
4253
|
+
* remaining signers can still reach `high`, and impossible once they cannot.
|
|
4254
|
+
* @param {string} accountAddress - Address of the account whose master key is being locked.
|
|
4255
|
+
* @param {AccountSigner[]} accountSigners - The signer set about to be installed.
|
|
4256
|
+
* @throws {DuplicateAccountSignerError} If any address appears more than once.
|
|
4257
|
+
* @throws {SignerKeyEqualsMasterKeyError} If any address is the account itself.
|
|
4258
|
+
* @returns {void}
|
|
4259
|
+
*/
|
|
4260
|
+
var validateAccountSigners = function (accountAddress, accountSigners) {
|
|
4261
|
+
var seen = {};
|
|
4262
|
+
accountSigners.forEach(function (_a) {
|
|
4263
|
+
var address = _a.address;
|
|
4264
|
+
var publicKey = address.publicKey;
|
|
4265
|
+
if (publicKey === accountAddress) {
|
|
4266
|
+
throw new Exceptions_1.SignerKeyEqualsMasterKeyError(publicKey);
|
|
4267
|
+
}
|
|
4268
|
+
if (seen[publicKey]) {
|
|
4269
|
+
throw new Exceptions_1.DuplicateAccountSignerError(publicKey);
|
|
4270
|
+
}
|
|
4271
|
+
seen[publicKey] = true;
|
|
4272
|
+
});
|
|
4273
|
+
};
|
|
4181
4274
|
/**
|
|
4182
4275
|
* Used for Account Recovery using Sep-30.
|
|
4183
4276
|
* @see {@link https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0030.md}
|
|
@@ -4222,13 +4315,26 @@ var Recovery = /** @class */ (function (_super) {
|
|
|
4222
4315
|
* **Warning**: This transaction will lock master key of the account. Make sure you have access to
|
|
4223
4316
|
* specified [RecoverableWalletConfig.deviceAddress]
|
|
4224
4317
|
*
|
|
4318
|
+
* The returned transaction is unsigned — sign it and submit it yourself. It sets signers and
|
|
4319
|
+
* thresholds, so it needs signatures meeting the account's current **high** threshold rather
|
|
4320
|
+
* than the master key specifically, and the sponsor must sign too when
|
|
4321
|
+
* [RecoverableWalletConfig.sponsorAddress] is set. See [RecoverableWallet] for the cases.
|
|
4322
|
+
*
|
|
4323
|
+
* The signer set returned by the recovery servers is validated before the transaction is built,
|
|
4324
|
+
* because undoing the master key lock afterwards takes a further `SetOptions` meeting the
|
|
4325
|
+
* account's high threshold, which the collapsed signer set may no longer be able to reach.
|
|
4326
|
+
*
|
|
4225
4327
|
* This transaction can be sponsored.
|
|
4226
4328
|
* @param {RecoverableWalletConfig} config - The configuration for recoverable wallet.
|
|
4329
|
+
* @throws {DeviceKeyEqualsMasterKeyError} If the device address is the account address.
|
|
4330
|
+
* @throws {DuplicateRecoverySignerError} If two or more recovery servers return the same signer key.
|
|
4331
|
+
* @throws {RecoverySignerEqualsDeviceKeyError} If a recovery server returns the device key.
|
|
4332
|
+
* @throws {SignerKeyEqualsMasterKeyError} If a recovery server returns the account's own key.
|
|
4227
4333
|
* @returns {Promise<RecoverableWallet>} The wallet.
|
|
4228
4334
|
*/
|
|
4229
4335
|
Recovery.prototype.createRecoverableWallet = function (config) {
|
|
4230
4336
|
return __awaiter(this, void 0, void 0, function () {
|
|
4231
|
-
var recoverySigners, accountSigners, transaction;
|
|
4337
|
+
var enrolled, recoverySigners, accountSigners, transaction;
|
|
4232
4338
|
return __generator(this, function (_a) {
|
|
4233
4339
|
switch (_a.label) {
|
|
4234
4340
|
case 0:
|
|
@@ -4237,7 +4343,12 @@ var Recovery = /** @class */ (function (_super) {
|
|
|
4237
4343
|
}
|
|
4238
4344
|
return [4 /*yield*/, this.enrollWithRecoveryServer(config.accountAddress, config.accountIdentity)];
|
|
4239
4345
|
case 1:
|
|
4240
|
-
|
|
4346
|
+
enrolled = _a.sent();
|
|
4347
|
+
this.validateEnrolledSigners(enrolled, config.deviceAddress.publicKey);
|
|
4348
|
+
recoverySigners = enrolled.map(function (_a) {
|
|
4349
|
+
var signerKey = _a.signerKey;
|
|
4350
|
+
return signerKey;
|
|
4351
|
+
});
|
|
4241
4352
|
accountSigners = recoverySigners.map(function (rs) { return ({
|
|
4242
4353
|
address: Horizon_1.PublicKeypair.fromPublicKey(rs),
|
|
4243
4354
|
weight: config.signerWeight.recoveryServer,
|
|
@@ -4311,6 +4422,9 @@ var Recovery = /** @class */ (function (_super) {
|
|
|
4311
4422
|
* @param {AccountThreshold} accountThreshold - Low, medium, and high thresholds to set on the account.
|
|
4312
4423
|
* @param {AccountKeypair} [sponsorAddress] - Stellar address of the account sponsoring this transaction.
|
|
4313
4424
|
* @param {(builder: CommonBuilder) => CommonBuilder} [builderExtra] - Stellar address of the account sponsoring this transaction.
|
|
4425
|
+
* @throws {DuplicateAccountSignerError} If the same address appears more than once in [accountSigners].
|
|
4426
|
+
* @throws {SignerKeyEqualsMasterKeyError} If [accountSigners] contains [account] itself.
|
|
4427
|
+
* @throws {NoAccountAndNoSponsorError} If the account does not exist and no sponsor is given.
|
|
4314
4428
|
* @returns {Promise<Transaction>} The built transaction.
|
|
4315
4429
|
*/
|
|
4316
4430
|
Recovery.prototype.registerRecoveryServerSigners = function (account, accountSigners, accountThreshold, sponsorAddress, builderExtra) {
|
|
@@ -4321,6 +4435,7 @@ var Recovery = /** @class */ (function (_super) {
|
|
|
4321
4435
|
return __generator(this, function (_b) {
|
|
4322
4436
|
switch (_b.label) {
|
|
4323
4437
|
case 0:
|
|
4438
|
+
validateAccountSigners(account.publicKey, accountSigners);
|
|
4324
4439
|
accountInfo = undefined;
|
|
4325
4440
|
_b.label = 1;
|
|
4326
4441
|
case 1:
|
|
@@ -4376,7 +4491,9 @@ var Recovery = /** @class */ (function (_super) {
|
|
|
4376
4491
|
* [SEP-30](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0030.md).
|
|
4377
4492
|
* @param {AccountKeypair} account - Account being registerd.
|
|
4378
4493
|
* @param {RecoveryIdentityMap} identityMap - map of identities to recovery keys.
|
|
4379
|
-
* @returns {Promise<
|
|
4494
|
+
* @returns {Promise<EnrolledRecoverySigner[]>} Each recovery signer public key paired with the
|
|
4495
|
+
* server that returned it. The pairing is kept so that cross-server validation can name the
|
|
4496
|
+
* server responsible when two of them return the same key.
|
|
4380
4497
|
*/
|
|
4381
4498
|
Recovery.prototype.enrollWithRecoveryServer = function (account, identityMap) {
|
|
4382
4499
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -4420,13 +4537,49 @@ var Recovery = /** @class */ (function (_super) {
|
|
|
4420
4537
|
case 4:
|
|
4421
4538
|
e_3 = _a.sent();
|
|
4422
4539
|
throw new Exceptions_1.ServerRequestFailedError(e_3);
|
|
4423
|
-
case 5: return [2 /*return*/,
|
|
4540
|
+
case 5: return [2 /*return*/, {
|
|
4541
|
+
serverKey: key,
|
|
4542
|
+
signerKey: this.getLatestRecoverySigner(recoveryAccount.signers),
|
|
4543
|
+
}];
|
|
4424
4544
|
}
|
|
4425
4545
|
});
|
|
4426
4546
|
}); }))];
|
|
4427
4547
|
});
|
|
4428
4548
|
});
|
|
4429
4549
|
};
|
|
4550
|
+
/**
|
|
4551
|
+
* Assert that the recovery servers collectively returned a usable signer set.
|
|
4552
|
+
*
|
|
4553
|
+
* SEP-30 has each server generate its own unique signing key for the account,
|
|
4554
|
+
* so the same key coming back from two servers is a protocol violation, not a
|
|
4555
|
+
* judgement call. Left unchecked it halves the recovery signer set while the
|
|
4556
|
+
* thresholds sized for the full set are written anyway, which is only
|
|
4557
|
+
* discovered when the device is lost and recovery is attempted.
|
|
4558
|
+
* @private
|
|
4559
|
+
* @param {EnrolledRecoverySigner[]} enrolled - Signer keys paired with the servers that returned them.
|
|
4560
|
+
* @param {string} deviceAddress - Address being added as the device signer.
|
|
4561
|
+
* @throws {DuplicateRecoverySignerError} If two or more servers returned the same key.
|
|
4562
|
+
* @throws {RecoverySignerEqualsDeviceKeyError} If a server returned the device key.
|
|
4563
|
+
* @returns {void}
|
|
4564
|
+
*/
|
|
4565
|
+
Recovery.prototype.validateEnrolledSigners = function (enrolled, deviceAddress) {
|
|
4566
|
+
var serverKeysBySigner = {};
|
|
4567
|
+
enrolled.forEach(function (_a) {
|
|
4568
|
+
var serverKey = _a.serverKey, signerKey = _a.signerKey;
|
|
4569
|
+
serverKeysBySigner[signerKey] = __spreadArray(__spreadArray([], (serverKeysBySigner[signerKey] || []), true), [
|
|
4570
|
+
serverKey,
|
|
4571
|
+
], false);
|
|
4572
|
+
});
|
|
4573
|
+
Object.keys(serverKeysBySigner).forEach(function (signerKey) {
|
|
4574
|
+
var serverKeys = serverKeysBySigner[signerKey];
|
|
4575
|
+
if (serverKeys.length > 1) {
|
|
4576
|
+
throw new Exceptions_1.DuplicateRecoverySignerError(serverKeys, signerKey);
|
|
4577
|
+
}
|
|
4578
|
+
if (signerKey === deviceAddress) {
|
|
4579
|
+
throw new Exceptions_1.RecoverySignerEqualsDeviceKeyError(serverKeys[0], signerKey);
|
|
4580
|
+
}
|
|
4581
|
+
});
|
|
4582
|
+
};
|
|
4430
4583
|
Recovery.prototype.getLatestRecoverySigner = function (signers) {
|
|
4431
4584
|
if (signers.length === 0) {
|
|
4432
4585
|
throw new Exceptions_1.NoAccountSignersError();
|
|
@@ -90717,7 +90870,7 @@ function includes(array, value) {
|
|
|
90717
90870
|
/***/ ((module) => {
|
|
90718
90871
|
|
|
90719
90872
|
"use strict";
|
|
90720
|
-
module.exports = JSON.parse('{"name":"@stellar/typescript-wallet-sdk","version":"5.
|
|
90873
|
+
module.exports = JSON.parse('{"name":"@stellar/typescript-wallet-sdk","version":"5.1.0","engines":{"node":">=22.12.0"},"browser":"./lib/bundle_browser.js","main":"./lib/bundle.js","types":"./lib/index.d.ts","license":"Apache-2.0","private":false,"devDependencies":{"@babel/preset-env":"^7.20.2","@babel/preset-typescript":"^7.23.3","@stellar/prettier-config":"^1.0.1","@stellar/tsconfig":"^1.0.2","@types/jest":"^29.4.0","@types/lodash":"^4.14.194","@types/node":"^22.10.2","@types/sinon":"^10.0.15","@typescript-eslint/eslint-plugin":"^6.7.5","@typescript-eslint/parser":"^6.7.5","babel-jest":"^29.4.1","crypto-browserify":"^3.12.0","dotenv":"^16.3.1","eslint":"^8.51.0","eslint-config-prettier":"^9.0.0","eslint-plugin-jsdoc":"^46.8.2","express":"^4.19.2","husky":"^8.0.0","jest":"^29.4.1","lint-staged":"^14.0.1","npm-run-all":"^4.1.5","playwright":"^1.43.1","prettier":"^2.0.5","pretty-quick":"^2.0.1","process":"^0.11.10","sinon":"^15.1.0","smol-toml":"^1.7.1","stream-browserify":"^3.0.0","ts-jest":"^29.0.5","ts-loader":"^9.4.2","ts-node":"^10.9.1","tslib":"^2.5.0","typescript":"^5.7.3","webpack":"^5.83.1","webpack-cli":"^5.1.1"},"dependencies":{"@stablelib/base64":"^2.0.0","@stablelib/utf8":"^2.0.0","@stellar/stellar-sdk":"17.0.1","axios":"^1.4.0","https-browserify":"^1.0.0","jws":"^4.0.0","lodash":"^4.17.21","query-string":"^7.1.3","stream-http":"^3.2.0","tweetnacl":"^1.0.3","uint8array-extras":"^1.5.0","url":"^0.11.0","util":"^0.12.5","utility-types":"^3.10.0","vm-browserify":"^1.1.2"},"scripts":{"test":"jest --watchAll","test:ci":"jest --ci","test:e2e:ci":"jest --config jest.e2e.config.js --ci","test:recovery:ci":"jest --config jest.integration.config.js recovery.test.ts --ci","test:anchorplatform:ci":"yarn jest --config jest.integration.config.js anchorplatform.test.ts --ci","build:web":"webpack --config webpack.config.js","build:node":"webpack --env NODE=true --config webpack.config.js","build":"run-p build:web build:node","example:sep10Server":"ts-node examples/sep10/sep10Server.ts","example:sep10Wallet":"ts-node examples/sep10/sep10Wallet.ts","example:sep24":"ts-node examples/sep24/sep24.ts","example:sep12":"ts-node examples/sep12/sep12.ts"}}');
|
|
90721
90874
|
|
|
90722
90875
|
/***/ }),
|
|
90723
90876
|
|