Compare commits

..

26 Commits

Author SHA1 Message Date
Denis Angell
369c9fe7a4 fixup! reorder definitions 2023-02-15 17:05:54 -05:00
Denis Angell
31e52fbc3b fixup! prepare for nth clash in definitions.json 2023-02-15 16:51:19 -05:00
Denis Angell
038bbac34f fixup: definitions tecPRECISION_LOSS 2023-02-15 16:45:56 -05:00
Denis Angell
0c4765d2e0 Merge branch 'beta3' into iouescrow 2023-02-15 16:38:23 -05:00
Denis Angell
bc70d3b6c1 fixup! update Amount & Balance 2023-02-15 16:24:00 -05:00
Denis Angell
2d6ab38d33 docstring: replace XRP with amounts 2023-02-15 15:26:05 -05:00
Denis Angell
00d4840501 fixup! remove faucet 2023-02-15 14:24:53 -05:00
Denis Angell
8e90ecd350 reverse else order 2023-02-15 14:23:23 -05:00
Denis Angell
b80521152d Merge branch 'main' into iouescrow 2023-02-15 13:55:58 -05:00
Denis Angell
d890b81924 update validation error response 2023-02-15 13:23:56 -05:00
Denis Angell
81f09ba043 faucet wallet integration test 2023-02-15 13:14:05 -05:00
Denis Angell
46dd51b196 update docstrings 2023-02-15 13:04:22 -05:00
Denis Angell
4d9a5cf4a0 fix ClaimObject 2023-02-15 13:03:27 -05:00
Denis Angell
ffe93d0462 add faucet test 2023-02-14 19:45:48 -05:00
Denis Angell
0787166f6a update faucet 2023-02-14 19:45:48 -05:00
Denis Angell
45008596a4 remove XRP references to amount 2023-02-14 19:45:48 -05:00
Denis Angell
65a8de6f47 Merge branch 'main' into iouescrow 2023-02-09 11:20:36 -05:00
Denis Angell
3b19974634 fix docstring errors 2023-02-09 11:19:50 -05:00
Denis Angell
b7283c5841 refactor signingClaimData 2023-02-09 11:19:36 -05:00
Denis Angell
c8d24d65f5 Merge branch 'main' into iouescrow 2023-02-06 10:56:50 -05:00
Denis Angell
e712d8fd8c remove integration testing 2023-02-06 10:48:27 -05:00
Denis Angell
8fbcb20129 remove redundant check 2023-02-06 10:30:18 -05:00
Denis Angell
a679128f02 rename IC to Token 2023-02-06 10:19:01 -05:00
Denis Angell
9f15deed15 update fund wallet url 2023-02-06 10:18:09 -05:00
Denis Angell
9b540c89f0 update docstrings 2023-02-06 10:17:47 -05:00
dangell7
5541632b7f amendment-xls34d
add transfer rate

Update definitions.json

update test error text

update validation error

fix undefined validation

switch claim signing order, update claim object

update workflow docker

tests (paychan + escrow)

add ic gateway (test)

add faucet

update sdk

fixup git-workflow
2023-02-06 09:19:49 -05:00
27 changed files with 286 additions and 267 deletions

View File

