Commit Graph

112 Commits

Author SHA1 Message Date
Caleb Kniffen
38b385969b feat: remove Buffer support and bundle polyfill (#2526)
- Removes need for bundlers to polyfill the `Buffer` class. `UInt8Array` are used instead which are native to the browser and node.
- Reduces bundle size 7.1kb gzipped and eliminates 4 runtime dependencies: `base-x`, `base64-js`, `buffer`, and `ieee754`.

BREAKING CHANGE: All methods that previously took a `Buffer` now accept a `UInt8Array`.

---------

Co-authored-by: Jackson Mills <jmills@ripple.com>
2024-02-01 13:53:41 -06:00
Mayukha Vadari
eefb52a9cb fix: add support for pseudo-transactions to hashSignedTx (#2588)
* add support for pseudo-transactions to hashSignedTx

* update changelog

* fix tests

* fix linter + tests
2024-02-01 13:53:41 -06:00
Caleb Kniffen
4c7f46c111 feat: getXrpBalance and dropsToXRP return number (#2574)
BREAKING CHANGE: `dropsToXRP` and `Client.getXrpBalance` now return a `number` instead of a `string`
2024-02-01 13:53:40 -06:00
Caleb Kniffen
3f1739895a refactor: type Transaction to include all tx (#2547)
refactor: type Transaction to include all tx

BREAKING CHANGE: `Transaction` type has been redefined to include all
transactions and `SubmittableTransaction` was created to define the old
value. The following functions which only handle transactions to be
submitted now use `SubmittableTransaction`:
  * `Client.autofill`
  * `Client.submit`
  * `Client.submitAndWait`
  * `Client.prepareTransaction`
  * `getSignedTx`
  * `isAccountDelete`
2024-02-01 13:53:40 -06:00
Caleb Kniffen
c5fc25efc2 release: 3.0.0-beta.0 (#2533) 2024-02-01 13:53:39 -06:00
Caleb Kniffen
294509cf79 feat: isomorphic sockets and use eventemitter3 (#2514)
Reduces filesize by 3kb minified and gzipped or 2.8% and reduces bundler
config steps.

- Move `WSWrapper` to `@xrpl/isomorphic` to remove the need to add
mapping of `ws` to `WSWrapper` file in bundler configs
- Switch to `eventemitter3` which is smaller than `events` by almost
1kb and will not require a mapping to node's `events` in `vite`
bundling. `webpack` always automatically maps it.
    - max listeners is not a thing for `eventemitter3` so we do not
need to set it to `Infinity`. `ws` uses the native event emitter which
does still need that to be set.
- Remove `eventemitter2` which was only used in tests and was replaced
with `eventemitter3`

BREAKING CHANGE: Config for frontend bundlers has changed for `ws`.
2024-02-01 13:52:15 -06:00
Caleb Kniffen
3c8a990e6a docs: End of Life ripple-lib (#2433)
With `xrpl@3.0` coming out we are fully ending support for ripple-lib
2024-02-01 13:50:22 -06:00
Nicholas Dudfield
217b111ef2 feat: use @noble and @scure libraries for cryptography (#2273)
Switch to using `@noble/hashes`, `@noble/curves`, `@scure/base`,
`@scure/bip32`, and `@scure/bip39`. This replaces `crypto` polyfills
(such as `crypto-browserify`), `create-hash`, `elliptic`, `hash.js`,
`bn.js` (both versions), and their many dependencies.  This also means
there are 33 less dependencies downloaded when running a fresh
`npm install` and will make the project much easier to maintain.

This reduces the bundle size by 44% (82kb minified and gzipped) over
the current 3.0 branch as well as reducing the amount of configuration
required to bundle.

Closes #1814, #1817, #2272, and #2306

Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
2024-02-01 13:50:19 -06:00
tequ
83442b18ba Add nftoken_id, nftoken_ids, offer_id to meta fields (#2450)
Add type for metadata for specific transactions(`Payment`, `NFTokenMint`, `NFTokenCreateOffer`, `NFTokenAcceptOffer`, `NFTokenCancelOffer`)

Closes #2316
2024-02-01 13:45:11 -06:00
Caleb Kniffen
1a83997e49 feat: add xrpl-secret-numbers to the monorepo (#2445)
- Add `xrpl-secret-numbers` by @WietseWind  to the mono repo.
- `unpkg` and `jsdelivr` support was simplified by adding fields to package.json.
- Unit tests run in a browser and node.

BREAKING CHANGES:
- `xrpl-secret-numbers` is now `@xrplf/secret-numbers`.
- Changed the bundled file produced changed from  `dist/browerified.js` to `build/xrplf-secret-numbers-latest.js`.
- Bundle variable is `xrplf_secret_numbers` instead of using browserify's loader.
- If using CDN instructions in README will need to update to `https://cdn.jsdelivr.net/npm/@xrplf/secret-numbers`

Making this library part of the monorepo was discussed in #1788.  This solves several problems with the upcoming `xrpl.js@3.0`.

`xrpl-secret-numbers` has a dependency of `ripple-keypairs` and `xrpl` has a depenendecy on `xrpl-secret-numbers`.  This means that any change would require a separate release of `ripple-keypairs`, then a release of `xrpl-secret-numbers`, followed by `xrpl`.  Now they can be released all at once

In 3.0 we eliminated the need for many polyfills like `util`, `assert`, and soon to be `buffer` (after noble libs PR is merged).  `xrpl-secret-numbers` still needs those.  This will also eliminate them and anytime similar changes in the future will be much easier.  This further reduces the bundle size of 3.0 branch by over 10% as well as reducing bundler setup.
2024-02-01 13:45:11 -06:00
Caleb Kniffen
cddb048588 feat: remove util polyfill and fix HISTORY.md (#2432)
- Remove `util` from bundle by switching `inspect` to `JSON.stringify`
- Update `HISTORY.md` with latest 3.0 changes
2024-02-01 13:45:09 -06:00
Caleb Kniffen
f7d0cfb93a release xrpl 2.14.1 (#2631) 2024-02-01 12:58:20 -06:00
Omar Khan
b2c96714a8 fix AMM ledger object's LPTokenBalance type to IssuedCurrencyAmount (#2621) 2024-01-21 20:50:47 -05:00
Jackson Mills
99dd0eb44c Release xrpl.js 2.11.0 (#2591)
Update HISTORY.md + Run docgen
2023-11-30 15:27:12 -06:00
Jackson Mills
98abafbf12 feat: Add optional CTID field to Tx (#2477)
* Add optional CTID field to Tx

* Update HISTORY.md

* Update TxRequest

* Update comment to remove incorrect statement

---------

Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
2023-11-30 07:23:12 -08:00
Ildar Gumirov
9a85aaa109 fix: nftoken taxon calculation (#2590)
Fix taxon calculation for NFTokenID

### Context of Change

If NFToken taxon or serial is too big to be handled as number it could be calculated wrong.
2023-11-29 13:27:36 -06:00
Caleb Kniffen
b555f39e40 feat: remove AMM devnet (#2587)
The AMM dev network will be decommissioned on the 12/8
2023-11-28 15:03:41 -06:00
Mayukha Vadari
c8f25a6347 feat: add support for XLS-40d + add script to auto-generate models from rippled code (#2491)
Add support for XLS-40 and adds a script to automatically
generate transaction models from rippled source code.

### Context of Change

https://github.com/XRPLF/XRPL-Standards/pull/136
https://github.com/XRPLF/rippled/pull/4636
2023-11-15 16:19:50 -06:00
Mayukha Vadari
14f40f1f62 feat: add support for server_definitions RPC (#2535)
Add support for new command added in XRPLF/rippled#4703
2023-10-31 18:57:30 -05:00
Caleb Kniffen
29c5a70ebc release: 2.13.0 and pin typedoc@0.25.0 (#2531)
`typedoc@0.25.1` has breaking changes if you aren not using
`typescript@^5.2`
2023-10-18 11:11:07 -05:00
Caleb Kniffen
65bf5d40ea fix: tx fields for accounts allowing empty string (#2525)
Fields that were encoded as STAccounts were turning '' into rrrrrrrrrrrrrrrrrrrrrhoLvTp the ACCOUNT_ZERO account. They will now throw a ValidationError.

Invalid addresses on a transaction now throws a ValidationError when submitting a transaction instead of Error('checksum_invalid').

This change updates some error messages for fields a few fields that aren't accounts, DestinationTag or NFTokenID. They will still be of type ValidationError.

Fixes: #2517 and #2475

---------

Co-authored-by: Elliot Lee <github.public@intelliot.com>
2023-10-18 10:25:57 -05:00
Mayukha Vadari
8e929c5a57 chore: remove sidechain-devnet faucet (#2518)
Removes faucet support for the sidechain devnet since the bridge has been moved to Devnet, which already has a faucet.
2023-10-17 12:30:52 -05:00
Mayukha Vadari
032b5b7c5a fix: add type param to ledger & ledger_data (#2503)
- Add missing `type` param
- Clean up typing of `type` param and the response property
`account_objects` of the `account_objects` request
- Create interfaces `HasPreviousTxnID` and `MissingPreviousTxnID`. This
helps clean up type checking with regard to the presence of
`PreviousTxnID` and `MissingPreviousTxnID`

Co-authored-by: Mayukha Vadari <mvadari@ripple.com>
Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
2023-10-16 09:44:54 -05:00
pdp2121
8b03c995b0 fix: pseudo-transactions for ledger and tx (#2515)
* Add pseudo transactions as types returned by `tx` and `ledger`
* Make` LedgerEntryResponse` generic to allow custom ledger entries
* Update UNLModify to extend BaseTransaction
* Create type `PseudoTransaction`

Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
2023-10-13 15:58:10 -05:00
Caleb Kniffen
ec72f9ac8e fix: allow flag maps when submitting NFToken txs (#2490)
You can now `NFTokenMint` and `NFTokenCreateOffer` transactions with
`Flags` set to a map like other transactions with flags do.

ex. `{ tfSellNFToken: true }`
2023-10-04 16:37:56 -05:00
Omar Khan
62cea624f8 2.12 release (#2488)
* update HISTORY

* docgen

* update HISTORY again

* update package.json files
2023-09-27 11:50:21 -04:00
Caleb Kniffen
b9ef0de2df fix: rename AMMAccount to Account on AMM (#2487)
The `AMM` ledger object had the wrong property name
2023-09-26 16:02:07 -05:00
Mayukha Vadari
91e7369f1b feat: add support for current sidechain design (#2039)
* Update definitions.json

* add new st types

* add tests

* add XChainClaim tx

* add XChainCommit tx

* add XChainCreateBridge tx

* add XChainCreateClaimID tx

* update definitions.json

* rename Bridge -> XChainBridge in binary codec, fix tests

* rename Bridge -> XChainBridge in models

* add codec support for XChainAddAttestation

* add XChainAddAttestation model

* undo debugging change

* fix linting issues

* update definitions.json for new rippled code, add new tests/update old tests

* add/update models

* update history

* update binary-codec

* add XChainModifyBridge model

* update RPCs

* update to latest rippled

* more fixes

* fix definitions.json

* fix spacing

* update definitions.json to avoid conflict with amm

* update definitions.json to resolve amm conflicts

* audit code

* more updates

* update rpcs

* switch to beta version

* add destination tag to XChainClaim

* rename IssuedCurrency -> Issue to match rippled

* update Issue form

* fix account object filters

* fix issue from typing

* fix LedgerEntry types

* fix attestation destination type

* Update definitions.json

* rename XChainAddAttestation -> XChainAddAttestationBatch

* add XChainAddClaimAttestation

* add XChainAddAccountCreateAttestation

* remove XChainAddAttestationBatch

* update definitions

* fix attestation txns

* fix attestation object

* add validate for new txs

* add Bridge ledger object

* add XChainOwnedClaimID ledger object

* add XChainOwnedCreateAccountClaimID ledger object

* update account_objects

* update models to latest rippled

* fix minor issues

* fix bridge ledger_entry

* add XChainModifyBridge flag

* Update definitions.json

* add rbc tests for the new txs

* update validateXChainModifyBridge

* add validate methods to other xchain txs

* fix isXChainBridge

* fix isIssue typing

* fix model types

* update changelog

* switch prepare to prepublishOnly

* add docs

* fix AccountObjectsType filter

* export common types

* fix account_objects filter

* update LedgerEntry

* add sidechain faucet info

* add snippet

* improve snippet

* fix spacing issues

* update ledger_entry

* remove AMMDelete tests for now

* Update definitions.json

* fix unit tests

* convert createValidate script to JS
* remove unneeded linter ignores

* respond to comments

* more snippet fixes

* make validate functions more readable

* add getXChainClaimID method to parse metadata

* re-add linter rules

* clean up common

* fix getXChainClaimID test

* return undefined for failed tx

* test: add model tests for new sidechain transactions (#2059)

* add XChainAddAttestation tests, fix model

* add XChainClaim model tests

* add XChainCommit model tests, fix typo

* add XChainCreateBridge model tests

* add XChainCreateClaimID model tests

* add XChainModifyBridge tests

* update to most recent version of code

* remove XChainAddAttestationBatch tests

* add more validation tests

* switch createValidateTests to JS
2023-09-26 10:01:21 -04:00
Jackson Mills
cad0a2a163 feat: Add ports field to server_info RPC (#2476) 2023-09-15 13:52:38 -07:00
Mayukha Vadari
556addff64 fix: fix escrow OfferSequence validation (#2474)
* Fix escrow validation

* update .nvmrc

* fix tests

* fix EscrowFinish too

* fix test

* update HISTORY

* fix validation

* fix linter issues

* forgot to save

* change test string
2023-09-14 17:21:18 -04:00
Omar Khan
f6f5f6b09a fix: request model fields related to AMM (#2473)
* fix AuthAccount model

* fix AuctionSlot.Price field to be IssuedCurrencyAmount

* fix AMMBid BidMin & BidMan to IssuedCurrencyAmount

* update HISTORY
2023-09-11 17:18:03 -04:00
Caleb Kniffen
8e5aa9df99 doc: update HISTORY.md with source-map fix (#2467)
This was missed when I did #2435 which led to `ripple-address-codec` and
`ripple-keypairs` not being released.
2023-09-06 17:26:59 -05:00
Omar Khan
37fbc03584 2.11 release (#2442)
* update HISTORY

* update docgen

* update package versions
2023-08-24 13:44:29 -04:00
Omar Khan
5581474627 feat: add AMM support (#2071)
* update definitions.json

* add AMMInstanceCreate

* renamed LPTokens to LPToken in definitions.json

* update HISTORY.md

* add amm_info RPC command

* add AMMDeposit

* use null check for missing fields

* add AMMWithdraw

* add AMMVote

* fix lint error

* add max trading fee check to AMMVote

* refactor MAX_TRADING_FEE to be in one place

* add AMMBid

* add AuthAccount interface to AMMBid

* refactor tests

* add AMMID to AMMInfoResponse

* update amm_info docstrings

* fix EPrice type to be Amount

* update EPrice validation error message and add missing tests

* update definitions to fix AMM in LEDGER_ENTRY_TYPES

* add missing test case Asset1In and Asset2In valid

* add missing test case Asset1Out and Asset2Out valid

* add negative FeeVal check

* update HISTORY.md to specify XLS-30

* update wording on AMMDeposit & AMMWithdraw validation errors

* add negative TradingFee check

* fix ammInfo response

* add AMMID as optional param in ammInfo response

* fix EPrice validation checks in AMMDeposit & AMMWithdraw

* add VoteSlots as optional param in AMMInfoResponse

* update VoteEntry interface

* fix deposit and withdraw tests

* fix AMMBid ValidationError

* update definitions.json with different AuthAccounts number

* Change amm_info asset parameters to Currency type

* API name changes with updated definitions.json

* rename amm_info param asset1 -> asset

* fix typo

* change AMM_MAX_TRADING_FEE to 1%

* Use Asset/Asset2 instead of AMMID for Deposit/Withdraw/Bid/Vote

* add Deposit/Withdraw flags

* rename FeeVal -> TradingFee in VoteEntry

* rename MinBidPrice -> BidMin and MaxBidPrice -> BidMax

* update definitions to change Asset & Asset2 nth values to 3 & 4

* update definitions

* add Issue type and tests for Asset/Asset2

* remove AMMID from amm_info and use Issue type

* update amm_info fields

* fix lint errors

* update unit tests

* add AMM codec-fixtures

* update Issue type

* add one asset and withdraw all tests

* refactor amm_info response fields to match AMMDevnet

* update definitions.json with refactored error codes

* update ammInfo.ts response model

* remove invalid fields from ammInfo.ts response model

* update time_interval description

* rename test model names and fix lint errors

* add Owner Reserve Fee for AMMCreate transaction

* add missing asset_frozen field

* replace Issue with IssuedCurrency

* refactor: convert flags to number

* update asset pair to use Currency type

* refactor isIssue to isCurrency

* add AMM ledger entry object, lsfAMM flag, amm fields to LedgerEntryRequest

* update definitions.json

* WIP defintions

* update codec-fixtures

* fix definitions test

* update DiscountedFee definition

* update definitions

* update codec-fixtures

* update definitions

* update unit tests

* update amm_info response

* sort imports/exports

* update jsdoc

* update amm_info jsdoc

* update jsdoc

* convert caution to all caps

* add validation for AuthAccounts

* refactor and export interfaces

* use Currency type

* update definitions

* add AMMDelete

* rename Issue to Currency in error message

* mark asset frozen as optional fields

* refactor isAuthAccounts

* add AMMDelete jsdoc

* rename to validateAuthAccounts

* fix typo

* fix typo in unit test

---------

Co-authored-by: Caleb Kniffen <ckniffen@ripple.com>
2023-08-17 22:42:32 -04:00
Daniel
aa75806f2f [Feature] Generate Wallet from secret numbers (#1799)
* add the possibility to create a wallet from Secret Numbers

* Move it off the Wallet class
2023-08-14 17:39:35 -07:00
Jackson Mills
c4097935a9 release: Update HISTORY.md (#2424)
* Update HISTORY.md

* Run docgen
2023-08-07 14:31:24 -07:00
pdp2121
5ec6729c61 release 2.9.1 (#2391) 2023-07-18 15:29:32 -05:00
Caleb Kniffen
c523a7c80b release: xrpl@2.9.0 and ripple-binary-codec@1.7.0 (#2380) 2023-07-12 16:52:06 -05:00
Caleb Kniffen
dbd5852ba6 feat(types): Export most of the types (#2360)
Expose most of the types in the `xrpl` package. Some renames will only
affect you if you were deep importing these types previously.

Renames of deep importable types:
- `methods/bookOffers`: `TakerAmount` -> `BookOfferCurrency`
- `methods/accountLines`: `Trustline` -> `AccountLinesTrustline`
2023-07-03 17:03:51 -05:00
Caleb Kniffen
5925ad2f00 feat: expose LedgerEntry singletons (#2358)
Adds the new fields for `XRPFees` amendment and id for the `FeeSettings`
singleton ledger entry.

Closes #2219
2023-07-03 16:34:42 -05:00
Caleb Kniffen
9b0c1e53e3 fix(types): SignerList was missing WalletLocator (#2359)
`SignerEntry` on `SignerList` (LedgerEntry) was missing `WalletLocator`.

This was found while trying to use types on the xrpl.org explorer.
2023-07-03 11:08:07 -05:00
Caleb Kniffen
23256aed5d feat(types): Update FeeSettings and add id (#2357)
Adds the new fields for `XRPFees` amendment and id for the `FeeSettings`
singleton ledger entry.

Closes #2219
2023-06-29 16:27:00 -05:00
Caleb Kniffen
70500dcc15 feat(types): Add pseudo transactions (#2351)
Add types for `EnableAmendment`, `SetFee`, and `UNLModify` transactions.
2023-06-29 14:20:36 -05:00
Caleb Kniffen
97552cc1a5 feat(types): define new account_flags field (#2352)
The `account_flags` field was added to the `account_info` response for `rippled@1.11.0`
2023-06-27 15:14:48 -05:00
Caleb Kniffen
b152ebc4ce feat: add ledger entry types for NFTokens (#2349)
Add `NFToken`, `NFTokenPage`, and `NFTokenOffer`
2023-06-26 12:57:47 -05:00
Caleb Kniffen
b6d6fafebc feat: cleanup types and add missing request fields (#2346)
- Add `ledger_hash` and `ledger_index` to `account_nfts`,
`nft_buy_offers`, and `nft_sell_offers` requests.
- Add `nft_page` to `ledger_entry` request.
- Create `LookupByLedgerRequest` to clean up `ledger_hash` and
`ledger_index` which are optional on most request objects.

Closes #2135
2023-06-26 12:47:15 -05:00
Jackson Mills
dc51e3a704 Update getNFTokenID to properly handle binary blob (#2247)
* Update NFTokenMint test

* Ensure the binary version works as well

* Remove meta being undefined in txResponse

* Remove error test

* Re-add test, error, and lint

* Add meta to test, and add string to allowed type

* Re-add meta being undefined with proper docs
2023-06-23 16:17:29 -07:00
Caleb Kniffen
fa98bd8d26 feat: add missing AccountRoot fields (#2347)
Add `BurnedNFTokens`, `FirstNFTSequence`, `MintedNFTokens`,
`NFTokenMinter`, and `WalletLocator` to `AccountRoot`.
2023-06-21 12:49:34 -05:00
Jackson Mills
3791c6292c 2.8.0 release (#2343) 2023-06-13 14:15:08 -07:00
Mayukha Vadari
44995a7e49 feat: add support for sidechain devnet faucet (#2336)
* add sidechain faucet info

* add test

* update changelog

* fix changelog
2023-06-09 17:07:18 -04:00