v15.1.0
Fixed
- Security:
FederationServer.createForDomainand theFederationServerconstructor now validate domains per RFC 1035, rejecting malformed domains before issuing federation orstellar.tomlrequests. Port numbers are also accepted (#1393). RpcServer.pollTransactionoff-by-one: the polling loop used<instead of<=, causing one fewer attempt than configured(#1373).requestAirdroperror path: fixed incorrect property access (error.response.detailinstead oferror.response.data.detail) when checking forcreateAccountAlreadyExist(#1373).Spec.typeRefnow properly handlesscSpecTypeResultby returning the JSON schema for theokType, instead of silently breaking out of the switch (#1373).structToJsonSchemanow placesadditionalProperties: falseon the schema object itself rather than incorrectly nesting it insideproperties(#1373).- Fixed bigint-to-U32/I32 conversion in
SpecusingNumber(val)instead ofval as number(a no-op for bigints) (#1373). - WASM custom section parser: when a section was skipped (invalid name length), the offset was not advanced, causing an infinite loop or incorrect parsing of subsequent sections (#1373).
FederationServerURL mutation:resolveAddress,resolveAccountId, andresolveTransactionIdmutated the sharedserverURLby appending query params on each call. Fixed by cloning the URL before modifying (#1373).CallBuilder.stream()URL mutation:stream()mutated the sharedthis.urlby adding query params, corrupting the builder for subsequent calls. Fixed by cloning the URL (#1373).AssembledTransactionrestore path: whenbuildWithOpwas used and automatic state restoration was needed, the rebuild incorrectly reconstructed the operation viacontract.call()instead of reusing the original operation (#1373).SERVER_TIME_MAPport collision: the Horizon time-sync cache keyed entries by hostname only, so two servers on different ports of the same host shared a cache entry. Fixed by including the port in the key (#1373).Spec.funcResToNativenow correctly returns anErrinstance when a contract function with aResultreturn type returns an error, instead of throwing while decoding it as theOktype (#1373).- SEP-10:
verifyChallengeTxSignersnow rejects challenges signed only by the server andclient_domainkey with no actual client signer, instead of returning an empty signers list (#1372). getAssetBalanceused incorrect flag bitmask constants (AuthRequiredFlag,AuthRevocableFlag,AuthClawbackEnabledFlag) which are account-level flags, not trustline-level flags. Replaced with the correct trustline flag bitmasks (0x1,0x2,0x4) (#1372).AssembledTransaction.simulatedid not clearthis.builtbefore re-simulating after a state restoration rebuild, causing it to assemble stale transaction data (#1372).AssembledTransaction.signAndSendmutated the sharedthis.options.submitflag to prevent double submission. Replaced with a wrapper aroundsignTransactionthat injectssubmit: falsewithout mutating shared state (#1372).- Fetch HTTP client: async request interceptors were not awaited — the synchronous
try/catchloop passed unresolved promise objects as the config. Replaced with a proper.then()chain matching Axios interceptor semantics (#1372). - Fetch HTTP client: cancellation now preserves custom cancel reasons and
isCancelno longer depends on exact error-message text (#1390). - Fetch HTTP client: instance default headers and params now merge correctly with per-request overrides on the no-axios / minimal builds, including requests that use bounded options (#1390).
- Fetch HTTP client:
maxRedirectsandmaxContentLengthwere silently ignored on the no-axios / minimal builds, turning SDK-set SSRF and DoS guards (StellarToml.Resolver.resolve,FederationServer) into no-ops. A new bounded adapter activates when either option is set, refusing redirects pastmaxRedirectsand streaming the response body with a running-total check so oversized responses abort mid-stream (#1390). - Fetch HTTP client: the no-axios bounded path now more closely matches Axios behavior for object request bodies,
baseURL, timeout errors, redirect method/body handling, and stripping credential-bearing headers on cross-origin redirects (#1390). src/bindings/config.tsimported../../package.jsonwith a relative path that resolved incorrectly for thelib/no-axios/andlib/minimal/build outputs, making those libs unloadable. Replaced with the__PACKAGE_VERSION__compile-time define (#1390).- Updated the production
axiosdependency from1.14.0to1.15.0(#1381).
Added
AccountResponseconstructor now uses explicit field-by-field assignment instead ofObject.entriesdynamic assignment for type safety (#1373).- Added
transactionscollection toApi.AccountRecordandAccountResponse(#1373). - Added range checks for U32/I32 values in
Spec: bigint values are now validated against min/max bounds before conversion, throwing aRangeErrorinstead of silently truncating (#1373). rpc.Server.getLatestLedger()now includescloseTime,headerXdr, andmetadataXdrin the typed response, withheaderXdr/metadataXdrparsed into XDR objects instead of raw base64 strings (#1389).
Deprecated
BalanceResponse.revocableis deprecated in favor ofauthorizedToMaintainLiabilities, which correctly reflects the trustline flag semantics (#1372).
Full Changelog: v15.0.1...v15.1.0