@@ -177,33 +177,32 @@ npm uninstall abbrev -w xrpl
NOW WE ARE READY TO PUBLISH! No new code changes happen manually now.
2. Checkout `main` (or your beta branch) and `git pull`.
3. Create a new branch (`git checkout -b <BRANCH_NAME>`) to capture updates that take place during this process.
2. Checkout `main` and `git pull`.
3. Create a new branch to capture updates that take place during this process. `git checkout -b <BRANCH_NAME>`
4. Update `HISTORY.md` to reflect release changes.
5. Run `npm run docgen` if the docs were modified in this release to update them (skip this step for a beta).
5. Run `npm run docgen` if the docs were modified in this release to update them.
6. Run `npm run build` to triple check the build still works
7. Run `npx lerna version --no-git-tag-version` - This creates a draft PR and bumps the versions of the packages.
* For each changed package, pick what the new version should be. Lerna will bump the versions, commit version bumps to `main`, and create a new git tag for each published package.
* If publishing a beta, make sure that the versions are all of the form `a.b.c-beta.d`, where `a`, `b`, and `c` are identical to the last normal release except for one, which has been incremented by 1.
8. Run `npm i` to update the package-lock with the updated versions
9. Create a new PR from this branch into `main` and merge it (you can directly merge into the beta branch for a beta).
10. Checkout `main` and `git pull` (you can skip this step for a beta since you already have the latest version of the beta branch).
11. Run `npx lerna publish from-package --yes` - This will actually publish the packages.
* NOTE: if you're releasing a beta, run `npx lerna publish from-package --dist-tag beta --yes` instead.
* If it asks for it, enter your [npmjs.com](https://npmjs.com) OTP (one-time password) to complete publication.
12. Create a new branch (`git checkout -b <BRANCH_NAME>`)to capture the updated packages from the release. Merge those changes into `main`. (You can skip this step on a beta release).
7. Run `npx lerna version --no-git-tag-version` - This creates a draft PR and release tags for the new version.
8. For each changed package, pick what the new version should be. Lerna will bump the versions, commit version bumps to `main`, and create a new git tag for each published package.
9. Run `npm i` to update the package-lock with the updated versions
10. Create a new PR from this branch into `main` and merge it.
11. Checkout `main` and `git pull`
12. Run `npx lerna publish from-package --yes` - This will actually publish the packages.
13. If it asks for it, enter your [npmjs.com](https://npmjs.com) OTP (one-time password) to complete publication.
14. Create a new branch to capture the updated packages from the release (`git checkout -b <BRANCH_NAME>`)
15. Make a PR to merge those changes into `main`
NOW YOU HAVE PUBLISHED! But you're not done; we have to notify people!
13. Pull the most recent changes to main locally.
14. Run `git tag <tagname> -m <tagname>`, where `<tagname>` is the new package and version (e.g. `xrpl@2.1.1`), for each version released.
15. Run `git push --follow-tags`, to push the tags to Github.
16. On Github, click the "releases" link on the right-hand side of the page.
17. Click "Draft a new release"
18. Click "Choose a tag", and choose a tag that you just created.
19. Edit the name of the release to match the tag (IE \<package\>@\<version\>) and edit the description as you see fit.
20. Repeat steps 17-19 for each release.
21. Send an email to [xrpl-announce](https://groups.google.com/g/xrpl-announce).
16. Pull the most recent changes to main locally.
17. Run `git tag <tagname> -m <tagname>`, where `<tagname>` is the new package and version (e.g. `xrpl@2.1.1`), for each version released.
18. Run `git push --follow-tags`, to push the tags to Github.
19. On Github, click the "releases" link on the right-hand side of the page.
20. Click "Draft a new release"
21. Click "Choose a tag", and choose a tag that you just created.
22. Edit the name of the release to match the tag (IE \<package\>@\<version\>) and edit the description as you see fit.
23. Repeat steps 19-21 for each release.
24. Send an email to [xrpl-announce](https://groups.google.com/g/xrpl-announce).
## Mailing Lists

165
package-lock.json generated
View File

@@ -65,7 +65,7 @@
"url": "^0.11.0",
"webpack": "^5.6.0",
"webpack-bundle-analyzer": "^4.1.0",
"webpack-cli": "^5.0.1"
"webpack-cli": "^4.2.0"
},
"engines": {
"node": ">=12.0.0",
@@ -3339,42 +3339,34 @@
}
},
"node_modules/@webpack-cli/configtest": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz",
"integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
"integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
"dev": true,
"engines": {
"node": ">=14.15.0"
},
"peerDependencies": {
"webpack": "5.x.x",
"webpack-cli": "5.x.x"
"webpack": "4.x.x || 5.x.x",
"webpack-cli": "4.x.x"
}
},
"node_modules/@webpack-cli/info": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz",
"integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==",
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz",
"integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==",
"dev": true,
"engines": {
"node": ">=14.15.0"
"dependencies": {
"envinfo": "^7.7.3"
},
"peerDependencies": {
"webpack": "5.x.x",
"webpack-cli": "5.x.x"
"webpack-cli": "4.x.x"
}
},
"node_modules/@webpack-cli/serve": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz",
"integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==",
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
"integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
"dev": true,
"engines": {
"node": ">=14.15.0"
},
"peerDependencies": {
"webpack": "5.x.x",
"webpack-cli": "5.x.x"
"webpack-cli": "4.x.x"
},
"peerDependenciesMeta": {
"webpack-dev-server": {
@@ -8788,12 +8780,12 @@
}
},
"node_modules/interpret": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
"integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
"dev": true,
"engines": {
"node": ">=10.13.0"
"node": ">= 0.10"
}
},
"node_modules/ip": {
@@ -13447,9 +13439,9 @@
}
},
"node_modules/prettier": {
"version": "2.8.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz",
"integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz",
"integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==",
"dev": true,
"bin": {
"prettier": "bin-prettier.js"
@@ -14228,15 +14220,15 @@
}
},
"node_modules/rechoir": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
"integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
"integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
"dev": true,
"dependencies": {
"resolve": "^1.20.0"
"resolve": "^1.9.0"
},
"engines": {
"node": ">= 10.13.0"
"node": ">= 0.10"
}
},
"node_modules/redent": {
@@ -16629,42 +16621,44 @@
}
},
"node_modules/webpack-cli": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz",
"integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==",
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz",
"integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==",
"dev": true,
"dependencies": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^2.0.1",
"@webpack-cli/info": "^2.0.1",
"@webpack-cli/serve": "^2.0.1",
"@webpack-cli/configtest": "^1.2.0",
"@webpack-cli/info": "^1.5.0",
"@webpack-cli/serve": "^1.7.0",
"colorette": "^2.0.14",
"commander": "^9.4.1",
"commander": "^7.0.0",
"cross-spawn": "^7.0.3",
"envinfo": "^7.7.3",
"fastest-levenshtein": "^1.0.12",
"import-local": "^3.0.2",
"interpret": "^3.1.1",
"rechoir": "^0.8.0",
"interpret": "^2.2.0",
"rechoir": "^0.7.0",
"webpack-merge": "^5.7.3"
},
"bin": {
"webpack-cli": "bin/cli.js"
},
"engines": {
"node": ">=14.15.0"
"node": ">=10.13.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/webpack"
},
"peerDependencies": {
"webpack": "5.x.x"
"webpack": "4.x.x || 5.x.x"
},
"peerDependenciesMeta": {
"@webpack-cli/generators": {
"optional": true
},
"@webpack-cli/migrate": {
"optional": true
},
"webpack-bundle-analyzer": {
"optional": true
},
@@ -16674,12 +16668,12 @@
}
},
"node_modules/webpack-cli/node_modules/commander": {
"version": "9.5.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
"integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"engines": {
"node": "^12.20.0 || >=14"
"node": ">= 10"
}
},
"node_modules/webpack-merge": {
@@ -19879,23 +19873,25 @@
}
},
"@webpack-cli/configtest": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz",
"integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
"integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
"dev": true,
"requires": {}
},
"@webpack-cli/info": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz",
"integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==",
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz",
"integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==",
"dev": true,
"requires": {}
"requires": {
"envinfo": "^7.7.3"
}
},
"@webpack-cli/serve": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz",
"integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==",
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
"integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
"dev": true,
"requires": {}
},
@@ -24138,9 +24134,9 @@
}
},
"interpret": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
"integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
"integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
"dev": true
},
"ip": {
@@ -27842,9 +27838,9 @@
"dev": true
},
"prettier": {
"version": "2.8.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz",
"integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz",
"integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==",
"dev": true
},
"prettier-linter-helpers": {
@@ -28461,12 +28457,12 @@
}
},
"rechoir": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
"integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
"integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
"dev": true,
"requires": {
"resolve": "^1.20.0"
"resolve": "^1.9.0"
}
},
"redent": {
@@ -30289,30 +30285,29 @@
}
},
"webpack-cli": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz",
"integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==",
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz",
"integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==",
"dev": true,
"requires": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^2.0.1",
"@webpack-cli/info": "^2.0.1",
"@webpack-cli/serve": "^2.0.1",
"@webpack-cli/configtest": "^1.2.0",
"@webpack-cli/info": "^1.5.0",
"@webpack-cli/serve": "^1.7.0",
"colorette": "^2.0.14",
"commander": "^9.4.1",
"commander": "^7.0.0",
"cross-spawn": "^7.0.3",
"envinfo": "^7.7.3",
"fastest-levenshtein": "^1.0.12",
"import-local": "^3.0.2",
"interpret": "^3.1.1",
"rechoir": "^0.8.0",
"interpret": "^2.2.0",
"rechoir": "^0.7.0",
"webpack-merge": "^5.7.3"
},
"dependencies": {
"commander": {
"version": "9.5.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
"integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true
}
}

View File

@@ -69,7 +69,7 @@
"url": "^0.11.0",
"webpack": "^5.6.0",
"webpack-bundle-analyzer": "^4.1.0",
"webpack-cli": "^5.0.1"
"webpack-cli": "^4.2.0"
},
"workspaces": [
"./packages/*"

View File

@@ -11,6 +11,7 @@ import { STObject } from './types/st-object'
import { JsonObject } from './types/serialized-type'
import { Buffer } from 'buffer/'
import bigInt = require('big-integer')
import { AmountObject } from './types/amount'
/**
* Construct a BinaryParser
@@ -95,7 +96,7 @@ function signingData(
*/
interface ClaimObject extends JsonObject {
channel: string
amount: string | number
amount: AmountObject
}
/**
@@ -105,16 +106,19 @@ interface ClaimObject extends JsonObject {
* @returns the serialized object with appropriate prefix
*/
function signingClaimData(claim: ClaimObject): Buffer {
const num = bigInt(String(claim.amount))
const prefix = HashPrefix.paymentChannelClaim
const channel = coreTypes.Hash256.from(claim.channel).toBytes()
const amount = coreTypes.UInt64.from(num).toBytes()
const bytesList = new BytesList()
bytesList.put(prefix)
bytesList.put(channel)
bytesList.put(amount)
if (typeof claim.amount === 'string') {
const num = bigInt(String(claim.amount))
const amount = coreTypes.UInt64.from(num).toBytes()
bytesList.put(amount)
} else {
const amount = coreTypes.Amount.from(claim.amount).toBytes()
bytesList.put(amount)
}
return bytesList.toBytes()
}

View File

@@ -776,6 +776,16 @@
"type": "UInt32"
}
],
[
"LockCount",
{
"nth": 49,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "UInt32"
}
],
[
"IndexNext",
{
@@ -1486,6 +1496,16 @@
"type": "Amount"
}
],
[
"LockedBalance",
{
"nth": 31,
"isVLEncoded": false,
"isSerialized": true,
"isSigningField": true,
"type": "Amount"
}
],
[
"PublicKey",
{
@@ -2567,7 +2587,8 @@
"tecXCHAIN_ACCOUNT_CREATE_TOO_MANY": 183,
"tecXCHAIN_PAYMENT_FAILED": 184,
"tecXCHAIN_SELF_COMMIT": 185,
"tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR": 186
"tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR": 186,
"tecPRECISION_LOSS": 187
},
"TRANSACTION_TYPES": {
"Invalid": -1,

View File

@@ -120,7 +120,7 @@ describe('Signing data', function () {
].join(''),
)
})
test('can create claim blob', function () {
test('can create native claim blob', function () {
const channel =
'43904CBFCDCEC530B4037871F86EE90BF799DF8D2E0EA564BC8A3F332E4F5FB1'
const amount = '1000'
@@ -137,4 +137,27 @@ describe('Signing data', function () {
].join(''),
)
})
test('can create ic claim blob', function () {
const channel =
'43904CBFCDCEC530B4037871F86EE90BF799DF8D2E0EA564BC8A3F332E4F5FB1'
const amount = {
issuer: 'rJZdUusLDtY9NEsGea7ijqhVrXv98rYBYN',
currency: 'USD',
value: '10',
}
const json = { channel, amount }
const actual = encodeForSigningClaim(json)
expect(actual).toBe(
[
// hash prefix
'434C4D00',
// channel ID
'43904CBFCDCEC530B4037871F86EE90BF799DF8D2E0EA564BC8A3F332E4F5FB1',
// amount as a uint64
'D4C38D7EA4C680000000000000000000000000005553440000000000C0A5ABEF',
// amount as a uint64
'242802EFED4B041E8F2D4A8CC86AE3D1',
].join(''),
)
})
})

View File

@@ -26,7 +26,6 @@ Wallet.fromMmnemonic()
### Added
* Optional custom amount field to `fundWallet`.
* Support for `disallowIncoming` account set flags (e.g. `asfDisallowIncomingTrustline`)
* Support for the cross-chain bridge feature.
### Changed

View File

@@ -116,22 +116,6 @@ export interface AccountRootFlagsInterface {
* (It has DepositAuth enabled.)
*/
lsfDepositAuth?: boolean
/**
* Disallow incoming NFTOffers from other accounts.
*/
lsfDisallowIncomingNFTOffer?: boolean
/**
* Disallow incoming Checks from other accounts.
*/
lsfDisallowIncomingCheck?: boolean
/**
* Disallow incoming PayChannels from other accounts.
*/
lsfDisallowIncomingPayChan?: boolean
/**
* Disallow incoming Trustlines from other accounts.
*/
lsfDisallowIncomingTrustline?: boolean
}
export enum AccountRootFlags {
@@ -172,20 +156,4 @@ export enum AccountRootFlags {
* (It has DepositAuth enabled.)
*/
lsfDepositAuth = 0x01000000,
/**
* Disallow incoming NFTOffers from other accounts.
*/
lsfDisallowIncomingNFTOffer = 0x04000000,
/**
* Disallow incoming Checks from other accounts.
*/
lsfDisallowIncomingCheck = 0x08000000,
/**
* Disallow incoming PayChannels from other accounts.
*/
lsfDisallowIncomingPayChan = 0x10000000,
/**
* Disallow incoming Trustlines from other accounts.
*/
lsfDisallowIncomingTrustline = 0x20000000,
}

View File

@@ -1,7 +1,9 @@
import { Amount } from '../common'
import BaseLedgerEntry from './BaseLedgerEntry'
/**
* The Escrow object type represents a held payment of XRP waiting to be
* The Escrow object type represents a held payment waiting to be
* executed or canceled.
*
* @category Ledger Entries
@@ -10,17 +12,17 @@ export default interface Escrow extends BaseLedgerEntry {
LedgerEntryType: 'Escrow'
/**
* The address of the owner (sender) of this held payment. This is the
* account that provided the XRP, and gets it back if the held payment is
* account that provided the amounts, and gets it back if the held payment is
* canceled.
*/
Account: string
/**
* The destination address where the XRP is paid if the held payment is
* The destination address where the amounts are paid if the held payment is
* successful.
*/
Destination: string
/** The amount of XRP, in drops, to be delivered by the held payment. */
Amount: string
/** The amount to be delivered by the held payment. */
Amount: Amount
/**
* A PREIMAGE-SHA-256 crypto-condition, as hexadecimal. If present, the
* EscrowFinish transaction must contain a fulfillment that satisfies this
@@ -71,4 +73,9 @@ export default interface Escrow extends BaseLedgerEntry {
* modified this object.
*/
PreviousTxnLgrSeq: number
/**
* The fee to charge when users finish an escrow, initially set on the
* creation of an escrow contract, and updated on subsequent finish transactions
*/
TransferRate?: number
}

View File

@@ -1,9 +1,11 @@
import { Amount } from '../common'
import BaseLedgerEntry from './BaseLedgerEntry'
/**
* The PayChannel object type represents a payment channel. Payment channels
* enable small, rapid off-ledger payments of XRP that can be later reconciled
* with the consensus ledger. A payment channel holds a balance of XRP that can
* enable small, rapid off-ledger payments that can be later reconciled
* with the consensus ledger. A payment channel holds a balance that can
* only be paid out to a specific destination address until the channel is
* closed.
*
@@ -18,37 +20,37 @@ export default interface PayChannel extends BaseLedgerEntry {
Account: string
/**
* The destination address for this payment channel. While the payment
* channel is open, this address is the only one that can receive XRP from the
* channel is open, this address is the only one that can receive amounts from the
* channel. This comes from the Destination field of the transaction that
* created the channel.
*/
Destination: string
/**
* Total XRP, in drops, that has been allocated to this channel. This
* includes XRP that has been paid to the destination address. This is
* initially set by the transaction that created the channel and can be
* increased if the source address sends a PaymentChannelFund transaction.
* Total amount that has been allocated to this channel. This includes amounts
* that have been paid to the destination address. This is initially set by the
* transaction that created the channel and can be increased if the source
* address sends a PaymentChannelFund transaction.
*/
Amount: string
Amount: Amount
/**
* Total XRP, in drops, already paid out by the channel. The difference
* between this value and the Amount field is how much XRP can still be paid
* to the destination address with PaymentChannelClaim transactions. If the
* channel closes, the remaining difference is returned to the source address.
* Total amount already paid out by the channel. The difference between this value
* and the Amount field is how much can still be paid to the destination address
* with PaymentChannelClaim transactions. If the channel closes, the remaining
* difference is returned to the source address.
*/
Balance: string
Balance: Amount
/**
* Public key, in hexadecimal, of the key pair that can be used to sign
* claims against this channel. This can be any valid secp256k1 or Ed25519
* public key. This is set by the transaction that created the channel and
* must match the public key used in claims against the channel. The channel
* source address can also send XRP from this channel to the destination
* source address can also send amounts from this channel to the destination
* without signed claims.
*/
PublicKey: string
/**
* Number of seconds the source address must wait to close the channel if
* it still has any XRP in it. Smaller values mean that the destination
* it still has any amount in it. Smaller values mean that the destination
* address has less time to redeem any outstanding claims after the source
* address requests to close the channel. Can be any value that fits in a
* 32-bit unsigned integer (0 to 2^32-1). This is set by the transaction that
@@ -104,4 +106,10 @@ export default interface PayChannel extends BaseLedgerEntry {
* this object, in case the directory consists of multiple pages.
*/
DestinationNode?: string
/**
* The fee to charge when users make claims on a payment channel, initially
* set on the creation of a payment channel and updated on subsequent funding
* or claim transactions.
*/
TransferRate?: number
}

View File

@@ -1,10 +1,10 @@
import { LedgerIndex } from '../common'
import { Amount, LedgerIndex } from '../common'
import { BaseRequest, BaseResponse } from './baseMethod'
interface Channel {
account: string
amount: string
amount: Amount
balance: string
channel_id: string
destination_account: string
@@ -15,6 +15,7 @@ interface Channel {
cancel_after?: number
source_tab?: number
destination_tag?: number
transfer_rate?: number
}
/**

View File

@@ -1,4 +1,4 @@
import { LedgerIndex } from '../common'
import { Amount, LedgerIndex } from '../common'
import { BaseRequest, BaseResponse } from './baseMethod'
@@ -64,6 +64,14 @@ export interface Trustline {
* false.
*/
freeze_peer?: boolean
/**
* The total amount of FT, in drops/Amount locked in payment channels or escrow.
*/
locked_balance?: Amount
/**
* The total number of lock balances on a RippleState ledger object.
*/
lock_count?: number
}
/**

View File

@@ -9,7 +9,7 @@ import { BaseRequest, BaseResponse } from './baseMethod'
*/
export interface ChannelVerifyRequest extends BaseRequest {
command: 'channel_verify'
/** The amount of XRP, in drops, the provided signature authorizes. */
/** The amount the provided signature authorizes. */
amount: string
/**
* The Channel ID of the channel that provides the XRP. This is a

View File

@@ -44,15 +44,6 @@ export enum AccountSetAsfFlags {
* Allow another account to mint and burn tokens on behalf of this account.
*/
asfAuthorizedNFTokenMinter = 10,
/** asf 11 is reserved for Hooks amendment */
/** Disallow other accounts from creating incoming NFTOffers */
asfDisallowIncomingNFTOffer = 12,
/** Disallow other accounts from creating incoming Checks */
asfDisallowIncomingCheck = 13,
/** Disallow other accounts from creating incoming PayChannels */
asfDisallowIncomingPayChan = 14,
/** Disallow other accounts from creating incoming Trustlines */
asfDisallowIncomingTrustline = 15,
}
/**

View File

@@ -6,7 +6,7 @@ import { TRANSACTION_TYPES } from 'ripple-binary-codec'
import { ValidationError } from '../../errors'
import {
Amount,
Currency,
IssuedCurrency,
IssuedCurrencyAmount,
Memo,
Signer,
@@ -72,7 +72,7 @@ function isRecord(value: unknown): value is Record<string, unknown> {
* @param input - The input to check the form and type of.
* @returns Whether the IssuedCurrency is properly formed.
*/
export function isCurrency(input: unknown): input is Currency {
export function isIssue(input: unknown): input is IssuedCurrency {
return (
isRecord(input) &&
((Object.keys(input).length === ISSUE_SIZE &&
@@ -122,9 +122,9 @@ export function isXChainBridge(input: unknown): input is XChainBridge {
isRecord(input) &&
Object.keys(input).length === XCHAIN_BRIDGE_SIZE &&
typeof input.LockingChainDoor === 'string' &&
isCurrency(input.LockingChainIssue) &&
isIssue(input.LockingChainIssue) &&
typeof input.IssuingChainDoor === 'string' &&
isCurrency(input.IssuingChainIssue)
isIssue(input.IssuingChainIssue)
)
}

View File

@@ -3,7 +3,7 @@ import { ValidationError } from '../../errors'
import { BaseTransaction, validateBaseTransaction } from './common'
/**
* Return escrowed XRP to the sender.
* Return escrowed amount to the sender.
*
* @category Transaction Models
*/

View File

@@ -1,22 +1,23 @@
/* eslint-disable complexity -- Necessary for validateEscrowCreate */
import { ValidationError } from '../../errors'
import { Amount } from '../common'
import { BaseTransaction, validateBaseTransaction } from './common'
import { BaseTransaction, isAmount, validateBaseTransaction } from './common'
/**
* Sequester XRP until the escrow process either finishes or is canceled.
* Sequester amount until the escrow process either finishes or is canceled.
*
* @category Transaction Models
*/
export interface EscrowCreate extends BaseTransaction {
TransactionType: 'EscrowCreate'
/**
* Amount of XRP, in drops, to deduct from the sender's balance and escrow.
* Once escrowed, the XRP can either go to the Destination address (after the.
* FinishAfter time) or returned to the sender (after the CancelAfter time).
* Amount to deduct from the sender's balance and escrow. Once escrowed, the
* amount can either go to the Destination address (after the FinishAfter time)
* or returned to the sender (after the CancelAfter time).
*/
Amount: string
/** Address to receive escrowed XRP. */
Amount: Amount
/** Address to receive escrowed amount. */
Destination: string
/**
* The time, in seconds since the Ripple Epoch, when this escrow expires.
@@ -25,7 +26,7 @@ export interface EscrowCreate extends BaseTransaction {
*/
CancelAfter?: number
/**
* The time, in seconds since the Ripple Epoch, when the escrowed XRP can be
* The time, in seconds since the Ripple Epoch, when the escrowed amount can be
* released to the recipient. This value is immutable; the funds cannot move.
* until this time is reached.
*/
@@ -55,8 +56,8 @@ export function validateEscrowCreate(tx: Record<string, unknown>): void {
throw new ValidationError('EscrowCreate: missing field Amount')
}
if (typeof tx.Amount !== 'string') {
throw new ValidationError('EscrowCreate: Amount must be a string')
if (typeof tx.Amount !== 'string' && !isAmount(tx.Amount)) {
throw new ValidationError('EscrowCreate: Amount must be an Amount')
}
if (tx.Destination === undefined) {

View File

@@ -3,7 +3,7 @@ import { ValidationError } from '../../errors'
import { BaseTransaction, validateBaseTransaction } from './common'
/**
* Deliver XRP from a held payment to the recipient.
* Deliver amount from a held payment to the recipient.
*
* @category Transaction Models
*/

View File

@@ -1,7 +1,13 @@
/* eslint-disable complexity -- Necessary for validatePaymentChannelClaim */
import { ValidationError } from '../../errors'
import { Amount } from '../common'
import { BaseTransaction, GlobalFlags, validateBaseTransaction } from './common'
import {
BaseTransaction,
GlobalFlags,
validateBaseTransaction,
isAmount,
} from './common'
/**
* Enum representing values for PaymentChannelClaim transaction flags.
@@ -18,15 +24,15 @@ export enum PaymentChannelClaimFlags {
/**
* Request to close the channel. Only the channel source and destination
* addresses can use this flag. This flag closes the channel immediately if it
* has no more XRP allocated to it after processing the current claim, or if
* has no more funds allocated to it after processing the current claim, or if
* the destination address uses it. If the source address uses this flag when
* the channel still holds XRP, this schedules the channel to close after
* the channel still holds an amount, this schedules the channel to close after
* SettleDelay seconds have passed. (Specifically, this sets the Expiration of
* the channel to the close time of the previous ledger plus the channel's
* SettleDelay time, unless the channel already has an earlier Expiration
* time.) If the destination address uses this flag when the channel still
* holds XRP, any XRP that remains after processing the claim is returned to
* the source address.
* holds an amount, any amount that remains after processing the claim is
* returned to the source address.
*/
tfClose = 0x00020000,
}
@@ -78,21 +84,21 @@ export interface PaymentChannelClaimFlagsInterface extends GlobalFlags {
/**
* Request to close the channel. Only the channel source and destination
* addresses can use this flag. This flag closes the channel immediately if it
* has no more XRP allocated to it after processing the current claim, or if
* has no more funds allocated to it after processing the current claim, or if
* the destination address uses it. If the source address uses this flag when
* the channel still holds XRP, this schedules the channel to close after
* the channel still holds an amount, this schedules the channel to close after
* SettleDelay seconds have passed. (Specifically, this sets the Expiration of
* the channel to the close time of the previous ledger plus the channel's
* SettleDelay time, unless the channel already has an earlier Expiration
* time.) If the destination address uses this flag when the channel still
* holds XRP, any XRP that remains after processing the claim is returned to
* the source address.
* holds an amount, any amount that remains after processing the claim is
* returned to the source address.
*/
tfClose?: boolean
}
/**
* Claim XRP from a payment channel, adjust the payment channel's expiration,
* Claim amount from a payment channel, adjust the payment channel's expiration,
* or both.
*
* @category Transaction Models
@@ -103,18 +109,18 @@ export interface PaymentChannelClaim extends BaseTransaction {
/** The unique ID of the channel as a 64-character hexadecimal string. */
Channel: string
/**
* Total amount of XRP, in drops, delivered by this channel after processing
* this claim. Required to deliver XRP. Must be more than the total amount
* delivered by the channel so far, but not greater than the Amount of the
* signed claim. Must be provided except when closing the channel.
* Total amount delivered by this channel after processing this claim. Required
* to deliver amount. Must be more than the total amount delivered by the channel
* so far, but not greater than the Amount of the signed claim. Must be provided
* except when closing the channel.
*/
Balance?: string
Balance?: Amount
/**
* The amount of XRP, in drops, authorized by the Signature. This must match
* the amount in the signed message. This is the cumulative amount of XRP that
* can be dispensed by the channel, including XRP previously redeemed.
* The amount authorized by the Signature. This must match the amount in the
* signed message. This is the cumulative amount that can be dispensed by the
* channel, including amounts previously redeemed. Required unless closing the channel.
*/
Amount?: string
Amount?: Amount
/**
* The signature of this claim, as hexadecimal. The signed message contains
* the channel ID and the amount of the claim. Required unless the sender of
@@ -147,12 +153,12 @@ export function validatePaymentChannelClaim(tx: Record<string, unknown>): void {
throw new ValidationError('PaymentChannelClaim: Channel must be a string')
}
if (tx.Balance !== undefined && typeof tx.Balance !== 'string') {
throw new ValidationError('PaymentChannelClaim: Balance must be a string')
if (tx.Balance !== undefined && !isAmount(tx.Balance)) {
throw new ValidationError('PaymentChannelClaim: Balance must be an Amount')
}
if (tx.Amount !== undefined && typeof tx.Amount !== 'string') {
throw new ValidationError('PaymentChannelClaim: Amount must be a string')
if (tx.Amount !== undefined && !isAmount(tx.Amount)) {
throw new ValidationError('PaymentChannelClaim: Amount must be an Amount')
}
if (tx.Signature !== undefined && typeof tx.Signature !== 'string') {

View File

@@ -1,10 +1,11 @@
/* eslint-disable complexity -- Necessary for validatePaymentChannelCreate */
import { ValidationError } from '../../errors'
import { Amount } from '../common'
import { BaseTransaction, validateBaseTransaction } from './common'
import { BaseTransaction, validateBaseTransaction, isAmount } from './common'
/**
* Create a unidirectional channel and fund it with XRP. The address sending
* Create a unidirectional channel and fund it. The address sending
* this transaction becomes the "source address" of the payment channel.
*
* @category Transaction Models
@@ -12,20 +13,20 @@ import { BaseTransaction, validateBaseTransaction } from './common'
export interface PaymentChannelCreate extends BaseTransaction {
TransactionType: 'PaymentChannelCreate'
/**
* Amount of XRP, in drops, to deduct from the sender's balance and set aside
* in this channel. While the channel is open, the XRP can only go to the
* Destination address. When the channel closes, any unclaimed XRP is returned
* to the source address's balance.
* Amount to deduct from the sender's balance and set aside in this channel.
* While the channel is open, the amount can only go to the Destination
* address. When the channel closes, any unclaimed amount is returned to
* the source address's balance.
*/
Amount: string
Amount: Amount
/**
* Address to receive XRP claims against this channel. This is also known as
* Address to receive claims against this channel. This is also known as
* the "destination address" for the channel.
*/
Destination: string
/**
* Amount of time the source address must wait before closing the channel if
* it has unclaimed XRP.
* it has unclaimed amount.
*/
SettleDelay: number
/**
@@ -65,8 +66,8 @@ export function validatePaymentChannelCreate(
throw new ValidationError('PaymentChannelCreate: missing Amount')
}
if (typeof tx.Amount !== 'string') {
throw new ValidationError('PaymentChannelCreate: Amount must be a string')
if (typeof tx.Amount !== 'string' && !isAmount(tx.Amount)) {
throw new ValidationError('PaymentChannelCreate: Amount must be an Amount')
}
if (tx.Destination === undefined) {

View File

@@ -1,9 +1,10 @@
import { ValidationError } from '../../errors'
import { Amount } from '../common'
import { BaseTransaction, validateBaseTransaction } from './common'
import { BaseTransaction, validateBaseTransaction, isAmount } from './common'
/**
* Add additional XRP to an open payment channel, and optionally update the
* Add additional amount to an open payment channel, and optionally update the
* expiration time of the channel. Only the source address of the channel can
* use this transaction.
*
@@ -17,16 +18,15 @@ export interface PaymentChannelFund extends BaseTransaction {
*/
Channel: string
/**
* Amount of XRP in drops to add to the channel. Must be a positive amount
* of XRP.
* Amount to add to the channel. Must be a positive amount
*/
Amount: string
Amount: Amount
/**
* New Expiration time to set for the channel in seconds since the Ripple
* Epoch. This must be later than either the current time plus the SettleDelay
* of the channel, or the existing Expiration of the channel. After the
* Expiration time, any transaction that would access the channel closes the
* channel without taking its normal action. Any unspent XRP is returned to
* channel without taking its normal action. Any unspent amount is returned to
* the source address when the channel closes. (Expiration is separate from
* the channel's immutable CancelAfter time.) For more information, see the
* PayChannel ledger object type.
@@ -55,8 +55,8 @@ export function validatePaymentChannelFund(tx: Record<string, unknown>): void {
throw new ValidationError('PaymentChannelFund: missing Amount')
}
if (typeof tx.Amount !== 'string') {
throw new ValidationError('PaymentChannelFund: Amount must be a string')
if (typeof tx.Amount !== 'string' && !isAmount(tx.Amount)) {
throw new ValidationError('PaymentChannelFund: Amount must be an Amount')
}
if (tx.Expiration !== undefined && typeof tx.Expiration !== 'number') {

View File

@@ -30,7 +30,7 @@ describe('AccountSet', function () {
})
it(`throws w/ invalid SetFlag (out of range)`, function () {
account.SetFlag = 20
account.SetFlag = 12
assert.throws(
() => validateAccountSet(account),
@@ -60,7 +60,7 @@ describe('AccountSet', function () {
})
it(`throws w/ invalid ClearFlag`, function () {
account.ClearFlag = 20
account.ClearFlag = 12
assert.throws(
() => validateAccountSet(account),

View File

@@ -82,12 +82,12 @@ describe('EscrowCreate', function () {
assert.throws(
() => validateEscrowCreate(escrow),
ValidationError,
'EscrowCreate: Amount must be a string',
'EscrowCreate: Amount must be an Amount',
)
assert.throws(
() => validate(escrow),
ValidationError,
'EscrowCreate: Amount must be a string',
'EscrowCreate: Amount must be an Amount',
)
})

View File

@@ -77,12 +77,12 @@ describe('PaymentChannelClaim', function () {
assert.throws(
() => validatePaymentChannelClaim(channel),
ValidationError,
'PaymentChannelClaim: Balance must be a string',
'PaymentChannelClaim: Balance must be an Amount',
)
assert.throws(
() => validate(channel),
ValidationError,
'PaymentChannelClaim: Balance must be a string',
'PaymentChannelClaim: Balance must be an Amount',
)
})
@@ -92,12 +92,12 @@ describe('PaymentChannelClaim', function () {
assert.throws(
() => validatePaymentChannelClaim(channel),
ValidationError,
'PaymentChannelClaim: Amount must be a string',
'PaymentChannelClaim: Amount must be an Amount',
)
assert.throws(
() => validate(channel),
ValidationError,
'PaymentChannelClaim: Amount must be a string',
'PaymentChannelClaim: Amount must be an Amount',
)
})

View File

@@ -106,12 +106,12 @@ describe('PaymentChannelCreate', function () {
assert.throws(
() => validatePaymentChannelCreate(channel),
ValidationError,
'PaymentChannelCreate: Amount must be a string',
'PaymentChannelCreate: Amount must be an Amount',
)
assert.throws(
() => validate(channel),
ValidationError,
'PaymentChannelCreate: Amount must be a string',
'PaymentChannelCreate: Amount must be an Amount',
)
})

View File

@@ -70,12 +70,12 @@ describe('PaymentChannelFund', function () {
assert.throws(
() => validatePaymentChannelFund(channel),
ValidationError,
'PaymentChannelFund: Amount must be a string',
'PaymentChannelFund: Amount must be an Amount',
)
assert.throws(
() => validate(channel),
ValidationError,
'PaymentChannelFund: Amount must be a string',
'PaymentChannelFund: Amount must be an Amount',
)
})

View File

@@ -151,7 +151,6 @@ describe('Models Utils', function () {
assert.strictEqual(tx.Flags, 0)
})
// eslint-disable-next-line complexity -- Simpler to list them all out at once.
it('parseAccountRootFlags all enabled', function () {
const accountRootFlags =
AccountRootFlags.lsfDefaultRipple |
@@ -162,11 +161,7 @@ describe('Models Utils', function () {
AccountRootFlags.lsfNoFreeze |
AccountRootFlags.lsfPasswordSpent |
AccountRootFlags.lsfRequireAuth |
AccountRootFlags.lsfRequireDestTag |
AccountRootFlags.lsfDisallowIncomingNFTOffer |
AccountRootFlags.lsfDisallowIncomingCheck |
AccountRootFlags.lsfDisallowIncomingPayChan |
AccountRootFlags.lsfDisallowIncomingTrustline
AccountRootFlags.lsfRequireDestTag
const parsed = parseAccountRootFlags(accountRootFlags)
@@ -179,11 +174,7 @@ describe('Models Utils', function () {
parsed.lsfNoFreeze &&
parsed.lsfPasswordSpent &&
parsed.lsfRequireAuth &&
parsed.lsfRequireDestTag &&
parsed.lsfDisallowIncomingNFTOffer &&
parsed.lsfDisallowIncomingCheck &&
parsed.lsfDisallowIncomingPayChan &&
parsed.lsfDisallowIncomingTrustline,
parsed.lsfRequireDestTag,
)
})
@@ -199,10 +190,6 @@ describe('Models Utils', function () {
assert.isUndefined(parsed.lsfPasswordSpent)
assert.isUndefined(parsed.lsfRequireAuth)
assert.isUndefined(parsed.lsfRequireDestTag)
assert.isUndefined(parsed.lsfDisallowIncomingNFTOffer)
assert.isUndefined(parsed.lsfDisallowIncomingCheck)
assert.isUndefined(parsed.lsfDisallowIncomingPayChan)
assert.isUndefined(parsed.lsfDisallowIncomingTrustline)
})
})
})